codex-workflow-v2 2.0.0-beta.13.11 → 2.0.0-beta.13.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +1 -1
  2. package/dist/reviewer-runtime-build.json +21 -9
  3. package/dist/src/alpha6/component-owner.d.ts +15 -1
  4. package/dist/src/alpha6/component-owner.js +44 -2
  5. package/dist/src/alpha6/component-owner.js.map +1 -1
  6. package/dist/src/alpha6/literal-test-invocation.d.ts +2 -0
  7. package/dist/src/alpha6/literal-test-invocation.js +106 -0
  8. package/dist/src/alpha6/literal-test-invocation.js.map +1 -0
  9. package/dist/src/alpha6/plan-integrity-update.d.ts +6 -0
  10. package/dist/src/alpha6/plan-integrity-update.js +17 -0
  11. package/dist/src/alpha6/plan-integrity-update.js.map +1 -0
  12. package/dist/src/alpha6/plan-integrity.js +7 -5
  13. package/dist/src/alpha6/plan-integrity.js.map +1 -1
  14. package/dist/src/alpha6/remediation.d.ts +5 -0
  15. package/dist/src/alpha6/remediation.js +150 -33
  16. package/dist/src/alpha6/remediation.js.map +1 -1
  17. package/dist/src/contracts.d.ts +7 -0
  18. package/dist/src/navigation-actions.d.ts +9 -0
  19. package/dist/src/navigation-actions.js +72 -0
  20. package/dist/src/navigation-actions.js.map +1 -0
  21. package/dist/src/state/corrective-replan-executor.d.ts +10 -0
  22. package/dist/src/state/corrective-replan-executor.js +37 -1
  23. package/dist/src/state/corrective-replan-executor.js.map +1 -1
  24. package/dist/src/version.d.ts +1 -1
  25. package/dist/src/version.js +1 -1
  26. package/dist/src/workflow.d.ts +3 -0
  27. package/dist/src/workflow.js +66 -9
  28. package/dist/src/workflow.js.map +1 -1
  29. package/docs/lifecycle-capture.md +34 -0
  30. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  31. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  32. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  33. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +37 -1
  34. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +36 -2
  35. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +38 -2
  36. package/docs/release.md +57 -0
  37. package/docs/stable-release-defect-register.md +26 -1
  38. package/docs/updating-existing-project.md +45 -0
  39. package/package.json +1 -1
  40. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +17 -0
  41. package/schemas/corrective-decision-event.schema.json +3 -1
@@ -0,0 +1,34 @@
1
+ # Repository lifecycle capture
2
+
3
+ Use `node scripts/capture-lifecycle.mjs <actual CLI arguments>` with
4
+ `WORKFLOW_CAPTURE_CONFIG=/absolute/capture-config.json`. This repository-only tool
5
+ records actual CLI calls; it does not authorize commands, inject credentials,
6
+ or decide what to execute next. Follow Core navigation and validate the resulting
7
+ append-only JSONL with `scripts/validate-lifecycle-transcript.mjs`.
8
+
9
+ Prepare a config with `runId`, `candidate` (source commit), `version`, `repository`,
10
+ `stateRoot`, `log` (new absolute JSONL path), and `workerThreadId`. Bind each of
11
+ `artifact`, `bootstrapReceipt`, `cli`, `projector`, and `validator` using
12
+ `{ "file": "/absolute/path", "sha256": "<exact file hash>" }`.
13
+ `captureFiles` contains the same references for both `scripts/capture-lifecycle.mjs`
14
+ and `scripts/lifecycle-capture-evidence.mjs`. Do not edit these files/config while
15
+ capturing a run. Use absolute paths throughout.
16
+
17
+ The CLI and projector must belong to that fixture's exact installed package:
18
+ `dist/src/cli.js` and `dist/src/navigation-actions.js`. The validator uses its own
19
+ current build; build that checkout before capture. Its exported observation
20
+ registry classifies records, while the installed canonical projector supplies
21
+ advertised actions. Neither diagnostic routes nor Task status create authority.
22
+
23
+ Use only the disposable synthetic bootstrap receipt from the maintained bootstrap
24
+ tool. Repository, state root, candidate hash and version must match. Simulated
25
+ Knowledge/grant approvals are test setup, never production consent. Do not import
26
+ production project state or credentials. No live fixture is migrated by this tool.
27
+
28
+ Each invocation emits BEGIN/END markers and appends a terminal result, including
29
+ failures. Evidence redacts authority values and retains raw output hashes; original
30
+ CLI stdout/stderr are returned to the invoking Worker, so retain their normal
31
+ private handling. `INVALID_ARGUMENT` alone is not proof of a nonmutating retry.
32
+ The recorder does not erase failures or convert them into successful lifecycle
33
+ evidence. Keep actual App source records and review packets alongside the log;
34
+ the capture log alone does not establish an independent App review.
@@ -463,7 +463,7 @@ Restart Docker Desktop требует отдельного разрешения
463
463
  # 10. Operational checklist
464
464
 
465
465
  - exact package version установлен, bundled gateway соответствует release и переустановлен;
466
- - handshake подтверждает `packageVersion=2.0.0-beta.13.11`, protocol 2, state schema 2 и beta.13
466
+ - handshake подтверждает `packageVersion=2.0.0-beta.13.13`, protocol 2, state schema 2 и beta.13
467
467
  capabilities;
468
468
  - routine observation начинается с компактного `status`; `status --full` запрашивается только для
469
469
  расследования, которому действительно нужна полная historical projection;
@@ -476,3 +476,39 @@ Restart Docker Desktop требует отдельного разрешения
476
476
  - advertised route имеет Signal-observed matrix binding либо явно помечен unsupported;
477
477
  - dependencies, progress и review posture берутся из Core projections;
478
478
  - local state не редактируется вручную; release и package update выполняются только после safe preflight и обязательных checks.
479
+
480
+
481
+ <!-- pagebreak -->
482
+
483
+ ## beta.13.12: восстановление зависимости тестового каталога
484
+
485
+ Поддерживаемый явный Vitest invocation связывает required check с единственным tracked
486
+ migration-catalog test. Это отдельное hash-bound evidence, а не выдуманный static import.
487
+ Неоднозначность, dynamic пути и forbiddenScope сохраняют запрет расширения.
488
+
489
+ После подтверждённого corrective Plan новый механический конфликт оценивается в проверенном
490
+ текущем semantic cycle. История, глобальные ordinals и stop/split authority сохраняются.
491
+ Расширение scope выполняется только по свежему Core route; ручная правка allowedWrites запрещена.
492
+
493
+ Выданное расширение переносится через проверенную Knowledge-only цепочку лишь при неизменных
494
+ Step и semantic scope. Navigation, исполнение и review scope используют одно доказательство.
495
+ Execution authorization остаётся отдельным условием; повреждённая цепочка блокирует перенос.
496
+
497
+ Read-only Plan-integrity update preflight допускает beta.13.11+ source только с новым eligible
498
+ V4 literal-test evidence и более новым exact target. Running Step, любой lease, повреждённая
499
+ история, изменённые dirty bytes или более широкий dependency transport остаются блокерами.
500
+ Полный протокол и ограничения: docs/updating-existing-project.md и docs/release.md.
501
+
502
+ ## beta.13.13: Knowledge проверяется до переноса зависимости
503
+
504
+ Проверка обновления учитывает существующие product-источники Knowledge,
505
+ изменённые failed Step. Допустимы только content-only изменения в связанном
506
+ scope, с действующим делегированным маршрутом context refresh. Изменение
507
+ классификации или состава источников блокирует этот маршрут до transport.
508
+
509
+ Регистрация dependency provenance сохраняет прежнюю карту. После ограниченного
510
+ расширения test-support scope существующий атомарный context refresh использует
511
+ явный grant; актуальные аудит и разрешение исполнения остаются обязательными.
512
+ Обновление пакета само по себе не одобряет проектные источники. Проверка релиза
513
+ включает четыре уже изменённых источника, перенос пакета и продолжение до checks
514
+ и sealed review packet; фактическая готовность Signal проверяется отдельно.
@@ -57,7 +57,7 @@ AGENTS.md
57
57
  -> doctor только как дополнительная диагностика
58
58
  ```
59
59
 
60
- Handshake beta.13.11 должен сообщать `packageVersion=2.0.0-beta.13.11`, `protocolVersion=2`,
60
+ Handshake beta.13.13 должен сообщать `packageVersion=2.0.0-beta.13.13`, `protocolVersion=2`,
61
61
  `stateSchemaVersion=2`, dependency DAG, initial Plan transaction, mechanical feasibility,
62
62
  Milestone autonomy, host-safe credential reference, failed-Step continuation transaction,
63
63
  cause-bound rolling refinement, structural production edge, compact status, reviewer runtime preflight,
@@ -480,7 +480,7 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
480
480
  # 14. Итоговый checklist пользователя
481
481
 
482
482
  - beta.13.10 exact package и новый bundled gateway установлены; handshake показывает
483
- `packageVersion=2.0.0-beta.13.11`, protocol/state schema `2/2` и beta.13 capabilities;
483
+ `packageVersion=2.0.0-beta.13.13`, protocol/state schema `2/2` и beta.13 capabilities;
484
484
  - новый Coordinator chat не является fork старого Milestone;
485
485
  - bootstrap DGR, если нужен, выдан отдельным exact human confirmation;
486
486
  - Discovery не materialized при blocking unknowns;
@@ -504,3 +504,37 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
504
504
  - historical-Step recovery, если рекламировался, сохранил exact accepted commit и довёл текущий Step до обычного `step-complete` без history rewrite;
505
505
  - split-required остановился без replacement mutations;
506
506
  - Milestone validation и final acceptance связаны с текущим clean base HEAD.
507
+
508
+
509
+ ## beta.13.12: восстановление зависимости тестового каталога
510
+
511
+ Поддерживаемый явный Vitest invocation связывает required check с единственным tracked
512
+ migration-catalog test. Это отдельное hash-bound evidence, а не выдуманный static import.
513
+ Неоднозначность, dynamic пути и forbiddenScope сохраняют запрет расширения.
514
+
515
+ После подтверждённого corrective Plan новый механический конфликт оценивается в проверенном
516
+ текущем semantic cycle. История, глобальные ordinals и stop/split authority сохраняются.
517
+ Расширение scope выполняется только по свежему Core route; ручная правка allowedWrites запрещена.
518
+
519
+ Выданное расширение переносится через проверенную Knowledge-only цепочку лишь при неизменных
520
+ Step и semantic scope. Navigation, исполнение и review scope используют одно доказательство.
521
+ Execution authorization остаётся отдельным условием; повреждённая цепочка блокирует перенос.
522
+
523
+ Read-only Plan-integrity update preflight допускает beta.13.11+ source только с новым eligible
524
+ V4 literal-test evidence и более новым exact target. Running Step, любой lease, повреждённая
525
+ история, изменённые dirty bytes или более широкий dependency transport остаются блокерами.
526
+ Полный протокол и ограничения: docs/updating-existing-project.md и docs/release.md.
527
+
528
+ ## beta.13.13: Knowledge проверяется до переноса зависимости
529
+
530
+ Проверка обновления учитывает существующие product-источники Knowledge,
531
+ изменённые failed Step. Допустимы только content-only изменения в связанном
532
+ scope, с действующим делегированным маршрутом context refresh. Изменение
533
+ классификации или состава источников блокирует этот маршрут до transport.
534
+
535
+ Регистрация dependency provenance сохраняет прежнюю карту. После ограниченного
536
+ расширения test-support scope существующий атомарный context refresh использует
537
+ явный grant; актуальные аудит и разрешение исполнения остаются обязательными.
538
+ Обновление пакета само по себе не одобряет проектные источники. Проверка релиза
539
+ включает четыре уже изменённых источника, перенос пакета и продолжение до checks
540
+ и sealed review packet; фактическая готовность Signal проверяется отдельно.
@@ -15,7 +15,7 @@ authority сами: mutating permission определяется runtime state
15
15
 
16
16
  | Параметр beta.13 | Значение |
17
17
  |---|---|
18
- | npm package | `codex-workflow-v2@2.0.0-beta.13.11` |
18
+ | npm package | `codex-workflow-v2@2.0.0-beta.13.13` |
19
19
  | protocolVersion | 2 |
20
20
  | stateSchemaVersion | 2 |
21
21
  | lifecycle epoch | 2 |
@@ -775,7 +775,7 @@ dirty update.
775
775
  observed-route matrix/compact-status/reviewer-runtime tests, legacy compatibility regressions,
776
776
  `npm run test:signal-t10-check-support-e2e`, `npm run test:signal-remediation-e2e`,
777
777
  `npm run pack:check`, `npm run smoke:downstream`, `npm run plugin:check`, official plugin/skill validators,
778
- `npm run docs:pdf:check` и `npm run release:check` с exact `v2.0.0-beta.13.11` tag binding и append-only
778
+ `npm run docs:pdf:check` и `npm run release:check` с exact `v2.0.0-beta.13.13` tag binding и append-only
779
779
  real-agent lifecycle log. Candidate проверяется из clean source checkout; missing built module не должен
780
780
  превращаться в stack trace, а обязан быть детерминированно собран или диагностирован release gate.
781
781
 
@@ -784,3 +784,39 @@ Real-agent gate повторяет production boundary Codex App: Task agent у
784
784
  Nested native `codex exec` внутри другого Codex agent не является release evidence. Packet generation
785
785
  логируется как read-only observation, record — как exact `next`-authorized mutation с последующими
786
786
  `status` и `next`.
787
+
788
+
789
+ ## beta.13.12: восстановление зависимости тестового каталога
790
+
791
+ Поддерживаемый явный Vitest invocation связывает required check с единственным tracked
792
+ migration-catalog test. Это отдельное hash-bound evidence, а не выдуманный static import.
793
+ Неоднозначность, dynamic пути и forbiddenScope сохраняют запрет расширения.
794
+
795
+ После подтверждённого corrective Plan новый механический конфликт оценивается в проверенном
796
+ текущем semantic cycle. История, глобальные ordinals и stop/split authority сохраняются.
797
+ Расширение scope выполняется только по свежему Core route; ручная правка allowedWrites запрещена.
798
+
799
+ Выданное расширение переносится через проверенную Knowledge-only цепочку лишь при неизменных
800
+ Step и semantic scope. Navigation, исполнение и review scope используют одно доказательство.
801
+ Execution authorization остаётся отдельным условием; повреждённая цепочка блокирует перенос.
802
+
803
+ Read-only Plan-integrity update preflight допускает beta.13.11+ source только с новым eligible
804
+ V4 literal-test evidence и более новым exact target. Running Step, любой lease, повреждённая
805
+ история, изменённые dirty bytes или более широкий dependency transport остаются блокерами.
806
+ Полный протокол и ограничения: docs/updating-existing-project.md и docs/release.md.
807
+
808
+ <!-- pagebreak -->
809
+
810
+ ## beta.13.13: Knowledge проверяется до переноса зависимости
811
+
812
+ Проверка обновления учитывает существующие product-источники Knowledge,
813
+ изменённые failed Step. Допустимы только content-only изменения в связанном
814
+ scope, с действующим делегированным маршрутом context refresh. Изменение
815
+ классификации или состава источников блокирует этот маршрут до transport.
816
+
817
+ Регистрация dependency provenance сохраняет прежнюю карту. После ограниченного
818
+ расширения test-support scope существующий атомарный context refresh использует
819
+ явный grant; актуальные аудит и разрешение исполнения остаются обязательными.
820
+ Обновление пакета само по себе не одобряет проектные источники. Проверка релиза
821
+ включает четыре уже изменённых источника, перенос пакета и продолжение до checks
822
+ и sealed review packet; фактическая готовность Signal проверяется отдельно.
package/docs/release.md CHANGED
@@ -1,5 +1,62 @@
1
1
  # Release Policy
2
2
 
3
+ ## beta.13.13: assess dirty Knowledge before dependency transport
4
+
5
+ A failed Step can leave content changes in already approved Knowledge sources. The
6
+ Plan-integrity update preflight must assess those changes before transport, using
7
+ same failed-Step scope and current content bindings as post-transport recovery.
8
+ Content-only drift requires an eligible existing delegated context-refresh route;
9
+ source/classification changes or unavailable authority remain blocked.
10
+
11
+ For this bounded route, dependency recovery registers only verified dependency
12
+ provenance and preserves the approved Knowledge Map bytes. It reports the deferred
13
+ context refresh. After the machine-derived support amendment, fresh navigation
14
+ must lead to the existing atomic delegated refresh, independent audit and current
15
+ execution authorization. Dependency registration never approves product Knowledge.
16
+ The existing package-only derived refresh remains separately bounded.
17
+
18
+ The release regression must include four existing approved product Knowledge
19
+ sources changed by the failed Step, plus the subsequent package.json dependency
20
+ change. It must reach the same Worker run, passing checks and sealed review packet,
21
+ while proving unchanged product bytes, prior history and pre-refresh Map. Before
22
+ tagging, a read-only assessment of the actual downstream source must confirm the
23
+ same data shape and anticipated recovery readiness. A synthetic roundtrip alone
24
+ is not proof of downstream readiness. All ordinary release gates remain required.
25
+
26
+ ## beta.13.12: bounded test invocation recovery after a corrective Plan
27
+
28
+ A required check can invoke a tracked test through an explicit Vitest argument list rather
29
+ than a static import. The bounded component-owner analyzer recognizes supported literal
30
+ runner invocations and a unique migration-catalog test. It records the invocation and hashes
31
+ as their own evidence; it does not invent an import edge or classify every diagnostic path
32
+ as the failing test. Dynamic or ambiguous invocations, forbidden paths and unproved catalog
33
+ dependencies do not establish scope authority.
34
+ Literal invocation evidence binds a supported static call site, tracked runner/test bytes,
35
+ the recorded failed-check diagnostic and a unique missing-catalog anchor. It does not
36
+ assert a runtime trace or prove that every diagnostic path was a failing test.
37
+
38
+ Plan-integrity eligibility can use a verified current semantic Plan cycle after an applied
39
+ human corrective Plan and content-only Knowledge rebind. Historical failures and decisions
40
+ remain immutable and globally numbered. Pending, malformed, conflicting or unconsumed stop
41
+ and split authority must not disappear when selecting the current failure cycle.
42
+ An issued machine-derived support amendment must survive only a verified Knowledge-only
43
+ Plan rebind with the same Step and semantic scope. Navigation, execution and review scope
44
+ must use the same proof. Rebinding does not supply execution authorization, and an invalid
45
+ chain or semantic change must reject the carry-forward. The combined regression must reach
46
+ authorization, run, passing checks and the sealed review packet after this rebind.
47
+
48
+ The existing read-only Plan-integrity update protocol additionally admits coherent beta.13
49
+ patches from beta.13.11 only for a freshly eligible V4 conflict with validated literal test
50
+ invocation evidence and a strictly newer target. Existing lease, transaction, Plan, HEAD,
51
+ dirty-byte and dependency-only transport checks remain in force. This profile does not admit
52
+ an active Step or general dirty-worktree updates. Historical beta.12 profiles are unchanged.
53
+
54
+ Required regression evidence includes real failed-check recovery after human corrective
55
+ execution and rebind, positive and negative invocation proofs, unchanged prior Step history,
56
+ correct current-cycle event readback, and a complete dependency transport, recovery and
57
+ same-Worker continuation. Predicate-only tests do not satisfy the release gate. Ordinary
58
+ CI, exact artifact, disposable App, documentation and publication checks also remain required.
59
+
3
60
  ## beta.13.11: preserve production edges through corrective Plan admission
4
61
 
5
62
  The closed public corrective Plan schema now admits the existing optional
@@ -5,7 +5,7 @@ alpha.7 through beta.9 lines against the `signal_v4` Milestone 3 lifecycle. It i
5
5
  separate from implementation briefs: an item stays here until it is either
6
6
  verified fixed by a regression test or explicitly classified as downstream-only.
7
7
 
8
- Last reviewed: 2026-08-22.
8
+ Last reviewed: 2026-09-08.
9
9
 
10
10
  ## Severity and status
11
11
 
@@ -14,6 +14,31 @@ Last reviewed: 2026-08-22.
14
14
  - **Closed-regression** means a patch exists; the stable release must retain its regression coverage.
15
15
  - **Downstream** means the finding belongs to `signal_v4`, not to the workflow package.
16
16
 
17
+ ## Active Milestone update findings
18
+
19
+ ### WF-M04-KNOWLEDGE-TRANSPORT — preflight omits post-update Knowledge readiness
20
+
21
+ - Status: Implemented in beta.13.13; full-route regression is part of the release gate.
22
+ Downstream continuation still requires post-install verification.
23
+ - Severity: High
24
+ - Evidence: Signal M04 T02 revision 101 retained an approved Knowledge Map 295 while
25
+ four existing Knowledge entries had content changes from the failed Step. The
26
+ beta.13.12 source preflight checked the bounded failure and dependency transport,
27
+ but post-transport recovery required that only package.json differ in Knowledge.
28
+ - Cause: the combined regression covered dependency drift and a later Knowledge
29
+ rebind, but did not include the already dirty product Knowledge entries at the
30
+ source boundary. Green package CI therefore did not establish Signal readiness.
31
+ - Required fix: assess the actual Knowledge difference before transport using the
32
+ same bounded predicate as recovery. Dependency registration must not silently
33
+ approve product Knowledge. Preserve the stale map until the existing delegated
34
+ atomic context refresh becomes executable after the support-scope amendment.
35
+ - Required evidence: complete failed-Step transport with four existing content-only
36
+ Knowledge changes, preserved bytes and history, delegated refresh, fresh audit
37
+ and execution authorization, same-Worker run, checks and sealed review packet.
38
+ Reject classification changes, missing authority and changed bound dirty bytes.
39
+ - Deployment: beta.13.12 was published, but was not installed in Signal. Keep the
40
+ deployment hold until the replacement candidate passes this actual-state check.
41
+
17
42
  ## Post-beta.5 open findings
18
43
 
19
44
  ### WF-STABLE-030 — chat order and replacement progress are not observable
@@ -22,6 +22,51 @@ state schema. Совпадение `stateSchemaVersion` до и после об
22
22
  нужна. Для alpha.6 при `stateSchemaVersion: 2` применяется не migration, а sidecar-only
23
23
  adoption posture.
24
24
 
25
+ ### beta.13.13: изменённые product-файлы Knowledge до обновления
26
+
27
+ Перед transport проверяйте не только версии и failed-Step scope, но и Knowledge.
28
+ Если существующие approved источники изменились в пределах текущего failed Step,
29
+ preflight должен явно показать отложенный `task context-refresh` и подходящий
30
+ действующий grant. Изменение состава или классификации источников не относится к
31
+ этому маршруту. Не выполняйте source context-refresh заранее ради снятия отказа.
32
+
33
+ После dependency-only transport recovery сохраняет старые байты Knowledge Map.
34
+ Следуйте свежему `status` и `next`: сначала ограниченное расширение test-support
35
+ scope, затем существующий атомарный refresh с указанным delegate и grant, аудит
36
+ и разрешение исполнения. Само обновление пакета не одобряет product Knowledge.
37
+ Если свежий preflight блокирует маршрут, не устанавливайте пакет в Signal.
38
+
39
+ ### beta.13.12: явный запуск теста и текущий цикл corrective Plan
40
+
41
+ Если обязательный check вызывает tracked migration-catalog test через поддерживаемый literal
42
+ Vitest invocation, новый analyzer может доказать единственный дополнительный support path.
43
+ Диагностические пути из failed check являются упоминаниями, а не доказательством того, что
44
+ каждый такой тест упал. Неоднозначный каталог, dynamic/glob invocation, выход за компонент
45
+ или forbiddenScope не дают автоматического расширения.
46
+
47
+ После реально зарегистрированного checks-failed новый runtime проверяет текущий semantic
48
+ Plan cycle, включая завершённое human corrective execution и допустимый content-only rebind.
49
+ Старая история и глобальные ordinals сохраняются. Нельзя повторять заведомо падающий Step
50
+ ради счётчика, удалять old decisions или считать неподтверждённую смену Plan новым циклом.
51
+
52
+ Уже выданное machine-derived расширение сохраняется только через проверенную Knowledge-only
53
+ цепочку при неизменных Step и semantic scope. Navigation, исполнение и пакет ревью используют
54
+ одно доказательство. Такая привязка не заменяет execution authorization; повреждённая цепочка
55
+ или изменение смысла Plan запрещают перенос разрешения. После rebind следуйте свежему `next`.
56
+
57
+ Для coherent beta.13 patch начиная с beta.13.11 опубликованный exact более новый runner
58
+ может выполнить только read-only `update plan-integrity-update-preflight --id <TASK-ID>`.
59
+ Новый source profile требует заново доказанный eligible V4 literal-test conflict; fallback
60
+ adopted/dirty-carryover modes сами по себе его не открывают. Require `eligible=true`, нет
61
+ running Step, active/stale lease или pending operation, точные Plan/HEAD и dirty-byte bindings.
62
+ Далее используйте только возвращённый dependency-only transport на base и Task, установите
63
+ exact target и следуйте target provenance recovery и fresh navigation. Сохраняйте продуктовые
64
+ байты; не применяйте дополнительный test patch до Core-derived scope authority.
65
+
66
+ Обычный `update preflight` остаётся строгим. Отсутствие scope proof или иной blocked boundary
67
+ не разрешает внешний runner для mutation, ручную правку state, stash/reset либо более широкий
68
+ commit. Этот профиль не подменяет внешнюю проверку разрешений.
69
+
25
70
  ### beta.13.1: legacy PRA compatibility after beta.13
26
71
 
27
72
  `2.0.0-beta.13.1` preserves the beta.13 protocol/schema `2/2` and adds no state migration. The
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-workflow-v2",
3
- "version": "2.0.0-beta.13.11",
3
+ "version": "2.0.0-beta.13.13",
4
4
  "description": "Requirements-first Codex development workflow with local state and explicit Git ownership.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -92,6 +92,23 @@ active writer token when the C1 contract requires it. The recovery records only
92
92
  `task run` merely to manufacture the second failure, and never invoke this recovery for a generic
93
93
  test failure, a writable manifest, or unconfined changes.
94
94
 
95
+ For beta.13.13, the exact published target runner may perform only read-only
96
+ `update plan-integrity-update-preflight --id <TASK-ID>` against a coherent beta.13
97
+ source from beta.13.11 with a strictly newer target and a freshly proved V4 literal
98
+ test invocation conflict. Require eligible=true, exact Task/Plan/HEAD and dirty
99
+ content bindings, and no running Step, lease or pending operation before transport.
100
+ Perform only the returned dependency-only Task/base transport, install the exact
101
+ target locally, and follow its provenance preflight/recovery and fresh status/next.
102
+
103
+ If preflight reports deferredKnowledgeRefresh, existing product Knowledge sources
104
+ have bounded content-only drift. Require its eligible existing delegated approval
105
+ option; registration preserves the old Knowledge Map and does not approve product
106
+ sources. Follow fresh navigation through support-scope recovery and the existing
107
+ atomic task context-refresh with the exact named delegate and grant. New sources,
108
+ classification changes, changed dirty bytes or unavailable authority block this
109
+ route. Do not refresh source context first to conceal the failed-Step boundary,
110
+ edit state, or apply the extra test patch before Core grants its bounded scope.
111
+
95
112
  When fresh `next` includes `preExecutionReplanOption.state=eligible`, an independent Plan auditor
96
113
  may stop a `ready` Task before its next Step because the current implementation Plan is obstructed.
97
114
  Use only `task preexecution-replan` with the exact advertised Task revision, Brief hash, Plan hash,
@@ -234,13 +234,15 @@
234
234
  "items": {
235
235
  "type": "object", "additionalProperties": false,
236
236
  "required": ["reasonCode", "command", "runnerPath", "ownerPath", "ownerHash", "importChain", "diagnosticPath", "componentRoot"],
237
+ "allOf": [{ "if": { "required": ["testInvocation"] }, "then": { "properties": { "importChain": { "maxItems": 1 } } }, "else": { "properties": { "importChain": { "minItems": 2 } } } }],
237
238
  "properties": {
238
239
  "reasonCode": { "const": "FAILED_CHECK_COMPONENT_OWNER_OUTSIDE_ALLOWED_WRITES" },
239
240
  "command": { "type": "string", "minLength": 1 },
240
241
  "runnerPath": { "type": "string", "minLength": 1 },
241
242
  "ownerPath": { "type": "string", "minLength": 1 },
242
243
  "ownerHash": { "$ref": "#/$defs/hash64" },
243
- "importChain": { "$ref": "#/$defs/stringList", "minItems": 2 },
244
+ "importChain": { "$ref": "#/$defs/stringList", "minItems": 1 },
245
+ "testInvocation": {"type": "object", "additionalProperties": false, "required": ["kind", "runnerHash", "argv", "migrationOutputs", "catalogNames"], "properties": {"kind": {"const": "literal-vitest-catalog"}, "runnerHash": {"type": "string", "pattern": "^[a-f0-9]{64}$"}, "argv": {"type": "array", "items": {"type": "string"}, "minItems": 3}, "migrationOutputs": {"type": "array", "items": {"type": "string"}, "minItems": 1, "uniqueItems": true}, "catalogNames": {"type": "array", "items": {"type": "string", "pattern": "^[0-9]{4}_[a-z0-9_]+\\.sql$"}, "minItems": 1, "uniqueItems": true}}},
244
246
  "diagnosticPath": { "type": "string", "minLength": 1 },
245
247
  "componentRoot": { "type": "string", "minLength": 1 }
246
248
  }