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,321 +1,43 @@
1
- # Autonomous Development Guardrails
1
+ # Current autonomy and recovery guardrails
2
2
 
3
- These rules keep delegated execution autonomous without turning approval into a rubber stamp.
4
- Alpha.7 adds no persistent canonical entity fields and keeps `stateSchemaVersion: 2`.
3
+ ## Approval and independent evidence
5
4
 
6
- ## Plan Risk Audit
5
+ Human approval is the default. A principal can issue an expiring grant to a distinct delegate after confirming its exact code in a later message. Only the current scope and enumerated transition are delegated. Events retain principal, delegate and policy hash; expired, revoked, mismatched or expanded authority is rejected.
7
6
 
8
- Before execution authorization, every alpha.7 Task needs a current Plan Risk Audit sidecar
9
- bound to the current Brief, Plan, and approved Knowledge Map. This is mandatory even when all
10
- Steps are unguarded and the decision is `approved`.
7
+ The grant allow-list covers Knowledge approval, Task execution/final acceptance and Milestone execution/final acceptance. A full Milestone autonomy contract additionally permits membership-only evolution and Knowledge approval inside an eligible atomic Task context refresh. It never permits standalone Knowledge approval, arbitrary semantic changes, grant expansion or self-renewal. Use only the eligible option returned by the same fresh `next` response. Ordinary writer actions do not consume approval grants.
11
8
 
12
- The payload must classify every current Step exactly once and declare:
9
+ Every Plan requires an independent Risk Audit. Guarded risks include persistence changes, concurrency, crash/restart/replay, providers, composition and security boundaries. Each classified failure mode names a hostile counterexample, expected safe result and exact executable evidence. Unsupported or missing proof is not success.
13
10
 
14
- - `planner` and a distinct `auditor`
15
- - `decision`: `approved`, `approved-with-rationale`, `split-required`, or `stop-escalate`
16
- - per-Step guarded categories, concrete `failureModes`, and `reviewRequired`
17
- - `requiredEvidence` entries that exactly match executable checks in that Step
18
- - one proof obligation per guarded failure mode, with a hostile counterexample, expected safe
19
- result, and evidence that exactly matches `requiredEvidence`
20
- - `splitRationale` when migration is intentionally coupled to recovery or runtime composition
11
+ Strict Step and final Task reviews must be independent of the Worker and coordinator. Follow the mode and packet command returned by Core. External-sealed review uses the complete closed envelope with packet/repository hashes, reviewer task identity, mode and nested review. Changed seals invalidate the result. Native reviewer launch failure is `unverified`, not a semantic failure that creates remediation authority.
21
12
 
22
- The workflow rejects omitted Steps, extra Steps, duplicate classifications, stale bindings,
23
- and self-contradictory classifications. `split-required` and `stop-escalate` block execution
24
- authorization. The sidecar, not informal Plan prose, is
25
- the source of truth for which Steps require strict review.
13
+ ## Current recovery
26
14
 
27
- ## Audited remediation topology
15
+ | Boundary | Allowed continuation | Preserved invariant |
16
+ |---|---|---|
17
+ | Ordinary failed check/review | Same-Step or same-Task fix and fresh checks/review | Failure count creates no approval or arbitrary stop |
18
+ | Proven Plan obstruction | Independent corrective evidence and advertised replan | Objective, requirements, acceptance and completed evidence remain bound |
19
+ | Mechanically impossible check | Exact `task plan-integrity-recover` route | No synthetic second failure and no arbitrary scope widening |
20
+ | Active downstream proof touches predecessor-owned paths | `task downstream-proof-recover`, then current planning | Preserve product bytes/HEAD; invalidate only proven predecessor authority |
21
+ | Knowledge-only drift | Current rebind or eligible atomic context refresh | No semantic Plan rewrite, implicit grant or writer replacement |
22
+ | Pending transaction | Exact advertised recovery | Replay/rollback and readback preserve one coherent state |
23
+ | Explicit structural split | Report the current unsupported boundary | No manual topology rewrite or disabled replacement invocation |
28
24
 
29
- A current pre-execution `stop-escalate` may prove that the Plan is blocked by a missing upstream
30
- capability rather than by an implementation defect inside the Task. Beta.12.10 handles only this
31
- shape without a new human approval. Repository `next` first requires one ordinary Discovery whose
32
- facts, scope, constraints, and acceptance describe the exact missing capability. When ready, it
33
- advertises `milestone remediation-materialize` with the blocked Task/Milestone revisions, audit
34
- binding, and required predecessor frontier.
25
+ Check-support recovery derives its scope from the actual failed check and exact support path. Dirty files must remain inside the proven boundary and outside forbidden scope. Core owns completion and review; the added path never authorizes adjacent files.
35
26
 
36
- The transition is safe by construction rather than by agent judgment. Its input cannot supply a
37
- replacement Milestone outcome, success signal, acceptance, checks, or arbitrary membership graph.
38
- Core appends one required Task, copies the blocked Task's exact direct predecessor frontier, adds
39
- the remediation Task as one new dependency of the blocked Task, and changes nothing else. It runs
40
- under an idle, clean observation boundary and records one hash-chained `audited-remediation`
41
- scope-change event. Reuse of the same Plan Risk Audit is rejected.
27
+ Retained dirty carryover admits a newly planned replacement start only when current Step ownership and the recorded HEAD/path/content bindings match. A failed retry uses its current effective scope. Historical carryover is not new authority to reinterpret a failed Step. Tampered evidence and unrelated dirty paths remain blockers.
42
28
 
43
- The previous current Milestone execution authorization and exact blocking audit derive a new
44
- `corrective-derived` Milestone execution authorization. While that authority remains current,
45
- `next.correctiveDerivedApproval` may authorize and finally accept required Tasks using the exact
46
- derived actor, without a human or delegation grant. This does not bypass Plan Risk Audit,
47
- mechanical feasibility, C1 handoff, Step checks/commits, strict review, Task review, dependency
48
- runnability, clean-Git requirements, or final Milestone acceptance. Any later arbitrary scope
49
- change supersedes this authority.
29
+ For current native check failures started without a C1 claim, Core records the verified execution actor and the historical no-C1 boundary in the failure evidence. A repeated-cause replacement retains those exact bytes only after a fresh claim by that actor and the normal Plan, audit and authorization checks. This is not a fabricated yield or a repair of histories that lack the receipt.
50
30
 
51
- Guarded categories cover:
31
+ A started failed Task retains its claimant through corrective yield, planning and credential recovery. Knowledge refresh does not issue a writer credential or resolve a semantic Plan conflict. Current `next` and the executor must use the same admission conditions at these intersections.
52
32
 
53
- - forward database or state migrations;
54
- - concurrent ownership, queues, cursors, compare-and-swap, or locking;
55
- - restart, replay, recovery, or crash windows;
56
- - external provider lifecycle, hidden retries, defaults, timeouts, or error mapping;
57
- - runtime composition boundaries, security boundaries, auth/secrets, and irreversible execution.
33
+ An unstarted required Task with a current blocking audit may use the advertised audited-remediation route: append one upstream Task, preserve the merged predecessor frontier and Milestone semantics, merge that Task, then replan the original. This is not arbitrary Task replacement. Derived Task approval never bypasses checks, independent review or final Milestone acceptance.
58
34
 
59
- The original Plan must contain the corresponding failure evidence. A migration needs a
60
- populated forward-upgrade scenario, not only a clean bootstrap. Concurrent state needs
61
- deterministic race tests. Recovery needs restart and crash-window evidence. Provider work
62
- needs failure injection and verification of provider defaults. When persistence migration,
63
- recovery orchestration, and executable composition form independently verifiable failure
64
- boundaries, they are separate Tasks rather than one oversized Task.
35
+ Existing append-only history remains verifiable. Readers of already recorded events do not authorize new execution of retired package-version repair procedures. No old-version runner or source-specific update recipe is supported.
65
36
 
66
- For adopted legacy Tasks, the bootstrap audit covers only the remaining non-`completed` and
67
- non-`skipped` Steps recorded at the adoption boundary.
37
+ ## Ownership and stopping
68
38
 
69
- ## Strict Step Review
39
+ Claim and writer credentials use local credential references bound to project, entity, action and actor. Do not pass raw bearer tokens in CLI arguments, prompts or evidence. A pending claim blocks competing execution; a claimed Task keeps its exact actor. Handoff evidence alone does not prove a physically independent reviewer.
70
40
 
71
- If the current Plan Risk Audit marks a Step for strict review, `task step-complete` still
72
- creates the workflow-owned commit, but the Step stays non-terminal and `next` routes to
73
- `task step-review`. Canonical completion is recorded only after the strict review and the
74
- reviewer attestation both bind to that exact completion commit.
75
- When `next` advertises `task step-review`, pass the exact claimant or required actor as
76
- `--actor`; the isolated reviewer identity is created inside Core and must not be substituted
77
- into the mutation actor slot.
41
+ A real confirmation gate requires the displayed state and a later exact user response unless a current eligible delegation already authorizes it. Scope changes retain their own consent. Infrastructure denial is not a Workflow grant failure; report its real layer and use only authorized recovery. Never restart services or change product checks to conceal an access failure.
78
42
 
79
- Invalid or stale review sidecars fail closed. The workflow blocks downstream acceptance and
80
- normal continuation when review evidence is malformed, unverified, or commit-mismatched.
81
-
82
- ## Repeated failed review and continuable remediation
83
-
84
- A failed final Task review returns the same Task to `needs_fix` and requires a changed or new
85
- remediation Step. The failed-review count is diagnostic evidence, not a lifecycle limit: another
86
- Plan does not require a separate corrective Plan Auditor merely because two or more reviews failed.
87
- Every replacement Plan must preserve the Task objective, requirements, and acceptance; changing
88
- those commitments requires an explicit scope decision outside ordinary remediation.
89
-
90
- For guarded Steps, every failed review is recorded in `remediation-events.jsonl`. Attempts one and
91
- two retain mode `ordinary`; later attempts use mode `corrective`, but the mode does not impose a
92
- maximum attempt ordinal. `next` continues to return `task run` for the same failed Step, and every
93
- new completion still requires a fresh strict review bound to its exact commit. Therefore repeated
94
- fixes cannot create an approval, while a fourth, tenth, or later reviewed attempt remains possible.
95
-
96
- Each failed review finding may carry `route: fix` or `route: replan`. `fix` is the backward-compatible
97
- default. `replan` is accepted only with `planConflict.planClause`, `whyFixCannotFit`, and
98
- `minimalPlanChange`; Core retains that evidence in the hash-chained Step-review event and routes
99
- the failed Step to `task plan-set`. Replan may change implementation Steps only. Explicit historical
100
- `continue-fix`, `replan-required`, `split-required`, and `stop-escalate` decisions remain readable;
101
- an explicit split or stop still outranks ordinary execution except for the narrow beta.11
102
- attempt-four stop compatibility route below.
103
-
104
- ### Human-confirmed beta.11 attempt-four stop compatibility
105
-
106
- Beta.12.1 can resume one historical shape that beta.11 stopped mechanically: the same failed
107
- guarded Step has exactly two `ordinary` remediation events, one `corrective` third event, an exact
108
- attempt-3 `continue-fix` decision, and an attempt-4 `stop-escalate` decision under the unchanged
109
- Plan. Fresh `next` advertises `task stop-override-prepare` only for that shape and only on a clean
110
- local Task branch with no Step in progress, writer lease, Task transaction, or Core operation.
111
-
112
- Preparation is read-only and binds Task revision, Step, both corrective decisions, all three
113
- remediation events, Plan hash, Git HEAD, package version, actor, and reason to an `SOO-*`
114
- confirmation code. In a later explicit user turn, invoke `task stop-override-apply` with the same
115
- inputs and code. Apply appends `stop-escalate-overrides.jsonl`; it never deletes or rewrites the
116
- original stop. A stale binding, wrong code, duplicate/conflicting override, or damaged hash chain
117
- fails before continuation. Delegation is not accepted for this Human gate.
118
-
119
- This is not a general stop reversal. It does not apply to `split-required`, semantic Plan drift, a
120
- different attempt ordinal, missing attempt-3 continue authority, or an agent-authored semantic stop
121
- outside the beta.11 policy shape. After a valid append, attempt four returns to the normal `task run`
122
- then strict-review cycle; review quality and all later corrective decisions remain unchanged.
123
-
124
- Beta.12.4 also handles the case where the accepted third attempt changed approved Project Knowledge
125
- and package self-updates added later refreshes: the already-applied override may be followed by one
126
- or more ordinary delegated `task context-refresh` transitions before attempt four starts. A fresh
127
- `next` resumes `task run` only when Core can prove all of the following together: the same exact
128
- three-event remediation history and stop override remain hash-valid; every adjacent Plan differs
129
- only in its canonical Knowledge Map binding line; the Knowledge rebinds and mechanical Plan Risk
130
- Audit rebounds form one contiguous source-to-current chain; and the refreshed approval plus current
131
- execution authorization share the valid delegated authority. If Git HEAD advanced, every
132
- intervening commit must have one exact registered dependency-provenance recovery, one parent, a
133
- `systemCommits` binding, and exactly the `package.json`/`package-lock.json` diff. The proof is derived
134
- from existing append-only evidence, so this route does not create a second recovery journal.
135
- Missing evidence, semantic Plan change, an unregistered/product commit, a broken chain, or damaged
136
- chronology routes to `doctor` rather than weakening the generic two-attempt corrective recovery gate.
137
-
138
- If fresh navigation performs the final content refresh before the matching dependency-provenance
139
- recovery, that later administrative recovery may advance the Task revision without invalidating the
140
- mechanical audit. Core accepts the revision only when the exact count of post-audit recovery records
141
- fully explains the difference: each record must belong to the already verified single-parent Git
142
- chain, remain ordered, bind a Workflow system commit, and preserve the exact two-file dependency
143
- diff. A bare greater revision, unrelated Task write, duplicate record, damaged parent, product
144
- commit, or unverified recovery remains blocked.
145
-
146
- ### First-failure Plan-integrity recovery
147
-
148
- A mechanically impossible Plan check must not consume another attempt merely to unlock its known
149
- correction. After the first guarded `checks-failed` event, Core performs a read-only bounded
150
- assessment. Existing missing-script and required-selector conflicts route to corrective replan.
151
- beta.12.16 additionally recognizes one exact check-support conflict when all of the following hold:
152
-
153
- - the failed Step contains an exact root `npm run <script>` check and declares an absent migration
154
- output path that is inside its original `allowedWrites`;
155
- - the root script resolves to a repository-local runner whose direct static import resolves to a
156
- tracked checksum/catalog support module;
157
- - that support module has SHA-256 anchors and names an existing migration in the same file family,
158
- but is outside the Step's `allowedWrites` and `forbiddenScope`;
159
- - exactly one ordinary `checks-failed` remediation event exists for the Step;
160
- - no corrective decision exists for its second-attempt binding;
161
- - every dirty file remains inside the Step's current `allowedWrites` and outside its
162
- `forbiddenScope`.
163
-
164
- The recovery appends one hash-bound `continue-fix` decision for attempt ordinal 2 and the exact
165
- support path. It preserves the worktree and Plan hash; it does not alter source or Git. The current
166
- C1 actor presents the existing writer token and fresh `task run` exposes the effective scope.
167
- `task step-complete` remains the only commit owner, all checks rerun, and strict review packets name
168
- the derived scope. Missing-script/selector conflicts still use `replan-required` plus the normal
169
- Human-confirmed corrective replan. Unproved or broader scope changes never receive this authority.
170
-
171
- ### Downstream-proof predecessor recovery
172
-
173
- Core prevents `task step-complete` when the active proof Step has dirty files outside its own
174
- `allowedWrites`. A bounded recovery is advertised only when every such file belongs to a completed
175
- transitive predecessor, the branch and registered Git history are exact, the active Step has no
176
- completion evidence, and no unrelated path exists. The atomic transition preserves product files
177
- and HEAD, moves invalidated predecessor commits into historical `invalidatedStepCommits`, clears stale Step
178
- evidence, supersedes execution authority, yields C1, and routes the same Task to ordinary `plan-set`.
179
- The route grants no authority to change Task objective, requirements, acceptance, or Milestone
180
- topology.
181
-
182
- The beta.12.7 compatibility repair for an accidental post-invalidation Knowledge rebind is similarly
183
- non-semantic. It may restore `needs_fix` and preserve an exact dirty-worktree binding, but it cannot
184
- approve a replacement Plan, infer new requirements, or treat preserved bytes as completed evidence.
185
- After any required Knowledge refresh, the full unfinished remainder is planned again. Carryover into
186
- execution is valid only when one newly authorized Step owns every bound path and the current
187
- HEAD/path/content hashes still match; checks and strict review retain their ordinary authority.
188
-
189
- Docker permission diagnostics are classified before consuming retry authority. Sandbox `EPERM` or
190
- permission denial gets one exact escalated rerun of the health probe/Plan check. It is not an infra
191
- failure and cannot authorize a Docker Desktop restart or image substitution. Only an escalated
192
- invocation that reaches Docker and proves daemon unavailability establishes that failure class.
193
-
194
- ## Atomic context refresh
195
-
196
- When `next` returns top-level `action: task context-refresh` with an exact option, a
197
- project-scoped delegate may run one composite transition and must not run standalone reconcile
198
- first:
199
-
200
- ```text
201
- task context-refresh
202
- = project-memory reconcile
203
- + delegated project-memory approve
204
- + task knowledge-rebind
205
- + delegated task execution authorize
206
- ```
207
-
208
- The command requires the exact Task and Knowledge Map revisions, delegate actor, and grant.
209
- Core validates both grant transitions and the complete Knowledge diff before the first write.
210
- The existing content-only path remains limited to an already approved source set whose category,
211
- scope, authority, gaps, and conflicts are unchanged.
212
-
213
- A Milestone Autonomy Grant may additionally admit a new supporting source when the current,
214
- already execution-authorized Task Plan declares `knowledgeImpact: create` and the source's exact
215
- normalized file path and scanner category in `knowledgeTargets`. Every added source must match;
216
- wildcards and directory-like targets are not authority. The Task must belong to that exact
217
- Milestone and the delegate and grant must still satisfy the immutable autonomy contract. Removed
218
- sources, canonical additions, unplanned additions, changes to existing category/scope/authority
219
- or classification identity, changed gaps, and changed or non-empty conflicts fail closed before
220
- state is written. `next.contextRefresh.addedSources` exposes the exact eligible additions, while
221
- `next.contextRefreshBlocked.unsafeDifferences` reports the concrete mismatches.
222
- Standalone Project Memory approval is never enabled by this path.
223
-
224
- ## Chat ownership
225
-
226
- One Milestone coordinator chat owns Discovery, Task order, exact delegated approvals, merge
227
- observation, Milestone validation, and final acceptance. Every required Task runs in a
228
- dedicated user-visible Task chat. A Task chat may use internal Worker and Reviewer contexts,
229
- but only its delegate coordinator uses the grant. This prevents one long Milestone context
230
- from accumulating every implementation and review loop.
231
-
232
- The context boundary is literal: a Task chat is a new standalone Codex task created with an
233
- explicit Task-only prompt, never a fork or handoff of the Milestone chat. Its prompt contains the
234
- exact repository/Milestone/Task identifiers and fresh Task contract, but no parent transcript,
235
- sibling Task details, recovery narrative, reasoning trace, or bearer credential. Creation failure
236
- is a dispatch blocker, not permission to fork. The coordinator verifies one unique mapping from
237
- each Task ID to its thread and title before work begins.
238
-
239
- A host-generated `codex_delegation` envelope containing routing provenance such as
240
- `source_thread_id` is allowed; it must contain the TaskContextPacket as its complete input and must
241
- not carry completed parent turns. The coordinator reads the title back after creation and explicitly
242
- renames it when the supplied title was omitted or normalized.
243
-
244
- Chat titles are allocated atomically by the project registry; sidebar counts and `count + 1` are
245
- not valid numbering sources. Primary forms are:
246
-
247
- ```text
248
- #NNN · M<NN> · Coord · <Milestone title> · <MS-ID>
249
- #NNN · M<NN>/T<NN> · Task · <Task title> · <TASK-ID>
250
- ```
251
-
252
- The sequence and membership ordinal come first; the full ID prevents ambiguous identity. Exact
253
- readback is mandatory and only registry-supplied deterministic fallbacks may be used.
254
-
255
- Autonomy also requires active supervision. After just-in-time dispatch, the Milestone coordinator
256
- keeps a bounded `wait_threads` loop for the routed Task, inspects completion/attention, and verifies
257
- fresh Workflow `status -> next` before deciding what happened. It resumes a recoverable
258
- nonterminal Task in the same chat with `send_message_to_thread`; it does not shift ordinary
259
- implementation questions to the user. The coordinator may stop only for an exact human/semantic
260
- gate, exhausted infrastructure retry, unrecoverable integrity conflict, a user-requested
261
- checkpoint, or terminal Milestone closure. A finished chat is not proof of a terminal Task, and a
262
- child result does not automatically wake a coordinator turn that has already ended.
263
-
264
- ## Update boundary
265
-
266
- Before changing the exact npm version, run `update preflight`. A compatible update is safe
267
- only when the repository is clean, no Step is `in_progress`, and no writer lease is active.
268
- An expired lease is also a blocker until the ordinary explicit stale-lock repair is completed.
269
- The command is read-only and reports every blocker. It does not install a package or migrate
270
- state. When `stateSchemaVersion` remains `2`, the external project state is reused unchanged.
271
- Existing schema 2 projects then use `state adoption-prepare` and `state adoption-apply`; they
272
- do not use `state migrate` for schema-2 adoption.
273
-
274
- Alpha.7 also exposes `update rescue-preflight` for one narrow alpha.6 deadlock: a pending strict
275
- review whose completion commit changed canonical knowledge while Knowledge rebind is forbidden
276
- by the still-in-progress Step. Eligibility requires an exact alpha.6 dependency, one pending
277
- review, exact clean completion HEAD, valid history, and no active lease. The command is read-only
278
- and returns only stale-lock repair plus strict-review actions.
279
-
280
- ## Milestone closure
281
-
282
- After every current `required` Task is `merged`, run `milestone validate` on the clean base
283
- HEAD. `next` exposes a completion policy and the state-bound final gate. The coordinator must
284
- compare Result, evidence, Plan hash, and validated HEAD. A delegate may accept only through an
285
- exact `milestone.final_accept` option, must remain the recorded actor, and must pass the
286
- current `MSA-*` code. Without that option the ordinary later-message human gate applies.
287
-
288
- ## Bounded Milestone autonomy and C1 handoff
289
-
290
- Initial assembly may materialize every linked Task before one complete `milestone plan-set`;
291
- the Milestone cannot execute until all reverse memberships are classified. During that exact
292
- window `next` returns non-executable `milestone initial-assembly` navigation with explicit
293
- linked-Task Discovery/materialization options; the closing Plan option appears after the first
294
- linked Task exists. A failed navigation call must not
295
- be bypassed with a direct Plan command. Ordinary semantic
296
- scope change remains explicit and human-only through `milestone scope-change-prepare` and
297
- `milestone scope-change-apply`.
298
-
299
- After the initial Plan, one human may approve a time-bound (maximum 72 hours) Milestone
300
- Autonomy Contract. It creates a milestone-scoped grant for Task/Milestone execution and final
301
- acceptance plus Project Memory approval only inside an atomic Task context refresh for the same
302
- Milestone. That refresh covers content-only drift and the exact Plan-bounded supporting-source
303
- addition described above. Standalone Project Memory approval remains forbidden. The contract binds
304
- the immutable outcome, success signal, acceptance, checks, discovery, and base branch.
305
- `milestone autonomy-evolve` may only alter Task memberships; it records the
306
- agent actor plus the autonomy-contract event hash in the journaled scope-change sidecar and
307
- supersedes execution authorization. Any semantic drift, expiry, revocation, actor mismatch,
308
- or contract hash mismatch fails closed.
309
-
310
- `C1` handoff uses `task handoff-prepare`, `task claim --claim-token ...`, and terminal
311
- `task handback-create`. When target actor is omitted, Core derives
312
- `agent:worker:<task-id>`. Preparation returns a one-time token and prompt bound to a stable
313
- `handoffId`, revision, Brief/Plan/Knowledge hashes, Milestone and Task display numbers,
314
- expected next action, delegate/grant, creation time, and expiry. Only the claim-token hash is
315
- stored; `task handoff-show` cannot recover it. Claim fails closed on expiry, actor, token,
316
- revision, context, grant, or writer-owner mismatch. While pending, `next` blocks normal
317
- execution behind claim; while claimed, only the
318
- claimant may mutate with the bound writer token. Milestone-linked Tasks require this claimed
319
- posture before start. Terminal handback preserves status, merge/result/evidence/review and
320
- Knowledge bindings, limitations, and recommended next action. This is machine-bound actor and
321
- lease evidence only; it is not proof of a separate thread.
43
+ Do not repeatedly execute an unchanged failing route. Preserve the command, state binding and blocker; distinguish an external wait, human gate, integrity failure and unsupported transition. No arbitrary retry counter establishes completion. A1 remains a release blocker until actual continuation evidence covers the supported routes.
package/docs/decisions.md CHANGED
@@ -1,113 +1,15 @@
1
- # Accepted V2 Decisions
1
+ # Current product decisions
2
2
 
3
- This document closes the requirement gaps identified during the V2 design review.
4
-
5
- 1. **Milestone lifecycle.** A Milestone aggregates Tasks on an ordinary base branch; it
6
- has no integration branch. Its approved Plan defines required, waived, and cancelled
7
- memberships plus cross-Task checks. Amendments supersede execution authorization and
8
- block new Task starts until reauthorized. Started Tasks cannot be removed. Validation
9
- runs on the current clean base HEAD, and final acceptance binds Result, evidence, and
10
- that HEAD. Cancellation records a reason and never reverts merged code.
11
- 2. **V1 transition.** V1 state is not mapped into V2 entities. `state migrate --dry-run`
12
- inventories legacy paths. `state migrate --snapshot` writes a deterministic,
13
- content-addressed gzip JSON archive outside the repository. It rejects symbolic links
14
- and never changes, deletes, or semantically imports V1 state.
15
- 3. **Registry and support.** The package identity is `codex-workflow-v2` and npm
16
- visibility is public. Releases use tag-triggered trusted publishing. Stable support
17
- covers the latest minor release in the current major; older minors receive no backports
18
- unless separately declared.
19
- 4. **Reviewer guarantee.** Role envelopes alone are advisory. The strict reviewer is a
20
- separate ephemeral `codex exec` process with user configuration and rules ignored,
21
- a read-only sandbox, a structured output schema, and a denied-write probe. Process
22
- failure, invalid output, a successful write, or any repository mutation records
23
- `unverified` and blocks final acceptance.
24
- 5. **Gateway distribution.** The gateway is shipped as the personal plugin source at
25
- `plugins/codex-workflow-gateway`. Its installer performs the CLI-driven cachebuster and
26
- reinstall flow. The plugin negotiates the package protocol and never copies V2 workflow
27
- assets into a project repository.
28
- 6. **Graph binding.** `codebase-memory-mcp` remains the graph provider. The gateway obtains
29
- a refresh request from the core, refreshes the product or workflow graph, and binds
30
- returned evidence only when request identity and current repository/package fingerprints
31
- agree. Product graph state retains the current binding; the workflow graph additionally
32
- retains one previous package-version binding for rollback diagnosis. Provider failure is
33
- recorded explicitly as fallback and does not replace repository knowledge.
34
- 7. **Runtime boundary.** V2 targets one user operating on one machine. Workflow state,
35
- locks, snapshots, graph bindings, and approvals live under the user's local Codex state
36
- directory. Durable product knowledge lives only in ordinary version-controlled project
37
- files. Remote coordination, distributed locking, and cross-machine synchronization are
38
- outside the product contract.
39
- 8. **Task knowledge rebind.** A Task whose approved project knowledge changes between Steps
40
- uses a dedicated mechanical `task knowledge-rebind` transition. The transition cannot
41
- edit semantic Plan fields or Step definitions, preserves runtime Step status and evidence,
42
- records the previous and current bindings, supersedes execution authorization, and
43
- requires user reauthorization. It is not a state migration mechanism. The state schema is
44
- advanced without a compatibility migrator for pre-release Task state.
45
- 9. **Repository scheduling and Milestone final gate.** Repository `next` treats current
46
- Milestone membership as scheduling authority for unstarted linked Tasks. Only `required`
47
- Tasks of an `active` Milestone are eligible; historical waived/cancelled memberships and
48
- terminal Milestones cannot shadow the next lifecycle transition. After validation, the
49
- core emits a deterministic confirmation code bound to Milestone revision, Plan, Result,
50
- evidence, and base HEAD. The gateway must end the turn after showing it, and the CLI accepts
51
- only an explicit actor and exact code from a later user-confirmed turn. This is state-bound
52
- consent, not cryptographic proof of human identity.
53
- 10. **Delegated approval.** Human approval stays the default, but a principal may issue a
54
- project-bound, expiring grant to a distinct delegate after a separate confirmation-code
55
- turn. Grants allow only enumerated Knowledge Map, Task, or Milestone approval transitions
56
- and are scoped to the project, one Milestone, or one Task. Each use records
57
- both actors and the policy hash; revocation blocks future uses. This is an additive schema
58
- 2 entity and optional authorization metadata, so existing schema 2 projects require no
59
- migration. It is local policy evidence, not a cryptographic identity signature.
60
- 11. **Core-owned Step commit.** `task run` dispatches a Worker that leaves changes
61
- uncommitted. For an active Step, `next` returns the exact `task step-complete` transition
62
- and Step ID. That transition validates history and allowed paths, runs checks, creates
63
- the atomic commit, and records evidence. A manual Worker commit is unrecorded history and
64
- fails closed without changing persisted Task state. This changes navigation and
65
- diagnostics only; state schema 2 and protocol 1 remain unchanged.
66
- 12. **Autonomous correction guardrail.** The initial Plan must make migration,
67
- concurrency, restart/replay, crash-window, and provider risks visible. Repeated failed reviews
68
- do not impose an attempt-count stop: findings default to a same-Task fix and may request replan
69
- only with exact Plan-conflict evidence. Attempts after the second are marked corrective for
70
- diagnosis, remain executable, and require another strict review. Explicit split/stop decisions
71
- remain append-only authority and are never inferred from the counter.
72
- 13. **Content-only context refresh.** A delegate may compose reconcile, approval, knowledge
73
- rebind, and execution reauthorization only when the approved source classification is
74
- identical and only content hashes changed. Core validates both delegated transitions
75
- before writing. Source-set, category, scope, authority, gap, or conflict changes stay on
76
- the ordinary visible approval path. State schema 2 and protocol 1 remain unchanged.
77
- 14. **Autonomous chat and closure boundary.** A Milestone coordinator owns orchestration and
78
- final acceptance while each required Task uses a dedicated user-visible Task chat.
79
- `next` exposes the Milestone completion contract, and delegated acceptance retains the
80
- delegate actor and exact state-bound MSA code.
81
- 15. **Safe update preflight.** Dependency updates begin with a read-only preflight requiring
82
- a clean checkout, no running Step, and no active writer lease. It does not install,
83
- migrate, or mutate project state.
84
- 16. **Strict-review recovery precedes Knowledge rebind.** A pending strict review is bound to
85
- its immutable completion commit, Plan, and historical knowledge binding. It therefore
86
- runs before a current-map rebind; the rebind remains mandatory before the next Step. A
87
- read-only alpha.6 rescue profile exposes only this exact recovery shape.
88
- 17. **Bounded Milestone autonomy.** Initial linked Tasks may be assembled before one complete
89
- membership Plan. One human-confirmed, expiring Milestone contract may then authorize the
90
- existing Task/Milestone approval transitions, guarded content-only Task context refresh,
91
- and membership-only evolution. Standalone Project Memory approval remains forbidden.
92
- Outcome, success signal, acceptance, checks, discovery, and base branch remain immutable;
93
- semantic change stays human-only.
94
- 18. **Planning proof obligations.** Every newly recorded guarded audit maps each failure mode
95
- to one hostile counterexample, expected safe result, and exact executable Step check.
96
- Historical alpha.6 audit events remain readable only to preserve safe lifecycle recovery.
97
- 19. **Derived independent actors.** Core derives stable Task Worker and corrective Auditor
98
- actors from Task identity. This removes name-selection pauses without weakening C1 claim,
99
- lease, or auditor-independence checks.
100
- 20. **Stop-override authority survives mechanical update chains.** The exact Human-confirmed
101
- beta.11 attempt-four override remains valid across any contiguous append-only sequence of
102
- content-only Plan rebinds. Every adjacent immutable Plan, Knowledge rebind, and mechanical
103
- Plan Risk Audit rebound must agree. Git HEAD may advance only through a contiguous chain of
104
- already registered dependency-provenance commits, each single-parent and limited to
105
- `package.json` plus `package-lock.json`. Semantic Plan drift, product commits, missing
106
- provenance, or broken chronology still fails closed; generic corrective-decision recovery
107
- remains direct and is not widened.
108
- 21. **Administrative revision continuity is evidence-accounted.** A dependency-provenance
109
- recovery recorded after the current mechanical Plan Risk Audit may explain exactly one later
110
- Task revision without invalidating an already applied stop override. Core counts only ordered
111
- recovery records from the independently verified override-to-authorization Git chain and
112
- requires the resulting expected revision to equal the current Task revision. Unexplained
113
- revisions and damaged provenance remain blocked; this is not a general `revision >=` rule.
3
+ 1. One user, one machine, one consumer project; that consumer updates to the latest package. Older package versions, source-version rescue runners and backports are not supported. Exact local package pins remain necessary for reproducible execution.
4
+ 2. Repository files own durable product knowledge. Local Workflow state owns lifecycle records, hashes, approvals and process/Task ownership. A graph is derived orientation evidence, never canonical knowledge or authority.
5
+ 3. Discovery establishes scope before Task/Milestone identities and execution branches. Plans bind requirements, Steps, paths, checks and approved Knowledge. Semantic decisions remain explicit.
6
+ 4. Core owns state transitions and Step commits. Revision/hash/HEAD checks, effective scope and one writer prevent conflicting work. Agents do not edit state or substitute manual Git commits.
7
+ 5. Milestone membership is a dependency DAG on an ordinary base branch. Required predecessors must merge first. Membership-only autonomy preserves semantic scope; arbitrary scope changes remain human-controlled.
8
+ 6. Independent audits and reviews are separate evidence producers. Role labels alone do not prove isolation. Invalid output, changed review seals or failed reviewer launch cannot establish acceptance.
9
+ 7. Delegation is exact, scoped, expiring and revocable. It records the principal and distinct delegate. It cannot authorize its own expansion or renewal.
10
+ 8. Rebind changes Knowledge bindings only. Current atomic context refresh composes approved transitions without widening them. Pending execution/review/recovery retains its own priority and identity.
11
+ 9. Repeated failures do not impose an attempt-count stop and do not create success. Replan requires actual obstruction evidence. Completed work remains verifiable; explicit stops and unsupported topology changes remain visible boundaries.
12
+ 10. Recovery preserves coherent state, bound product bytes and immutable evidence. Retaining a reader for existing evidence does not retain old-version execution routes or justify a new migration framework.
13
+ 11. A1 is the primary blocker: integrity guards alone do not establish reachability or termination. `next` and executors must share admission rules, and real transition tests must show successors under stated assumptions. Human decisions and external failures cannot be promised to terminate automatically.
14
+ 12. Validation is fresh and single-owner, with bounded child processes and no silent retries. The canonical release command runs the full suite once and then package checks. Timing evidence distinguishes host bootstrap stalls from running JavaScript.
15
+ 13. The supported entry documentation is six current guides. Historical design briefs and release narratives live in Git history; PDF exports and research material are outside package runtime instructions.