[cleanup][page-templates] Мёртвые isPageEmbedCycle/isPageEmbedTooDeep — удалить или переиспользовать в decideEmbedState #71

Closed
opened 2026-06-21 02:12:06 +03:00 by Ghost · 0 comments

Техдолг, выявленный при ревью резолва merge-конфликта PR #45 (мерж в develop).

Суть

После того как при мерже #45 каноническим guard остался decideEmbedState (develop/#49), предикаты из #45 стали мёртвым в проде кодом: экспортированы и покрыты тестами, но в продакшене не вызываются — их логику decideEmbedState инлайнит у себя.

  • isPageEmbedCycleapps/client/src/features/editor/components/page-embed/page-embed-ancestry-context.tsx:61
  • isPageEmbedTooDeepapps/client/src/features/editor/components/page-embed/page-embed-ancestry-context.tsx:74
  • Единственные ссылки — собственный тест page-embed-ancestry-context.test.tsx (прод-вызовов нет).
  • Дублирующая инлайн-логика — apps/client/src/features/editor/components/page-embed/decide-embed-state.ts:47-50:
    • cycle: chain.includes(sourcePageId) || hostPageId === sourcePageId
    • too_deep: chain.length >= PAGE_EMBED_MAX_DEPTH

Решение: удалить мёртвый код

Логика тривиальна и стабильна, прод-поведение уже полностью покрыто decide-embed-state.test.ts (cycle через chain + self-embed/host, too_deep, порядок «cycle важнее too_deep»). Держать вторую копию — лишний риск дрейфа.

Что сделать

  1. Удалить функции isPageEmbedCycle и isPageEmbedTooDeep из page-embed-ancestry-context.tsx (стр. 61 и 74).
  2. Удалить их два describe-блока из page-embed-ancestry-context.test.tsx (describe("isPageEmbedCycle"...) и describe("isPageEmbedTooDeep"...)).
  3. Оставить export const PAGE_EMBED_MAX_DEPTH — его импортирует decideEmbedState.
  4. Прогнать pnpm -r test.

Вариант «переиспользовать предикаты в decideEmbedState» рассмотрен и отклонён: логика — два однострочника, отдельные именованные предикаты тут оверинжиниринг. (Вернуться к нему имеет смысл только если cycle/depth-логика будет усложняться.)

Severity: low (cleanup). Поведение не меняется.

Техдолг, выявленный при ревью резолва merge-конфликта PR #45 (мерж в develop). ## Суть После того как при мерже #45 каноническим guard остался `decideEmbedState` (develop/#49), предикаты из #45 стали **мёртвым в проде кодом**: экспортированы и покрыты тестами, но в продакшене не вызываются — их логику `decideEmbedState` инлайнит у себя. - `isPageEmbedCycle` — `apps/client/src/features/editor/components/page-embed/page-embed-ancestry-context.tsx:61` - `isPageEmbedTooDeep` — `apps/client/src/features/editor/components/page-embed/page-embed-ancestry-context.tsx:74` - Единственные ссылки — собственный тест `page-embed-ancestry-context.test.tsx` (прод-вызовов нет). - Дублирующая инлайн-логика — `apps/client/src/features/editor/components/page-embed/decide-embed-state.ts:47-50`: - cycle: `chain.includes(sourcePageId) || hostPageId === sourcePageId` - too_deep: `chain.length >= PAGE_EMBED_MAX_DEPTH` ## Решение: удалить мёртвый код Логика тривиальна и стабильна, прод-поведение уже полностью покрыто `decide-embed-state.test.ts` (cycle через chain + self-embed/host, too_deep, порядок «cycle важнее too_deep»). Держать вторую копию — лишний риск дрейфа. ### Что сделать 1. Удалить функции `isPageEmbedCycle` и `isPageEmbedTooDeep` из `page-embed-ancestry-context.tsx` (стр. 61 и 74). 2. Удалить их два `describe`-блока из `page-embed-ancestry-context.test.tsx` (`describe("isPageEmbedCycle"...)` и `describe("isPageEmbedTooDeep"...)`). 3. **Оставить** `export const PAGE_EMBED_MAX_DEPTH` — его импортирует `decideEmbedState`. 4. Прогнать `pnpm -r test`. Вариант «переиспользовать предикаты в decideEmbedState» рассмотрен и **отклонён**: логика — два однострочника, отдельные именованные предикаты тут оверинжиниринг. (Вернуться к нему имеет смысл только если cycle/depth-логика будет усложняться.) Severity: low (cleanup). Поведение не меняется.
Ghost added the refactor label 2026-06-21 02:27:17 +03:00
Ghost closed this issue 2026-06-21 14:10:31 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#71