codex-workflow-v2 2.0.0-beta.12.3 → 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.
Files changed (34) hide show
  1. package/README.md +18 -4
  2. package/dist/src/alpha6/downstream-proof.d.ts +29 -0
  3. package/dist/src/alpha6/downstream-proof.js +249 -0
  4. package/dist/src/alpha6/downstream-proof.js.map +1 -0
  5. package/dist/src/alpha7/corrective-recovery.js +37 -15
  6. package/dist/src/alpha7/corrective-recovery.js.map +1 -1
  7. package/dist/src/cli.js +10 -0
  8. package/dist/src/cli.js.map +1 -1
  9. package/dist/src/contracts.d.ts +19 -0
  10. package/dist/src/git.js +1 -0
  11. package/dist/src/git.js.map +1 -1
  12. package/dist/src/version.d.ts +1 -1
  13. package/dist/src/version.js +1 -1
  14. package/dist/src/workflow.d.ts +5 -0
  15. package/dist/src/workflow.js +152 -3
  16. package/dist/src/workflow.js.map +1 -1
  17. package/docs/autonomy-guardrails.md +25 -1
  18. package/docs/decisions.md +6 -0
  19. package/docs/development-flow.md +12 -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 +26 -7
  24. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +24 -8
  25. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +35 -11
  26. package/docs/release.md +9 -1
  27. package/docs/updating-existing-project.md +6 -1
  28. package/docs/validation-report.md +84 -80
  29. package/package.json +1 -1
  30. package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
  31. package/plugins/codex-workflow-gateway/references/protocol.md +20 -1
  32. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +30 -1
  33. package/schemas/downstream-proof-invalidation-event.schema.json +70 -0
  34. package/schemas/task.schema.json +5 -0
@@ -97,7 +97,7 @@ different attempt ordinal, missing attempt-3 continue authority, or an agent-aut
97
97
  outside the beta.11 policy shape. After a valid append, attempt four returns to the normal `task run`
98
98
  then strict-review cycle; review quality and all later corrective decisions remain unchanged.
99
99
 
100
- Beta.12.3 also handles the case where the accepted third attempt changed approved Project Knowledge
100
+ Beta.12.4 also handles the case where the accepted third attempt changed approved Project Knowledge
101
101
  and package self-updates added later refreshes: the already-applied override may be followed by one
102
102
  or more ordinary delegated `task context-refresh` transitions before attempt four starts. A fresh
103
103
  `next` resumes `task run` only when Core can prove all of the following together: the same exact
@@ -111,6 +111,14 @@ from existing append-only evidence, so this route does not create a second recov
111
111
  Missing evidence, semantic Plan change, an unregistered/product commit, a broken chain, or damaged
112
112
  chronology routes to `doctor` rather than weakening the generic two-attempt corrective recovery gate.
113
113
 
114
+ If fresh navigation performs the final content refresh before the matching dependency-provenance
115
+ recovery, that later administrative recovery may advance the Task revision without invalidating the
116
+ mechanical audit. Core accepts the revision only when the exact count of post-audit recovery records
117
+ fully explains the difference: each record must belong to the already verified single-parent Git
118
+ chain, remain ordered, bind a Workflow system commit, and preserve the exact two-file dependency
119
+ diff. A bare greater revision, unrelated Task write, duplicate record, damaged parent, product
120
+ commit, or unverified recovery remains blocked.
121
+
114
122
  ### First-failure Plan-integrity recovery
115
123
 
116
124
  A mechanically impossible Plan check must not consume the second ordinary remediation attempt
@@ -133,6 +141,22 @@ validation, Risk Audit, Human confirmation, journaled execution, readback, and r
133
141
  authorization. Other check failures use the normal continuable remediation route; they do not
134
142
  receive the narrow Plan-integrity shortcut, but attempt count alone never stops them.
135
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
+
136
160
  ## Atomic context refresh
137
161
 
138
162
  When `next` returns top-level `action: task context-refresh` with an exact option, a
package/docs/decisions.md CHANGED
@@ -105,3 +105,9 @@ This document closes the requirement gaps identified during the V2 design review
105
105
  `package.json` plus `package-lock.json`. Semantic Plan drift, product commits, missing
106
106
  provenance, or broken chronology still fails closed; generic corrective-decision recovery
107
107
  remains direct and is not widened.
108
+ 21. **Administrative revision continuity is evidence-accounted.** A dependency-provenance
109
+ recovery recorded after the current mechanical Plan Risk Audit may explain exactly one later
110
+ Task revision without invalidating an already applied stop override. Core counts only ordered
111
+ recovery records from the independently verified override-to-authorization Git chain and
112
+ requires the resulting expected revision to equal the current Task revision. Unexplained
113
+ revisions and damaged provenance remain blocked; this is not a general `revision >=` rule.
@@ -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.3
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.3
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.3 гарантирует
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.3 не гарантирует
35
+ ## 1.2. Что beta.12.5 не гарантирует
34
36
 
35
37
  - правильность продуктовой идеи или автоматически выбранного provider Task;
36
38
  - semantic sufficiency Plan, если точные факты нельзя доказать поддерживаемым analyzer;
@@ -225,7 +227,7 @@ Beta.12.1 добавила одну append-only compatibility оговорку:
225
227
  Plan, HEAD, lease, transaction или повреждённая chain блокируют переход. Попытка 4 снова проходит
226
228
  обычный `task run` и новый strict review.
227
229
 
228
- Beta.12.3 сохраняет этот override при последовательности delegated `task context-refresh`, если
230
+ Beta.12.4 сохраняет этот override при последовательности delegated `task context-refresh`, если
229
231
  каждая версия Plan изменилась только в canonical Knowledge Map binding. Core проверяет весь
230
232
  contiguous rebind/audit chain, mechanical equivalence каждого Plan Risk Audit, общую delegated
231
233
  authority и корректную chronology. Git HEAD может продвинуться только через последовательность
@@ -234,6 +236,11 @@ package-lock.json. При утрате claimed writer lease использует
234
236
  `task writer-credential-replace`; semantic Plan drift, разрыв chain или любой другой commit
235
237
  возвращают `doctor`.
236
238
 
239
+ Если последний dependency-provenance recovery записан уже после mechanical audit, он объясняет
240
+ ровно один дополнительный Task revision. Core требует, чтобы audit boundary плюс количество
241
+ проверенных post-audit recoveries точно равнялись current revision; произвольное увеличение
242
+ revision, неверный parent или повреждённая provenance остаются blocker.
243
+
237
244
  Dependency-provenance recovery beta.12.1 также сохраняет ранее закоммиченные Task-local поля
238
245
  manifest/lock, даже если base их не содержит. Candidate остаётся dependency-only: после удаления
239
246
  только Workflow dependency parent и HEAD обязаны совпасть по всем product-owned полям.
@@ -242,13 +249,25 @@ beta.11 `task plan-integrity-recover` существует для одного
242
249
  отсутствует exact root npm script и текущий Step не может изменить package.json. Recovery не меняет
243
250
  worktree или Plan и не создаёт synthetic second failure; он записывает bound `replan-required`.
244
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
+
245
263
  > **Стоп P04-A:** `split-required` возвращает `STRUCTURAL_REPLACEMENT_REQUIRED` и `structuralReplacementAvailable=false`. Нельзя вызывать retained replacement command, потреблять replacement Discovery или вручную менять topology. Продолжение возможно только после P04-B/P05.
246
264
 
247
265
  # 10. Operational checklist
248
266
 
249
267
  - exact package version установлен, bundled gateway соответствует release и переустановлен;
250
- - handshake подтверждает protocol 2, state schema 2 и beta.12.3 capabilities;
268
+ - handshake подтверждает protocol 2, state schema 2 и beta.12.5 capabilities;
251
269
  - каждый mutation следует свежему `status -> next` и exact option contract;
270
+ - Docker permission failure сначала классифицируется как sandbox boundary, а не как infra retry;
252
271
  - semantic unknowns и human gates не маскируются delegation;
253
272
  - Task chats создаёт coordinator, credentials остаются только в памяти;
254
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.3 путь от нового 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.3
6
+ date: 29 августа 2026
7
+ subject: Практическое руководство по delegated Discovery и Milestone в Workflow V2 beta.12.5
8
8
  ---
9
9
 
10
- # 1. Рабочая модель beta.12.3
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.3 как точную 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.3 должен сообщать `packageVersion=2.0.0-beta.12.3`, `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.3 в 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 циклов может быть несколько.
@@ -313,6 +323,11 @@ P04-A не переносит completed Steps и не rewires dependencies пр
313
323
  точного claimant-актора. `doctor`, semantic Plan change, разрыв rebind/audit chain или HEAD commit без
314
324
  точного dependency-provenance record означают stop, а не ручной обход.
315
325
 
326
+ Если advertised navigation записала dependency provenance после последнего context-refresh audit,
327
+ продолжайте только когда fresh `next` сам вернул `task run`. Core обязан доказать, что каждый такой
328
+ recovery объясняет ровно один дополнительный Task revision; простое `revision >=` не является
329
+ authority.
330
+
316
331
  # 12. Milestone final acceptance
317
332
 
318
333
  После merge всех required Tasks Coordinator проверяет clean base HEAD и выполняет рекламируемую
@@ -330,7 +345,7 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
330
345
 
331
346
  # 14. Итоговый checklist пользователя
332
347
 
333
- - beta.12.3 exact package и новый bundled gateway установлены;
348
+ - beta.12.5 exact package и новый bundled gateway установлены;
334
349
  - новый Coordinator chat не является fork старого Milestone;
335
350
  - bootstrap DGR, если нужен, выдан отдельным exact human confirmation;
336
351
  - Discovery не materialized при blocking unknowns;
@@ -340,5 +355,6 @@ Task/project DGR. `dependencyBinding` для standalone handoff равен null.
340
355
  - credentials не появились в prompts, reports или files;
341
356
  - каждый transition пришёл из fresh `next`;
342
357
  - beta.11 stop override, если рекламировался, прошёл отдельные prepare и user-confirmed apply без journal rewrite;
358
+ - downstream predecessor recovery, если рекламировался, сохранил worktree и завершился новым Plan authority;
343
359
  - split-required остановился без replacement mutations;
344
360
  - Milestone validation и final acceptance связаны с текущим clean base HEAD.
@@ -1,10 +1,10 @@
1
1
  ---
2
- title: Codex Workflow V2: технический справочник beta.12.3
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.3
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.3 | Значение |
16
+ | Параметр beta.12.5 | Значение |
17
17
  |---|---|
18
- | npm package | `codex-workflow-v2@2.0.0-beta.12.3` |
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.3 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.3 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
@@ -340,6 +340,25 @@ diff. Semantic drift, иной commit или разрыв chain fail closed. Pro
340
340
  `stopOverrideContextRebind.state=validated`; lost lease восстанавливает только advertised
341
341
  `task writer-credential-replace`.
342
342
 
343
+ Если recovery записан после последнего rebound audit, evidence-bound revision равен
344
+ `audit.taskRevision + 1 + postAuditVerifiedRecoveries.length`. В зачёт входят только ordered records
345
+ из уже проверенной override-to-authorization Git chain. Формула должна точно равняться current Task
346
+ revision; unrelated write, duplicate, неверный parent или product commit блокируют continuation.
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
+
343
362
  # 14. P04-A structural replacement boundary
344
363
 
345
364
  Command shape `task replacement-materialize` retained только для compatibility diagnostics. Любая попытка
@@ -394,10 +413,15 @@ Graph является навигационным индексом, не Project
394
413
  | `GIT_PRECONDITION_FAILED` | Branch/base/clean/history mismatch | Штатная Git recovery/sync route |
395
414
  | `COMMAND_FAILED` | Git/check/provider process failed | Сохранить evidence и устранить concrete cause |
396
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
+
397
421
  После каждой successful mutation обязателен sequential `status`, затем fresh `next`. Failed status/next
398
422
  не разрешает direct mutation. Syntax help read-only и не заменяет navigation authority.
399
423
 
400
- # 18. Public command surface beta.12.3
424
+ # 18. Public command surface beta.12.5
401
425
 
402
426
  | Область | Actions |
403
427
  |---|---|
@@ -412,7 +436,7 @@ Graph является навигационным индексом, не Project
412
436
  | Task execution | `start`, `run`, `step-complete`, `submit`, `result-set`, `accept`, `sync-base`, `merge`, `merge-confirm` |
413
437
  | C1 | `handoff[-prepare/-replace/-show]`, `claim`, `writer-credential-replace`, `handback[-create]` |
414
438
  | Review | review/step-review packet, launch, sealed record и record actions |
415
- | 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 |
416
440
  | Replacement | `replacement-materialize` retained, но всегда disabled в P04-A |
417
441
 
418
442
  Exact options берутся из fresh `next`; command help используется только когда
@@ -424,7 +448,7 @@ Exact options берутся из fresh `next`; command help используе
424
448
  running Step и active/stale writer lease. External runner допустим только в документированной rescue
425
449
  compatibility форме.
426
450
 
427
- Перед beta.12.3 tag release repository выполняет:
451
+ Перед beta.12.5 tag release repository выполняет:
428
452
 
429
453
  1. `npm ci`;
430
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.3, 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.3, 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
@@ -62,6 +68,8 @@ For beta.12.3, the release gate also relies on `npm run release:check` to fail i
62
68
  - Git HEAD may advance between the override and current execution authorization through anything
63
69
  except an exact chain of registered dependency-provenance commits that each change only
64
70
  `package.json` and `package-lock.json`; or the route weakens the generic stale-decision recovery gate.
71
+ - a dependency-provenance recovery recorded after the final mechanical audit cannot explain its
72
+ exact single Task revision, or an unrelated revision/damaged provenance is accepted as authority.
65
73
 
66
74
  The separate lifecycle transcript validator fails if the real-agent log contains a mutation that
67
75
  bypasses failed `status`/`next`, an unadvertised or failed mutation, an unresolved syntax-only
@@ -73,7 +73,7 @@ stop decision, Plan hash, Git HEAD, все три remediation events и policy
73
73
  `SOO-*` кодом. `task stop-override-apply` добавляет одну запись в
74
74
  `stop-escalate-overrides.jsonl`, сохраняя исходный `stop-escalate`; после него выполните
75
75
  последовательные `status` и `next`. Обычно ожидаемый route — `task run` того же Step с последующим
76
- новым strict review. Beta.12.3 покрывает и последовательность package self-update/context-refresh
76
+ новым strict review. Beta.12.4 покрывает и последовательность package self-update/context-refresh
77
77
  циклов после override. Перед `task run` выполняйте только свежие advertised
78
78
  `update dependency-provenance-recover` и delegated `task context-refresh`; циклов может быть
79
79
  несколько. Workflow продолжит attempt 4 лишь когда докажет contiguous source-to-current chain:
@@ -82,6 +82,11 @@ artifacts, каждый Plan Risk Audit является mechanical rebound, а
82
82
  сохраняют одну delegated authority. HEAD может продвинуться только через зарегистрированные
83
83
  single-parent dependency-provenance commits, каждый с exact `package.json`/`package-lock.json` diff.
84
84
  Новая stop-override recovery-запись не создаётся — используется существующая append-only evidence.
85
+ Если advertised navigation сначала завершила последний `task context-refresh`, а затем разрешила
86
+ `update dependency-provenance-recover`, административный recovery может объяснить ровно один
87
+ post-audit Task revision. Core принимает его только как часть уже проверенной dependency-only Git
88
+ chain; арифметика audit revision + refresh boundary + exact post-audit recoveries должна точно
89
+ равняться current Task revision. Любой необъяснённый revision остаётся blocker.
85
90
  Если C1 остаётся claimed, но writer lease после Human boundary отсутствует, `next` вместе с
86
91
  `task run` рекламирует `task writer-credential-replace`; сначала восстановите credential exact
87
92
  claimant-актора, затем запускайте Step.