Итог параллельной волны фиксов (worktree-изоляция, cherry-pick в master): - ingest-dedup-integrity (F1, F6) → спека ingest - retry-stall-basis (MAJOR-1, MAJOR-2) → спека state-reconciliation - linking-transition-robustness (MAJOR-4, MINOR-7) → спеки file-layout и state-reconciliation Дельты влиты в openspec/specs, changes перенесены в openspec/changes/archive/2026-07-08-*. Беклог не трогаю (по решению). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1.9 KiB
1.9 KiB
1. Возврат ошибки перехода (MINOR-7)
- 1.1 Разделить
transitionнаvoid-обёртку иtransitionErr(возвращает ошибку записи); пинги/скан — вtransitionErr - 1.2
Apply: заменить claimtransition(StateLinking)наtransitionErrс прерыванием доlinkPlanпри ошибке - 1.3
finishRecognition(авто-раскладка): то же — при провале claim остаёмся вrecognizing,linkPlanне зовём
2. Провал учёта не оставляет в linking (MAJOR-4 A)
- 2.1 В
linkPlanпри провалеCreateFileLinksперевести задачу вreview(кодpersist) вместо гологоreturn
3. Sweep осиротевшего linking (MAJOR-4 B)
- 3.1 Добавить
sweepLinking: подw.muлиститьlinkingи переводитьlinking → review(кодinterrupted, причина «прерванная раскладка, повтори применение») - 3.2 Вызвать
sweepLinkingвpollOnce(тик + старт)
4. Тесты
- 4.1 Провал claim перехода в
linkingпрерываетApplyдо хардлинков (нет файлов на диске, нетfile_link, состояниеreview) - 4.2 Провал
CreateFileLinksуводит вreview(файлы на диске есть, кодpersist) - 4.3
sweepLinkingпереводит осиротевшийlinkingвreview(кодinterrupted); прочие состояния не задевает
5. Проверки
- 5.1
task testиtask lintпроходят - 5.2
openspec validate linking-transition-robustness --strictпроходит