codex-workflow-v2 2.0.0-beta.12.6 → 2.0.0-beta.12.7

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 (34) hide show
  1. package/README.md +15 -3
  2. package/dist/src/alpha6/downstream-proof.d.ts +35 -1
  3. package/dist/src/alpha6/downstream-proof.js +310 -2
  4. package/dist/src/alpha6/downstream-proof.js.map +1 -1
  5. package/dist/src/alpha6/plan-risk.js +2 -2
  6. package/dist/src/alpha6/plan-risk.js.map +1 -1
  7. package/dist/src/cli.js +34 -0
  8. package/dist/src/cli.js.map +1 -1
  9. package/dist/src/contracts.d.ts +30 -1
  10. package/dist/src/dependency-provenance.d.ts +2 -2
  11. package/dist/src/dependency-provenance.js +26 -13
  12. package/dist/src/dependency-provenance.js.map +1 -1
  13. package/dist/src/version.d.ts +1 -1
  14. package/dist/src/version.js +1 -1
  15. package/dist/src/workflow.d.ts +8 -1
  16. package/dist/src/workflow.js +369 -30
  17. package/dist/src/workflow.js.map +1 -1
  18. package/docs/autonomy-guardrails.md +7 -0
  19. package/docs/development-flow.md +9 -0
  20. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  21. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  22. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  23. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +18 -5
  24. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +18 -7
  25. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +25 -12
  26. package/docs/release.md +7 -1
  27. package/docs/updating-existing-project.md +24 -0
  28. package/docs/validation-report.md +90 -91
  29. package/package.json +2 -1
  30. package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
  31. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +15 -0
  32. package/schemas/downstream-proof-invalidation-event.schema.json +1 -0
  33. package/schemas/downstream-proof-replan-recovery-event.schema.json +61 -0
  34. package/schemas/task.schema.json +34 -0
@@ -152,6 +152,13 @@ evidence, supersedes execution authority, yields C1, and routes the same Task to
152
152
  The route grants no authority to change Task objective, requirements, acceptance, or Milestone
153
153
  topology.
154
154
 
155
+ The beta.12.7 compatibility repair for an accidental post-invalidation Knowledge rebind is similarly
156
+ non-semantic. It may restore `needs_fix` and preserve an exact dirty-worktree binding, but it cannot
157
+ approve a replacement Plan, infer new requirements, or treat preserved bytes as completed evidence.
158
+ After any required Knowledge refresh, the full unfinished remainder is planned again. Carryover into
159
+ execution is valid only when one newly authorized Step owns every bound path and the current
160
+ HEAD/path/content hashes still match; checks and strict review retain their ordinary authority.
161
+
155
162
  Docker permission diagnostics are classified before consuming retry authority. Sandbox `EPERM` or
156
163
  permission denial gets one exact escalated rerun of the health probe/Plan check. It is not an infra
157
164
  failure and cannot authorize a Docker Desktop restart or image substitution. Only an escalated
@@ -113,6 +113,15 @@ candidate parent, binds the active proof dirty set by content hash, and register
113
113
  dependency commit. Product bytes and Step state remain unchanged; fresh `next` must then advertise
114
114
  the ordinary `task downstream-proof-recover`. This is not a general dirty-update permission.
115
115
 
116
+ If beta.12.6 already performed that recovery but a subsequent Knowledge approval mechanically
117
+ rebound its rejected Plan, use only the beta.12.7 stranded-replan bridge advertised by fresh `next`.
118
+ The source preflight runs before dependency transport and binds the exact beta.12.6 Task revision,
119
+ HEAD, dirty paths, and content hash. After dependency-only base/Task commits and provenance recovery,
120
+ `task downstream-proof-replan-recover` restores `needs_fix`. Reconcile/approve stale Project Knowledge,
121
+ then replace the full unfinished Plan. The preserved dirty set may enter execution only through one
122
+ new Step whose `allowedWrites` owns every path and whose fresh `next` reports validated carryover.
123
+ Completing that Step still requires its checks, Core-owned commit, and any guarded strict review.
124
+
116
125
  A sandboxed Docker `EPERM`, `operation not permitted`, or `permission denied` result is not a failed
117
126
  daemon check. Re-run the exact probe/check once with sandbox escalation without consuming a retry.
118
127
  Restart Docker Desktop only with separate authorization after the escalated call reaches Docker and
@@ -1,10 +1,10 @@
1
1
  ---
2
- title: Codex Workflow V2: архитектура beta.12.6
2
+ title: Codex Workflow V2: архитектура beta.12.7
3
3
  subtitle: Источники истины, lifecycle, роли, delegation, зависимости Tasks и границы доверия
4
4
  part: Часть 1 из 3 | Архитектура
5
5
  document_version: 2.0
6
6
  date: 29 августа 2026
7
- subject: Архитектура и границы Codex Workflow V2 beta.12.6
7
+ subject: Архитектура и границы Codex Workflow V2 beta.12.7
8
8
  ---
9
9
 
10
10
  # 1. Назначение и граница системы
@@ -18,7 +18,7 @@ Codex Workflow V2 - локальный state machine поверх Codex App, Git
18
18
  Система рассчитана на одного пользователя и одну машину. Она не предоставляет distributed locking,
19
19
  криптографическую идентификацию actor string или безопасную синхронизацию state между компьютерами.
20
20
 
21
- ## 1.1. Что beta.12.6 гарантирует
21
+ ## 1.1. Что beta.12.7 гарантирует
22
22
 
23
23
  - exact project-local npm package и совместимый handshake до lifecycle действий;
24
24
  - Discovery до materialization Task или Milestone;
@@ -31,8 +31,10 @@ Codex Workflow V2 - локальный state machine поверх Codex App, Git
31
31
  - journaled recovery для составных переходов и fail-closed поведение при drift/corruption.
32
32
  - bounded recovery, когда downstream proof требует изменить уже завершённый predecessor Step:
33
33
  worktree и HEAD сохраняются, stale completion authority снимается, та же Task возвращается в planning.
34
+ - bounded compatibility recovery, если beta.12.6 после этого recovery ошибочно rebind-нула отвергнутый
35
+ Plan: exact dirty bytes сохраняются до нового consolidated Step, а Knowledge refresh не отменяет `plan-set`.
34
36
 
35
- ## 1.2. Что beta.12.6 не гарантирует
37
+ ## 1.2. Что beta.12.7 не гарантирует
36
38
 
37
39
  - правильность продуктовой идеи или автоматически выбранного provider Task;
38
40
  - semantic sufficiency Plan, если точные факты нельзя доказать поддерживаемым analyzer;
@@ -263,6 +265,17 @@ leases/transactions, predecessor ownership и content hash dirty set. Перех
263
265
  dependency commit, не меняет product bytes/Step и делает обычный `task downstream-proof-recover`
264
266
  достижимым до manifest-induced Knowledge refresh. Это не общее разрешение dirty update.
265
267
 
268
+ beta.12.7 закрывает следующий доказанный Signal case: beta.12.6 уже выполнила downstream-proof
269
+ invalidation, но последующее Project Knowledge approval механически вернуло старый двух-Step Plan в
270
+ `awaiting_execution_authorization`. Read-only `update downstream-proof-replan-update-preflight`
271
+ сначала связывает exact beta.12.6 revision, HEAD, шесть dirty paths и content hash. После двух
272
+ dependency-only commits `update downstream-proof-replan-dependency-preflight/recover` регистрирует
273
+ только новый Workflow HEAD. `task downstream-proof-replan-recover` затем атомарно возвращает ту же
274
+ Task в `needs_fix`; stale Knowledge можно reconciliate/approve, но fresh `next` всё равно требует
275
+ новый `task plan-set`. Новый Plan может передать сохранённые bytes только одному Step, который владеет
276
+ всем dirty set. `task run` принимает carryover лишь при exact HEAD/path/hash match, после чего Step
277
+ проходит обычные checks, Core-owned commit и strict review.
278
+
266
279
  Docker socket `EPERM` в sandbox не является доказательством сломанного daemon. Gateway один раз
267
280
  повторяет exact health probe или Plan check с sandbox escalation без расходования remediation attempt.
268
281
  Restart Docker Desktop требует отдельного разрешения и допустим только после escalated daemon failure.
@@ -272,7 +285,7 @@ Restart Docker Desktop требует отдельного разрешения
272
285
  # 10. Operational checklist
273
286
 
274
287
  - exact package version установлен, bundled gateway соответствует release и переустановлен;
275
- - handshake подтверждает protocol 2, state schema 2 и beta.12.6 capabilities;
288
+ - handshake подтверждает protocol 2, state schema 2 и beta.12.7 capabilities;
276
289
  - каждый mutation следует свежему `status -> next` и exact option contract;
277
290
  - Docker permission failure сначала классифицируется как sandbox boundary, а не как infra retry;
278
291
  - semantic unknowns и human gates не маскируются delegation;
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  title: Codex Workflow V2: delegated chat-only guide
3
- subtitle: Актуальный beta.12.6 путь от нового Discovery до принятого Milestone без ручного CLI
3
+ subtitle: Актуальный beta.12.7 путь от нового Discovery до принятого Milestone без ручного CLI
4
4
  part: Часть 2 из 3 | Практика
5
5
  document_version: 2.0
6
6
  date: 29 августа 2026
7
- subject: Практическое руководство по delegated Discovery и Milestone в Workflow V2 beta.12.6
7
+ subject: Практическое руководство по delegated Discovery и Milestone в Workflow V2 beta.12.7
8
8
  ---
9
9
 
10
- # 1. Рабочая модель beta.12.6
10
+ # 1. Рабочая модель beta.12.7
11
11
 
12
12
  Пользователь работает в одном Codex Project и формулирует продуктовый outcome. Coordinator выполняет
13
13
  CLI, создаёт отдельные Task/Reviewer chats и ведёт supervision loop. Workflow Core остаётся authority
@@ -40,7 +40,7 @@ Blocking unknown, scope change, grant issuance или unrecoverable integrity co
40
40
  # 2. Подготовка проекта перед новым Discovery
41
41
 
42
42
  1. Убедитесь, что checkout чистый и выбран правильный repository root.
43
- 2. Установите beta.12.6 как точную devDependency после публикации release.
43
+ 2. Установите beta.12.7 как точную devDependency после публикации release.
44
44
  3. Обновите и переустановите bundled `codex-workflow-gateway` этого release.
45
45
  4. Проверьте, что declared и installed package versions равны.
46
46
  5. Запустите новый Coordinator chat, не fork старого Milestone conversation.
@@ -56,7 +56,7 @@ AGENTS.md
56
56
  -> doctor только как дополнительная диагностика
57
57
  ```
58
58
 
59
- Handshake beta.12.6 должен сообщать `packageVersion=2.0.0-beta.12.6`, `protocolVersion=2`,
59
+ Handshake beta.12.7 должен сообщать `packageVersion=2.0.0-beta.12.7`, `protocolVersion=2`,
60
60
  `stateSchemaVersion=2`, dependency DAG, initial Plan transaction, mechanical feasibility,
61
61
  Milestone autonomy и structural replacement disabled capabilities.
62
62
 
@@ -116,7 +116,7 @@ delegate, scope, transitions и expiry. DGR передаётся только е
116
116
  ```text
117
117
  НОВЫЙ COORDINATOR CHAT
118
118
 
119
- Проведи новый Milestone через Codex Workflow V2 beta.12.6 в delegated режиме.
119
+ Проведи новый Milestone через Codex Workflow V2 beta.12.7 в delegated режиме.
120
120
  Repository: <ABSOLUTE-REPOSITORY-ROOT>.
121
121
  Milestone ID: AUTO.
122
122
  Delegate actor: agent:milestone-coordinator.
@@ -299,6 +299,7 @@ Task chat записывает его только при совпадении p
299
299
  | Finding `route=replan` с exact Plan conflict | `task plan-set`, меняются только implementation Steps |
300
300
  | `split-required` | Stop: `STRUCTURAL_REPLACEMENT_REQUIRED`, никаких replacement writes |
301
301
  | Старая версия + active downstream proof блокируют update | Только beta.12.6 exact dependency commits и advertised `update downstream-proof-dependency-recover` |
302
+ | После downstream recovery beta.12.6 вернула отвергнутый Plan через Knowledge rebind | Только beta.12.7 replan update bridge, затем recovery и новый consolidated Plan той же Task |
302
303
  | Exact beta.11 attempt-four `stop-escalate` | Только advertised prepare, затем отдельный Human-confirmed apply; исходный stop сохраняется |
303
304
  | Любой другой explicit `stop-escalate` | Terminal user attention |
304
305
  | Stale dependency binding | Новый handoff/claim только по fresh `next` |
@@ -318,6 +319,15 @@ beta.12.6 и требуйте от fresh `next` `update downstream-proof-depende
318
319
  binding dirty set. Recover регистрирует только dependency HEAD; следующий fresh `next` должен вернуть
319
320
  обычный `task downstream-proof-recover`. Любой иной diff/history/dirty path/lease означает stop.
320
321
 
322
+ Для exact stranded shape после уже выполненного beta.12.6 recovery сначала запустите новой версией
323
+ read-only `update downstream-proof-replan-update-preflight`. Продолжайте только при `eligible=true`,
324
+ source `2.0.0-beta.12.6`, exact revision/HEAD, ожидаемых dirty paths/hash и пустых blockers. Затем
325
+ перенесите beta.12.7 двумя dependency-only commits на base и Task branch, установите пакет и следуйте
326
+ fresh `next` через `update downstream-proof-replan-dependency-recover` и
327
+ `task downstream-proof-replan-recover`. После обязательного Knowledge reconcile/approve fresh `next`
328
+ должен остаться на `task plan-set`, а не resurrect старый Plan. Новый Step обязан один владеть всем
329
+ сохранённым dirty set; `task run` допустим только при `downstreamProofCarryover.state=validated`.
330
+
321
331
  Ошибка Docker socket/CLI `EPERM`, `operation not permitted` или `permission denied` в sandbox не считается
322
332
  падением daemon и не расходует retry. Повторите exact read-only probe или Plan check один раз с sandbox
323
333
  escalation. Не перезапускайте Docker Desktop и не меняйте image без отдельного разрешения и подтверждённого
@@ -353,7 +363,7 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
353
363
 
354
364
  # 14. Итоговый checklist пользователя
355
365
 
356
- - beta.12.6 exact package и новый bundled gateway установлены;
366
+ - beta.12.7 exact package и новый bundled gateway установлены;
357
367
  - новый Coordinator chat не является fork старого Milestone;
358
368
  - bootstrap DGR, если нужен, выдан отдельным exact human confirmation;
359
369
  - Discovery не materialized при blocking unknowns;
@@ -365,5 +375,6 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
365
375
  - beta.11 stop override, если рекламировался, прошёл отдельные prepare и user-confirmed apply без journal rewrite;
366
376
  - downstream predecessor recovery, если рекламировался, сохранил worktree и завершился новым Plan authority;
367
377
  - active-proof package bridge, если понадобился, зарегистрировал только exact dependency HEAD перед recovery;
378
+ - stranded-replan bridge, если понадобился, завершился новым Plan и полным Step checks/review, а не только сменой navigation;
368
379
  - split-required остановился без replacement mutations;
369
380
  - Milestone validation и final acceptance связаны с текущим clean base HEAD.
@@ -1,10 +1,10 @@
1
1
  ---
2
- title: Codex Workflow V2: технический справочник beta.12.6
2
+ title: Codex Workflow V2: технический справочник beta.12.7
3
3
  subtitle: Protocol 2, state schema 2, transactions, credentials, dependency authority, review и recovery
4
4
  part: Часть 3 из 3 | Technical reference
5
5
  document_version: 2.0
6
6
  date: 29 августа 2026
7
- subject: Технический контракт Codex Workflow V2 beta.12.6
7
+ subject: Технический контракт Codex Workflow V2 beta.12.7
8
8
  ---
9
9
 
10
10
  # 1. Runtime contract
@@ -13,9 +13,9 @@ Workflow V2 предоставляет локальные revisioned transitions
13
13
  и `value` либо структурированную ошибку с `code`, `message` и `details`. Chat, PDF и gateway не создают
14
14
  authority сами: mutating permission определяется runtime state и свежим `next`.
15
15
 
16
- | Параметр beta.12.6 | Значение |
16
+ | Параметр beta.12.7 | Значение |
17
17
  |---|---|
18
- | npm package | `codex-workflow-v2@2.0.0-beta.12.6` |
18
+ | npm package | `codex-workflow-v2@2.0.0-beta.12.7` |
19
19
  | protocolVersion | 2 |
20
20
  | stateSchemaVersion | 2 |
21
21
  | lifecycle epoch | 2 |
@@ -37,7 +37,7 @@ Gateway выполняет:
37
37
  5. вызов только package-local `dist/src/cli.js --repo <root>`;
38
38
  6. `gateway handshake` до lifecycle действий.
39
39
 
40
- Ключевые beta.12.6 capabilities:
40
+ Ключевые beta.12.7 capabilities:
41
41
 
42
42
  | Группа | Capabilities |
43
43
  |---|---|
@@ -316,7 +316,7 @@ fresh `next` через corrective yield и обычный Human-confirmed repla
316
316
  P01-A предотвращает поддерживаемые contradictions до fresh authorization. beta.11 path остаётся для
317
317
  pre-P01 authorizations и late/unsupported exact recovery cases.
318
318
 
319
- # 13.1. beta.12.6 compatibility transitions
319
+ # 13.1. beta.12.7 compatibility transitions
320
320
 
321
321
  `update dependency-provenance-recover` больше не требует полного равенства Task manifest/lock с base.
322
322
  Base остаётся version authority, а parent/HEAD candidate сравниваются без единственных Workflow
@@ -332,6 +332,18 @@ aligned runtime/declared/locked/installed/current/base versions, отсутст
332
332
  `dependencyProvenanceRecoveries.activeDownstreamProof`; product work и Step state не меняются.
333
333
  Fresh `next` затем приоритетно рекламирует `task downstream-proof-recover` до Knowledge refresh.
334
334
 
335
+ `update downstream-proof-replan-update-preflight` — read-only source gate для одного exact
336
+ beta.12.6 stranded shape после predecessor invalidation и ошибочного Knowledge rebind старого Plan.
337
+ Он требует точные source version surfaces, Task revision/status/rebind, preserved HEAD, dirty paths/hash
338
+ и отсутствие lease/transactions. После dependency-only transport
339
+ `update downstream-proof-replan-dependency-preflight/recover` валидирует parent на `HEAD^`, candidate
340
+ на `HEAD` и записывает `dependencyProvenanceRecoveries.downstreamProofReplan` без изменения product
341
+ bytes. `task downstream-proof-replan-recover` атомарно добавляет
342
+ `downstream-proof-replan-recoveries.jsonl`, supersede-ит execution authorization и возвращает Task в
343
+ `needs_fix`. Stale Knowledge refresh разрешён после repair, но не может заменить обязательный
344
+ `task plan-set`. Dirty carryover принимается `task run` только если один replacement Step владеет всем
345
+ set, а HEAD, paths и SHA-256 совпадают с recovery event.
346
+
335
347
  `task stop-override-prepare/apply` обслуживает только exact beta.11 attempt-four policy stop. Prepare
336
348
  не пишет state и создаёт binding по Task revision, Step, attempt-3 continue, attempt-4 stop, трём
337
349
  remediation events, Plan, HEAD, package, human actor и reason. Apply в отдельном user turn добавляет
@@ -430,12 +442,12 @@ Docker socket/CLI `EPERM`, `operation not permitted` или `permission denied`
430
442
  После каждой successful mutation обязателен sequential `status`, затем fresh `next`. Failed status/next
431
443
  не разрешает direct mutation. Syntax help read-only и не заменяет navigation authority.
432
444
 
433
- # 18. Public command surface beta.12.6
445
+ # 18. Public command surface beta.12.7
434
446
 
435
447
  | Область | Actions |
436
448
  |---|---|
437
449
  | System | `doctor`, `status`, `next`, `gateway handshake`, `locks` |
438
- | Update | `preflight`, `rescue-preflight`, `dependency-provenance-preflight/recover`, `downstream-proof-dependency-preflight/recover` |
450
+ | Update | `preflight`, `rescue-preflight`, dependency provenance, downstream-proof dependency bridge, downstream-proof replan update/dependency bridge |
439
451
  | Project memory | `scan`, `show`, `status`, `approve`, `reconcile` |
440
452
  | Delegation | `prepare`, `grant`, `list`, `show`, `revoke` |
441
453
  | Graph | `prepare`, `status`, `refresh-request`, `bind`, `fallback` |
@@ -445,7 +457,7 @@ Docker socket/CLI `EPERM`, `operation not permitted` или `permission denied`
445
457
  | Task execution | `start`, `run`, `step-complete`, `submit`, `result-set`, `accept`, `sync-base`, `merge`, `merge-confirm` |
446
458
  | C1 | `handoff[-prepare/-replace/-show]`, `claim`, `writer-credential-replace`, `handback[-create]` |
447
459
  | Review | review/step-review packet, launch, sealed record и record actions |
448
- | Corrective | decision/recovery, plan-integrity, downstream-proof-recover, remediation-mode, stop-override prepare/apply, yield и corrective-replan actions |
460
+ | Corrective | decision/recovery, plan-integrity, downstream-proof-recover/replan-recover, remediation-mode, stop-override prepare/apply, yield и corrective-replan actions |
449
461
  | Replacement | `replacement-materialize` retained, но всегда disabled в P04-A |
450
462
 
451
463
  Exact options берутся из fresh `next`; command help используется только когда
@@ -454,10 +466,11 @@ Exact options берутся из fresh `next`; command help используе
454
466
  # 19. Release и package update gates
455
467
 
456
468
  Перед package update project-local `update preflight` должен вернуть `safe=true`: clean checkout, нет
457
- running Step и active/stale writer lease. Исключения — документированный alpha.7 rescue и beta.12.6
458
- active-downstream-proof dependency bridge; оба fail-closed и не дают общего разрешения dirty update.
469
+ running Step и active/stale writer lease. Исключения — документированный alpha.7 rescue, beta.12.6
470
+ active-downstream-proof bridge и beta.12.7 exact stranded-replan bridge; все они fail-closed и не дают
471
+ общего разрешения dirty update.
459
472
 
460
- Перед beta.12.6 tag release repository выполняет:
473
+ Перед beta.12.7 tag release repository выполняет:
461
474
 
462
475
  1. `npm ci`;
463
476
  2. `npm run validate`;
package/docs/release.md CHANGED
@@ -27,7 +27,7 @@ The PDF check deterministically regenerates all three Russian documents from
27
27
  `docs/pdf/sources`, binds the visible package version to the root manifest, and fails when any
28
28
  tracked PDF is stale. Source and binary PDFs are one release unit.
29
29
 
30
- For beta.12.6, the release gate also relies on `npm run release:check` to fail if:
30
+ For beta.12.7, the release gate also relies on `npm run release:check` to fail if:
31
31
 
32
32
  - canonical entity schema 2 shapes drift;
33
33
  - protocol 2 is not the active public contract, or intact protocol-1 adoption evidence stops being readable through the bounded compatibility window;
@@ -57,6 +57,12 @@ For beta.12.6, the release gate also relies on `npm run release:check` to fail i
57
57
  aligned base/Task commits while preserving product bytes; or unknown history, unrelated dirty
58
58
  scope, content drift within an observation, leases, transactions, and wider candidates do not
59
59
  fail closed before provenance registration and ordinary downstream recovery.
60
+ - the exact beta.12.6 post-invalidation Knowledge-rebind shape cannot pass a read-only source gate,
61
+ transport beta.12.7 through dependency-only commits, register provenance, restore `needs_fix`,
62
+ survive required Knowledge refresh, and reach a fresh replacement Plan;
63
+ - preserved dirty bytes can execute without one Step owning the complete bound set, or HEAD/path/hash
64
+ drift is accepted; or the Signal-shaped E2E stops before checks, Core commit, strict Step review,
65
+ and fresh navigation to Task submission.
60
66
  - bundled gateway guidance treats Docker socket `EPERM` as daemon failure, consumes a remediation
61
67
  attempt before one exact escalated probe, or recommends restarting Docker Desktop without separate
62
68
  authority.
@@ -93,6 +93,30 @@ ownership и history, а новый Plan и review оценивают текущ
93
93
  version divergence, branch/Plan/Step mismatch, lease или transaction. В этом случае не правьте
94
94
  `systemCommits` или внешний state вручную.
95
95
 
96
+ ### Исключение beta.12.7 для stranded downstream replan
97
+
98
+ Это исключение применимо только если beta.12.6 уже записала downstream-proof invalidation, а затем
99
+ Project Knowledge approval ошибочно rebound-нул отвергнутый Plan и вернул Task в
100
+ `awaiting_execution_authorization`. До изменения dependency запустите beta.12.7 source/runtime
101
+ read-only `update downstream-proof-replan-update-preflight --id <TASK-ID>`. Требуются
102
+ `eligible=true`, source version `2.0.0-beta.12.6`, exact Task revision/branch/base/HEAD, неизменные
103
+ dirty paths/content hash и пустые blockers.
104
+
105
+ Затем тем же двухкоммитным способом обновите active base и Task branch только в `package.json` и
106
+ `package-lock.json`, установите exact beta.12.7 и следуйте fresh `next`. Допустимая цепочка:
107
+ `update downstream-proof-replan-dependency-preflight` ->
108
+ `update downstream-proof-replan-dependency-recover` ->
109
+ `task downstream-proof-replan-recover`. После repair manifest change обычно делает Project Knowledge
110
+ stale: выполните рекламируемые reconcile/approve, но не `task knowledge-rebind` старого Plan. Fresh
111
+ `next` обязан вернуть `task plan-set`.
112
+
113
+ Новый Plan должен заново классифицировать весь unfinished remainder. Сохранённые dirty bytes не
114
+ становятся completed evidence и не коммитятся административным recovery. Они могут быть приняты
115
+ только одним planned Step, `allowedWrites` которого точно покрывает весь dirty set. Перед `task run`
116
+ fresh `next` обязан показать `downstreamProofCarryover.state=validated`; после run обязательны checks,
117
+ Core-owned Step commit и strict review, если Step guarded. Изменение content/path/HEAD, дополнительная
118
+ Task revision, audit/authorization старого Plan, lease или transaction блокируют исключение.
119
+
96
120
  ### Исключение beta.12.1 для beta.11 attempt-four stop
97
121
 
98
122
  Если beta.11 записал `stop-escalate` перед четвёртой попыткой только после последовательности
@@ -1,111 +1,110 @@
1
- # V2 beta.12.6 Validation Report
1
+ # V2 beta.12.7 Validation Report
2
2
 
3
- Release candidate `2.0.0-beta.12.6` was validated on 2026-08-29 (Europe/Moscow) with
3
+ Release candidate `2.0.0-beta.12.7` was validated on 2026-08-29 (Europe/Moscow) with
4
4
  Node.js 24.17.0.
5
5
 
6
6
  ## Automated release evidence
7
7
 
8
- - The first full `npm run validate` passed typecheck and `335/335` sequential tests with no
9
- failures, skips, cancellations, or todos in 1,461,147.464875 ms.
10
- - `npm ci` then completed from the lockfile with 0 reported vulnerabilities. The clean-install
11
- `npm run validate` independently passed the same `335/335` tests with no failures, skips,
12
- cancellations, or todos in 1,461,906.892 ms.
13
- - The exact Signal T04/downstream recovery gate passed `8/8`. The targeted dependency-provenance,
14
- downstream-proof, CLI-help, and lifecycle-model suite passed `23/23`.
15
- - The positive beta.12.6 fixture proves the complete compatibility sequence: exact active-base and
16
- Task dependency commits, history validation at `HEAD^`, candidate validation at `HEAD`, dirty
17
- content binding, dependency registration, fresh navigation to `task downstream-proof-recover`,
18
- unchanged product bytes, and valid recorded Task history. Negative cases cover unrelated dirty
19
- files, unregistered history, and an active writer lease. Existing Signal T04 tests remain intact.
20
- - `npm run pack:check` built the exact beta.12.6 package: 274 files, 1.0 MB packed and 4.0 MB
21
- unpacked. The first attempt could not write the user npm cache (`EPERM`); the exact retry used an
22
- isolated temporary cache and passed without changing global cache ownership.
8
+ - `npm ci` completed from the lockfile with 0 reported vulnerabilities.
9
+ - The final post-fix `npm run validate` passed typecheck and `338/338` sequential tests with no
10
+ failures, skips, cancellations, or todos in 1,641,977.92675 ms. The same suite also passed after
11
+ the clean install (`338/338` in 1,661,195.192667 ms) and before it (`338/338` in
12
+ 1,347,257.496667 ms).
13
+ - `npm run test:signal-t03-replan-e2e` independently passed the full Signal-shaped compatibility
14
+ scenario. The focused dependency-provenance, downstream-proof, and lifecycle-model suite passed
15
+ `23/23`.
16
+ - The Signal-shaped E2E starts with the exact six-path ownership split and the beta.12.6 accidental
17
+ post-invalidation Knowledge rebind. It then proves: read-only source eligibility, two
18
+ dependency-only transport commits, `HEAD^`/`HEAD` provenance validation, bounded dependency
19
+ registration, atomic replan recovery, required Project Knowledge refresh, mandatory replacement
20
+ `plan-set`, one-Step dirty carryover admission, hostile concurrency and rollback/restart checks,
21
+ Core-owned Step commit, passed strict Step Review, and fresh navigation to `task submit`.
22
+ - Negative regressions reject stale Plan rebind, unrelated dirty files, changed content hash,
23
+ unknown history, a wider dependency candidate, current legacy-Plan audit/authorization, extra Task
24
+ revisions, active lease, pending transaction, corrupted invalidation/recovery sidecars, and a
25
+ replacement Plan that does not give one Step authority over the complete dirty set.
26
+ - `npm run pack:check` built the exact beta.12.7 package: 275 files, 1.0 MB packed and 4.1 MB
27
+ unpacked. The sandboxed attempt
28
+ could not write the user npm cache (`EPERM`); the exact authorized retry passed.
23
29
  - `npm run smoke:downstream` packed and installed the tarball in a disposable consumer project and
24
30
  returned `ok=true`. The sandboxed attempt could not resolve the npm registry (`ENOTFOUND`); the
25
31
  exact network-authorized retry passed.
26
32
  - `npm run plugin:check`, `npm run docs:pdf:check`, and exact
27
- `RELEASE_TAG=v2.0.0-beta.12.6 npm run release:check` passed. The plugin gate caught one missing
28
- `HEAD^` boundary in the human-facing gateway instructions; that boundary was added and the gate
29
- then passed. The bundled gateway cachebuster is `0.1.0+codex.20260829120000`.
33
+ `RELEASE_TAG=v2.0.0-beta.12.7 npm run release:check` passed after the final source changes. The
34
+ bundled gateway cachebuster is `0.1.0+codex.20260829143747`.
30
35
 
31
- ## Root cause corrected by beta.12.6
36
+ ## Root causes corrected by beta.12.7
32
37
 
33
- - beta.12.5 correctly classified the current Signal downstream-proof conflict as recoverable, but
34
- that did not make the release installable. Signal still runs beta.12.4, whose ordinary update
35
- preflight rejects the running Step and dirty product work. Installing beta.12.5 would also advance
36
- dependency manifests/HEAD before that new runtime could register the commit. The advertised
37
- beta.12.5 recovery was therefore unreachable from the actual starting version.
38
- - This is an update authority deadlock, not a need for more review attempts: the old runtime cannot
39
- authorize the dirty update, while the new runtime cannot be reached without an exact update.
40
- - beta.12.6 adds one bounded bridge rather than general dirty-update permission. The active
41
- Milestone base and Task branch must each receive a separate dependency-only commit changing
42
- exactly `package.json` and `package-lock.json`. A fresh beta.12.6 runtime then advertises
43
- `update downstream-proof-dependency-recover` only for the active downstream-proof shape.
44
- - Preflight verifies recorded Task history at `HEAD^`, the exact candidate at `HEAD`, aligned
45
- runtime/declared/locked/installed/current-branch/base versions, one active Step, completed
46
- transitive-predecessor ownership, branch and Plan bindings, no lease, no pending/corrupt
47
- transaction or Core operation, and every dirty path plus SHA-256 content.
48
- - Recovery registers only the dependency candidate in `systemCommits` and records the bound proof
49
- in `dependencyProvenanceRecoveries.activeDownstreamProof`. It does not edit, stash, reset, commit,
50
- or discard product work and does not change Step state. Fresh `next` then prioritizes
51
- `task downstream-proof-recover` over manifest-induced Knowledge refresh.
52
- - The ordinary downstream recovery remains responsible for invalidating stale predecessor
53
- completion authority and returning the same Task to a new Plan, Risk Audit, authorization,
54
- execution, and strict-review cycle. beta.12.6 does not bypass that lifecycle.
38
+ - beta.12.6 correctly invalidated the completed migration predecessor and required a replacement
39
+ Plan. A later Project Knowledge approval nevertheless mechanically rebound the rejected two-Step
40
+ Plan and returned the Task to `awaiting_execution_authorization`. The required `plan-set` boundary
41
+ was therefore lost.
42
+ - The stranded state could not be fixed by another review attempt: no Step was runnable and the
43
+ current Plan was the artifact whose authority had already been rejected. The defect was routing
44
+ and recovery authority, not insufficient implementation effort.
45
+ - A one-transition repair was also insufficient. The full E2E exposed two additional dead ends:
46
+ the exact dependency-only update makes Project Knowledge stale before repair, and the ordinary
47
+ `task run` clean-checkout precondition rejected the deliberately preserved dirty bytes even after
48
+ a correct replacement Plan.
49
+ - beta.12.7 adds a closed compatibility sequence. The external source preflight recognizes only the
50
+ exact beta.12.6 stranded shape. Dependency registration binds the update commit to the original
51
+ invalidation, rebound Plan, preserved HEAD, dirty paths, and content hash. Replan recovery returns
52
+ the same Task to `needs_fix` without requiring the now-stale live Knowledge Map to be active.
53
+ - Project Knowledge can then be reconciled and approved, but refresh/rebind routing cannot replace
54
+ the mandatory `task plan-set`. The old Plan receives no execution authority.
55
+ - Dirty bytes are not adopted as completed evidence. After a fresh Plan Risk Audit and execution
56
+ authorization, `task run` permits carryover only when one planned Step owns every bound path and
57
+ current HEAD/path/content hashes exactly match the recovery event. All ordinary checks, Core Git
58
+ ownership, and strict-review requirements remain in force.
55
59
 
56
- ## Exact Signal read-only evidence
60
+ ## Exact Signal project evidence
57
61
 
58
- - The Signal repository `/Users/home-pc/htdocs/projects/signal_v4` was re-observed read-only after
59
- implementation. It remains on branch
60
- `codex/task-01m0wxjad4-processing-persistence-schema` at
61
- `88f8bf70d1591852ad90c976625430d4f20585ac`.
62
- - Its dirty set remains exactly six paths: five modified processing-migration files and one
63
- untracked `tools/postgres/run-processing-integration.ts`. No Signal repository or Workflow state
64
- was mutated during beta.12.6 implementation.
65
- - Prior read-only state inspection identified Task
66
- `TASK-01M0WXJAD4GZGVNRJ284ND95C6`, revision 103, active Step
67
- `STEP-002-REAL-POSTGRES-PROOF`, five files owned by completed transitive predecessor
68
- `STEP-001-PROCESSING-MIGRATIONS`, and one file owned by the active proof Step. The predecessor
69
- evidence commit equals the preserved HEAD.
70
- - The installed beta.12.4 ordinary update preflight returned `safe=false` for the running Step and
71
- dirty checkout. The external beta.12.5 classifier returned `applicable=true`, `eligible=true`, and
72
- no recovery blockers, proving that the product boundary itself is supported but not that the old
73
- update path can reach it.
74
- - The beta.12.6 regression fixture mirrors all six Signal paths and the same predecessor/active-Step
75
- ownership split. It proves the new update bridge and subsequent downstream recovery route under
76
- controlled Git/state mutations.
77
- - This is strong structural and synthetic evidence, not a claim that the published package has
78
- already updated live Signal. The final operational proof still requires the released exact
79
- package, two exact dependency-only transport commits, the advertised preflight/recover, and a
80
- fresh Signal `status -> next` readback.
62
+ - The Signal repository `/Users/home-pc/htdocs/projects/signal_v4` was inspected and exercised on
63
+ branch `codex/task-01m0wxjad4-processing-persistence-schema` at
64
+ `4606eaf98f3c5f1f0dec4c361f34e2abe9aefa66`.
65
+ - Its Workflow remains on exact `2.0.0-beta.12.6`. Task
66
+ `TASK-01M0WXJAD4GZGVNRJ284ND95C6` remains revision 106 and
67
+ `awaiting_execution_authorization`; live Workflow state was not mutated by beta.12.7 validation.
68
+ - The dirty set remains exactly six paths: five modified processing-migration files and untracked
69
+ `tools/postgres/run-processing-integration.ts`. After temporary hostile-test additions were
70
+ removed, the beta.12.7 source preflight returned `eligible=true`, empty blockers, the preserved
71
+ HEAD above, and dirty-worktree SHA-256
72
+ `1cbeb0ccb4883ade6f2ea751423385cf504f5c18e45473f40cb9a39ca850ece1`.
73
+ - The real Signal PostgreSQL harness was temporarily extended with two concurrent migrators and a
74
+ forced mid-migration conflict followed by restart. `npm run processing:postgres:test` passed clean
75
+ bootstrap/repeat, advisory-lock serialization, transaction rollback with no partial ledger/schema,
76
+ unchanged restart convergence, tamper/order denial, catalog fingerprint, immutable evidence, and
77
+ least-privilege checks against the pinned PostgreSQL image.
78
+ - Those temporary product changes were then removed exactly and the original runner bytes were
79
+ verified against a parallel Signal checkout before the recovery fingerprint was re-read. This
80
+ proves product feasibility without falsely presenting pre-authorized test bytes to Workflow.
81
+ - This is strong live read-only entry evidence plus real product proof. It is not a claim that the
82
+ unpublished beta.12.7 package has already updated Signal or mutated its Task. Final live continuation
83
+ still requires release publication, exact dependency-only transport, and following fresh
84
+ project-local `next` through the tested sequence.
81
85
 
82
86
  ## PDF release documentation evidence
83
87
 
84
- - Three tracked Russian PDFs were regenerated from Markdown sources; `npm run docs:pdf:check`
85
- reported an empty stale set.
86
- - All 27 pages were rendered and visually inspected: architecture is 7 pages (101,761 bytes), the
87
- delegated chat-only guide is 9 pages (107,066 bytes), and the technical reference is 11 pages
88
- (112,132 bytes).
89
- - Visual inspection found table headers rendered dark-on-dark. The shared generator now uses an
90
- explicit white bold header Paragraph style; all documents were regenerated and re-inspected.
91
- Titles, version headers, Cyrillic glyphs, tables, code blocks, recovery instructions, page edges,
92
- and footers have no visible clipping, overlap, or unreadable content.
88
+ - Three tracked Russian PDFs were regenerated from current Markdown sources;
89
+ `npm run docs:pdf:check` reported an empty stale set.
90
+ - All 28 pages were rendered and visually inspected: architecture is 8 pages, the delegated
91
+ chat-only guide is 9 pages, and the technical reference is 11 pages.
92
+ - Titles, beta.12.7 version headers, Cyrillic glyphs, tables, code blocks, new recovery commands,
93
+ page edges, and footers show no visible clipping, overlap, or unreadable content.
93
94
 
94
95
  ## Existing boundaries and non-claims
95
96
 
96
- - Structural replacement remains intentionally disabled. beta.12.6 does not implement P04-B,
97
+ - Structural replacement remains intentionally disabled. beta.12.7 does not implement P04-B,
97
98
  topology rewiring, completed-Step adoption, or a wider delegation surface.
98
- - The compatibility bridge is limited to the proven active-downstream-proof shape. Unrelated dirty
99
- paths, non-predecessor ownership, unknown history, a wider dependency commit, stale base/version
100
- divergence, branch/Plan/Step mismatch, lease, transaction, or damaged sidecar fails closed.
101
- - Read-only preflight is an observation, not an authorization token. Recover recomputes the current
102
- binding. The stored hash proves which bytes the bridge preserved; subsequent downstream recovery
103
- revalidates paths, ownership, and history, while the replacement Plan and review cover current
104
- content.
105
- - Git transport commits remain agent-executed operations on exact advertised boundaries. The
106
- runtime does not create, amend, merge, reset, or push Git history.
107
- - Validation performed no Signal mutation, npm publication, Git commit, tag, remote push, or local
108
- plugin reinstall. Those are separate release/deployment actions.
109
- - Confidence is high for the implemented source and tested Signal-shaped transition. Confidence in
110
- the final live Signal update remains pending until the published package is installed and the
111
- project-local runtime returns the expected recovery sequence.
99
+ - The new bridge is limited to the proven beta.12.6 invalidation-plus-accidental-rebind sequence.
100
+ It is not a general permission for dirty update, arbitrary Plan rollback, or manual state repair.
101
+ - A negative Plan Risk Audit decision may truthfully return the same Task to planning, but no
102
+ automatic component decides product semantics or widens Task objective, requirements, acceptance,
103
+ or Milestone topology.
104
+ - Git transport commits remain agent-executed operations on exact advertised boundaries. Runtime
105
+ does not create, amend, merge, reset, publish, tag, or push release history.
106
+ - Validation performed no npm publication, Git commit, tag, remote push, Signal dependency update,
107
+ or local plugin reinstall. Those remain separate release/deployment actions.
108
+ - Confidence is high for the implementation, package artifact, synthetic Workflow E2E, and real
109
+ PostgreSQL proof. Confidence in final live Signal continuation remains conditional on installing
110
+ the published exact package and observing the same project-local recovery sequence.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-workflow-v2",
3
- "version": "2.0.0-beta.12.6",
3
+ "version": "2.0.0-beta.12.7",
4
4
  "description": "Requirements-first Codex development workflow with local state and explicit Git ownership.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -44,6 +44,7 @@
44
44
  "typecheck": "tsc -p tsconfig.json --noEmit",
45
45
  "test": "node scripts/with-validation-lock.mjs test",
46
46
  "test:signal-t04-recovery": "node scripts/with-validation-lock.mjs test-signal-t04",
47
+ "test:signal-t03-replan-e2e": "node scripts/with-validation-lock.mjs test-signal-t03-replan",
47
48
  "validate": "npm run typecheck && npm test",
48
49
  "pack:check": "npm run build && npm pack --dry-run",
49
50
  "smoke:downstream": "npm run build && node scripts/downstream-smoke.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-workflow-gateway",
3
- "version": "0.1.0+codex.20260829120000",
3
+ "version": "0.1.0+codex.20260829143747",
4
4
  "description": "Thin personal Codex gateway for exact project-local Codex Workflow V2 packages and codebase-memory-mcp.",
5
5
  "author": {
6
6
  "name": "Codex Workflow Maintainers"