codex-workflow-v2 2.0.0-beta.12.4 → 2.0.0-beta.12.5

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.
@@ -141,6 +141,22 @@ validation, Risk Audit, Human confirmation, journaled execution, readback, and r
141
141
  authorization. Other check failures use the normal continuable remediation route; they do not
142
142
  receive the narrow Plan-integrity shortcut, but attempt count alone never stops them.
143
143
 
144
+ ### Downstream-proof predecessor recovery
145
+
146
+ Core prevents `task step-complete` when the active proof Step has dirty files outside its own
147
+ `allowedWrites`. A bounded recovery is advertised only when every such file belongs to a completed
148
+ transitive predecessor, the branch and registered Git history are exact, the active Step has no
149
+ completion evidence, and no unrelated path exists. The atomic transition preserves product files
150
+ and HEAD, moves invalidated predecessor commits into historical `invalidatedStepCommits`, clears stale Step
151
+ evidence, supersedes execution authority, yields C1, and routes the same Task to ordinary `plan-set`.
152
+ The route grants no authority to change Task objective, requirements, acceptance, or Milestone
153
+ topology.
154
+
155
+ Docker permission diagnostics are classified before consuming retry authority. Sandbox `EPERM` or
156
+ permission denial gets one exact escalated rerun of the health probe/Plan check. It is not an infra
157
+ failure and cannot authorize a Docker Desktop restart or image substitution. Only an escalated
158
+ invocation that reaches Docker and proves daemon unavailability establishes that failure class.
159
+
144
160
  ## Atomic context refresh
145
161
 
146
162
  When `next` returns top-level `action: task context-refresh` with an exact option, a
@@ -99,6 +99,18 @@ the exact evidence-bound early `replan-required` posture; it never edits source,
99
99
  Continue through the advertised corrective yield and corrective replan rather than calling
100
100
  `task run` again.
101
101
 
102
+ If a later proof Step leaves changes both in its own scope and in files owned by a completed
103
+ transitive predecessor, fresh `next` advertises `task downstream-proof-recover` instead of
104
+ `task step-complete`. The command preserves the dirty worktree and HEAD, append-only records the
105
+ invalidated predecessor completion, yields its C1 lease, and returns the same Task to `task plan-set`.
106
+ The replacement Plan must cover the unfinished remainder and pass a fresh Risk Audit and execution
107
+ authorization. Do not stash, reset, commit, or recreate the Task around this route.
108
+
109
+ A sandboxed Docker `EPERM`, `operation not permitted`, or `permission denied` result is not a failed
110
+ daemon check. Re-run the exact probe/check once with sandbox escalation without consuming a retry.
111
+ Restart Docker Desktop only with separate authorization after the escalated call reaches Docker and
112
+ proves the daemon unavailable.
113
+
102
114
  Execution authorization and final acceptance use the human path by default. If the user has
103
115
  previously issued an active delegation grant for the exact transition and scope, the named
104
116
  delegate may perform that transition with `--delegation-grant`. The event keeps the delegate
@@ -1,10 +1,10 @@
1
1
  ---
2
- title: Codex Workflow V2: архитектура beta.12.4
2
+ title: Codex Workflow V2: архитектура beta.12.5
3
3
  subtitle: Источники истины, lifecycle, роли, delegation, зависимости Tasks и границы доверия
4
4
  part: Часть 1 из 3 | Архитектура
5
5
  document_version: 2.0
6
- date: 28 августа 2026
7
- subject: Архитектура и границы Codex Workflow V2 beta.12.4
6
+ date: 29 августа 2026
7
+ subject: Архитектура и границы Codex Workflow V2 beta.12.5
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.4 гарантирует
21
+ ## 1.1. Что beta.12.5 гарантирует
22
22
 
23
23
  - exact project-local npm package и совместимый handshake до lifecycle действий;
24
24
  - Discovery до materialization Task или Milestone;
@@ -29,8 +29,10 @@ Codex Workflow V2 - локальный state machine поверх Codex App, Git
29
29
  - external-sealed Step/Task review в отдельных Codex tasks;
30
30
  - state-bound human gates либо ранее выданные bounded delegation contracts;
31
31
  - journaled recovery для составных переходов и fail-closed поведение при drift/corruption.
32
+ - bounded recovery, когда downstream proof требует изменить уже завершённый predecessor Step:
33
+ worktree и HEAD сохраняются, stale completion authority снимается, та же Task возвращается в planning.
32
34
 
33
- ## 1.2. Что beta.12.4 не гарантирует
35
+ ## 1.2. Что beta.12.5 не гарантирует
34
36
 
35
37
  - правильность продуктовой идеи или автоматически выбранного provider Task;
36
38
  - semantic sufficiency Plan, если точные факты нельзя доказать поддерживаемым analyzer;
@@ -247,13 +249,25 @@ beta.11 `task plan-integrity-recover` существует для одного
247
249
  отсутствует exact root npm script и текущий Step не может изменить package.json. Recovery не меняет
248
250
  worktree или Plan и не создаёт synthetic second failure; он записывает bound `replan-required`.
249
251
 
252
+ beta.12.5 различает другой случай: активный downstream proof оставил изменения в собственном scope и
253
+ показал необходимость исправить completed transitive predecessor. Fresh `next` вместо невозможного
254
+ `step-complete` рекламирует `task downstream-proof-recover`. Atomic transition сохраняет dirty files и
255
+ HEAD, переносит predecessor commits в historical `invalidatedStepCommits`, очищает только stale Step evidence,
256
+ yield C1 и возвращает ту же Task к новому Plan/risk audit/authorization. Unrelated dirty file,
257
+ non-predecessor ownership, повреждённый journal или unregistered commit fail closed.
258
+
259
+ Docker socket `EPERM` в sandbox не является доказательством сломанного daemon. Gateway один раз
260
+ повторяет exact health probe или Plan check с sandbox escalation без расходования remediation attempt.
261
+ Restart Docker Desktop требует отдельного разрешения и допустим только после escalated daemon failure.
262
+
250
263
  > **Стоп P04-A:** `split-required` возвращает `STRUCTURAL_REPLACEMENT_REQUIRED` и `structuralReplacementAvailable=false`. Нельзя вызывать retained replacement command, потреблять replacement Discovery или вручную менять topology. Продолжение возможно только после P04-B/P05.
251
264
 
252
265
  # 10. Operational checklist
253
266
 
254
267
  - exact package version установлен, bundled gateway соответствует release и переустановлен;
255
- - handshake подтверждает protocol 2, state schema 2 и beta.12.4 capabilities;
268
+ - handshake подтверждает protocol 2, state schema 2 и beta.12.5 capabilities;
256
269
  - каждый mutation следует свежему `status -> next` и exact option contract;
270
+ - Docker permission failure сначала классифицируется как sandbox boundary, а не как infra retry;
257
271
  - semantic unknowns и human gates не маскируются delegation;
258
272
  - Task chats создаёт coordinator, credentials остаются только в памяти;
259
273
  - dependencies, progress и review posture берутся из Core projections;
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  title: Codex Workflow V2: delegated chat-only guide
3
- subtitle: Актуальный beta.12.4 путь от нового Discovery до принятого Milestone без ручного CLI
3
+ subtitle: Актуальный beta.12.5 путь от нового Discovery до принятого Milestone без ручного CLI
4
4
  part: Часть 2 из 3 | Практика
5
5
  document_version: 2.0
6
- date: 28 августа 2026
7
- subject: Практическое руководство по delegated Discovery и Milestone в Workflow V2 beta.12.4
6
+ date: 29 августа 2026
7
+ subject: Практическое руководство по delegated Discovery и Milestone в Workflow V2 beta.12.5
8
8
  ---
9
9
 
10
- # 1. Рабочая модель beta.12.4
10
+ # 1. Рабочая модель beta.12.5
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.4 как точную devDependency после публикации release.
43
+ 2. Установите beta.12.5 как точную 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.4 должен сообщать `packageVersion=2.0.0-beta.12.4`, `protocolVersion=2`,
59
+ Handshake beta.12.5 должен сообщать `packageVersion=2.0.0-beta.12.5`, `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.4 в delegated режиме.
119
+ Проведи новый Milestone через Codex Workflow V2 beta.12.5 в delegated режиме.
120
120
  Repository: <ABSOLUTE-REPOSITORY-ROOT>.
121
121
  Milestone ID: AUTO.
122
122
  Delegate actor: agent:milestone-coordinator.
@@ -293,6 +293,7 @@ Task chat записывает его только при совпадении p
293
293
  | Состояние | Действие |
294
294
  |---|---|
295
295
  | First proven impossible npm check после legacy/late authorization | Только рекламируемый `task plan-integrity-recover` |
296
+ | Downstream proof требует изменить completed predecessor | Только `task downstream-proof-recover`, затем новый Plan/risk audit/authorization в той же Task |
296
297
  | Failed guarded review | Та же Task: исправление и новый strict review без attempt hard stop |
297
298
  | Finding `route=fix` | Продолжить тот же Step; count остаётся диагностикой |
298
299
  | Finding `route=replan` с exact Plan conflict | `task plan-set`, меняются только implementation Steps |
@@ -305,6 +306,15 @@ Task chat записывает его только при совпадении p
305
306
  Plan-integrity recovery не редактирует Plan, package.json или worktree и не синтезирует второй failure.
306
307
  P04-A не переносит completed Steps и не rewires dependencies при split.
307
308
 
309
+ `task downstream-proof-recover` также не редактирует product files и не создаёт новую Task. Он сохраняет
310
+ dirty worktree/HEAD, append-only фиксирует invalidated predecessor evidence, освобождает C1 и возвращает
311
+ текущую Task к `task plan-set`. Если fresh `next` не рекламирует этот переход, вызывать его нельзя.
312
+
313
+ Ошибка Docker socket/CLI `EPERM`, `operation not permitted` или `permission denied` в sandbox не считается
314
+ падением daemon и не расходует retry. Повторите exact read-only probe или Plan check один раз с sandbox
315
+ escalation. Не перезапускайте Docker Desktop и не меняйте image без отдельного разрешения и подтверждённого
316
+ escalated daemon failure.
317
+
308
318
  Если после применённого stop override `next` рекламирует delegated `task context-refresh` или
309
319
  `update dependency-provenance-recover`, выполните только этот advertised atomic/recovery переход и
310
320
  снова запросите `status -> next`. Таких механических refresh/update циклов может быть несколько.
@@ -335,7 +345,7 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
335
345
 
336
346
  # 14. Итоговый checklist пользователя
337
347
 
338
- - beta.12.4 exact package и новый bundled gateway установлены;
348
+ - beta.12.5 exact package и новый bundled gateway установлены;
339
349
  - новый Coordinator chat не является fork старого Milestone;
340
350
  - bootstrap DGR, если нужен, выдан отдельным exact human confirmation;
341
351
  - Discovery не materialized при blocking unknowns;
@@ -345,5 +355,6 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
345
355
  - credentials не появились в prompts, reports или files;
346
356
  - каждый transition пришёл из fresh `next`;
347
357
  - beta.11 stop override, если рекламировался, прошёл отдельные prepare и user-confirmed apply без journal rewrite;
358
+ - downstream predecessor recovery, если рекламировался, сохранил worktree и завершился новым Plan authority;
348
359
  - split-required остановился без replacement mutations;
349
360
  - Milestone validation и final acceptance связаны с текущим clean base HEAD.
@@ -1,10 +1,10 @@
1
1
  ---
2
- title: Codex Workflow V2: технический справочник beta.12.4
2
+ title: Codex Workflow V2: технический справочник beta.12.5
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
- date: 28 августа 2026
7
- subject: Технический контракт Codex Workflow V2 beta.12.4
6
+ date: 29 августа 2026
7
+ subject: Технический контракт Codex Workflow V2 beta.12.5
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.4 | Значение |
16
+ | Параметр beta.12.5 | Значение |
17
17
  |---|---|
18
- | npm package | `codex-workflow-v2@2.0.0-beta.12.4` |
18
+ | npm package | `codex-workflow-v2@2.0.0-beta.12.5` |
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.4 capabilities:
40
+ Ключевые beta.12.5 capabilities:
41
41
 
42
42
  | Группа | Capabilities |
43
43
  |---|---|
@@ -46,7 +46,7 @@ Gateway выполняет:
46
46
  | Task planning | Plan Risk Audit, proof obligations, mechanical feasibility |
47
47
  | C1 | handoff sidecar, handoff bundle, derived Worker actor, credential replacement |
48
48
  | Reviews | strict reviewer, Step strict review, continuable remediation, evidence-bound fix/replan routing |
49
- | Recovery | Task-local dependency provenance, plan integrity, remediation mode, legacy stop override, append-only stop-rebind chain, corrective yield/replan journals |
49
+ | Recovery | Task-local dependency provenance, plan integrity, downstream-proof predecessor invalidation, remediation mode, legacy stop override, append-only stop-rebind chain, corrective yield/replan journals |
50
50
  | Replacement | `structural-task-replacement-disabled-v1` |
51
51
 
52
52
  Handshake incompatibility прекращает работу. Запуск global package, `latest`, mutable range или соседней
@@ -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.4 compatibility transitions
319
+ # 13.1. beta.12.5 compatibility transitions
320
320
 
321
321
  `update dependency-provenance-recover` больше не требует полного равенства Task manifest/lock с base.
322
322
  Base остаётся version authority, а parent/HEAD candidate сравниваются без единственных Workflow
@@ -345,6 +345,20 @@ diff. Semantic drift, иной commit или разрыв chain fail closed. Pro
345
345
  из уже проверенной override-to-authorization Git chain. Формула должна точно равняться current Task
346
346
  revision; unrelated write, duplicate, неверный parent или product commit блокируют continuation.
347
347
 
348
+ # 13.2. Downstream-proof predecessor recovery
349
+
350
+ Если active Step изменяет только собственный proof artifact, обычный `task step-complete` сохраняется.
351
+ Если dirty set дополнительно содержит файлы completed transitive predecessor, Core проверяет branch,
352
+ зарегистрированную Git history, dependency closure и ownership каждого такого файла. При точном совпадении
353
+ fresh `next` рекламирует lease-bound `task downstream-proof-recover` вместо заведомо невозможного commit.
354
+
355
+ Одна project transaction сохраняет worktree и HEAD, append-only записывает
356
+ `downstream-proof-invalidations.jsonl`, переносит invalidated completion commits в `invalidatedStepCommits`, очищает
357
+ их Step evidence, блокирует proof Step, supersede execution authorization, yield C1 и удаляет lease.
358
+ Следующий action — обычный `task plan-set` той же Task. Replacement Plan обязан заново охватить unfinished
359
+ remainder и пройти fresh Plan Risk Audit и execution authorization. Unrelated/non-predecessor file,
360
+ strict-review evidence, unregistered commit, branch mismatch или damaged sidecar возвращают `doctor`.
361
+
348
362
  # 14. P04-A structural replacement boundary
349
363
 
350
364
  Command shape `task replacement-materialize` retained только для compatibility diagnostics. Любая попытка
@@ -399,10 +413,15 @@ Graph является навигационным индексом, не Project
399
413
  | `GIT_PRECONDITION_FAILED` | Branch/base/clean/history mismatch | Штатная Git recovery/sync route |
400
414
  | `COMMAND_FAILED` | Git/check/provider process failed | Сохранить evidence и устранить concrete cause |
401
415
 
416
+ Docker socket/CLI `EPERM`, `operation not permitted` или `permission denied` внутри sandbox классифицируется
417
+ как execution-boundary access, не как `COMMAND_FAILED` daemon. Exact read-only probe или Plan check один раз
418
+ повторяется с escalation и не расходует remediation/infra retry. Restart Docker Desktop или image mutation
419
+ без отдельного разрешения запрещены; daemon failure подтверждает только escalated invocation.
420
+
402
421
  После каждой successful mutation обязателен sequential `status`, затем fresh `next`. Failed status/next
403
422
  не разрешает direct mutation. Syntax help read-only и не заменяет navigation authority.
404
423
 
405
- # 18. Public command surface beta.12.4
424
+ # 18. Public command surface beta.12.5
406
425
 
407
426
  | Область | Actions |
408
427
  |---|---|
@@ -417,7 +436,7 @@ Graph является навигационным индексом, не Project
417
436
  | Task execution | `start`, `run`, `step-complete`, `submit`, `result-set`, `accept`, `sync-base`, `merge`, `merge-confirm` |
418
437
  | C1 | `handoff[-prepare/-replace/-show]`, `claim`, `writer-credential-replace`, `handback[-create]` |
419
438
  | Review | review/step-review packet, launch, sealed record и record actions |
420
- | Corrective | decision/recovery, plan-integrity, remediation-mode, stop-override prepare/apply, yield и corrective-replan actions |
439
+ | Corrective | decision/recovery, plan-integrity, downstream-proof-recover, remediation-mode, stop-override prepare/apply, yield и corrective-replan actions |
421
440
  | Replacement | `replacement-materialize` retained, но всегда disabled в P04-A |
422
441
 
423
442
  Exact options берутся из fresh `next`; command help используется только когда
@@ -429,7 +448,7 @@ Exact options берутся из fresh `next`; command help используе
429
448
  running Step и active/stale writer lease. External runner допустим только в документированной rescue
430
449
  compatibility форме.
431
450
 
432
- Перед beta.12.4 tag release repository выполняет:
451
+ Перед beta.12.5 tag release repository выполняет:
433
452
 
434
453
  1. `npm ci`;
435
454
  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.4, the release gate also relies on `npm run release:check` to fail if:
30
+ For beta.12.5, 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;
@@ -50,6 +50,12 @@ For beta.12.4, the release gate also relies on `npm run release:check` to fail i
50
50
  registry, title fallback/readback, or long-Cyrillic multi-attempt E2E evidence is absent.
51
51
  - bounded first-failure Plan-integrity recovery, exact failed-remediation/manifest/worktree
52
52
  bindings, or the no-synthetic-second-failure regression is absent.
53
+ - downstream proof cannot invalidate only completed transitive-predecessor authority while
54
+ preserving worktree/HEAD, yielding C1, and returning the same Task to fresh planning; or unrelated
55
+ dirty files and damaged invalidation evidence do not fail closed.
56
+ - bundled gateway guidance treats Docker socket `EPERM` as daemon failure, consumes a remediation
57
+ attempt before one exact escalated probe, or recommends restarting Docker Desktop without separate
58
+ authority.
53
59
  - the P04-A Milestone dependency/initial-Plan transaction capabilities or the P01-A mechanical
54
60
  feasibility capability is absent from the packaged handshake.
55
61
  - continuable guarded remediation or evidence-bound `fix`/`replan` review routing is absent, or a
@@ -1,98 +1,101 @@
1
- # V2 beta.12.4 Validation Report
1
+ # V2 beta.12.5 Validation Report
2
2
 
3
- Release candidate `2.0.0-beta.12.4` was validated on 2026-08-28 (Europe/Moscow) with
3
+ Release candidate `2.0.0-beta.12.5` 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
- - `npm ci` completed from the lockfile with 0 reported vulnerabilities.
9
- - The final `npm run validate` passed typecheck and `328/328` sequential tests with no failures,
10
- skips, cancellations, or todos in 1,348,269.052041 ms.
11
- - The suite includes the beta.12.4 real-order replay (`stop override -> context refresh -> base
12
- transport -> dependency provenance recovery -> task run`) and two fail-closed controls: an
13
- unexplained Task revision and damaged post-audit dependency provenance. Existing beta.12.3
14
- chained rebind, Signal T04, five-cycle remediation, transaction, credential, observer-purity,
15
- dependency DAG, transition-catalog, and lifecycle transcript tests also remained green.
16
- - `npm run pack:check` built the exact beta.12.4 package and reported a 270-file tarball. The first
17
- sandboxed attempt could not write the existing npm cache (`EPERM`); the authorized retry using
18
- the same source passed.
19
- - `npm run smoke:downstream` packed and installed the tarball in a clean temporary project and
20
- passed its packaged handshake. The sandboxed attempt could not resolve the npm registry for AJV;
21
- the authorized network retry using the same source passed.
22
- - `npm run plugin:check`, the official Codex plugin validator, the gateway skill validator,
23
- `npm run docs:pdf:check`, exact `RELEASE_TAG=v2.0.0-beta.12.4 npm run release:check`, and
24
- `git diff --check` passed. The bundled gateway cachebuster is
25
- `0.1.0+codex.20260828064343`.
8
+ - The pre-install `npm run validate` passed typecheck and `332/332` sequential tests with no
9
+ failures, skips, cancellations, or todos in 1,313,147.293583 ms.
10
+ - `npm ci` then completed from the lockfile with 0 reported vulnerabilities. The clean-install
11
+ `npm run validate` independently passed the same `332/332` tests in 1,312,649.239333 ms.
12
+ - A final credential-recovery review then added one mapping and one regression test for an eligible
13
+ claimed C1 recovery whose writer lease is absent. Post-change typecheck and the focused
14
+ downstream-proof, CLI-help, and lifecycle-model suite passed `15/15`; the final full
15
+ `npm run validate` passed `333/333` tests with no failures, skips, cancellations, or todos in
16
+ 1,321,160.33825 ms.
17
+ - The suite covers the beta.12.5 downstream-proof recovery, exact lifecycle inventory, C1 yield,
18
+ one-writer concurrency, transaction crash boundaries, tampered sidecars, unrelated dirty files,
19
+ ordinary active-Step completion, existing Signal T04 recovery, dependency DAG, observer purity,
20
+ credential secrecy, corrective replay, and Milestone validation/acceptance.
21
+ - `npm run pack:check` built the exact beta.12.5 package: 274 files, 995.1 kB packed and 3.9 MB
22
+ unpacked. The first sandboxed attempt could not write the user npm cache (`EPERM`); the exact
23
+ authorized retry passed and included the new runtime module and public schema.
24
+ - `npm run smoke:downstream` packed and installed the tarball in a disposable consumer project and
25
+ returned `ok=true`. The sandboxed attempt could not resolve the npm registry (`ENOTFOUND`); the
26
+ exact network-authorized retry passed.
27
+ - `npm run plugin:check`, `npm run docs:pdf:check`, exact
28
+ `RELEASE_TAG=v2.0.0-beta.12.5 npm run release:check`, and `git diff --check` passed. The bundled
29
+ gateway cachebuster remains `0.1.0+codex.20260828064343`.
26
30
 
27
31
  ## Root cause and bounded correction
28
32
 
29
- - beta.12.3 validated the chained Knowledge-only Plan rebind and the exact Git
30
- dependency-provenance chain, but retained the older Task-revision predicate
31
- `reboundAudit.taskRevision + 1 === task.revision` for a failed Step.
32
- - Signal's actual install flow created the last mechanical Plan Risk Audit at Task revision 22,
33
- wrote the atomic context-refresh result at revision 23, then registered one advertised
34
- dependency-provenance recovery at revision 24. The old predicate therefore rejected valid,
35
- already-verified administrative evidence at the next navigation step.
36
- - beta.12.4 derives the exact authorization boundary as
37
- `reboundAudit.taskRevision + 1 + verifiedPostAuditRecoveries.length`. Only recovery records from
38
- the already validated stop-override-to-authorization Git chain count. Each record must remain
39
- ordered, single-parent, present in `systemCommits`, and an exact `package.json` plus
40
- `package-lock.json` Workflow dependency commit.
41
- - This is not a permissive `revision >=` rule. An unrelated state write, duplicate or malformed
42
- recovery, wrong parent, product-file change, semantic Plan drift, or broken chronology still
43
- routes to diagnostics.
33
+ - A downstream executable proof can demonstrate that a completed predecessor Step must change.
34
+ The existing navigation still advertised `task step-complete`, but that command correctly
35
+ rejected predecessor-owned dirty files. Repeating the command or increasing remediation attempts
36
+ could not solve the authority contradiction: predecessor completion evidence remained canonical
37
+ while the proof required changing its output.
38
+ - beta.12.5 adds `task downstream-proof-recover`. It is advertised only when every dirty file
39
+ outside the active Step belongs to a completed transitive predecessor, Task branch/Plan/history
40
+ bindings are exact, the active Step has no completion evidence, and the Task uses a local
41
+ workspace. Unrelated files, damaged history, a branch mismatch, a malformed audit journal, or an
42
+ unregistered commit fail closed to `doctor`.
43
+ - One crash-recoverable project transaction preserves worktree bytes and HEAD, append-only records
44
+ `downstream-proof-invalidations.jsonl`, moves invalidated product commits to historical
45
+ `invalidatedStepCommits`, clears stale Step/review/execution authority, yields claimed C1, removes
46
+ the writer lease, and returns the same Task to ordinary `task plan-set`.
47
+ - No completed-Step adoption or synthetic replacement Task is performed. The replacement Plan must
48
+ re-cover the unfinished proof and invalidated predecessor work, then pass normal audit,
49
+ authorization, execution, and review again.
44
50
 
45
51
  ## Exact Signal read-only proof
46
52
 
47
- - The final built beta.12.4 validator inspected Signal repository
48
- `/Users/home-pc/htdocs/projects/signal_v4`, Task
49
- `TASK-01M0WXJAD4GZGVNRJ284ND95C6`, and failed Step
50
- `STEP-001-PROCESSING-MIGRATIONS` without mutating the repository or Workflow state.
51
- - The persisted state has Task revision 24, current Plan hash
52
- `6a0c9b7a2a2ec11c9d6a9a24137dc17be1ecd18be42cf0188200942313776a50`, four Knowledge rebinds,
53
- three dependency-provenance recoveries, applied override
54
- `SOO-01M127VPRC5M5F3E3K7PS4MFJY`, and final rebound audit revision 22. Exactly one verified
55
- recovery was recorded after that audit, so `22 + 1 + 1 = 24`.
56
- - A direct final-build `next --repo /Users/home-pc/htdocs/projects/signal_v4 --json` returned
57
- `action=task run`, revision 24, the expected Step, and
58
- `stopOverrideContextRebind.state=validated`. It also preserved the exact claimed C1 actor and
59
- writer-credential recovery contract.
60
- - This proves compatibility with the currently persisted Signal M3 boundary. It does not prove
61
- that future product implementation or strict reviews will pass.
53
+ - The final built beta.12.5 classifier inspected Signal repository
54
+ `/Users/home-pc/htdocs/projects/signal_v4`, project
55
+ `b06d0f18f790f4521a23c770`, and Task
56
+ `TASK-01M0WXJAD4GZGVNRJ284ND95C6` without mutating repository or Workflow state.
57
+ - Persisted Task revision is 103 on branch
58
+ `codex/task-01m0wxjad4-processing-persistence-schema`; active Step is
59
+ `STEP-002-REAL-POSTGRES-PROOF`. HEAD is
60
+ `88f8bf70d1591852ad90c976625430d4f20585ac`.
61
+ - The classifier observed six dirty files. Five are outside the active Step and are owned by the
62
+ completed transitive predecessor `STEP-001-PROCESSING-MIGRATIONS`; the sixth,
63
+ `tools/postgres/run-processing-integration.ts`, belongs to the active proof Step. The predecessor
64
+ evidence commit equals the preserved HEAD.
65
+ - The result was `applicable=true`, `eligible=true`, with no blockers. This proves that the exact
66
+ current Signal boundary has a bounded beta.12.5 transition. It does not prove that the replacement
67
+ Plan, product checks, strict review, or the remainder of Milestone 3 will pass.
62
68
 
63
- ## Packaged, plugin, and transcript evidence
69
+ ## Sandbox-boundary prevention
64
70
 
65
- - Downstream smoke validated exact package resolution and the packaged beta.12.4 handshake in a
66
- disposable installation.
67
- - The bundled gateway handshake reports package beta.12.4, protocol 2, state schema 2, and the new
68
- `stop-override-post-audit-dependency-revision-v1` capability.
69
- - A temporary trusted-harness transcript recorded the final built `gateway handshake` invocation
70
- and terminal result. `node scripts/validate-lifecycle-transcript.mjs` accepted both
71
- post-provenance events. The log SHA-256 is
72
- `4ec7d8cb105d901e82d1049c273c4f2ec8d22ea12e0116ed70cfa8ab703ea2eb`; the temporary log remains
73
- outside the repository.
71
+ - The bundled gateway now classifies Docker socket/CLI `EPERM`, `operation not permitted`, and
72
+ `permission denied` from a sandbox as an execution-boundary failure, not evidence that the daemon,
73
+ image, or product infrastructure is broken.
74
+ - It permits one exact escalated read-only probe or Plan check without consuming a remediation or
75
+ infrastructure retry. Docker Desktop restart, daemon mutation, or image substitution still
76
+ requires separate authority and an actual escalated daemon failure.
77
+ - Plugin validation pins this guidance. The release gates exercised analogous npm cache/network
78
+ sandbox boundaries, but no live Docker daemon failure was synthesized; Docker runtime behavior is
79
+ therefore documentation/gateway-contract evidence, not an end-to-end Docker test claim.
74
80
 
75
- The transcript proves release-time invocation/result discipline for the final CLI. It does not
76
- claim a product Milestone replay or lifecycle mutation. Compatibility is covered by the exact
77
- Signal read-only proof and deterministic integration tests above.
81
+ ## beta.12.5 PDF release documentation evidence
78
82
 
79
- ## beta.12.4 PDF release documentation evidence
80
-
81
- - Three tracked Russian PDFs were deterministically regenerated from reviewable Markdown sources
82
- under `docs/pdf/sources`; `npm run docs:pdf:check` reported an empty stale set.
83
- - All 26 pages were rendered and visually inspected: architecture is 7 pages, the delegated
84
- chat-only guide is 8 pages, and the technical reference is 11 pages. Full-size inspection of the
85
- three changed compatibility pages found no clipped, overlapping, or unreadable content.
86
- - Visible titles, headers, package commands, capabilities, and release gates identify beta.12.4.
87
- The documents state the exact evidence-bound revision formula and its fail-closed boundary.
83
+ - Three tracked Russian PDFs were regenerated from Markdown sources; `npm run docs:pdf:check`
84
+ reported an empty stale set.
85
+ - All 27 pages were rendered and visually inspected: architecture is 7 pages, the delegated
86
+ chat-only guide is 9 pages, and the technical reference is 11 pages. The changed recovery,
87
+ Docker-boundary, command-surface, and release pages have no visible clipping, overlap, or
88
+ unreadable content.
89
+ - Visible titles, headers, commands, capabilities, and release gates identify beta.12.5.
88
90
 
89
91
  ## Existing boundaries and non-claims
90
92
 
91
- - The generic stale `continue-fix` recovery predicate is unchanged. The compatibility route does
92
- not reverse a semantic stop or authorize arbitrary Git/state history.
93
- - Structural replacement remains intentionally disabled. beta.12.4 does not implement P04-B,
93
+ - Structural replacement remains intentionally disabled. beta.12.5 does not implement P04-B,
94
94
  topology rewiring, completed-Step adoption, or a wider delegation surface.
95
+ - Recovery requires exact one-writer/C1 authority and a fresh `next`; it does not authorize manual
96
+ state edits, arbitrary Git history, unrelated dirty files, or automatic approval.
95
97
  - Validation performed no Signal mutation, npm publication, Git commit, tag, remote push, or local
96
- plugin reinstall. Those are separate release actions after these gates.
97
- - A consumer must install the published exact beta.12.4 package, update/reinstall the bundled
98
- gateway, and use fresh project-local `handshake -> doctor -> status -> next` navigation.
98
+ plugin reinstall. Those remain separate release actions.
99
+ - A consumer must install the published exact beta.12.5 package, reinstall the bundled gateway, and
100
+ follow fresh project-local `handshake -> doctor -> status -> next` navigation before invoking the
101
+ advertised recovery.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-workflow-v2",
3
- "version": "2.0.0-beta.12.4",
3
+ "version": "2.0.0-beta.12.5",
4
4
  "description": "Requirements-first Codex development workflow with local state and explicit Git ownership.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  # Gateway Protocol V2
2
2
 
3
- ## beta.12.4 compatibility transitions and continuable remediation
3
+ ## beta.12.5 compatibility transitions and continuable remediation
4
4
 
5
5
  - When fresh `next` advertises `task plan-integrity-recover`, consume its exact Task revision,
6
6
  Step, actor, and writer-token contract. This route is valid only for the Core-derived
@@ -8,6 +8,13 @@
8
8
  It records a replan posture without changing Plan or product files; corrective yield and the
9
9
  existing state-bound corrective-replan Human gate remain mandatory.
10
10
 
11
+ - When fresh `next` advertises `task downstream-proof-recover`, Core has proved that every dirty
12
+ file outside the active Step belongs to a completed transitive predecessor and that recorded Git
13
+ history is intact. Invoke the exact lease-bound transition once. It preserves product files and
14
+ HEAD, invalidates stale predecessor completion authority with an append-only event, yields C1,
15
+ and routes the same Task to ordinary `task plan-set`. The replacement Plan, risk audit, and
16
+ execution authorization are fresh authority; no Task or Milestone recreation is involved.
17
+
11
18
  - `update dependency-provenance-preflight --id <TASK-ID>` is read-only. The matching
12
19
  `update dependency-provenance-recover --id <TASK-ID> --expected-revision <N> --actor <ACTOR>
13
20
  --reason <TEXT>` is valid only when preflight and fresh `next` both advertise it. Historical
@@ -100,6 +107,7 @@ Current capability set:
100
107
  - `remediation-mode-recovery-v1`
101
108
  - `plan-proof-obligations-v1`
102
109
  - `bounded-plan-integrity-recovery-v1`
110
+ - `downstream-proof-predecessor-recovery-v1`
103
111
  - `corrective-yield-journal-v1`
104
112
  - `corrective-replan-journal-v1`
105
113
  - `corrective-replan-human-gate-v1`
@@ -175,6 +183,13 @@ actor through `--actor`; reviewer identity remains internal to the route.
175
183
  An unrecorded commit is Git history drift. Stop instead of adding another commit or editing
176
184
  workflow state manually; recovery remains coordinator-controlled.
177
185
 
186
+ If a Docker proof fails with `EPERM`, `operation not permitted`, or `permission denied` at the
187
+ Docker socket/CLI boundary, classify it as sandbox access, not daemon failure. Re-run the exact
188
+ read-only health probe or Plan command once with sandbox escalation; do not charge an infrastructure
189
+ retry. Restarting Docker Desktop or pulling another image is forbidden on this evidence alone. A
190
+ Docker infrastructure failure exists only when an escalated call reaches Docker and independently
191
+ proves the daemon unavailable.
192
+
178
193
  ## Plan Risk Audit and remediation breaker
179
194
 
180
195
  Before `task authorize`, every new alpha.7 Task requires: