codex-workflow-v2 2.0.0-beta.13.9 → 2.0.0-beta.14

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 (271) hide show
  1. package/README.md +27 -388
  2. package/dist/reviewer-runtime-build.json +89 -29
  3. package/dist/src/alpha6/adoption.d.ts +2 -0
  4. package/dist/src/alpha6/adoption.js +22 -0
  5. package/dist/src/alpha6/adoption.js.map +1 -1
  6. package/dist/src/alpha6/captured-check-evidence.d.ts +51 -0
  7. package/dist/src/alpha6/captured-check-evidence.js +152 -0
  8. package/dist/src/alpha6/captured-check-evidence.js.map +1 -0
  9. package/dist/src/alpha6/component-owner.d.ts +15 -1
  10. package/dist/src/alpha6/component-owner.js +44 -2
  11. package/dist/src/alpha6/component-owner.js.map +1 -1
  12. package/dist/src/alpha6/corrective-decision-boundary.d.ts +4 -0
  13. package/dist/src/alpha6/corrective-decision-boundary.js +47 -0
  14. package/dist/src/alpha6/corrective-decision-boundary.js.map +1 -0
  15. package/dist/src/alpha6/downstream-proof.d.ts +1 -25
  16. package/dist/src/alpha6/downstream-proof.js +0 -171
  17. package/dist/src/alpha6/downstream-proof.js.map +1 -1
  18. package/dist/src/alpha6/literal-test-invocation.d.ts +2 -0
  19. package/dist/src/alpha6/literal-test-invocation.js +106 -0
  20. package/dist/src/alpha6/literal-test-invocation.js.map +1 -0
  21. package/dist/src/alpha6/milestone.d.ts +2 -0
  22. package/dist/src/alpha6/milestone.js +10 -1
  23. package/dist/src/alpha6/milestone.js.map +1 -1
  24. package/dist/src/alpha6/navigation-dirty-carryover.d.ts +11 -0
  25. package/dist/src/alpha6/navigation-dirty-carryover.js +130 -0
  26. package/dist/src/alpha6/navigation-dirty-carryover.js.map +1 -0
  27. package/dist/src/alpha6/plan-integrity.js +7 -5
  28. package/dist/src/alpha6/plan-integrity.js.map +1 -1
  29. package/dist/src/alpha6/remediation.d.ts +6 -21
  30. package/dist/src/alpha6/remediation.js +161 -476
  31. package/dist/src/alpha6/remediation.js.map +1 -1
  32. package/dist/src/alpha6/root-cause-replan-carryover.d.ts +4 -1
  33. package/dist/src/alpha6/root-cause-replan-carryover.js +29 -5
  34. package/dist/src/alpha6/root-cause-replan-carryover.js.map +1 -1
  35. package/dist/src/beta1/project-transaction.d.ts +3 -1
  36. package/dist/src/beta1/project-transaction.js +6 -2
  37. package/dist/src/beta1/project-transaction.js.map +1 -1
  38. package/dist/src/checks/runner.d.ts +26 -0
  39. package/dist/src/checks/runner.js +223 -0
  40. package/dist/src/checks/runner.js.map +1 -0
  41. package/dist/src/checks/task-sync.d.ts +10 -0
  42. package/dist/src/checks/task-sync.js +41 -0
  43. package/dist/src/checks/task-sync.js.map +1 -0
  44. package/dist/src/checks/worker.d.ts +1 -0
  45. package/dist/src/checks/worker.js +154 -0
  46. package/dist/src/checks/worker.js.map +1 -0
  47. package/dist/src/cli-actions.d.ts +2 -2
  48. package/dist/src/cli-actions.js +3 -15
  49. package/dist/src/cli-actions.js.map +1 -1
  50. package/dist/src/cli.js +14 -98
  51. package/dist/src/cli.js.map +1 -1
  52. package/dist/src/contracts.d.ts +35 -32
  53. package/dist/src/dependency-provenance.d.ts +2 -2
  54. package/dist/src/dependency-provenance.js +12 -69
  55. package/dist/src/dependency-provenance.js.map +1 -1
  56. package/dist/src/domain/base-sync-conflict.d.ts +13 -0
  57. package/dist/src/domain/base-sync-conflict.js +32 -0
  58. package/dist/src/domain/base-sync-conflict.js.map +1 -0
  59. package/dist/src/domain/step-start-admission.d.ts +4 -0
  60. package/dist/src/domain/step-start-admission.js +9 -0
  61. package/dist/src/domain/step-start-admission.js.map +1 -0
  62. package/dist/src/domain/virgin-registration.d.ts +3 -0
  63. package/dist/src/domain/virgin-registration.js +65 -0
  64. package/dist/src/domain/virgin-registration.js.map +1 -0
  65. package/dist/src/errors.d.ts +1 -1
  66. package/dist/src/errors.js.map +1 -1
  67. package/dist/src/gateway-handshake.js +0 -8
  68. package/dist/src/gateway-handshake.js.map +1 -1
  69. package/dist/src/git.d.ts +3 -1
  70. package/dist/src/git.js +41 -14
  71. package/dist/src/git.js.map +1 -1
  72. package/dist/src/graph.js +25 -3
  73. package/dist/src/graph.js.map +1 -1
  74. package/dist/src/index.d.ts +1 -0
  75. package/dist/src/navigation-actions.d.ts +9 -0
  76. package/dist/src/navigation-actions.js +72 -0
  77. package/dist/src/navigation-actions.js.map +1 -0
  78. package/dist/src/navigation-update-artifact.d.ts +5 -0
  79. package/dist/src/navigation-update-artifact.js +227 -0
  80. package/dist/src/navigation-update-artifact.js.map +1 -0
  81. package/dist/src/navigation-update.d.ts +39 -0
  82. package/dist/src/navigation-update.js +82 -0
  83. package/dist/src/navigation-update.js.map +1 -0
  84. package/dist/src/observation.js +52 -29
  85. package/dist/src/observation.js.map +1 -1
  86. package/dist/src/observed-routes.js +5 -6
  87. package/dist/src/observed-routes.js.map +1 -1
  88. package/dist/src/pending-review-update.d.ts +0 -13
  89. package/dist/src/pending-review-update.js +1 -6
  90. package/dist/src/pending-review-update.js.map +1 -1
  91. package/dist/src/reviewer.d.ts +1 -1
  92. package/dist/src/reviewer.js +20 -17
  93. package/dist/src/reviewer.js.map +1 -1
  94. package/dist/src/runtime.d.ts +3 -0
  95. package/dist/src/runtime.js +6 -0
  96. package/dist/src/runtime.js.map +1 -0
  97. package/dist/src/state/corrective-replan-executor.d.ts +10 -0
  98. package/dist/src/state/corrective-replan-executor.js +37 -1
  99. package/dist/src/state/corrective-replan-executor.js.map +1 -1
  100. package/dist/src/state/corrective-replan-public-schema.js +15 -2
  101. package/dist/src/state/corrective-replan-public-schema.js.map +1 -1
  102. package/dist/src/state/corrective-replan-public.js +1 -1
  103. package/dist/src/state/corrective-replan-public.js.map +1 -1
  104. package/dist/src/state/corrective-replan-transaction.d.ts +1 -0
  105. package/dist/src/state/corrective-replan-transaction.js +12 -11
  106. package/dist/src/state/corrective-replan-transaction.js.map +1 -1
  107. package/dist/src/state/corrective-yield-transaction.d.ts +1 -0
  108. package/dist/src/state/corrective-yield-transaction.js +11 -10
  109. package/dist/src/state/corrective-yield-transaction.js.map +1 -1
  110. package/dist/src/state/lock.d.ts +4 -0
  111. package/dist/src/state/lock.js +21 -0
  112. package/dist/src/state/lock.js.map +1 -1
  113. package/dist/src/version.d.ts +1 -1
  114. package/dist/src/version.js +1 -1
  115. package/dist/src/version.js.map +1 -1
  116. package/dist/src/workflow-blocker-route.d.ts +8 -0
  117. package/dist/src/workflow-blocker-route.js +106 -0
  118. package/dist/src/workflow-blocker-route.js.map +1 -0
  119. package/dist/src/workflow.d.ts +48 -63
  120. package/dist/src/workflow.js +666 -1460
  121. package/dist/src/workflow.js.map +1 -1
  122. package/docs/autonomy-guardrails.md +26 -304
  123. package/docs/decisions.md +14 -112
  124. package/docs/development-flow.md +35 -238
  125. package/docs/project-memory.md +31 -50
  126. package/docs/release-app-evidence.md +190 -0
  127. package/docs/release.md +95 -388
  128. package/docs/updating-existing-project.md +19 -717
  129. package/package.json +11 -13
  130. package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +2 -2
  131. package/plugins/codex-workflow-gateway/references/chat-dispatch.md +73 -197
  132. package/plugins/codex-workflow-gateway/references/codebase-memory-routing.md +57 -0
  133. package/plugins/codex-workflow-gateway/references/protocol.md +42 -445
  134. package/plugins/codex-workflow-gateway/scripts/chat-dispatch.mjs +7 -1
  135. package/plugins/codex-workflow-gateway/scripts/chat-model-policy.mjs +10 -8
  136. package/plugins/codex-workflow-gateway/scripts/chat-registry.mjs +23 -5
  137. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +66 -757
  138. package/references/state-machine.md +4 -4
  139. package/roles/technical-planner.md +1 -1
  140. package/schemas/corrective-decision-event.schema.json +3 -1
  141. package/schemas/project-knowledge-map.schema.json +3 -1
  142. package/schemas/remediation-event.schema.json +10 -1
  143. package/schemas/task.schema.json +46 -2
  144. package/schemas/transition-payloads.schema.json +16 -1
  145. package/src/alpha6/adoption.ts +1123 -0
  146. package/src/alpha6/captured-check-evidence.ts +132 -0
  147. package/src/alpha6/check-support-anchor.ts +128 -0
  148. package/src/alpha6/component-owner.ts +168 -0
  149. package/src/alpha6/corrective-decision-boundary.ts +39 -0
  150. package/src/alpha6/downstream-proof.ts +520 -0
  151. package/src/alpha6/failed-step-planning-recovery.ts +88 -0
  152. package/src/alpha6/handoff.ts +1443 -0
  153. package/src/alpha6/journal.ts +473 -0
  154. package/src/alpha6/literal-test-invocation.ts +84 -0
  155. package/src/alpha6/mechanical-feasibility.ts +488 -0
  156. package/src/alpha6/milestone.ts +2192 -0
  157. package/src/alpha6/navigation-dirty-carryover.ts +154 -0
  158. package/src/alpha6/npm-check-contract.ts +47 -0
  159. package/src/alpha6/plan-integrity.ts +298 -0
  160. package/src/alpha6/plan-risk.ts +1480 -0
  161. package/src/alpha6/preexecution-replan.ts +187 -0
  162. package/src/alpha6/remediation-cause.ts +98 -0
  163. package/src/alpha6/remediation.ts +2438 -0
  164. package/src/alpha6/review.ts +1198 -0
  165. package/src/alpha6/root-cause-replan-carryover.ts +491 -0
  166. package/src/alpha6/store-sidecars.ts +335 -0
  167. package/src/alpha7/autonomy.ts +411 -0
  168. package/src/alpha7/corrective-recovery.ts +1332 -0
  169. package/src/artifacts.ts +130 -0
  170. package/src/beta1/project-transaction.ts +355 -0
  171. package/src/change-explanation.ts +153 -0
  172. package/src/checks/runner.ts +245 -0
  173. package/src/checks/task-sync.ts +41 -0
  174. package/src/checks/worker.ts +149 -0
  175. package/src/cli-actions.ts +107 -0
  176. package/src/cli.ts +1457 -0
  177. package/src/contracts.ts +1494 -0
  178. package/src/credential-output.ts +89 -0
  179. package/src/credential-transport.ts +215 -0
  180. package/src/delegation.ts +190 -0
  181. package/src/dependency-provenance.ts +472 -0
  182. package/src/diagnostics.ts +93 -0
  183. package/src/domain/base-sync-conflict.ts +35 -0
  184. package/src/domain/completed-step-carryover.ts +76 -0
  185. package/src/domain/discovery.ts +27 -0
  186. package/src/domain/plan-semantics.ts +58 -0
  187. package/src/domain/step-start-admission.ts +10 -0
  188. package/src/domain/validation.ts +177 -0
  189. package/src/domain/virgin-registration.ts +46 -0
  190. package/src/errors.ts +24 -0
  191. package/src/fs-utils.ts +61 -0
  192. package/src/gateway-handshake.ts +95 -0
  193. package/src/git.ts +183 -0
  194. package/src/graph.ts +342 -0
  195. package/src/historical-step-provenance.ts +136 -0
  196. package/src/index.ts +23 -0
  197. package/src/lifecycle/canonical-hash.ts +28 -0
  198. package/src/lifecycle/catalog.ts +202 -0
  199. package/src/lifecycle/compiler-inspection.ts +29 -0
  200. package/src/lifecycle/core-static-readiness.ts +132 -0
  201. package/src/lifecycle/corrective-replan-authority.ts +136 -0
  202. package/src/lifecycle/corrective-replan-binding-manifest.ts +51 -0
  203. package/src/lifecycle/corrective-replan-credential-core.ts +408 -0
  204. package/src/lifecycle/corrective-replan-credential-schema.ts +54 -0
  205. package/src/lifecycle/corrective-replan-credentials.ts +48 -0
  206. package/src/lifecycle/corrective-replan.ts +843 -0
  207. package/src/lifecycle/evaluator.ts +48 -0
  208. package/src/lifecycle/fingerprint.ts +488 -0
  209. package/src/lifecycle/immutable.ts +8 -0
  210. package/src/lifecycle/implementation-table.ts +118 -0
  211. package/src/lifecycle/index.ts +8 -0
  212. package/src/lifecycle/schema-artifact.ts +263 -0
  213. package/src/lifecycle/semantic-registry.ts +572 -0
  214. package/src/lifecycle/types.ts +838 -0
  215. package/src/memory.ts +273 -0
  216. package/src/migration.ts +161 -0
  217. package/src/navigation-actions.ts +70 -0
  218. package/src/navigation-update-artifact.ts +198 -0
  219. package/src/navigation-update.ts +121 -0
  220. package/src/observation.ts +225 -0
  221. package/src/observed-routes.ts +660 -0
  222. package/src/operational-contract.ts +125 -0
  223. package/src/pending-review-update.ts +175 -0
  224. package/src/repository.ts +99 -0
  225. package/src/reviewer.ts +1879 -0
  226. package/src/runtime.ts +6 -0
  227. package/src/state/corrective-replan-executor.ts +818 -0
  228. package/src/state/corrective-replan-public-schema.ts +83 -0
  229. package/src/state/corrective-replan-public.ts +908 -0
  230. package/src/state/corrective-replan-transaction.ts +949 -0
  231. package/src/state/corrective-yield-executor.ts +327 -0
  232. package/src/state/corrective-yield-transaction.ts +730 -0
  233. package/src/state/lock.ts +902 -0
  234. package/src/state/store.ts +567 -0
  235. package/src/transition-core.ts +330 -0
  236. package/src/ulid.ts +24 -0
  237. package/src/version.ts +2 -0
  238. package/src/workflow-blocker-route.ts +109 -0
  239. package/src/workflow.ts +10172 -0
  240. package/docs/alpha7.1-implementation-brief.md +0 -268
  241. package/docs/alpha7.2-corrective-context-refresh-brief.md +0 -484
  242. package/docs/alpha7.2.1-remediation-recovery-brief.md +0 -86
  243. package/docs/beta1-stabilization-brief.md +0 -165
  244. package/docs/beta11-plan-integrity-recovery-brief.md +0 -38
  245. package/docs/beta13.2-signal-review-recovery.md +0 -38
  246. package/docs/beta2-initial-assembly-navigation-brief.md +0 -616
  247. package/docs/change-model.md +0 -118
  248. package/docs/delegated-approval.md +0 -254
  249. package/docs/lifecycle/state-machine-stabilization.md +0 -641
  250. package/docs/pdf/README.md +0 -24
  251. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  252. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  253. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  254. package/docs/pdf/requirements.txt +0 -1
  255. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +0 -478
  256. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +0 -506
  257. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +0 -778
  258. package/docs/pending-review-update.md +0 -15
  259. package/docs/problem-briefs/01-pre-implementation-integrity.md +0 -482
  260. package/docs/problem-briefs/02-minimal-step-integrity.md +0 -411
  261. package/docs/problem-briefs/03-minimal-agent-context-integrity.md +0 -358
  262. package/docs/problem-briefs/04-task-dependency-and-structural-replacement-integrity.md +0 -573
  263. package/docs/problem-briefs/BRIEF-TEMPLATE.md +0 -56
  264. package/docs/problem-briefs/README.md +0 -120
  265. package/docs/problem-briefs/evidence/p01-mechanical-feasibility-corpus.md +0 -90
  266. package/docs/problem-briefs/evidence/signal-v4-pre-m3-replay.md +0 -246
  267. package/docs/split-required-recovery.md +0 -47
  268. package/docs/stable-release-defect-register.md +0 -730
  269. package/docs/validation-report.md +0 -182
  270. package/scripts/generate-pdf-docs.py +0 -524
  271. package/scripts/run-pdf-docs.mjs +0 -62
@@ -1,24 +0,0 @@
1
- # Russian PDF documentation
2
-
3
- The three tracked PDFs in this directory are deterministic release artifacts generated from the
4
- reviewable Markdown files in [`sources`](sources/).
5
-
6
- Generate them with:
7
-
8
- ```bash
9
- npm run docs:pdf
10
- ```
11
-
12
- Verify that the tracked binaries match the current sources and package version with:
13
-
14
- ```bash
15
- npm run docs:pdf:check
16
- ```
17
-
18
- The generator reads the exact version from the root `package.json`, uses embedded TrueType font
19
- subsets, and writes deterministic PDF bytes. A release must update source and PDF together. The
20
- PDFs are human-facing artifacts; runtime code, schemas, the bundled gateway and ordinary Markdown
21
- documents remain the technical authority.
22
-
23
- The runner uses `CODEX_WORKFLOW_PDF_PYTHON` when supplied, then the bundled Codex App Python, then
24
- `python3`. Non-Codex environments can install the pinned dependency from `requirements.txt`.
@@ -1 +0,0 @@
1
- reportlab==4.4.9
@@ -1,478 +0,0 @@
1
- ---
2
- title: Codex Workflow V2: архитектура beta.13
3
- subtitle: Источники истины, lifecycle, роли, delegation, зависимости Tasks и границы доверия
4
- part: Часть 1 из 3 | Архитектура
5
- document_version: 2.0
6
- date: 2 сентября 2026
7
- subject: Архитектура и границы Codex Workflow V2 beta.13
8
- ---
9
-
10
- # 1. Назначение и граница системы
11
-
12
- Codex Workflow V2 - локальный state machine поверх Codex App, Git и файлов проекта. Codex выполняет
13
- исследование и реализацию. Workflow Core решает, разрешена ли конкретная мутация, связывает её с
14
- актуальными revisions и hashes, управляет writer credentials и создаёт проверяемые Git evidence.
15
-
16
- > **Главная граница:** файлы проекта и Git history являются долговременной продуктовой памятью. Локальный Workflow state хранит производный lifecycle и не может заменять repository knowledge.
17
-
18
- Система рассчитана на одного пользователя и одну машину. Она не предоставляет distributed locking,
19
- криптографическую идентификацию actor string или безопасную синхронизацию state между компьютерами.
20
-
21
- ## 1.1. Что beta.13 гарантирует
22
-
23
- - exact project-local npm package и совместимый handshake до lifecycle действий;
24
- - Discovery до materialization Task или Milestone;
25
- - утверждённую Project Knowledge Map и Plan, связанный с её точной revision/hash;
26
- - mechanical-feasibility проверку поддерживаемых форм Plan до новой Task authorization;
27
- - явный Milestone dependency DAG и один общий runnable predicate для routing, handoff, claim и start;
28
- - один C1 writer lease, host-safe credential references и Core-owned Step commits: secret хранится
29
- только в project-bound local vault с mode `0600`, а argv и CLI output содержат только reference;
30
- - lease-free Human final-acceptance gate: `task result-set` проверяет и освобождает active writer
31
- lease, а после acceptance merge получает новый credential только через fresh recovery route;
32
- - external-sealed Step/Task review в отдельных Codex tasks;
33
- - state-bound human gates либо ранее выданные bounded delegation contracts;
34
- - journaled recovery для составных переходов и fail-closed поведение при drift/corruption.
35
- - bounded recovery, когда downstream proof требует изменить уже завершённый predecessor Step:
36
- worktree и HEAD сохраняются, stale completion authority снимается, та же Task возвращается в planning.
37
- - bounded compatibility recovery, если beta.12.6 после этого recovery ошибочно rebind-нула отвергнутый
38
- Plan: exact dirty bytes сохраняются до нового consolidated Step, а Knowledge refresh не отменяет `plan-set`.
39
- - corrective Plan сохраняет authority исключённых completed Step commits, а beta.12.9 bounded recovery
40
- исправляет уже stranded state только при passed strict review и прежнем hash-bound final acceptance.
41
- - pre-execution `stop-escalate`, доказавший отсутствующую upstream capability, может materialize ровно
42
- один additive remediation Task без нового Human gate; Core сохраняет Milestone semantics и выводит
43
- authority из текущей Milestone authorization и exact audit evidence.
44
- - исторический check-support decision проверяется против собственного Plan hash, а новый Plan может
45
- продолжить только после явного принятия каждого support path в `allowedWrites` и `expectedOutputs`;
46
- implicit scope carry-over и Human approval для этого exact machine-proved случая отсутствуют.
47
- - после dependency registration и Knowledge rebind один общий fail-closed assessor управляет и
48
- навигацией, и `task run`: переносится только точный dirty set с тем же content hash, registered HEAD,
49
- непрерывной Plan/rebind chain и явным scope текущей Step; drift переводит route в `doctor`.
50
- - failed check фиксируется одной project transaction: Core связывает checks и dirty-worktree hashes,
51
- сохраняет неизменные product bytes, переводит Task в `needs_fix` и освобождает writer lease;
52
- - failed strict review так же атомарно связывает remediation, Task pause и lease release; при повторной
53
- authoritative reviewer cause та же transaction добавляет C1 yield до рекламы root-cause replan;
54
- - rolling cause-bound refinement без числового лимита: новая причина остаётся в той же Task, а повтор
55
- mechanically normalized cause либо stable reviewer `causeId` с `planConflict=true` требует replan
56
- первопричины;
57
- - evidence-bound transitive component-owner augmentation при неизменной semantic boundary и
58
- PRA-derived production-edge obligation для multi-Step `runtime-composition` consumer с transitive
59
- owner и исполняемым consumer check; простой one-Step runtime исключён;
60
- - компактный `status` по умолчанию, подготовительный reviewer-runtime preflight вне sealed checkout и
61
- явный review mode `ordinary|security` без неявного security scan;
62
- - versioned matrix для route classes, реально наблюдавшихся в Signal: unique priority, predicate,
63
- CLI/executor binding и successor witness; unsupported действия перечисляются явно.
64
-
65
- ## 1.2. Что beta.13 не гарантирует
66
-
67
- - правильность продуктовой идеи или автоматически выбранного provider Task;
68
- - semantic sufficiency Plan, если точные факты нельзя доказать поддерживаемым analyzer;
69
- - параллельную работу нескольких writers в одном checkout;
70
- - автоматический structural replacement после `split-required`;
71
- - восстановление вручную повреждённого state без штатной recovery transition.
72
- - product truth только из structural production-edge contract: он доказывает форму owner/consumer/check,
73
- но не корректность требований, поведения продукта или Step-validity authority P02;
74
- - глобально полный каталог state machine: observed-route matrix ограничена route classes из Signal и
75
- хранит отдельный unsupported inventory;
76
- - generic import product-first/shadow history либо синтетическое принятие Step, Task или Milestone.
77
-
78
- # 2. Шесть уровней и источники истины
79
-
80
- | Уровень | Источник истины | Ответственность |
81
- |---|---|---|
82
- | Пользователь / principal | Явные ответы и подтверждённые policies | Scope, semantic unknowns, grant issuance, human gates |
83
- | Codex App | Project folders, tasks, permissions | User-visible execution contexts и bounded tool access |
84
- | Роли агентов | Fresh ContextPacket и Workflow projection | Discovery, planning, execution, review, coordination |
85
- | Project-local gateway | Exact installed package и protocol | Handshake, routing discipline, app chat boundary |
86
- | Workflow Core | Runtime transitions и schemas | Revisions, hashes, locks, Git ownership, evidence |
87
- | Repository и local state | Git/files и revisioned state | Durable product facts и производный lifecycle |
88
-
89
- При расхождении приоритет имеют runtime Core и обычные файлы текущего repository. PDF объясняет
90
- контракт человеку, но не заменяет `status`, свежий `next`, schemas или package-local help.
91
-
92
- ## 2.1. Exact package boundary
93
-
94
- Продуктовый repository обязан объявить `codex-workflow-v2` точной версией в `devDependencies`.
95
- Gateway разрешает только `node_modules/codex-workflow-v2/dist/src/cli.js` этого repository,
96
- сравнивает installed и declared versions, затем выполняет `gateway handshake`.
97
-
98
- ```text
99
- AGENTS.md
100
- -> project-local gateway
101
- -> gateway handshake
102
- -> status # bounded compact projection
103
- -> status --full # только когда действительно нужна полная historical projection
104
- -> next [--task <exact TASK-ID>]
105
- -> только рекламируемая transition
106
- ```
107
-
108
- `doctor` является диагностикой, но не заменяет успешные `status` и `next`. Help разрешён только для
109
- уточнения syntax после свежего routing response.
110
-
111
- # 3. Долговременные и производные артефакты
112
-
113
- | Артефакт | Где находится | Кто владеет записью |
114
- |---|---|---|
115
- | Product code, tests, Markdown docs | Git repository | Worker в Plan scope; Git commit создаёт Core |
116
- | AGENTS.md и Project Knowledge | Git repository | Пользователь и обычный reviewable change |
117
- | Knowledge Map | Local Workflow state | Project-memory transitions |
118
- | Discovery state | Local Workflow state | Discovery transitions |
119
- | Brief, Plan, Result, evidence | Local Workflow state с versioned artifacts | Core transitions |
120
- | Task/Milestone state и sidecars | Local Workflow state | Core, CAS и schema validation |
121
- | Writer locks и private credentials | Local Workflow state; credential vault files mode `0600` | Lock manager и C1 transitions |
122
- | Transaction journals | Local Workflow state | Composite transition recovery |
123
- | codebase graph binding | Local Workflow state | Derived evidence, не product authority |
124
-
125
- Ручное редактирование state, locks, sidecars или `.versions` запрещено. Оно ломает hash chain,
126
- expected revision и восстановимость составных операций.
127
-
128
- # 4. Discovery, Task и Milestone
129
-
130
- | Сущность | Назначение | Terminal success |
131
- |---|---|---|
132
- | Discovery | Уточнить outcome, scope, acceptance, constraints и unknowns | Готова к materialization |
133
- | Task | Один самостоятельный проверяемый результат | Reviewed, accepted и merged |
134
- | Step | Атомарный инкремент внутри Task | Checks, один Core commit и evidence |
135
- | Milestone | Сквозной outcome из связанных Tasks | Required Tasks merged, validation и acceptance |
136
-
137
- ## 4.1. Task lifecycle
138
-
139
- ```text
140
- Discovery -> materialize -> Plan -> Plan Risk Audit
141
- -> mechanical feasibility -> execution authorization
142
- -> C1 handoff -> claim -> start -> Steps
143
- -> submit -> external-sealed review -> Result
144
- -> final acceptance -> merge
145
- ```
146
-
147
- `task result-set` является последним execution lease-bound переходом. Он требует рекламируемую
148
- writer credential reference, освобождает lease до `awaiting_final_acceptance` и тем самым допускает неограниченную
149
- по времени Human pause без stale-lock блокировки repository. После acceptance прежний token не
150
- переиспользуется: fresh `next` выдаёт bounded `task writer-credential-replace` для merge.
151
-
152
- Fresh Task authorization записывает versioned mechanical-feasibility evidence. Analyzer может
153
- выдать `blocked`, `pass` или `unverified`. `unverified` не означает semantic approval; он означает,
154
- что поддерживаемая точная грамматика не доказала противоречие.
155
-
156
- ## 4.2. Milestone initial assembly
157
-
158
- После materialization Milestone Core возвращает `milestone initial-assembly`. Coordinator создаёт
159
- linked Task Discoveries и materializes Tasks только через команды, рекламируемые `next`. После
160
- появления полного intended membership один `milestone plan-set` атомарно публикует state и plan.json.
161
- До этого execution недоступно.
162
-
163
- Каждая membership содержит:
164
-
165
- ```text
166
- taskId
167
- disposition: required | waived | cancelled
168
- reason
169
- dependsOnTaskIds: [exact predecessor Task IDs]
170
- ```
171
-
172
- Даже независимая Task обязана объявить `dependsOnTaskIds: []`. Отсутствующее поле в legacy state
173
- означает unknown dependency authority, а не пустой граф.
174
-
175
- ## 4.3. Runnable predicate P04-A
176
-
177
- Task runnable только когда Milestone active, membership required и все canonical predecessors имеют
178
- status `merged`. Ordinal, название, время создания и порядок в чате не создают dependency.
179
-
180
- Один predicate применяется к repository routing, Task-specific routing, handoff preparation,
181
- claim до lease acquisition и direct start. Authorization не обходит dependency block.
182
-
183
- # 5. Delegated approval и Milestone autonomy
184
-
185
- Delegation не превращает agent в human actor. Event отдельно хранит principal, delegate, grant,
186
- policy hash, transition, scope и expiry.
187
-
188
- | Механизм | Когда применять | Что не разрешает |
189
- |---|---|---|
190
- | Direct human gate | Default path | Никакой последующей автономии |
191
- | DGA/DGR delegated approval | Exact allow-listed approval transition | Scope expansion, grant issuance, обычные execution transitions |
192
- | Milestone Autonomy Contract | После полного initial Milestone Plan | Outcome/check/base/discovery changes и standalone map approval |
193
-
194
- Для нового `AUTO` Discovery допустим короткий project-scoped DGR, если нужен exact
195
- `project_memory.approve` или будущий approval transition. Blocking semantic unknown всегда возвращается
196
- пользователю. После полного initial Milestone Plan предпочтителен один bounded
197
- `milestone autonomy-prepare` gate и отдельное подтверждение `MAC-*`, затем `autonomy-grant`.
198
-
199
- Milestone Autonomy Contract покрывает разрешённые Task/Milestone approvals, membership-only evolve и
200
- Project Memory approval только внутри atomic Task context refresh этого Milestone. Grant не применяется
201
- к handoff, claim, run, step-complete, reviews, sync-base или merge.
202
-
203
- # 6. Codex App chat topology
204
-
205
- Milestone coordinator и Task chats являются отдельными user-visible Codex tasks, не fork одного
206
- conversation. Coordinator создаёт Task chat just-in-time, передаёт закрытый TaskContextPacket и
207
- остаётся активным supervisor до terminal Milestone либо настоящего user gate.
208
-
209
- ```text
210
- Coordinator
211
- -> Task T01 chat
212
- -> Step Review chat при external-sealed gate
213
- -> Final Review chat
214
- -> Corrective/Plan Audit chat при необходимости
215
- -> status -> next -> milestone progress
216
- -> следующий runnable Task chat
217
- ```
218
-
219
- Project chat registry атомарно выдаёт monotonic `#NNN`. Название всегда содержит membership ordinal и
220
- полный entity ID. Sidebar count, creation order и ручное `01/02` не являются authority.
221
-
222
- Coordinator ждёт routed Task через bounded waits, читает закрытый CoordinatorReport, затем проверяет
223
- repository `status -> next`. Завершение дочернего чата само по себе не доказывает terminal Task.
224
-
225
- # 7. C1 handoff, lease и Git ownership
226
-
227
- `task handoff-prepare` возвращает `claimCredentialReference`, связанную с project, Task, target actor,
228
- action и expiry. CLI разрешает `task claim` только с `--claim-credential-ref`, после успешного claim
229
- удаляет одноразовый reference и возвращает `writerCredentialReference`. Lease-bound действия используют
230
- только `--writer-credential-ref`. Legacy `--claim-token` и `--writer-token` отклоняются до transition.
231
-
232
- Underlying bearer secret хранится только в regular local-vault file с mode `0600`; он не появляется в
233
- argv, stdout, stderr, errors, packets или evidence. Reference не является переносимой authority: Core
234
- проверяет project/entity/action/actor/expiry и integrity hash. Если reference утрачен или lease истёк,
235
- используется только рекламируемая `task writer-credential-replace` для exact claimant.
236
-
237
- Worker меняет только `allowedWrites` и оставляет изменения uncommitted. Coordinator вызывает точный
238
- `task step-complete`; Core запускает checks, проверяет scope/history, создаёт один commit и evidence.
239
-
240
- # 8. Knowledge Map и context refresh
241
-
242
- Project Knowledge Map хранит paths, categories, scope, authority, hashes, gaps и conflicts, но не
243
- копирует содержимое файлов. Scan является read-only. Reconcile и approve выполняются только через Core.
244
-
245
- Если top-level `next` возвращает `task context-refresh`, Coordinator вызывает только эту atomic
246
- transition с указанными revisions, actor и grant. Standalone reconcile перед ней создаёт human-approval
247
- gap и блокируется.
248
-
249
- Кроме content-only drift, Core может допустить exact supporting-source addition, заранее объявленное
250
- execution-authorized Plan и покрытое тем же Milestone Autonomy Contract. Unsafe differences возвращают
251
- обычный видимый reconcile/approve/rebind/reauthorize flow.
252
-
253
- # 9. Review и corrective recovery
254
-
255
- В Codex App strict review выполняется external-sealed:
256
-
257
- 1. Core формирует read-only review packet и repository seal.
258
- 2. Task chat создаёт отдельный Reviewer chat.
259
- 3. Reviewer возвращает закрытый schema-valid result без mutations.
260
- 4. Core записывает его только если packet и seals не изменились.
261
-
262
- Native reviewer использует API-compatible strict Structured Output schema: каждый объявленный ключ object
263
- обязателен, а семантически необязательные значения finding передаются как nullable. Malformed сочетание
264
- `route`, `causeId` и `planConflict` не превращается в remediation authority и даёт unverified review.
265
-
266
- Каждый packet создаётся только с явным `--review-mode ordinary|security`. Mode `ordinary` не запускает
267
- и не подменяет проверку неявным security scan; mode `security` используется только когда security focus
268
- запрошен явно. До выдачи packet Core формирует read-only reviewer-runtime preflight: exact Node и package
269
- provenance, exact declared/locked/repository-local installed Workflow version, hash-verified runtime
270
- build manifest и writable temporary cache за пределами sealed checkout. Перед каждым packet preflight
271
- заново с диска разрешает фактический recursive dependency graph по parent-aware, nested-first правилам
272
- Node и сверяет exact package manifests и SHA-256 runtime-файлов с build attestation. Поэтому уже
273
- прогретый module cache не может скрыть удалённую, подменённую, конфликтующую либо symlink-redirected
274
- dependency. Только после этой проверки preflight синхронно загружает через Node exact installed gateway,
275
- reviewer и workflow graph. Общий gateway descriptor, который использует и CLI, подтверждает exact
276
- package/protocol/schema; отдельный child process, произвольный timeout, cached trust decision и process
277
- output не используются. Missing/stale build или dependency closure и failed runtime contract дают
278
- `prepared=false`. Preflight не устанавливает dependencies и не изменяет checkout.
279
-
280
- Новая beta.13 history не ограничивает число исправлений счётчиком. Каждый failure получает cause
281
- bindings. Новая или неавторитетная причина продолжает ту же Task и проходит новый strict review.
282
- Повтор одной authoritative причины после заявленного fix требует root-cause replan: для checks это
283
- mechanically normalized fingerprint; для внешнего review — тот же stable `causeId` только вместе с
284
- `planConflict=true`. Сходство текста и номер попытки authority не создают. `route=replan` меняет лишь
285
- implementation Steps, не objective, requirements или acceptance. Legacy history без cause bindings
286
- сохраняет прежний compatibility circuit; explicit `split-required` и `stop-escalate` остаются
287
- stop/redirect decisions.
288
-
289
- Если Step check не пройден, beta.13 одной transaction записывает remediation event, Task `needs_fix` с
290
- hash-bound `failurePause` и удаление lease. Git HEAD и dirty bytes не меняются. Readback сверяет revision,
291
- status, remediation hash, отсутствие lease, HEAD, dirty paths и их aggregate hash. Fresh `next` сначала
292
- выдаёт credential replacement при отсутствии usable lease, затем route той же Task — fix или root-cause
293
- replan. Ручной commit, state edit или потеря worktree не являются продолжением.
294
-
295
- Failed strict review использует тот же continuation principle: review sidecars остаются append-only, а
296
- одна project transaction записывает remediation и Task pause и удаляет exact proven lease. Если новый
297
- event повторяет authoritative reviewer cause, transaction одновременно добавляет C1 yield. Поэтому
298
- `task plan-set` рекламируется только при отсутствии writer lease и C1 claim; crash после durable review
299
- sidecars восстанавливает один pause без duplicate remediation.
300
-
301
- Для доказанного failed check Core может найти transitive component owner только по bounded static import
302
- graph repository-local runner и только внутри уже затронутой component boundary. Same-Task augmentation
303
- разрешена при неизменных objective, requirements, acceptance и security boundary hashes. Для multi-Step
304
- Task независимая PRA-классификация consumer как `runtime-composition` требует
305
- `requiresProductionEdges=true` и edge к существующему transitive owner Step с exact `checkRef`, который
306
- действительно выполняет consumer. Пропуск planner-owned flag или edge блокирует admission; простой
307
- one-Step runtime не требует искусственного predecessor. Это структурная admission-проверка, а не
308
- доказательство product truth и не реализация Step-validity authority P02.
309
-
310
- Beta.13.1 делает эту authority prospective и Plan-bound. Markerless PRA, созданная до появления
311
- production-edge contract, читается без ретроактивной проверки отсутствующих полей, но только пока и PRA,
312
- и Task не заявляют новую authority. Обычная новая PRA и atomic corrective replan записывают hash-chained
313
- marker `required-v1`; content-only knowledge rebind сохраняет production edges у native Task, а у
314
- действительно legacy Task сохраняет markerless posture. Миграция или ручное переписывание state не нужны.
315
- Граница доверия остаётся repository-local state: это не криптографическая защита от полного
316
- привилегированного переписывания всей hash chain.
317
-
318
- Versioned observed-route matrix v2 связывает все 13 Signal-observed route classes с unique priority и
319
- одним exact production-transition witness либо real terminal observation на класс. Это class-level
320
- доказательство: action-level metadata отдельно различает `executable-witnessed`, `unwitnessed` и
321
- `unsupported`. Действия без CLI authority находятся в explicit unsupported inventory. Boundary
322
- `signal-observed-route-class-witnesses` не заявляет полноту всех actions или будущих transition families.
323
-
324
- Beta.12.1 добавила одну append-only compatibility оговорку: beta.11 attempt-four
325
- `stop-escalate` после exact `ordinary, ordinary, corrective` и prior attempt-3 `continue-fix` можно
326
- возобновить через read-only `stop-override-prepare` и отдельный Human-confirmed
327
- `stop-override-apply`. Исходный stop сохраняется, `split-required` не подходит, а stale revision,
328
- Plan, HEAD, lease, transaction или повреждённая chain блокируют переход. Попытка 4 снова проходит
329
- обычный `task run` и новый strict review.
330
-
331
- Beta.12.4 сохраняет этот override при последовательности delegated `task context-refresh`, если
332
- каждая версия Plan изменилась только в canonical Knowledge Map binding. Core проверяет весь
333
- contiguous rebind/audit chain, mechanical equivalence каждого Plan Risk Audit, общую delegated
334
- authority и корректную chronology. Git HEAD может продвинуться только через последовательность
335
- зарегистрированных dependency-provenance commits, каждый из которых меняет ровно package.json и
336
- package-lock.json. При утрате claimed writer lease используется только одновременно рекламируемый
337
- `task writer-credential-replace`; semantic Plan drift, разрыв chain или любой другой commit
338
- возвращают `doctor`.
339
-
340
- Если последний dependency-provenance recovery записан уже после mechanical audit, он объясняет
341
- ровно один дополнительный Task revision. Core требует, чтобы audit boundary плюс количество
342
- проверенных post-audit recoveries точно равнялись current revision; произвольное увеличение
343
- revision, неверный parent или повреждённая provenance остаются blocker.
344
-
345
- Dependency-provenance recovery beta.12.1 также сохраняет ранее закоммиченные Task-local поля
346
- manifest/lock, даже если base их не содержит. Candidate остаётся dependency-only: после удаления
347
- только Workflow dependency parent и HEAD обязаны совпасть по всем product-owned полям.
348
-
349
- beta.11 `task plan-integrity-recover` существует для одного первого checks-failed legacy/late case:
350
- отсутствует exact root npm script и текущий Step не может изменить package.json. Recovery не меняет
351
- worktree или Plan и не создаёт synthetic second failure; он записывает bound `replan-required`.
352
-
353
- beta.12.6 различает другой случай: активный downstream proof оставил изменения в собственном scope и
354
- показал необходимость исправить completed transitive predecessor. Fresh `next` вместо невозможного
355
- `step-complete` рекламирует `task downstream-proof-recover`. Atomic transition сохраняет dirty files и
356
- HEAD, переносит predecessor commits в historical `invalidatedStepCommits`, очищает только stale Step evidence,
357
- yield C1 и возвращает ту же Task к новому Plan/risk audit/authorization. Unrelated dirty file,
358
- non-predecessor ownership, повреждённый journal или unregistered commit fail closed.
359
-
360
- Если старая версия не может установить этот fix из-за running Step/dirty preflight, beta.12.6
361
- добавляет отдельный update bridge. После двух exact dependency-only commits на active base и Task
362
- branch Core проверяет Task history на `HEAD^`, candidate на `HEAD`, все version surfaces, отсутствие
363
- leases/transactions, predecessor ownership и content hash dirty set. Переход регистрирует только
364
- dependency commit, не меняет product bytes/Step и делает обычный `task downstream-proof-recover`
365
- достижимым до manifest-induced Knowledge refresh. Это не общее разрешение dirty update.
366
-
367
- beta.12.7 закрывает следующий доказанный Signal case: beta.12.6 уже выполнила downstream-proof
368
- invalidation, но последующее Project Knowledge approval механически вернуло старый двух-Step Plan в
369
- `awaiting_execution_authorization`. Read-only `update downstream-proof-replan-update-preflight`
370
- сначала связывает exact beta.12.6 revision, HEAD, шесть dirty paths и content hash. После двух
371
- dependency-only commits `update downstream-proof-replan-dependency-preflight/recover` регистрирует
372
- только новый Workflow HEAD. `task downstream-proof-replan-recover` затем атомарно возвращает ту же
373
- Task в `needs_fix`; stale Knowledge можно reconciliate/approve, но fresh `next` всё равно требует
374
- новый `task plan-set`. Новый Plan может передать сохранённые bytes только одному Step, который владеет
375
- всем dirty set. `task run` принимает carryover лишь при exact HEAD/path/hash match, после чего Step
376
- проходит обычные checks, Core-owned commit и strict review.
377
-
378
- beta.12.9 закрывает исторический provenance gap corrective replan. Новые replan transitions автоматически
379
- переносят evidence commits исключённых Steps в `invalidatedStepCommits`. Для уже существующего gap Core
380
- требует один неожиданный commit, complete passed strict-review chain, verified reviewer attestation и
381
- совпадающий прежний final acceptance. Если пакет уже зарегистрирован, recovery меняет только Task state.
382
- Если exact beta.12.9 dependency commit ещё находится в HEAD, отдельный update compatibility route
383
- регистрирует dependency и historical authority одной revision. Оба пути сохраняют dirty bytes текущего
384
- Step, не переписывают Git и завершаются fresh обычным `step-complete` flow.
385
-
386
- beta.12.11 закрывает иной класс тупика до начала выполнения. Если current Plan Risk Audit required Task
387
- записал `stop-escalate`, потому что нужной upstream capability нет в scope этой Task, Core рекламирует
388
- audited remediation. Coordinator сначала формализует capability обычным Discovery. Затем одна Project
389
- transaction append-only создаёт required remediation Task на exact merged predecessor frontier исходной
390
- Task, добавляет dependency blocked -> remediation и сохраняет все Milestone semantic fields и старые
391
- memberships. Scope-change event связан с Task revision, Brief/Plan и audit hashes; повторное применение
392
- того же audit невозможно. Текущая Milestone execution authorization и audit выводят
393
- `corrective-derived` authority для Task authorize/accept без нового Human gate. Remediation Task проходит
394
- обычный Plan, audit, C1, commits и reviews. После её merge исходная Task обязана заменить отвергнутый Plan,
395
- пройти fresh audit и продолжить Step. Final Milestone acceptance не выводится автоматически.
396
-
397
- Dependency-only update не должен создавать промежуточный Human gate. Если stale Knowledge отличается
398
- только content hash `package.json`, все package surfaces уже равны runtime version, checkout clean, а
399
- каждый Git commit, менявший `package.json` после approved hash, затрагивает ровно manifest/lock и только
400
- Workflow pin, Core переносит reconcile и `corrective-derived` approval внутрь той же atomic remediation
401
- transaction. Изменение любого другого Knowledge source, classification, gap или conflict fail-closed
402
- остаётся в обычном явном approval flow.
403
-
404
- beta.12.12 закрывает доказанный runtime Plan-integrity gap. Mechanical feasibility теперь статически
405
- распознаёт repository-local `node <runner> affected`, когда исходник runner явно требует selector,
406
- и блокирует authorization для `npm run <script>` без `--base`, `--head` или `--files`. Для уже начатой
407
- Task recovery связывает не только первую, а всю последовательную checks-failed history, точный Plan,
408
- manifest/runner hashes, HEAD и dirty allowlist. Exact beta.12.11 update bridge сохраняет product bytes,
409
- регистрирует только dependency commit и атомарно обновляет Knowledge, если изменился только Workflow pin.
410
- Результат — один `replan-required` decision и обычный corrective replan с исполняемой check command;
411
- повтор старой команды, ручной commit product files и state editing не допускаются.
412
-
413
- beta.12.15 устраняет следующий доказанный разрыв этого пути. Corrective-replan credential раздельно
414
- связывает исходную Knowledge revision/hash Task и целевую active Knowledge revision/hash replacement
415
- Plan. Различие разрешено только при exact Plan-integrity dependency recovery: текущий system commit,
416
- package version, failed Step, Plan, полная remediation history, dirty file set и их bytes должны
417
- совпасть. Один или несколько последовательных dependency-only updates после corrective yield могут
418
- перенести ту же compatibility на новый HEAD: Core идёт назад до последнего зарегистрированного system
419
- commit, проверяет каждый промежуточный commit как exact manifest/lock-only Workflow pin update и
420
- атомарно регистрирует всю цепочку. Любой product diff, разрыв parent chain или изменённый worktree
421
- fail-closed. Completed corrective-yield journal
422
- остаётся историческим prefix-доказательством и не блокирует последующие append-only handoff events.
423
- Completed corrective-replan journal также остаётся читаемым после эволюции binding manifest, но только
424
- если его завершённый manifest/runtime/catalog tuple есть в append-only historical registry. Pending и
425
- неизвестные identity по-прежнему fail-closed, поэтому compatibility не выдаёт новую authority.
426
-
427
- beta.12.16 закрывает следующий доказанный разрыв: migration Step мог владеть новой SQL migration,
428
- manifest и bootstrap, но не владеть TypeScript-модулем, который direct import из обязательного check
429
- использовал как независимую SHA/catalog authority. Новый `wf2.check-support-anchor@1` блокирует такой
430
- Plan до execution authorization. Для уже выполняемой Task после первого `checks-failed` Core связывает
431
- Plan/Step/HEAD, полный dirty set, runner/support hashes, direct import, отсутствующий declared output и
432
- существующие anchors. Если доказательство однозначно, append-only decision `continue-fix` выдаёт только
433
- один exact support path как effective Step scope. Human replan не нужен, Plan hash и product bytes не
434
- меняются, а Worker envelope, Core commit и sealed review packet явно используют и раскрывают derived
435
- scope. Indirect import, dynamic shell, forbidden path, unrelated dirty file или отсутствие SHA anchors
436
- fail-closed и не расширяют authority.
437
-
438
- beta.12.17 закрывает transport-разрыв перед этим recovery: внешний runner больше не ожидает один
439
- зашитый source release. Он выводит exact beta.12 source из declared dependency, требует равенства
440
- locked, installed, current Task branch и active Milestone base и допускает только patch от .11 до
441
- версии ниже runner. Dirty scope, отсутствие lease/transaction и dependency-only Git transport
442
- остаются обязательными; product bytes и Workflow state вручную не изменяются.
443
-
444
- beta.12.18 закрывает следующий post-rebind разрыв. Исторический check-support event остаётся валиден
445
- по Plan hash, при котором был создан, даже если новый Plan теперь прямо владеет derived support path.
446
- External preflight допускает продолжение только при одном таком event, неизменных dirty bytes,
447
- отсутствии активного Step/lease/transaction и полном explicit scope adoption в planned Step. После
448
- dependency-only transport Core заново связывает Knowledge и authorization; старый event не создаёт
449
- скрытой authority и не модифицируется задним числом.
450
-
451
- beta.12.19 закрывает оставшийся execution-boundary разрыв. Успешные transport, rebind, PRA и
452
- authorization больше не заканчиваются рекламируемым, но невыполнимым `task run`: `next` и `runStep`
453
- используют одну проверку registered recovery commit, exact dirty paths/content hash, historical
454
- decision, Plan/rebind ancestry и current Step ownership. Совпадение разрешает только принятие уже
455
- доказанных байтов; любое отличие блокирует запуск и не создаёт lease или commit.
456
-
457
- Docker socket `EPERM` в sandbox не является доказательством сломанного daemon. Gateway один раз
458
- повторяет exact health probe или Plan check с sandbox escalation без расходования remediation attempt.
459
- Restart Docker Desktop требует отдельного разрешения и допустим только после escalated daemon failure.
460
-
461
- > **Стоп P04-A:** `split-required` возвращает `STRUCTURAL_REPLACEMENT_REQUIRED` и `structuralReplacementAvailable=false`. Нельзя вызывать retained replacement command, потреблять replacement Discovery или вручную менять topology. Продолжение возможно только после P04-B/P05.
462
-
463
- # 10. Operational checklist
464
-
465
- - exact package version установлен, bundled gateway соответствует release и переустановлен;
466
- - handshake подтверждает `packageVersion=2.0.0-beta.13.9`, protocol 2, state schema 2 и beta.13
467
- capabilities;
468
- - routine observation начинается с компактного `status`; `status --full` запрашивается только для
469
- расследования, которому действительно нужна полная historical projection;
470
- - каждый mutation следует свежему `status -> next` и exact option contract;
471
- - Docker permission failure сначала классифицируется как sandbox boundary, а не как infra retry;
472
- - semantic unknowns и human gates не маскируются delegation;
473
- - Task chats создаёт coordinator; CLI получает только local-vault references и никогда не bearer secret;
474
- - Reviewer packet прошёл runtime preflight и явно связан с `ordinary` либо `security` mode;
475
- - production-edge contract трактуется как structural admission, а не как product acceptance;
476
- - advertised route имеет Signal-observed matrix binding либо явно помечен unsupported;
477
- - dependencies, progress и review posture берутся из Core projections;
478
- - local state не редактируется вручную; release и package update выполняются только после safe preflight и обязательных checks.