codex-workflow-v2 2.0.0-beta.13.8 → 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 (281) hide show
  1. package/README.md +27 -388
  2. package/dist/reviewer-runtime-build.json +96 -32
  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/failed-step-planning-recovery.d.ts +10 -0
  19. package/dist/src/alpha6/failed-step-planning-recovery.js +93 -0
  20. package/dist/src/alpha6/failed-step-planning-recovery.js.map +1 -0
  21. package/dist/src/alpha6/literal-test-invocation.d.ts +2 -0
  22. package/dist/src/alpha6/literal-test-invocation.js +106 -0
  23. package/dist/src/alpha6/literal-test-invocation.js.map +1 -0
  24. package/dist/src/alpha6/milestone.d.ts +2 -0
  25. package/dist/src/alpha6/milestone.js +10 -1
  26. package/dist/src/alpha6/milestone.js.map +1 -1
  27. package/dist/src/alpha6/navigation-dirty-carryover.d.ts +11 -0
  28. package/dist/src/alpha6/navigation-dirty-carryover.js +130 -0
  29. package/dist/src/alpha6/navigation-dirty-carryover.js.map +1 -0
  30. package/dist/src/alpha6/plan-integrity.js +7 -5
  31. package/dist/src/alpha6/plan-integrity.js.map +1 -1
  32. package/dist/src/alpha6/plan-risk.d.ts +2 -0
  33. package/dist/src/alpha6/plan-risk.js +10 -3
  34. package/dist/src/alpha6/plan-risk.js.map +1 -1
  35. package/dist/src/alpha6/remediation.d.ts +6 -21
  36. package/dist/src/alpha6/remediation.js +161 -476
  37. package/dist/src/alpha6/remediation.js.map +1 -1
  38. package/dist/src/alpha6/root-cause-replan-carryover.d.ts +4 -1
  39. package/dist/src/alpha6/root-cause-replan-carryover.js +29 -5
  40. package/dist/src/alpha6/root-cause-replan-carryover.js.map +1 -1
  41. package/dist/src/beta1/project-transaction.d.ts +3 -1
  42. package/dist/src/beta1/project-transaction.js +6 -2
  43. package/dist/src/beta1/project-transaction.js.map +1 -1
  44. package/dist/src/checks/runner.d.ts +26 -0
  45. package/dist/src/checks/runner.js +223 -0
  46. package/dist/src/checks/runner.js.map +1 -0
  47. package/dist/src/checks/task-sync.d.ts +10 -0
  48. package/dist/src/checks/task-sync.js +41 -0
  49. package/dist/src/checks/task-sync.js.map +1 -0
  50. package/dist/src/checks/worker.d.ts +1 -0
  51. package/dist/src/checks/worker.js +154 -0
  52. package/dist/src/checks/worker.js.map +1 -0
  53. package/dist/src/cli-actions.d.ts +2 -2
  54. package/dist/src/cli-actions.js +3 -15
  55. package/dist/src/cli-actions.js.map +1 -1
  56. package/dist/src/cli.js +14 -98
  57. package/dist/src/cli.js.map +1 -1
  58. package/dist/src/contracts.d.ts +35 -32
  59. package/dist/src/dependency-provenance.d.ts +2 -2
  60. package/dist/src/dependency-provenance.js +12 -69
  61. package/dist/src/dependency-provenance.js.map +1 -1
  62. package/dist/src/domain/base-sync-conflict.d.ts +13 -0
  63. package/dist/src/domain/base-sync-conflict.js +32 -0
  64. package/dist/src/domain/base-sync-conflict.js.map +1 -0
  65. package/dist/src/domain/step-start-admission.d.ts +4 -0
  66. package/dist/src/domain/step-start-admission.js +9 -0
  67. package/dist/src/domain/step-start-admission.js.map +1 -0
  68. package/dist/src/domain/virgin-registration.d.ts +3 -0
  69. package/dist/src/domain/virgin-registration.js +65 -0
  70. package/dist/src/domain/virgin-registration.js.map +1 -0
  71. package/dist/src/errors.d.ts +1 -1
  72. package/dist/src/errors.js.map +1 -1
  73. package/dist/src/gateway-handshake.js +0 -8
  74. package/dist/src/gateway-handshake.js.map +1 -1
  75. package/dist/src/git.d.ts +3 -1
  76. package/dist/src/git.js +41 -14
  77. package/dist/src/git.js.map +1 -1
  78. package/dist/src/graph.js +25 -3
  79. package/dist/src/graph.js.map +1 -1
  80. package/dist/src/index.d.ts +1 -0
  81. package/dist/src/lifecycle/corrective-replan.js +3 -3
  82. package/dist/src/lifecycle/corrective-replan.js.map +1 -1
  83. package/dist/src/navigation-actions.d.ts +9 -0
  84. package/dist/src/navigation-actions.js +72 -0
  85. package/dist/src/navigation-actions.js.map +1 -0
  86. package/dist/src/navigation-update-artifact.d.ts +5 -0
  87. package/dist/src/navigation-update-artifact.js +227 -0
  88. package/dist/src/navigation-update-artifact.js.map +1 -0
  89. package/dist/src/navigation-update.d.ts +39 -0
  90. package/dist/src/navigation-update.js +82 -0
  91. package/dist/src/navigation-update.js.map +1 -0
  92. package/dist/src/observation.js +52 -29
  93. package/dist/src/observation.js.map +1 -1
  94. package/dist/src/observed-routes.js +5 -6
  95. package/dist/src/observed-routes.js.map +1 -1
  96. package/dist/src/pending-review-update.d.ts +0 -13
  97. package/dist/src/pending-review-update.js +1 -6
  98. package/dist/src/pending-review-update.js.map +1 -1
  99. package/dist/src/reviewer.d.ts +1 -1
  100. package/dist/src/reviewer.js +20 -17
  101. package/dist/src/reviewer.js.map +1 -1
  102. package/dist/src/runtime.d.ts +3 -0
  103. package/dist/src/runtime.js +6 -0
  104. package/dist/src/runtime.js.map +1 -0
  105. package/dist/src/state/corrective-replan-executor.d.ts +10 -0
  106. package/dist/src/state/corrective-replan-executor.js +37 -1
  107. package/dist/src/state/corrective-replan-executor.js.map +1 -1
  108. package/dist/src/state/corrective-replan-public-schema.js +15 -2
  109. package/dist/src/state/corrective-replan-public-schema.js.map +1 -1
  110. package/dist/src/state/corrective-replan-public.js +6 -5
  111. package/dist/src/state/corrective-replan-public.js.map +1 -1
  112. package/dist/src/state/corrective-replan-transaction.d.ts +1 -0
  113. package/dist/src/state/corrective-replan-transaction.js +12 -11
  114. package/dist/src/state/corrective-replan-transaction.js.map +1 -1
  115. package/dist/src/state/corrective-yield-executor.js +2 -2
  116. package/dist/src/state/corrective-yield-executor.js.map +1 -1
  117. package/dist/src/state/corrective-yield-transaction.d.ts +1 -0
  118. package/dist/src/state/corrective-yield-transaction.js +11 -10
  119. package/dist/src/state/corrective-yield-transaction.js.map +1 -1
  120. package/dist/src/state/lock.d.ts +4 -0
  121. package/dist/src/state/lock.js +21 -0
  122. package/dist/src/state/lock.js.map +1 -1
  123. package/dist/src/version.d.ts +1 -1
  124. package/dist/src/version.js +1 -1
  125. package/dist/src/version.js.map +1 -1
  126. package/dist/src/workflow-blocker-route.d.ts +8 -0
  127. package/dist/src/workflow-blocker-route.js +106 -0
  128. package/dist/src/workflow-blocker-route.js.map +1 -0
  129. package/dist/src/workflow.d.ts +48 -63
  130. package/dist/src/workflow.js +698 -1470
  131. package/dist/src/workflow.js.map +1 -1
  132. package/docs/autonomy-guardrails.md +26 -304
  133. package/docs/decisions.md +14 -112
  134. package/docs/development-flow.md +35 -238
  135. package/docs/project-memory.md +31 -50
  136. package/docs/release-app-evidence.md +190 -0
  137. package/docs/release.md +95 -363
  138. package/docs/updating-existing-project.md +19 -717
  139. package/package.json +11 -13
  140. package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +2 -2
  141. package/plugins/codex-workflow-gateway/references/chat-dispatch.md +73 -197
  142. package/plugins/codex-workflow-gateway/references/codebase-memory-routing.md +57 -0
  143. package/plugins/codex-workflow-gateway/references/protocol.md +42 -445
  144. package/plugins/codex-workflow-gateway/scripts/chat-dispatch.mjs +7 -1
  145. package/plugins/codex-workflow-gateway/scripts/chat-model-policy.mjs +10 -8
  146. package/plugins/codex-workflow-gateway/scripts/chat-registry.mjs +23 -5
  147. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +66 -740
  148. package/references/state-machine.md +4 -4
  149. package/roles/technical-planner.md +1 -1
  150. package/schemas/corrective-decision-event.schema.json +3 -1
  151. package/schemas/project-knowledge-map.schema.json +3 -1
  152. package/schemas/remediation-event.schema.json +10 -1
  153. package/schemas/task.schema.json +46 -2
  154. package/schemas/transition-payloads.schema.json +16 -1
  155. package/src/alpha6/adoption.ts +1123 -0
  156. package/src/alpha6/captured-check-evidence.ts +132 -0
  157. package/src/alpha6/check-support-anchor.ts +128 -0
  158. package/src/alpha6/component-owner.ts +168 -0
  159. package/src/alpha6/corrective-decision-boundary.ts +39 -0
  160. package/src/alpha6/downstream-proof.ts +520 -0
  161. package/src/alpha6/failed-step-planning-recovery.ts +88 -0
  162. package/src/alpha6/handoff.ts +1443 -0
  163. package/src/alpha6/journal.ts +473 -0
  164. package/src/alpha6/literal-test-invocation.ts +84 -0
  165. package/src/alpha6/mechanical-feasibility.ts +488 -0
  166. package/src/alpha6/milestone.ts +2192 -0
  167. package/src/alpha6/navigation-dirty-carryover.ts +154 -0
  168. package/src/alpha6/npm-check-contract.ts +47 -0
  169. package/src/alpha6/plan-integrity.ts +298 -0
  170. package/src/alpha6/plan-risk.ts +1480 -0
  171. package/src/alpha6/preexecution-replan.ts +187 -0
  172. package/src/alpha6/remediation-cause.ts +98 -0
  173. package/src/alpha6/remediation.ts +2438 -0
  174. package/src/alpha6/review.ts +1198 -0
  175. package/src/alpha6/root-cause-replan-carryover.ts +491 -0
  176. package/src/alpha6/store-sidecars.ts +335 -0
  177. package/src/alpha7/autonomy.ts +411 -0
  178. package/src/alpha7/corrective-recovery.ts +1332 -0
  179. package/src/artifacts.ts +130 -0
  180. package/src/beta1/project-transaction.ts +355 -0
  181. package/src/change-explanation.ts +153 -0
  182. package/src/checks/runner.ts +245 -0
  183. package/src/checks/task-sync.ts +41 -0
  184. package/src/checks/worker.ts +149 -0
  185. package/src/cli-actions.ts +107 -0
  186. package/src/cli.ts +1457 -0
  187. package/src/contracts.ts +1494 -0
  188. package/src/credential-output.ts +89 -0
  189. package/src/credential-transport.ts +215 -0
  190. package/src/delegation.ts +190 -0
  191. package/src/dependency-provenance.ts +472 -0
  192. package/src/diagnostics.ts +93 -0
  193. package/src/domain/base-sync-conflict.ts +35 -0
  194. package/src/domain/completed-step-carryover.ts +76 -0
  195. package/src/domain/discovery.ts +27 -0
  196. package/src/domain/plan-semantics.ts +58 -0
  197. package/src/domain/step-start-admission.ts +10 -0
  198. package/src/domain/validation.ts +177 -0
  199. package/src/domain/virgin-registration.ts +46 -0
  200. package/src/errors.ts +24 -0
  201. package/src/fs-utils.ts +61 -0
  202. package/src/gateway-handshake.ts +95 -0
  203. package/src/git.ts +183 -0
  204. package/src/graph.ts +342 -0
  205. package/src/historical-step-provenance.ts +136 -0
  206. package/src/index.ts +23 -0
  207. package/src/lifecycle/canonical-hash.ts +28 -0
  208. package/src/lifecycle/catalog.ts +202 -0
  209. package/src/lifecycle/compiler-inspection.ts +29 -0
  210. package/src/lifecycle/core-static-readiness.ts +132 -0
  211. package/src/lifecycle/corrective-replan-authority.ts +136 -0
  212. package/src/lifecycle/corrective-replan-binding-manifest.ts +51 -0
  213. package/src/lifecycle/corrective-replan-credential-core.ts +408 -0
  214. package/src/lifecycle/corrective-replan-credential-schema.ts +54 -0
  215. package/src/lifecycle/corrective-replan-credentials.ts +48 -0
  216. package/src/lifecycle/corrective-replan.ts +843 -0
  217. package/src/lifecycle/evaluator.ts +48 -0
  218. package/src/lifecycle/fingerprint.ts +488 -0
  219. package/src/lifecycle/immutable.ts +8 -0
  220. package/src/lifecycle/implementation-table.ts +118 -0
  221. package/src/lifecycle/index.ts +8 -0
  222. package/src/lifecycle/schema-artifact.ts +263 -0
  223. package/src/lifecycle/semantic-registry.ts +572 -0
  224. package/src/lifecycle/types.ts +838 -0
  225. package/src/memory.ts +273 -0
  226. package/src/migration.ts +161 -0
  227. package/src/navigation-actions.ts +70 -0
  228. package/src/navigation-update-artifact.ts +198 -0
  229. package/src/navigation-update.ts +121 -0
  230. package/src/observation.ts +225 -0
  231. package/src/observed-routes.ts +660 -0
  232. package/src/operational-contract.ts +125 -0
  233. package/src/pending-review-update.ts +175 -0
  234. package/src/repository.ts +99 -0
  235. package/src/reviewer.ts +1879 -0
  236. package/src/runtime.ts +6 -0
  237. package/src/state/corrective-replan-executor.ts +818 -0
  238. package/src/state/corrective-replan-public-schema.ts +83 -0
  239. package/src/state/corrective-replan-public.ts +908 -0
  240. package/src/state/corrective-replan-transaction.ts +949 -0
  241. package/src/state/corrective-yield-executor.ts +327 -0
  242. package/src/state/corrective-yield-transaction.ts +730 -0
  243. package/src/state/lock.ts +902 -0
  244. package/src/state/store.ts +567 -0
  245. package/src/transition-core.ts +330 -0
  246. package/src/ulid.ts +24 -0
  247. package/src/version.ts +2 -0
  248. package/src/workflow-blocker-route.ts +109 -0
  249. package/src/workflow.ts +10172 -0
  250. package/docs/alpha7.1-implementation-brief.md +0 -268
  251. package/docs/alpha7.2-corrective-context-refresh-brief.md +0 -484
  252. package/docs/alpha7.2.1-remediation-recovery-brief.md +0 -86
  253. package/docs/beta1-stabilization-brief.md +0 -165
  254. package/docs/beta11-plan-integrity-recovery-brief.md +0 -38
  255. package/docs/beta13.2-signal-review-recovery.md +0 -38
  256. package/docs/beta2-initial-assembly-navigation-brief.md +0 -616
  257. package/docs/change-model.md +0 -118
  258. package/docs/delegated-approval.md +0 -254
  259. package/docs/lifecycle/state-machine-stabilization.md +0 -641
  260. package/docs/pdf/README.md +0 -24
  261. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  262. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  263. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  264. package/docs/pdf/requirements.txt +0 -1
  265. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +0 -478
  266. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +0 -508
  267. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +0 -778
  268. package/docs/pending-review-update.md +0 -15
  269. package/docs/problem-briefs/01-pre-implementation-integrity.md +0 -482
  270. package/docs/problem-briefs/02-minimal-step-integrity.md +0 -411
  271. package/docs/problem-briefs/03-minimal-agent-context-integrity.md +0 -358
  272. package/docs/problem-briefs/04-task-dependency-and-structural-replacement-integrity.md +0 -573
  273. package/docs/problem-briefs/BRIEF-TEMPLATE.md +0 -56
  274. package/docs/problem-briefs/README.md +0 -120
  275. package/docs/problem-briefs/evidence/p01-mechanical-feasibility-corpus.md +0 -90
  276. package/docs/problem-briefs/evidence/signal-v4-pre-m3-replay.md +0 -246
  277. package/docs/split-required-recovery.md +0 -47
  278. package/docs/stable-release-defect-register.md +0 -730
  279. package/docs/validation-report.md +0 -182
  280. package/scripts/generate-pdf-docs.py +0 -524
  281. package/scripts/run-pdf-docs.mjs +0 -62
@@ -1,778 +0,0 @@
1
- ---
2
- title: Codex Workflow V2: технический справочник beta.13
3
- subtitle: Protocol 2, state schema 2, transactions, credentials, dependency authority, review и recovery
4
- part: Часть 3 из 3 | Technical reference
5
- document_version: 2.0
6
- date: 2 сентября 2026
7
- subject: Технический контракт Codex Workflow V2 beta.13
8
- ---
9
-
10
- # 1. Runtime contract
11
-
12
- Workflow V2 предоставляет локальные revisioned transitions. Публичный CLI возвращает JSON с `ok=true`
13
- и `value` либо структурированную ошибку с `code`, `message` и `details`. Chat, PDF и gateway не создают
14
- authority сами: mutating permission определяется runtime state и свежим `next`.
15
-
16
- | Параметр beta.13 | Значение |
17
- |---|---|
18
- | npm package | `codex-workflow-v2@2.0.0-beta.13.5` |
19
- | protocolVersion | 2 |
20
- | stateSchemaVersion | 2 |
21
- | lifecycle epoch | 2 |
22
- | transition definition format | 4 |
23
- | execution topology | Один пользователь, одна машина, local/external workspace contract |
24
-
25
- Schema 2 не означает, что все optional legacy fields дают execution authority. Например отсутствие
26
- Milestone dependency arrays разрешено decoder только для чтения historical state и блокирует новое
27
- execution до explicit Plan amendment.
28
-
29
- # 2. Package resolution и handshake
30
-
31
- Gateway выполняет:
32
-
33
- 1. `git rev-parse --show-toplevel`;
34
- 2. чтение exact `codex-workflow-v2` version из `devDependencies`;
35
- 3. resolution `node_modules/codex-workflow-v2/package.json`;
36
- 4. equality check declared/installed versions;
37
- 5. вызов только package-local `dist/src/cli.js --repo <root>`;
38
- 6. `gateway handshake` до lifecycle действий.
39
-
40
- Ключевые beta.13 capabilities:
41
-
42
- | Группа | Capabilities |
43
- |---|---|
44
- | Knowledge и graph | `project-memory-v1`, `graph-binding-v1`, `task-context-refresh-v1` |
45
- | Milestone | lifecycle, initial assembly navigation, autonomy, audited remediation topology, progress, dependency DAG, initial Plan transaction |
46
- | Task planning | Plan Risk Audit, proof obligations, mechanical feasibility |
47
- | C1 | handoff sidecar/bundle, derived Worker actor, `host-safe-credential-reference-v1`, credential replacement, Human-gate lease release |
48
- | Reviews | strict reviewer, Step strict review, `reviewer-runtime-preflight-v1`, `explicit-review-mode-v1`, evidence-bound fix/replan routing |
49
- | Recovery | `cause-bound-rolling-refinement-v1`, `failed-step-continuation-transaction-v1`, Task-local dependency provenance, historical Step provenance, plan integrity, `historical-check-support-scope-adoption-v1`, `historical-check-support-dirty-carryover-v1`, downstream-proof predecessor invalidation, remediation mode, legacy stop override, append-only stop-rebind chain, corrective yield/replan journals |
50
- | Planning/integration | `structural-production-edge-contract-v1`, transitive component-owner same-Task refinement |
51
- | Operations/navigation | `compact-status-v1`, `observed-route-matrix-v2`, `app-owned-operational-preflight-v1` |
52
- | Replacement | `structural-task-replacement-disabled-v1` |
53
-
54
- Handshake incompatibility прекращает работу. Запуск global package, `latest`, mutable range или соседней
55
- source checkout запрещён.
56
-
57
- # 3. State, artifacts и sidecars
58
-
59
- Project identity выводится из Git common directory. Сущности содержат `schemaVersion`, `revision`, ID,
60
- projectId и timestamps. Mutations используют compare-and-swap по `expectedRevision`.
61
-
62
- ```text
63
- $CODEX_HOME/workflow-state/v2/projects/<project-id>/
64
- project.json
65
- knowledge-map.json
66
- discoveries/<DISC-ID>/state.json
67
- tasks/<TASK-ID>/
68
- brief.md, plan.md, result.md, evidence.json, state.json
69
- .versions/
70
- authorization/review/remediation/corrective/stop-override/handoff sidecars
71
- milestones/<MS-ID>/
72
- plan.json, result.md, evidence.json, state.json
73
- .versions/ и scope/autonomy sidecars
74
- delegations/<DGR-ID>/state.json
75
- locks/<TASK-ID>.json
76
- credentials/<project-id>/CREF-<uuid>.json # private regular file, mode 0600
77
- graph-bindings/
78
- composite transaction journals
79
- ```
80
-
81
- Artifacts публикуются через staged version, CAS state write, active publication и hash readback.
82
- Composite mutations добавляют journal с exact targets, before/after hashes и recovery posture.
83
-
84
- Local state никогда не копируется в product repository и не редактируется вручную.
85
- Credential vault является host-local transport: underlying bearer secret не сериализуется в CLI argv,
86
- output, error, packet или evidence и не передаётся между projects по reference.
87
-
88
- # 4. Project Knowledge Map
89
-
90
- Map хранит metadata долговременных repository files: normalized path, category, scope, authority,
91
- contentHash, gaps, conflicts и approval. Содержимое документов остаётся в Git.
92
-
93
- | Transition | Mutation |
94
- |---|---|
95
- | `project-memory scan` | Нет, read-only filesystem classification |
96
- | `show/status` | Нет, current projection |
97
- | `reconcile` | Новая map revision из current files |
98
- | `approve` | mapHash и human/delegated approval evidence |
99
- | `task knowledge-rebind` | Только Plan map binding, supersede authorization |
100
- | `task context-refresh` | Atomic reconcile/approve/rebind/reauthorize при exact eligibility |
101
-
102
- Top-level `next.action=task context-refresh` является exact composite route. Standalone reconcile перед
103
- ним запрещён. Milestone Autonomy Contract может покрывать content-only drift и exact Plan-bounded
104
- supporting-source addition, но не standalone Project Memory approval.
105
-
106
- PDF-файлы в `docs/pdf` являются human-facing binary artifacts. Reviewable Markdown sources находятся в
107
- `docs/pdf/sources`; runtime Project Knowledge authority остаётся в обычных project files и scanner rules.
108
-
109
- # 5. Discovery и materialization
110
-
111
- Discovery фиксирует kind, goal/outcome, success signal, scope, out-of-scope, acceptance, constraints,
112
- unknowns и readiness. Blocking unknown запрещает materialization.
113
-
114
- Milestone materialization создаёт initial planning posture. Пока Plan отсутствует, `next` возвращает
115
- `milestone initial-assembly` и exact linked Task assembly commands. Coordinator materializes intended
116
- linked Tasks, затем публикует один complete Plan. Reverse membership integrity запрещает закрыть Plan с
117
- unclassified live linked Task.
118
-
119
- # 6. Milestone Plan и dependency DAG
120
-
121
- ```text
122
- MilestonePlanInput
123
- outcome
124
- successSignal
125
- acceptance[]
126
- checks[]
127
- memberships[]
128
- taskId
129
- disposition
130
- reason
131
- dependsOnTaskIds[]
132
- ```
133
-
134
- Normalization trim-ит строки и сортирует каждый dependency array по exact Task ID. Duplicate edges
135
- отклоняются до normalization и hashing. Graph validation запрещает:
136
-
137
- - missing dependency array на новом Plan;
138
- - dangling, external и missing Task targets;
139
- - duplicate membership и duplicate edge;
140
- - self edge и cycle;
141
- - required consumer с waived/cancelled provider;
142
- - dependency inference из ordinal, title, filename или chat order.
143
-
144
- Initial `milestone plan-set` атомарно связывает state.json и plan.json. Scope change использует
145
- journaled transaction для membership state, plan artifact, revision/hash и authorization supersession.
146
-
147
- ## 6.1. Runnable predicate
148
-
149
- ```text
150
- runnable =
151
- milestone.status == active
152
- AND membership.disposition == required
153
- AND every dependsOnTaskId is a required member with Task status merged
154
- ```
155
-
156
- Predicate вызывается из repository `next`, scoped `next --task`, progress projection, handoff preparation,
157
- claim до lock acquisition и Task start. Scheduler выбирает из полного runnable set и не изменяет graph.
158
-
159
- Legacy nonterminal Milestone без arrays имеет `dependencyState=legacy-unknown` и не может handoff, claim
160
- или start unstarted required Tasks до explicit Plan amendment.
161
-
162
- # 7. Milestone autonomy и delegated approval
163
-
164
- Generic delegation allow-list закрыт:
165
-
166
- ```text
167
- project_memory.approve
168
- task.execution_authorize
169
- task.final_accept
170
- milestone.execution_authorize
171
- milestone.final_accept
172
- ```
173
-
174
- Issuance: `delegation prepare` возвращает exact policyHash и DGA-code; только отдельный later human turn
175
- разрешает `delegation grant`. Event сохраняет principal и delegate раздельно.
176
-
177
- Milestone autonomy используется после complete initial Plan:
178
-
179
- ```text
180
- milestone autonomy-prepare
181
- -> human confirms exact MAC-code in later turn
182
- -> milestone autonomy-grant
183
- -> bounded approvals/context refresh/membership-only evolve
184
- ```
185
-
186
- Contract связывает principal, delegate, Milestone, expiry, semantic scope hash и policy hash. Outcome,
187
- success signal, acceptance, checks, Discovery и base branch неизменны. `autonomy-evolve` допускает только
188
- membership changes и supersedes execution authorization.
189
-
190
- Grant никогда не является C1 writer credential и не наследуется handoff, claim, run, step-complete,
191
- reviews, sync-base или merge.
192
-
193
- # 8. Task Plan authority и P01-A
194
-
195
- Task Plan обязан копировать exact requirement/acceptance identifiers из `next.taskPlanContract`. Step
196
- содержит objective, requirements, dependencies, expectedOutputs, allowedWrites, forbiddenScope и checks.
197
- Plan binding включает Brief/Plan hashes и approved Knowledge Map revision/hash.
198
-
199
- Plan Risk Audit до execution фиксирует guarded Step categories и proof obligations. Fresh execution
200
- authorization запускает три versioned analyzers:
201
-
202
- | Analyzer | Поддерживаемая точная проверка |
203
- |---|---|
204
- | `wf2.root-npm-script@1` | Exact `npm run <script>` в root package.json либо responsible manifest writer |
205
- | `wf2.exact-output-path@1` | Exact `path:<repository-relative POSIX path>` существует или writable |
206
- | `wf2.exact-predecessor-path@1` | Exact transitive predecessor declares и may write consumer path |
207
-
208
- Findings имеют `pass`, `blocked` или `unverified`. Любой blocked finding запрещает authorization без
209
- event write. Clear evidence записывается внутрь AuthorizationEvent вместе с analyzer set/input hashes,
210
- Brief/Plan hashes, evaluated HEAD, source branch/kind и evidence hash.
211
-
212
- Freshness повторно проверяется перед claim/start/run и recovery. Pre-start evidence связывается с exact
213
- base branch HEAD; corrective evidence связывается с current Task workspace и baseCommit. Git ancestry,
214
- branch, analyzer inputs и evidence hash должны оставаться current.
215
-
216
- Legacy approved AuthorizationEvent без mechanical payload остаётся readable для compatibility, но не
217
- создаёт новую P01 evidence claim.
218
-
219
- Beta.13 добавляет два узких structural contracts. После failed check bounded static import traversal
220
- repository-local runner может доказать transitive component-owner path вне `allowedWrites`; same-Task
221
- scope refinement допустим только внутри той же component boundary и при неизменных hashes objective,
222
- requirements, acceptance и security boundary. Отдельно независимая PRA-классификация consumer как
223
- `runtime-composition` в multi-Step Task требует `requiresProductionEdges=true` и непустой
224
- `productionEdges[]`, где каждая запись содержит transitive `ownerStepId`, `consumerStepId` и exact
225
- `checkRef` из checks consumer Step. Planner omission, missing owner/consumer, self-edge, duplicate или
226
- неисполняемый check блокируют admission. Простой one-Step runtime исключён.
227
-
228
- Эти механизмы проверяют структурную форму и не утверждают product truth. Они не заменяют Plan Risk Audit,
229
- Milestone authorization, фактический check result или не реализованную Step-validity authority P02.
230
-
231
- Beta.13.1 вводит prospective, Plan-bound compatibility boundary. Новые ordinary PRA и atomic corrective
232
- replan связывают `structuralProductionEdgeAuthority=required-v1` с hash chain. Историческая markerless PRA
233
- не получает новую семантику задним числом, если текущая Task также не содержит production-edge fields.
234
- Content-only knowledge rebind сохраняет exact native fields и rendered edge, а для такой legacy Task
235
- сохраняет markerless posture. Это устраняет необходимость state migration; repository-local state остаётся
236
- доверенной границей и не защищает от полного привилегированного переписывания всей chain.
237
-
238
- # 9. C1 handoff и writer lease
239
-
240
- ## 9.1. Dependency binding
241
-
242
- Milestone-linked handoff event включает:
243
-
244
- ```text
245
- dependencyBinding
246
- milestoneRevision
247
- membershipRevision
248
- milestonePlanHash
249
- ```
250
-
251
- Standalone Task использует null. Handoff preparation проверяет runnable predicate и current authorization.
252
- Claim сверяет stored binding с current Milestone authority до lock acquisition. Dependency-blocked claim
253
- не получает и не сохраняет lease.
254
-
255
- ## 9.2. Credential sequence
256
-
257
- 1. `task handoff-prepare` сохраняет hash в handoff state, кладёт secret в project-local vault и возвращает
258
- публичную `claimCredentialReference` с `transport=local-vault-v1`.
259
- 2. Exact target actor вызывает `task claim --claim-credential-ref <CREF-...>`; reference одноразовый и
260
- после успешного claim удаляется.
261
- 3. Claim проверяет project/entity/action/actor/expiry, создаёт lease и возвращает
262
- `writerCredentialReference`; сам token отсутствует в output.
263
- 4. `task run` и остальные lease-bound actions принимают только `--writer-credential-ref`; `next` явно
264
- сообщает `secretInArgv=false`, `secretInOutput=false` и renewal policy.
265
- 5. `task result-set` consumes текущую authority и освобождает lease до Human final-acceptance gate.
266
- 6. После acceptance fresh `writer-credential-replace` создаёт merge authority; terminal transitions
267
- освобождают её.
268
-
269
- Vault record — regular file mode `0600`, содержит integrity hash и binding к project, entity, actor,
270
- allowed actions и expiry. Legacy `--claim-token`/`--writer-token` отклоняются до lifecycle transition.
271
- Ни secret, ни его plaintext receipt нельзя логировать, сохранять в chat packet или включать в evidence;
272
- argv, stdout, stderr и structured errors несут только reference/metadata. `handoff-show` возвращает safe
273
- persisted binding. Потеря reference разрешается только fresh advertised replacement action.
274
-
275
- # 10. Git и Step evidence
276
-
277
- | Boundary | Проверки Core |
278
- |---|---|
279
- | Task start | Clean checkout, fresh base/auth/dependency binding, correct workspace policy |
280
- | Step run | Planned/failed eligible Step, dependencies, branch, C1 actor, lease |
281
- | Worker return | Изменения uncommitted и только в allowedWrites |
282
- | Step complete | History, scope, checks, review gate, exact writer credential reference |
283
- | Commit | Один Core-owned commit с Task/Step metadata |
284
- | Submit/Result | Exact evidence/review; Result освобождает lease до Human gate |
285
- | Merge | Fresh review/acceptance, base conditions, accepted HEAD |
286
-
287
- Local start повторно сравнивает authorized base внутри Git branch creation, закрывая TOCTOU между
288
- freshness check и mutation. External workspace обязан быть non-base branch от exact recorded commit.
289
-
290
- # 11. Task state и review
291
-
292
- Основной путь:
293
-
294
- ```text
295
- planning -> awaiting_execution_authorization -> ready
296
- -> C1 claimed -> in_progress -> validating
297
- -> awaiting_final_acceptance -> merging -> merged
298
- ```
299
-
300
- Return states включают `needs_fix` и `blocked`. `cancelled` terminal. Rebind/replan supersedes old
301
- authorization; sync-base invalidates review/Result/acceptance bindings.
302
-
303
- В Codex App recommended strict mode external-sealed:
304
-
305
- - `task step-review-packet` -> separate Step Reviewer -> `task step-review-record`;
306
- - `task review-packet` -> separate Final Reviewer -> `task review-sealed-record`;
307
- - packetHash и repositorySealHash обязаны совпасть до записи;
308
- - Reviewer thread ID и lifecycle actor фиксируются, bearer token не передаётся Reviewer;
309
- - seal drift уничтожает result и требует fresh packet.
310
- - packet command требует explicit `--review-mode ordinary|security`; ordinary запрещает подменять
311
- проверку неявным security scan, а security применяется только по явному запросу;
312
- - read-only `codex-workflow-reviewer-runtime-preflight-v1` связывает Node executable/version, exact
313
- Workflow runtime module hash, manifest/lock hashes, dependency readiness и writable OS-temporary cache
314
- за пределами sealed checkout; при каждом вызове он заново разрешает с диска recursive runtime dependency
315
- graph по parent-aware, nested-first Node lookup и сверяет exact package manifests и SHA-256 всех
316
- attested `.js`/`.cjs`/`.mjs`/`.json`/`.node` файлов. Лишь затем Node `createRequire` загружает exact
317
- repository-local gateway/reviewer/workflow graph и сверяет общий с CLI descriptor
318
- package/protocol/schema. Subprocess, timeout/retry, cached trust decision и install не используются;
319
- checkout не меняется, а missing/tampered/conflicting/symlinked dependency, load или contract failure
320
- закрывает выдачу packet.
321
-
322
- `review-launch` сохраняется в public CLI для совместимых environments, но не применяется как nested
323
- local reviewer внутри Codex App sandbox.
324
-
325
- # 12. Remediation и corrective decisions
326
-
327
- Для новых beta.13 events Guarded Step имеет cause-bound rolling refinement без числового лимита:
328
-
329
- | Boundary | Разрешение |
330
- |---|---|
331
- | Новый distinct mechanical/reviewer cause | Продолжить ту же Task/Step и выполнить новый strict review |
332
- | Повтор mechanically normalized cause после fix | Root-cause replan той же Task обязателен |
333
- | Повтор stable reviewer `causeId` с `planConflict=true` | Root-cause replan той же Task обязателен |
334
- | Похожий prose, номер попытки или reviewer cause без Plan conflict | Не создаёт replan authority |
335
- | Finding `route=fix` или route отсутствует | Продолжить ту же Task/Step независимо от attempt count |
336
- | Finding `route=replan` с exact Plan conflict, включая первый провал | Штатный corrective yield/replan; повторный run запрещён, меняются только implementation Steps |
337
- | `route=replan` без exact conflict | Невалидный review result, state не меняется |
338
- | Explicit `split-required` | Structural replacement stop |
339
- | Exact beta.11 attempt-four `stop-escalate` | Append-only Human-confirmed compatibility override |
340
- | Pre-execution `stop-escalate` + exact `auditedRemediation` route | Один additive upstream Task без нового Human gate |
341
- | Любой другой explicit `stop-escalate` | Terminal user attention |
342
-
343
- Attempt count является диагностикой, а не lifecycle authority. Authoritative mechanical cause выводится
344
- из normalized failure fingerprint; external review cause требует schema-valid stable `causeId`, а replan
345
- authority дополнительно требует `planConflict=true`. Explicit corrective-decision journal сохраняется для
346
- намеренного stop/split и совместимого legacy recovery. Legacy events без `causeBindings` читаются по старому
347
- compatibility circuit и не получают новую authority задним числом. Replan из review обязан назвать
348
- `planClause`, `whyFixCannotFit` и `minimalPlanChange`; objective, requirements и acceptance Task при
349
- remediation неизменяемы. Новый Plan проходит обычные audit и authorization.
350
-
351
- Failed strict review финализируется project transaction: remediation event, Task `needs_fix` и удаление
352
- exact proven writer lease образуют один readback-bound target set. Повтор authoritative reviewer cause в
353
- той же transaction добавляет C1 yield. `next` и `task plan-set` одинаково требуют отсутствия writer lease
354
- и C1 claim и запрещают ослаблять `forbiddenScope`, guarded PRA classification или production-edge boundary.
355
- Если review sidecars уже записаны, а transaction была прервана, повторная запись review завершает один
356
- pause без duplicate remediation.
357
-
358
- Failed check записывается project transaction `failed-step-continuation`: remediation sidecar, Task
359
- `needs_fix` с `failurePause` и удаление lease входят в один journaled target set. Validation повторно
360
- сверяет Task revision/status, remediation hash, отсутствие lease, Git HEAD, dirty paths и
361
- `dirtyWorktreeHash`. Product bytes не коммитятся и не сбрасываются. Fresh `next` при отсутствующем либо
362
- stale lease сначала рекламирует `task writer-credential-replace`, затем возвращает ту же Task к fix или
363
- root-cause replan. Это общий continuation contract, а не новый numbered compatibility patch.
364
-
365
- # 13. beta.13 coherent continuation и operational contracts
366
-
367
- ## 13.1. Compact status
368
-
369
- `status` по умолчанию возвращает bounded projection `codex-workflow-compact-status-v1`: entity counts,
370
- active Task/Step, exact advertised action/blockedAction, observation reason codes, route metadata и
371
- stable `routeFingerprint`. Массивы всех Discoveries, Tasks, Milestones и delegations в неё не входят.
372
- Полная historical projection доступна только через explicit `status --full`. Обе формы строятся из одного
373
- observation snapshot; compact form не вызывает public full-status path.
374
-
375
- ## 13.2. Observed Signal route matrix
376
-
377
- `observed-route-matrix-v2` покрывает 13 route classes, фактически наблюдавшихся в Signal. Каждый класс
378
- имеет unique descending priority и ровно один representative witness: fresh production `next`, real
379
- Workflow executor и fresh reachable successor либо real non-executable terminal observation. Это
380
- class-level claim, а не доказательство каждой action. `next` добавляет matrix version/fingerprint,
381
- route/action fingerprint, action support `executable-witnessed`/`unwitnessed`/`unsupported` и
382
- `coverageBoundary=signal-observed-route-class-witnesses`.
383
-
384
- Manual instruction и terminal marker не маскируются под CLI: они перечислены в explicit unsupported
385
- inventory, не имеют CLI/executor binding и останавливают automation либо требуют чтения structured
386
- options. Known executable action без собственного exact E2E остаётся `unwitnessed`, даже если её route
387
- class доказан другим representative transition. Матрица не доказывает полноту всех CLI actions или
388
- future transition families; отсутствие route в наблюдённой boundary — unsupported gap, а не разрешение
389
- импровизировать command.
390
-
391
- ## 13.3. Reviewer runtime и review mode
392
-
393
- Перед external-sealed packet Core выполняет non-mutating runtime preflight. Node major должен быть не
394
- ниже 22; exact declared, locked и repository-local installed Workflow versions должны совпасть.
395
- Runtime build manifest и SHA-256 каждого перечисленного Workflow runtime-файла проверяются, включая CLI
396
- и reviewer entrypoints. Manifest также фиксирует exact package manifest и recursive dependency closure.
397
- Каждый preflight заново с диска выполняет parent-aware, nested-first разрешение фактических dependencies,
398
- сверяет их версии, пути и hashes всех attested `.js`/`.cjs`/`.mjs`/`.json`/`.node` файлов и отклоняет
399
- path/symlink drift. Затем in-process gateway descriptor подтверждает package/protocol/schema. В packet не
400
- попадают raw output или argv. Missing install, missing/stale build либо dependency closure и failed
401
- load/contract дают actionable blocker. Writable cache создаётся с mode `0700` в OS temporary directory
402
- вне sealed checkout, а dependency install не запускается. Blockers делают preflight `prepared=false`.
403
-
404
- Packet/record contract связан с explicit `--review-mode ordinary|security`. `ordinary` означает проверку
405
- корректности/acceptance без implicit security scan; `security` означает явно запрошенный security focus.
406
- Mode входит в packet hash, поэтому записать результат другого mode невозможно.
407
-
408
- Native launch передаёт API-compatible strict Structured Output schema. Во всех object schemas `required`
409
- точно совпадает с `properties`, а optional semantic values кодируются nullable. Parser повторно проверяет
410
- closed shape, допустимые `route`/`causeId`, обязательный `planConflict` для replan и finding cardinality;
411
- malformed ответ становится unverified review без remediation authority.
412
-
413
- # 14. beta.11 Plan-integrity recovery
414
-
415
- `task plan-integrity-recover` применим только после одного first ordinary `checks-failed` remediation:
416
-
417
- - check соответствует bounded root npm-script grammar;
418
- - script отсутствует;
419
- - package.json вне current Step allowedWrites;
420
- - dirty files полностью внутри Step scope;
421
- - current Task/Plan/remediation/Step/manifest/HEAD bindings точны.
422
-
423
- Recovery записывает schema-valid `replan-required` decision с synthetic ordinal 2 и canonical conflict
424
- hash. Он не запускает checks повторно, не меняет worktree, Plan или allowedWrites. Затем C1 owner следует
425
- fresh `next` через corrective yield и обычный Human-confirmed replan.
426
-
427
- P01-A предотвращает поддерживаемые contradictions до fresh authorization. beta.11 path остаётся для
428
- pre-P01 authorizations и late/unsupported exact recovery cases.
429
-
430
- # 14.1. beta.12.7 compatibility transitions
431
-
432
- `update dependency-provenance-recover` больше не требует полного равенства Task manifest/lock с base.
433
- Base остаётся version authority, а parent/HEAD candidate сравниваются без единственных Workflow
434
- dependency entries. Поэтому recorded Task-local scripts сохраняются; payload drift того же candidate
435
- commit по-прежнему блокируется.
436
-
437
- `update downstream-proof-dependency-preflight/recover` — отдельная beta.12.6 совместимость для
438
- active proof, который делает обычный clean update недостижимым. После exact dependency-only commits
439
- на active base и Task branch preflight проверяет recorded history на `HEAD^`, candidate на `HEAD`,
440
- aligned runtime/declared/locked/installed/current/base versions, отсутствие leases/transactions,
441
- единственный active Step, transitive predecessor ownership и SHA-256 dirty product bytes. Recovery
442
- добавляет только candidate в `systemCommits` и сохраняет binding в
443
- `dependencyProvenanceRecoveries.activeDownstreamProof`; product work и Step state не меняются.
444
- Fresh `next` затем приоритетно рекламирует `task downstream-proof-recover` до Knowledge refresh.
445
-
446
- `update downstream-proof-replan-update-preflight` — read-only source gate для одного exact
447
- beta.12.6 stranded shape после predecessor invalidation и ошибочного Knowledge rebind старого Plan.
448
- Он требует точные source version surfaces, Task revision/status/rebind, preserved HEAD, dirty paths/hash
449
- и отсутствие lease/transactions. После dependency-only transport
450
- `update downstream-proof-replan-dependency-preflight/recover` валидирует parent на `HEAD^`, candidate
451
- на `HEAD` и записывает `dependencyProvenanceRecoveries.downstreamProofReplan` без изменения product
452
- bytes. `task downstream-proof-replan-recover` атомарно добавляет
453
- `downstream-proof-replan-recoveries.jsonl`, supersede-ит execution authorization и возвращает Task в
454
- `needs_fix`. Stale Knowledge refresh разрешён после repair, но не может заменить обязательный
455
- `task plan-set`. Dirty carryover принимается `task run` только если один replacement Step владеет всем
456
- set, а HEAD, paths и SHA-256 совпадают с recovery event.
457
-
458
- `task stop-override-prepare/apply` обслуживает только exact beta.11 attempt-four policy stop. Prepare
459
- не пишет state и создаёт binding по Task revision, Step, attempt-3 continue, attempt-4 stop, трём
460
- remediation events, Plan, HEAD, package, human actor и reason. Apply в отдельном user turn добавляет
461
- `stop-escalate-overrides.jsonl`. Original corrective decision остаётся неизменным. Split, stale binding,
462
- lease/transaction, дубликат с другим binding и tampering fail closed.
463
-
464
- После apply несколько delegated `task context-refresh` могут сделать source Plan историческим.
465
- `task run` доступен, только если Core доказывает contiguous source-to-current chain: adjacent Plans
466
- различаются лишь Knowledge binding, rebinds совпадают с artifacts, audits являются mechanical
467
- rebounds, а current approval/authorization сохраняют одну delegated authority и chronology.
468
-
469
- HEAD может отличаться от override только через зарегистрированные single-parent
470
- `dependencyProvenanceRecoveries` в `systemCommits`, каждый с exact `package.json`/`package-lock.json`
471
- diff. Semantic drift, иной commit или разрыв chain fail closed. Projection содержит
472
- `stopOverrideContextRebind.state=validated`; lost lease восстанавливает только advertised
473
- `task writer-credential-replace`.
474
-
475
- Если recovery записан после последнего rebound audit, evidence-bound revision равен
476
- `audit.taskRevision + 1 + postAuditVerifiedRecoveries.length`. В зачёт входят только ordered records
477
- из уже проверенной override-to-authorization Git chain. Формула должна точно равняться current Task
478
- revision; unrelated write, duplicate, неверный parent или product commit блокируют continuation.
479
-
480
- # 14.2. Downstream-proof predecessor recovery
481
-
482
- Если active Step изменяет только собственный proof artifact, обычный `task step-complete` сохраняется.
483
- Если dirty set дополнительно содержит файлы completed transitive predecessor, Core проверяет branch,
484
- зарегистрированную Git history, dependency closure и ownership каждого такого файла. При точном совпадении
485
- fresh `next` рекламирует lease-bound `task downstream-proof-recover` вместо заведомо невозможного commit.
486
-
487
- Одна project transaction сохраняет worktree и HEAD, append-only записывает
488
- `downstream-proof-invalidations.jsonl`, переносит invalidated completion commits в `invalidatedStepCommits`, очищает
489
- их Step evidence, блокирует proof Step, supersede execution authorization, yield C1 и удаляет lease.
490
- Следующий action — обычный `task plan-set` той же Task. Replacement Plan обязан заново охватить unfinished
491
- remainder и пройти fresh Plan Risk Audit и execution authorization. Unrelated/non-predecessor file,
492
- strict-review evidence, unregistered commit, branch mismatch или damaged sidecar возвращают `doctor`.
493
-
494
- # 14.3. beta.12.9 historical Step provenance
495
-
496
- Corrective replan теперь сохраняет evidence commits Steps, исключённых replacement Plan, в
497
- `invalidatedStepCommits`. Это предотвращает новый unregistered-history blocker без переноса завершённого
498
- Step в новый Plan.
499
-
500
- Для уже существующего stranded state fresh `next` допускает только один из двух bounded routes:
501
-
502
- - `task historical-step-provenance-preflight/recover`, если beta.12.9 dependency HEAD уже зарегистрирован;
503
- - `update historical-step-dependency-preflight/recover`, если dependency-only beta.12.9 commit ещё
504
- является единственным unregistered HEAD.
505
-
506
- Core требует один active Step, dirty paths только в его `allowedWrites`, отсутствие leases/transactions,
507
- ровно один omitted product commit, полный hash-valid strict Step Review с `passed`, verified reviewer
508
- attestation и прежний hash-bound `final_acceptance` того же Plan. Update-route дополнительно связывает
509
- exact `HEAD^`/`HEAD`, package/version surfaces и SHA-256 dirty worktree. Recovery не переписывает Git,
510
- не меняет product bytes и не возвращает старый Step в Plan; он записывает historical authority и, для
511
- update-route, dependency provenance в одной Task revision. Fresh `status -> next` после transition
512
- должен вернуть обычный credential/`task step-complete` flow текущего Step.
513
-
514
- # 14.4. beta.12.11 audited remediation topology
515
-
516
- `milestone remediation-materialize` применим только к required Task в
517
- `awaiting_execution_authorization`, если ни один Step не начат и последний audit текущей
518
- Task revision/Brief/Plan имеет decision `stop-escalate`. Нужны active Milestone на clean base,
519
- coherent idle observation boundary, current Milestone execution authorization и ready Discovery.
520
-
521
- Input не содержит Milestone Plan или actor:
522
-
523
- ```json
524
- {
525
- "discoveryId": "DISC-...",
526
- "expectedDiscoveryRevision": 1,
527
- "title": "Restore upstream capability",
528
- "predecessorTaskIds": ["TASK-..."]
529
- }
530
- ```
531
-
532
- `predecessorTaskIds` обязан точно совпасть с direct predecessor frontier blocked Task; каждый такой
533
- Task required и merged. Одна Project transaction пишет consumed Discovery, Brief/state нового Task,
534
- новый `plan.json`, `scope-change-events.jsonl` и Milestone state. Event mode
535
- `audited-remediation` связывает blocked Task/revision, Brief/Plan hashes, audit ID/hash, remediation
536
- Task и predecessor IDs. Milestone semantic fields и прежние memberships неизменны; добавляются
537
- только один required Task и одна dependency edge blocked -> remediation. Повтор audit запрещён.
538
-
539
- Current Milestone execution authorization superseded и заменён `corrective-derived`, evidenceHash
540
- связывает source Plan/authorization mode, audit hash и remediation evidence. Repository `next`
541
- приоритизирует remediation Task. Для current required Tasks оно выдаёт
542
- `correctiveDerivedApproval` для `task authorize`/`task accept`; actor фиксирован как
543
- `agent:milestone-remediation:<MS-ID>`, human approval и delegation grant не нужны. Plan Risk Audit,
544
- mechanical feasibility, C1, Step checks/commits/reviews и final Milestone acceptance не меняются.
545
- После merge remediation Task исходная Task получает `task plan-set` и проходит fresh audit/authority.
546
-
547
- Если перед этим exact package update сделал Knowledge Map stale, navigation может вернуть
548
- `auditedRemediation.dependencyKnowledgeRefresh`. Eligibility требует: ранее active approved map;
549
- inspected status `stale`; единственный изменённый Knowledge path `package.json`; clean checkout;
550
- runtime/declared/locked/installed/HEAD/Milestone-base version равны; approved package content найден в
551
- Git ancestry; каждый последующий commit, трогавший manifest, меняет ровно `package.json` и
552
- `package-lock.json`, причём после удаления `codex-workflow-v2` обе JSON-структуры совпадают с parent.
553
- Materialization тогда дополнительно пишет active Knowledge Map с revision +2 и approval mode
554
- `corrective-derived` в той же Project transaction. Это не разрешает автоматически принимать README,
555
- docs, commands, classification, authority, gaps или conflicts.
556
-
557
- # 14.5. beta.12.12 selector-contract Plan-integrity recovery
558
-
559
- Analyzer `wf2.root-npm-script-arguments@1` читает root `package.json` и только repository-local runner
560
- из evaluated Git HEAD. Узкий доказуемый contract — script `node <safe-relative-path> affected`, исходник
561
- которого использует `process.argv.slice(3)`, содержит selector literals `--base`, `--head`, `--files` и
562
- явный `Affected mode requires` guard. Для такого script check без forwarded selector получает
563
- `ROOT_NPM_SCRIPT_REQUIRED_SELECTOR_MISSING` и блокирует execution authorization. Произвольный shell или
564
- нераспознанный runner остаётся `unverified`, а не объявляется ошибочным по догадке.
565
-
566
- Legacy recovery принимает последовательную append-only history из одного или нескольких
567
- `checks-failed` events при отсутствии corrective decision. Evidence v2 связывает каждый event ID/hash/
568
- ordinal, Task revision, Plan/Step definition, manifest и runner hashes, Git HEAD, conflicts и SHA-256
569
- dirty worktree. `task plan-integrity-recover` записывает один `replan-required` decision с
570
- `triggeringAttemptCount = failures + 1` и полным `coveredEventIds`.
571
-
572
- Если exact beta.12.12 package ещё не установлен, `update plan-integrity-update-preflight` проверяет
573
- source beta.12.11, отсутствие leases/transactions и exact dirty allowlist. После dependency-only
574
- transport `update plan-integrity-dependency-preflight/recover` регистрирует единственный HEAD как system
575
- commit. Когда Knowledge drift объясняется только Workflow pin, та же Project transaction выполняет
576
- corrective-derived reconcile/approval; прочий drift fail-closed. Product bytes не коммитятся и не
577
- переносятся. Fresh route продолжается через credential replacement, `plan-integrity-recover`, yield и
578
- corrective replan с selector-bearing check.
579
-
580
- # 14.6. beta.12.15 source/target Knowledge binding
581
-
582
- Corrective-replan receipt теперь включает две разные пары. `knowledgeRevision/knowledgeHash` связывает
583
- исходное состояние Task; `targetKnowledgeRevision/targetKnowledgeHash` связывает active Project
584
- Knowledge Map и replacement Plan. Executor проверяет source под Task lock, candidate Plan — по target,
585
- а Risk Audit и materialized Task получают target binding.
586
-
587
- Source и target могут различаться только при exact `dependencyProvenanceRecoveries.planIntegrity` для
588
- текущего HEAD и package version. Record обязан совпасть по Plan, failed Step, всей remediation event ID
589
- последовательности, dirty paths и повторно вычисленному dirty SHA-256. После corrective yield Core может
590
- восстановить один или несколько ещё не зарегистрированных package updates: он просматривает trailing
591
- Git suffix от HEAD до последнего зарегистрированного system commit, проверяет каждый элемент как
592
- непрерывный manifest/lock-only exact Workflow pin update и одной Core mutation добавляет каждый commit
593
- и его фактическую package version в provenance history. Любое изменение product bytes, разрыв ancestry,
594
- Step status, Plan, decision или C1 posture отключает route.
595
-
596
- Completed corrective-yield transaction проверяет неизменный canonical yield event как prefix текущей
597
- append-only handoff history. Это сохраняет tamper detection, но разрешает новый handoff после успешного
598
- corrective replan. E2E release gate проходит prepare/confirm/execute, authorization, handoff/claim,
599
- selector-bearing Step completion commit и strict Step review.
600
-
601
- Completed corrective-replan transaction сохраняет authority identity своего release. Текущий manifest
602
- обязателен для любой pending/in-flight transaction; completed journal может использовать только exact
603
- tuple из append-only registry: manifest SHA-256, runtime fingerprint и catalog hash. Неизвестный tuple,
604
- legacy tuple у незавершённой transaction, повреждённый intent/phase chain или owned target остаётся
605
- `journal-invalid`. Это позволяет читать terminal beta.12.12 history после расширения binding manifest,
606
- не превращая legacy identity в новую execution authority.
607
-
608
- # 14.7. beta.12.16 check-support scope authority
609
-
610
- Analyzer `wf2.check-support-anchor@1` рассматривает только root `npm run` check, repository-local
611
- `node`/`tsx` runner и его direct relative static import. Блокировка допустима, когда Step создаёт
612
- отсутствующий exact migration output, импортированный support-модуль содержит SHA-256 и approved/
613
- expected/manifest/catalog anchors той же `.sql` family, но Step не владеет support path. Это machine
614
- evidence, а не вывод из текста ошибки.
615
-
616
- Для pre-execution Plan finding `CHECK_SUPPORT_ANCHOR_OUTSIDE_ALLOWED_WRITES` блокирует authorization.
617
- Для уже выполняемой guarded Step первый `checks-failed` может рекламировать тот же
618
- `task plan-integrity-recover`, но evidence v3 записывает `continue-fix`, а не `replan-required`.
619
- `scopeExtensions` равно отсортированному exact набору support paths из conflict evidence; dirty files
620
- до recovery обязаны оставаться в original allowedWrites, support path не может пересекать
621
- forbiddenScope. Plan hash не меняется. Effective scope используется retry precondition, Worker envelope,
622
- Core commit, downstream-proof assessment, corrective-replan worktree guard и strict review packet.
623
- Любое более широкое изменение остаётся в обычном corrective replan с Human gate.
624
-
625
- # 14.8. beta.12.17 coherent Plan-integrity update source
626
-
627
- Read-only `update plan-integrity-update-preflight` выводит `sourceVersion` из declared dependency, а
628
- не из release-specific constant. Он принимает только exact `2.0.0-beta.12.N`, где `N >= 11` и
629
- `N` меньше patch ordinal внешнего runner. Locked, installed, current Task branch и active Milestone
630
- base обязаны совпадать с declared source. Любая missing/divergent surface блокирует transport.
631
-
632
- Version consensus не заменяет остальные guards: должна существовать ровно одна eligible failed-Step
633
- Plan-integrity assessment, observation обязана быть coherent, lease/transaction/Core operation
634
- отсутствуют, а dirty bytes совпадают с доказанным Step scope. После dependency-only Git transport
635
- repository-local runner регистрирует commit только через advertised
636
- `update plan-integrity-dependency-recover`. Source consensus не усыновляет product history, не меняет
637
- Plan/remediation evidence и не даёт generic update authority другим beta lines.
638
-
639
- # 14.9. beta.12.18 historical check-support scope adoption
640
-
641
- Validation v3 связывает check-support event с `event.planHash`. Если поздний Knowledge rebind и новый
642
- Plan явно добавили derived support path, исторический event проверяется по собственным immutable
643
- fields, hashes и conflict evidence, а не против scope нового Plan. Только event текущего Plan может
644
- расширять effective Step scope; поэтому старое evidence не переносит authority неявно.
645
-
646
- Read-only `update plan-integrity-update-preflight` может вернуть
647
- `compatibilityMode=post-rebind-scope-adoption`, только если Task ожидает execution authorization, ни
648
- одна Step не выполняется, существует ровно один исторический v3 `continue-fix`, его dirty paths и
649
- content hash не изменились, а current planned Step напрямую владеет всеми `scopeExtensions` и
650
- объявляет их outputs. Обычные coherent-version, lease, transaction, Core-operation и dependency-only
651
- Git guards сохраняются. После регистрации update Knowledge rebind, PRA и authorization выполняются
652
- только по fresh routes; Human approval для exact machine-proved scope не нужен.
653
-
654
- # 14.10. beta.12.19 historical check-support dirty carryover
655
-
656
- После регистрации dependency recovery current Plan может быть ещё раз mechanically rebound и
657
- авторизован, тогда как product bytes остаются uncommitted. Запуск разрешён только при едином
658
- assessment для `next` и `runStep`: latest compatible dependency record должен быть зарегистрирован на
659
- точной history boundary; его Plan должен совпадать с current Plan или вести к нему через непрерывную
660
- Knowledge-rebind chain; planned Step должна владеть каждым dirty path и каждым `scopeExtension`; full
661
- path set и `hashDirtyWorktree` должны совпадать; один validated historical check-support decision
662
- должен связывать те же conflict/remediation/scope fields.
663
-
664
- При полном совпадении `next` публикует
665
- `planIntegrityDirtyCarryover.state=validated`, а `task run` принимает только эти байты под current
666
- Step envelope. При любом расхождении `next` возвращает `doctor` с `blockedAction=task run`; lease,
667
- Step mutation и commit не создаются. Для обновления уже авторизованной beta.12.18 Task внешний
668
- beta.12.19 runner выдаёт `compatibilityMode=post-rebind-dirty-carryover`, после чего сохраняются
669
- обычный dependency-only transport, repository-local registration, Knowledge rebind, PRA,
670
- authorization, checks, Core commit и sealed review. Human approval не добавляется.
671
-
672
- # 15. P04-A structural replacement boundary
673
-
674
- Command shape `task replacement-materialize` retained только для compatibility diagnostics. Любая попытка
675
- возвращает `TRANSITION_BLOCKED`, diagnostic `STRUCTURAL_REPLACEMENT_REQUIRED` и incident dependency edges
676
- до Task/Discovery/Milestone/Knowledge/lock writes.
677
-
678
- `next` при terminal split возвращает:
679
-
680
- ```text
681
- action: doctor
682
- blockedAction: task replacement-materialize
683
- replacementGate.structuralReplacementAvailable: false
684
- replacementGate.transaction: disabled
685
- ```
686
-
687
- Нельзя rebind, refresh, replan, authorize, resume, cancel historical Task, consume replacement Discovery
688
- или manually rewire graph. P04-B/P05 должен определить arbitrary cardinality, scope redistribution,
689
- dependency rewiring, completed-work adoption и crash-safe transaction.
690
-
691
- # 16. Milestone progress и Codex task supervision
692
-
693
- `milestone progress` является read-only projection: ordinals, membership disposition/reason, dependency
694
- state, predecessors/statuses, runnable/block reason, replacement links и Step statuses.
695
-
696
- Coordinator создаёт отдельный standalone Codex task just-in-time. TaskContextPacket не содержит parent
697
- transcript или secrets. Project registry выдаёт monotonic #NNN и exact title; readback/fallback обязательны.
698
-
699
- Coordinator ждёт one routed Task, читает closed CoordinatorReport, затем выполняет repository
700
- `status -> next` и новый progress projection. Recoverable non-human continuation возвращается в тот же
701
- Task chat. Следующий Task dispatch разрешён только после terminal merged confirmation.
702
-
703
- # 17. codebase-memory graph
704
-
705
- `codebase-memory-mcp` используется только после `graph refresh-request`. Gateway сверяет project/root,
706
- index status и request fingerprint, получает derived evidence и вызывает `graph bind` с current revision.
707
-
708
- Graph является навигационным индексом, не Project Knowledge authority. При provider unavailable Core
709
- записывает explicit `graph fallback`; агент продолжает Git search, прямое чтение файлов и tests, если
710
- другой independent gate не блокирует работу.
711
-
712
- # 18. Error codes и recovery discipline
713
-
714
- | Code | Значение | Реакция |
715
- |---|---|---|
716
- | `INVALID_ARGUMENT` | Closed input contract нарушен | Исправить exact syntax/field, не менять semantics |
717
- | `NOT_FOUND` | Entity/artifact/lock отсутствует | Проверить project и ID через fresh observations |
718
- | `STATE_CONFLICT` | expected revision устарела | Новый status/show/next, без blind retry |
719
- | `STATE_CORRUPT` | Schema/hash/chain несовместимы | Stop и owning recovery/diagnostics |
720
- | `LOCKED` | Active writer lease существует | Не создавать второго writer |
721
- | `LOCK_TOKEN_INVALID` | Bearer не владеет lease | Credential recovery для exact owner |
722
- | `TRANSITION_BLOCKED` | Lifecycle/authority gate не выполнен | Следовать action/details из fresh next |
723
- | `GIT_PRECONDITION_FAILED` | Branch/base/clean/history mismatch | Штатная Git recovery/sync route |
724
- | `COMMAND_FAILED` | Git/check/provider process failed | Сохранить evidence и устранить concrete cause |
725
-
726
- Docker socket/CLI `EPERM`, `operation not permitted` или `permission denied` внутри sandbox классифицируется
727
- как execution-boundary access, не как `COMMAND_FAILED` daemon. Exact read-only probe или Plan check один раз
728
- повторяется с escalation и не расходует remediation/infra retry. Restart Docker Desktop или image mutation
729
- без отдельного разрешения запрещены; daemon failure подтверждает только escalated invocation.
730
-
731
- После каждой successful mutation обязателен sequential `status`, затем fresh `next`. Failed status/next
732
- не разрешает direct mutation. Syntax help read-only и не заменяет navigation authority.
733
-
734
- # 19. Public command surface beta.13
735
-
736
- | Область | Actions |
737
- |---|---|
738
- | System | `doctor`, compact `status`, explicit `status --full`, `next`, `gateway handshake`, `locks` |
739
- | Update | `preflight`, `rescue-preflight`, dependency provenance, historical-Step dependency bridge, downstream-proof bridges, Plan-integrity update/dependency bridge |
740
- | Project memory | `scan`, `show`, `status`, `approve`, `reconcile` |
741
- | Delegation | `prepare`, `grant`, `list`, `show`, `revoke` |
742
- | Graph | `prepare`, `status`, `refresh-request`, `bind`, `fallback` |
743
- | Discovery | `start`, `update`, `show`, `materialize` |
744
- | Milestone | `recover`, `show`, `progress`, `plan-set`, `remediation-materialize`, scope-change, autonomy, `authorize`, `validate`, `accept`, `cancel` |
745
- | Task planning | `show`, `plan-set`, `knowledge-rebind`, `context-refresh`, `authorize`, `plan-risk-audit` |
746
- | Task execution | `start`, `run`, `step-complete`, `submit`, `result-set`, `accept`, `sync-base`, `merge`, `merge-confirm` |
747
- | C1 | `handoff[-prepare/-replace/-show]`, `claim --claim-credential-ref`, `writer-credential-replace`, lease-bound actions с `--writer-credential-ref`, `handback[-create]` |
748
- | Review | review/step-review packet с `--review-mode ordinary|security`, launch, sealed record и record actions |
749
- | Corrective | decision/recovery, plan-integrity, historical-step-provenance preflight/recover, downstream-proof-recover/replan-recover, remediation-mode, stop-override prepare/apply, yield и corrective-replan actions |
750
- | Replacement | `replacement-materialize` retained, но всегда disabled в P04-A |
751
-
752
- Exact options берутся из fresh `next`; command help используется только когда
753
- `exactOptionContractAvailable=false` или syntax действительно неизвестен.
754
-
755
- <!-- pagebreak -->
756
-
757
- # 20. Release и package update gates
758
-
759
- Перед package update project-local `update preflight` должен вернуть `safe=true`: clean checkout, нет
760
- running Step и active/stale writer lease. Исключения — документированный alpha.7 rescue, beta.12.6
761
- active-downstream-proof bridge, beta.12.7 exact stranded-replan bridge, beta.12.9 historical-Step
762
- dependency bridge и beta.12.15 Plan-integrity bridge; все они fail-closed и не дают общего разрешения
763
- dirty update.
764
-
765
- Перед beta.13 tag обязательны `npm ci`, полный `npm run validate`, Signal-shaped recovery E2E до
766
- последующей ordinary Step/Task dispatch, credential confinement, rolling-cause и production-edge suites,
767
- observed-route matrix/compact-status/reviewer-runtime tests, legacy compatibility regressions,
768
- `npm run test:signal-t10-check-support-e2e`, `npm run test:signal-remediation-e2e`,
769
- `npm run pack:check`, `npm run smoke:downstream`, `npm run plugin:check`, official plugin/skill validators,
770
- `npm run docs:pdf:check` и `npm run release:check` с exact `v2.0.0-beta.13.5` tag binding и append-only
771
- real-agent lifecycle log. Candidate проверяется из clean source checkout; missing built module не должен
772
- превращаться в stack trace, а обязан быть детерминированно собран или диагностирован release gate.
773
-
774
- Real-agent gate повторяет production boundary Codex App: Task agent удерживает live writer authority,
775
- отдельный App reviewer читает external-sealed packet, после чего Task agent записывает sealed result.
776
- Nested native `codex exec` внутри другого Codex agent не является release evidence. Packet generation
777
- логируется как read-only observation, record — как exact `next`-authorized mutation с последующими
778
- `status` и `next`.