codex-workflow-v2 2.0.0-beta.1 → 2.0.0-beta.11

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 (187) hide show
  1. package/README.md +94 -12
  2. package/dist/src/alpha6/adoption.js +13 -3
  3. package/dist/src/alpha6/adoption.js.map +1 -1
  4. package/dist/src/alpha6/handoff.d.ts +26 -2
  5. package/dist/src/alpha6/handoff.js +277 -29
  6. package/dist/src/alpha6/handoff.js.map +1 -1
  7. package/dist/src/alpha6/mechanical-feasibility.d.ts +7 -0
  8. package/dist/src/alpha6/mechanical-feasibility.js +303 -0
  9. package/dist/src/alpha6/mechanical-feasibility.js.map +1 -0
  10. package/dist/src/alpha6/milestone.d.ts +37 -2
  11. package/dist/src/alpha6/milestone.js +472 -33
  12. package/dist/src/alpha6/milestone.js.map +1 -1
  13. package/dist/src/alpha6/plan-integrity.d.ts +14 -0
  14. package/dist/src/alpha6/plan-integrity.js +127 -0
  15. package/dist/src/alpha6/plan-integrity.js.map +1 -0
  16. package/dist/src/alpha6/plan-risk.d.ts +1 -0
  17. package/dist/src/alpha6/plan-risk.js +15 -7
  18. package/dist/src/alpha6/plan-risk.js.map +1 -1
  19. package/dist/src/alpha6/remediation.d.ts +2 -1
  20. package/dist/src/alpha6/remediation.js +186 -9
  21. package/dist/src/alpha6/remediation.js.map +1 -1
  22. package/dist/src/alpha6/review.d.ts +3 -0
  23. package/dist/src/alpha6/review.js +24 -0
  24. package/dist/src/alpha6/review.js.map +1 -1
  25. package/dist/src/cli.js +486 -46
  26. package/dist/src/cli.js.map +1 -1
  27. package/dist/src/contracts.d.ts +238 -6
  28. package/dist/src/contracts.js +1 -1
  29. package/dist/src/credential-output.d.ts +10 -0
  30. package/dist/src/credential-output.js +73 -0
  31. package/dist/src/credential-output.js.map +1 -0
  32. package/dist/src/dependency-provenance.d.ts +19 -0
  33. package/dist/src/dependency-provenance.js +185 -0
  34. package/dist/src/dependency-provenance.js.map +1 -0
  35. package/dist/src/errors.d.ts +1 -1
  36. package/dist/src/errors.js.map +1 -1
  37. package/dist/src/git.d.ts +1 -1
  38. package/dist/src/git.js +13 -5
  39. package/dist/src/git.js.map +1 -1
  40. package/dist/src/index.d.ts +2 -1
  41. package/dist/src/index.js +2 -1
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/lifecycle/canonical-hash.d.ts +6 -0
  44. package/dist/src/lifecycle/canonical-hash.js +24 -0
  45. package/dist/src/lifecycle/canonical-hash.js.map +1 -0
  46. package/dist/src/lifecycle/catalog.d.ts +26 -0
  47. package/dist/src/lifecycle/catalog.js +208 -0
  48. package/dist/src/lifecycle/catalog.js.map +1 -0
  49. package/dist/src/lifecycle/compiler-inspection.d.ts +48 -0
  50. package/dist/src/lifecycle/compiler-inspection.js +29 -0
  51. package/dist/src/lifecycle/compiler-inspection.js.map +1 -0
  52. package/dist/src/lifecycle/core-static-readiness.d.ts +6 -0
  53. package/dist/src/lifecycle/core-static-readiness.js +130 -0
  54. package/dist/src/lifecycle/core-static-readiness.js.map +1 -0
  55. package/dist/src/lifecycle/corrective-replan-authority.d.ts +53 -0
  56. package/dist/src/lifecycle/corrective-replan-authority.js +139 -0
  57. package/dist/src/lifecycle/corrective-replan-authority.js.map +1 -0
  58. package/dist/src/lifecycle/corrective-replan-binding-manifest.d.ts +21 -0
  59. package/dist/src/lifecycle/corrective-replan-binding-manifest.js +35 -0
  60. package/dist/src/lifecycle/corrective-replan-binding-manifest.js.map +1 -0
  61. package/dist/src/lifecycle/corrective-replan-credential-core.d.ts +86 -0
  62. package/dist/src/lifecycle/corrective-replan-credential-core.js +563 -0
  63. package/dist/src/lifecycle/corrective-replan-credential-core.js.map +1 -0
  64. package/dist/src/lifecycle/corrective-replan-credential-schema.d.ts +17 -0
  65. package/dist/src/lifecycle/corrective-replan-credential-schema.js +44 -0
  66. package/dist/src/lifecycle/corrective-replan-credential-schema.js.map +1 -0
  67. package/dist/src/lifecycle/corrective-replan-credentials.d.ts +47 -0
  68. package/dist/src/lifecycle/corrective-replan-credentials.js +103 -0
  69. package/dist/src/lifecycle/corrective-replan-credentials.js.map +1 -0
  70. package/dist/src/lifecycle/corrective-replan.d.ts +64 -0
  71. package/dist/src/lifecycle/corrective-replan.js +553 -0
  72. package/dist/src/lifecycle/corrective-replan.js.map +1 -0
  73. package/dist/src/lifecycle/evaluator.d.ts +2 -0
  74. package/dist/src/lifecycle/evaluator.js +35 -0
  75. package/dist/src/lifecycle/evaluator.js.map +1 -0
  76. package/dist/src/lifecycle/fingerprint.d.ts +31 -0
  77. package/dist/src/lifecycle/fingerprint.js +388 -0
  78. package/dist/src/lifecycle/fingerprint.js.map +1 -0
  79. package/dist/src/lifecycle/immutable.d.ts +1 -0
  80. package/dist/src/lifecycle/immutable.js +10 -0
  81. package/dist/src/lifecycle/immutable.js.map +1 -0
  82. package/dist/src/lifecycle/implementation-table.d.ts +29 -0
  83. package/dist/src/lifecycle/implementation-table.js +87 -0
  84. package/dist/src/lifecycle/implementation-table.js.map +1 -0
  85. package/dist/src/lifecycle/index.d.ts +4 -0
  86. package/dist/src/lifecycle/index.js +5 -0
  87. package/dist/src/lifecycle/index.js.map +1 -0
  88. package/dist/src/lifecycle/schema-artifact.d.ts +12 -0
  89. package/dist/src/lifecycle/schema-artifact.js +214 -0
  90. package/dist/src/lifecycle/schema-artifact.js.map +1 -0
  91. package/dist/src/lifecycle/semantic-registry.d.ts +6 -0
  92. package/dist/src/lifecycle/semantic-registry.js +489 -0
  93. package/dist/src/lifecycle/semantic-registry.js.map +1 -0
  94. package/dist/src/lifecycle/types.d.ts +718 -0
  95. package/dist/src/lifecycle/types.js +4 -0
  96. package/dist/src/lifecycle/types.js.map +1 -0
  97. package/dist/src/observation.d.ts +20 -0
  98. package/dist/src/observation.js +171 -0
  99. package/dist/src/observation.js.map +1 -0
  100. package/dist/src/reviewer.d.ts +43 -1
  101. package/dist/src/reviewer.js +203 -50
  102. package/dist/src/reviewer.js.map +1 -1
  103. package/dist/src/state/corrective-replan-executor.d.ts +64 -0
  104. package/dist/src/state/corrective-replan-executor.js +608 -0
  105. package/dist/src/state/corrective-replan-executor.js.map +1 -0
  106. package/dist/src/state/corrective-replan-public-schema.d.ts +3 -0
  107. package/dist/src/state/corrective-replan-public-schema.js +43 -0
  108. package/dist/src/state/corrective-replan-public-schema.js.map +1 -0
  109. package/dist/src/state/corrective-replan-public.d.ts +95 -0
  110. package/dist/src/state/corrective-replan-public.js +665 -0
  111. package/dist/src/state/corrective-replan-public.js.map +1 -0
  112. package/dist/src/state/corrective-replan-transaction.d.ts +160 -0
  113. package/dist/src/state/corrective-replan-transaction.js +730 -0
  114. package/dist/src/state/corrective-replan-transaction.js.map +1 -0
  115. package/dist/src/state/corrective-yield-executor.d.ts +31 -0
  116. package/dist/src/state/corrective-yield-executor.js +236 -0
  117. package/dist/src/state/corrective-yield-executor.js.map +1 -0
  118. package/dist/src/state/corrective-yield-transaction.d.ts +97 -0
  119. package/dist/src/state/corrective-yield-transaction.js +591 -0
  120. package/dist/src/state/corrective-yield-transaction.js.map +1 -0
  121. package/dist/src/state/lock.d.ts +76 -3
  122. package/dist/src/state/lock.js +611 -30
  123. package/dist/src/state/lock.js.map +1 -1
  124. package/dist/src/state/store.d.ts +3 -0
  125. package/dist/src/state/store.js +65 -12
  126. package/dist/src/state/store.js.map +1 -1
  127. package/dist/src/transition-core.d.ts +67 -0
  128. package/dist/src/transition-core.js +318 -0
  129. package/dist/src/transition-core.js.map +1 -0
  130. package/dist/src/version.d.ts +1 -1
  131. package/dist/src/version.js +1 -1
  132. package/dist/src/version.js.map +1 -1
  133. package/dist/src/workflow.d.ts +88 -24
  134. package/dist/src/workflow.js +1647 -270
  135. package/dist/src/workflow.js.map +1 -1
  136. package/docs/autonomy-guardrails.md +61 -1
  137. package/docs/beta11-plan-integrity-recovery-brief.md +38 -0
  138. package/docs/beta2-initial-assembly-navigation-brief.md +616 -0
  139. package/docs/delegated-approval.md +26 -1
  140. package/docs/development-flow.md +63 -8
  141. package/docs/lifecycle/state-machine-stabilization.md +641 -0
  142. package/docs/pdf/README.md +24 -0
  143. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  144. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  145. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  146. package/docs/pdf/requirements.txt +1 -0
  147. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +234 -0
  148. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +334 -0
  149. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +413 -0
  150. package/docs/problem-briefs/01-pre-implementation-integrity.md +478 -0
  151. package/docs/problem-briefs/02-minimal-step-integrity.md +411 -0
  152. package/docs/problem-briefs/03-minimal-agent-context-integrity.md +358 -0
  153. package/docs/problem-briefs/04-task-dependency-and-structural-replacement-integrity.md +566 -0
  154. package/docs/problem-briefs/BRIEF-TEMPLATE.md +56 -0
  155. package/docs/problem-briefs/README.md +120 -0
  156. package/docs/problem-briefs/evidence/p01-mechanical-feasibility-corpus.md +90 -0
  157. package/docs/problem-briefs/evidence/signal-v4-pre-m3-replay.md +246 -0
  158. package/docs/release.md +30 -6
  159. package/docs/split-required-recovery.md +19 -25
  160. package/docs/stable-release-defect-register.md +465 -3
  161. package/docs/updating-existing-project.md +59 -4
  162. package/docs/validation-report.md +124 -56
  163. package/package.json +9 -1
  164. package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +10 -3
  165. package/plugins/codex-workflow-gateway/references/protocol.md +92 -4
  166. package/plugins/codex-workflow-gateway/scripts/chat-registry.mjs +376 -0
  167. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +263 -4
  168. package/references/state-machine.md +13 -6
  169. package/roles/delivery-coordinator.md +39 -0
  170. package/schemas/adoption-posture-event.schema.json +1 -1
  171. package/schemas/authorization-event.schema.json +64 -1
  172. package/schemas/context-envelope.schema.json +1 -1
  173. package/schemas/corrective-decision-event.schema.json +48 -3
  174. package/schemas/corrective-replan-credentials.private.schema.json +98 -0
  175. package/schemas/corrective-replan-execution-event.private.schema.json +53 -0
  176. package/schemas/corrective-replan-public.schema.json +142 -0
  177. package/schemas/corrective-replan-task-transaction.private.schema.json +151 -0
  178. package/schemas/corrective-yield-task-transaction.private.schema.json +98 -0
  179. package/schemas/milestone-scope-change-event.schema.json +6 -1
  180. package/schemas/milestone.schema.json +6 -1
  181. package/schemas/remediation-event.schema.json +11 -1
  182. package/schemas/task-handoff-event.schema.json +19 -3
  183. package/schemas/task.schema.json +24 -1
  184. package/schemas/transition-definition.schema.json +2609 -0
  185. package/schemas/transition-payloads.schema.json +140 -0
  186. package/scripts/generate-pdf-docs.py +512 -0
  187. package/scripts/run-pdf-docs.mjs +62 -0
@@ -1,11 +1,11 @@
1
1
  # Stable Release Defect Register
2
2
 
3
3
  This register captures defects and operational gaps found while running the
4
- alpha.7 line against the `signal_v4` Milestone 3 lifecycle. It is intentionally
4
+ alpha.7 through beta.9 lines against the `signal_v4` Milestone 3 lifecycle. It is intentionally
5
5
  separate from implementation briefs: an item stays here until it is either
6
6
  verified fixed by a regression test or explicitly classified as downstream-only.
7
7
 
8
- Last reviewed: 2026-08-15.
8
+ Last reviewed: 2026-08-22.
9
9
 
10
10
  ## Severity and status
11
11
 
@@ -14,6 +14,468 @@ Last reviewed: 2026-08-15.
14
14
  - **Closed-regression** means a patch exists; the stable release must retain its regression coverage.
15
15
  - **Downstream** means the finding belongs to `signal_v4`, not to the workflow package.
16
16
 
17
+ ## Post-beta.5 open findings
18
+
19
+ ### WF-STABLE-030 — chat order and replacement progress are not observable
20
+
21
+ - Status: Closed-regression in beta.9
22
+ - Severity: High
23
+ - Area: Codex App routing, title identity, Milestone supervision
24
+ - Evidence: automatically created Task/reviewer titles had no project sequence, long semantic
25
+ segments were unpredictably shortened, and the Coordinator summary did not expose that cancelled
26
+ T03 had been replaced by a distinct T08.
27
+ - Fix: the gateway owns one atomic project registry with non-reusable monotonic `#NNN`, six compact
28
+ title families, exact readback and deterministic fallback. Core exposes a read-only Milestone
29
+ progress projection; Task and Coordinator chats emit progress tables at defined boundaries.
30
+ - Regression: concurrent allocations remain unique and monotonic; long Cyrillic titles and multiple
31
+ review attempts traverse fallback/readback; projection keeps `T03 cancelled → T08 replacement`
32
+ as two rows with exact Step status.
33
+
34
+ ### WF-STABLE-029 — dependency-only Workflow update strands an active Task
35
+
36
+ - Status: Closed-regression in beta.9
37
+ - Severity: Critical
38
+ - Area: Git provenance integrity, package update, active Task recovery
39
+ - Evidence: Signal T04 contained the beta.8 dependency update commit at HEAD after all recorded Task
40
+ commits. `task submit` correctly rejected the unregistered commit, but no bounded route could
41
+ classify it as Workflow-owned provenance.
42
+ - Fix: fresh navigation advertises recovery only for one clean, local, dependency-only HEAD after
43
+ exact recorded history, with no Step/lease/transaction activity and complete beta.9 alignment
44
+ across runtime, manifest, lock, install, Task branch, and Milestone base. Recovery only appends
45
+ that SHA to `systemCommits` with an audit record; it never mutates Git.
46
+ - Regression: exact candidate succeeds and is idempotent; product-file contamination and stale-base
47
+ divergence fail closed.
48
+
49
+ ### WF-STABLE-028 — passed guarded Step strands later final Task-review remediation
50
+
51
+ - Status: Closed-regression in beta.8
52
+ - Severity: High
53
+ - Area: guarded remediation breaker, final Task review, navigation/mutation agreement
54
+ - Evidence: Signal Task `TASK-01M0HVK4YDJ3W9X0N72TYNV8WK` reached a verified passing third
55
+ sealed Step review after two ordinary failures and one independently authorized `continue-fix`.
56
+ A later final Task review found two new defects and `next` correctly advertised `task plan-set`,
57
+ but the mutation rejected the Plan because the already-consumed `continue-fix` event still
58
+ matched the current Plan. The suggested current-Plan retry was impossible because the guarded
59
+ Step was already `completed`.
60
+ - Risk: a valid append-only review history can leave a nonterminal Task with no executable
61
+ transition even though its state is clean and navigation advertises a corrective Plan update.
62
+ - Fix: a verified passing Step-review event now closes the preceding breaker cycle for that Step.
63
+ Resolved `continue-fix`, remediation, and decision events remain immutable evidence but do not
64
+ gate a later final Task-review remediation cycle. A changed guarded Step starts a fresh bounded
65
+ cycle under the replacement Plan Risk Audit; unresolved and failed cycles retain the existing
66
+ hard-stop behavior.
67
+ - Regression: `tests/alpha7-remediation-replay.test.ts` reproduces the full sequence through two
68
+ failed sealed reviews, `continue-fix`, a verified pass, failed final Task review, atomic Plan and
69
+ Risk Audit replacement, execution authorization, and successful `task run` of the reopened
70
+ guarded Step while proving the historical sidecars are retained.
71
+
72
+ ### WF-STABLE-027 — Milestone coordinator stops supervising after Task-chat dispatch
73
+
74
+ - Status: Closed-regression in beta.7
75
+ - Severity: High
76
+ - Area: Codex App Task isolation, Milestone orchestration, autonomous completion
77
+ - Evidence: the beta.6 `signal_v4` recovery coordinator created seven same-title forked chats,
78
+ marked one actionable and six waiting, and then ended its own turn. The first chat continued as a
79
+ Task worker while the coordinator stayed idle; no wait/read/resume loop routed completion or the
80
+ remaining membership.
81
+ - Risk: the apparent delegate autonomy stops at chat creation. The user must manually monitor and
82
+ restart every Task, while inherited history, duplicate titles, and placeholder chats weaken Task
83
+ isolation and make the sidebar audit trail ambiguous.
84
+ - Fix: the packaged gateway now requires standalone `create_thread` dispatch with Task-only input,
85
+ deterministic title readback, just-in-time sequential creation, a bounded `wait_threads` cursor
86
+ loop, full `read_thread` verification, same-thread `send_message_to_thread` recovery, and a
87
+ secret-free CoordinatorReport. A coordinator may end with a nonterminal dispatched Task only for
88
+ an explicit checkpoint or a genuine human/semantic, integrity, permission, or exhausted
89
+ infrastructure blocker.
90
+ - Regression evidence: plugin validation pins every supervision primitive and the no-premature-final
91
+ rule. A live two-Task Codex App E2E proved isolated self-start, title truncation repair,
92
+ sequential dispatch, cursor progression, non-human blocker recovery in the same thread, and
93
+ terminal completion without user intervention. Core lifecycle tests remain `287/287` green.
94
+
95
+ ### WF-STABLE-025 — a new Codex task receives a stale personal-plugin skill path
96
+
97
+ - Status: Investigation; behavior reproduced, ownership boundary not yet isolated
98
+ - Severity: High
99
+ - Area: personal plugin installer, cachebuster registration, Codex App skill discovery
100
+ - Evidence: after `signal_v4` was updated to `codex-workflow-v2@2.0.0-beta.5` and the packaged
101
+ `codex-workflow-gateway` installer completed, the new Codex task `Возобновить recovery
102
+ Milestone 3` received the catalog path ending in cachebuster `0.1.0+codex.20260818092852`.
103
+ That file no longer existed. The actually installed skill was under
104
+ `0.1.0+codex.20260821083915`; the agent found it only by searching the local plugin cache.
105
+ - Reproduction: open a new task after installing a cachebuster update, use the skill path supplied
106
+ to that task, and observe an immediate file-not-found failure before any workflow action. The
107
+ task can continue only after out-of-band cache discovery. This contradicts the installer guidance
108
+ that starting a new task is sufficient to load the updated plugin.
109
+ - Risk: routine Workflow starts produce a noisy, repeated failure. More importantly, if both cache
110
+ generations remain present, a task may silently load stale gateway rules instead of failing,
111
+ weakening exact-version routing and human-gate guarantees.
112
+ - beta.9 live readback (2026-08-22): after the source was validated, copied through the packaged
113
+ installer, and `codex plugin add` reported installed root `0.1.0+codex.20260822110519`, three new
114
+ worktree Tasks were still injected with missing path `0.1.0+codex.20260822065726`. All three
115
+ found the actual cache only by read-only search and then verified beta.9 content. This rules out a
116
+ missed source copy or failed install and localizes the remaining defect to App catalog/runtime
117
+ invalidation.
118
+ - Required closure:
119
+ - determine whether the stale reference is emitted by the packaged installer/registration flow
120
+ or retained by Codex App's skill catalog;
121
+ - after an A-to-B cachebuster update, every newly created task must resolve B without filesystem
122
+ search and must never advertise a missing or superseded A path;
123
+ - if an application restart is an unavoidable boundary, the installer must detect and report it
124
+ explicitly instead of claiming that a new task alone is sufficient;
125
+ - retain an integration regression covering install, cachebuster update, new-task discovery, and
126
+ exact `SKILL.md` content identity.
127
+ - Scope note: no workflow-state mutation occurred before the fallback lookup. This finding is
128
+ independent from the stale Plan Risk Audit recovery defect observed later in the same task.
129
+
130
+ ### WF-STABLE-026 — Milestone authorization can bypass stale Project Memory
131
+
132
+ - Status: Closed-regression in beta.6
133
+ - Severity: Critical
134
+ - Area: repository navigation, Project Memory authority, Milestone authorization
135
+ - Evidence: while resuming `signal_v4` Milestone 3 on beta.5, the persisted Project Memory map was
136
+ active but its current scan was stale after the workflow dependency changed. Repository `next`
137
+ still advertised Milestone authorization, and direct Milestone authorization/autonomy methods did
138
+ not independently require a current approved map.
139
+ - Risk: an existing Milestone could be authorized against stale Project Memory, after which linked
140
+ Task Plan contracts would bind obsolete source hashes or force an unadvertised manual recovery.
141
+ - Fix: repository navigation now derives the current map status before Discovery or Milestone
142
+ authorization and routes `project-memory reconcile`/`approve` first. Direct Milestone authorize,
143
+ autonomy prepare, and autonomy grant also fail closed unless the current map is active and
144
+ approved.
145
+ - Regression evidence: `tests/milestone.test.ts` proves that reconcile/approval preserves the exact
146
+ existing Milestone and Plan, then advertises Milestone authorization and binds the linked Task
147
+ Plan contract to the refreshed map revision/hash. A separate witness proves stale Project Memory
148
+ outranks replacement Discovery.
149
+
150
+ ## Beta.2 closure candidates
151
+
152
+ ### WF-STABLE-009 — initial assembly creates a state rejected by `status` and `next`
153
+
154
+ - Status: Closed-regression in beta.2
155
+ - Severity: Critical
156
+ - Area: Milestone initial assembly, reverse membership, repository navigation
157
+ - Evidence: both the beta.1 real-agent E2E and the live read-only `signal_v4` reincarnation
158
+ materialized a first linked planning Task successfully, after which `status` and `next` returned
159
+ `MILESTONE_SCOPE_INCOMPLETE` for the intentionally repairable pre-Plan membership gap.
160
+ - Risk: the documented seven-Task initial assembly cannot follow authoritative `next`; agents must
161
+ either stop before work begins or bypass navigation and invalidate lifecycle evidence.
162
+ - Closure evidence: centralized initial-assembly assessment, deterministic fresh/adopted/unsafe
163
+ regressions, exact copied `signal_v4` snapshot replay, and real-agent seven-Task assembly all pass;
164
+ strict reverse-membership blocking remains active outside the exact predicate.
165
+
166
+ ### WF-STABLE-010 — beta.1 release E2E continued after failed `next`
167
+
168
+ - Status: Closed-regression in beta.2; clean release E2E verified
169
+ - Severity: Critical
170
+ - Area: release evidence, real-agent transcript validation
171
+ - Evidence: the beta.1 final E2E transcript contains failed `status` and `next` calls with
172
+ `MILESTONE_SCOPE_INCOMPLETE`; the Delegate labelled the gap expected, invoked direct
173
+ `milestone plan-set`, and the final audit still accepted the run despite the Brief explicitly
174
+ declaring a `next` bypass invalid.
175
+ - Risk: a real-agent run can conceal a Core lifecycle defect and produce a false release
176
+ recommendation.
177
+ - Candidate evidence: the append-only transcript validator rejects navigation bypasses,
178
+ unadvertised mutations, failed non-retryable mutations, unresolved syntax retries, and
179
+ unterminated harness invocations. Final-21 passed the complete validator with `250/250` events.
180
+
181
+ ### WF-STABLE-011 — pending Task review `next` names a non-autonomous primitive
182
+
183
+ - Status: Closed-regression in beta.2; clean release E2E verified
184
+ - Severity: High
185
+ - Area: Task final review, truthful navigation, real-agent evidence
186
+ - Evidence: the first beta.2 real-agent diagnostic run reached a submitted Task with pending review;
187
+ `next` returned `task review-record`, while the packaged and successfully executed autonomous
188
+ command was `task review-launch`.
189
+ - Risk: an agent following the exact autonomous route appears to bypass authoritative navigation,
190
+ while an agent following the literal response must manufacture reviewer output instead of using
191
+ the isolated reviewer launcher.
192
+ - Candidate evidence: deterministic navigation regressions prove exact `task review-launch` while
193
+ preserving `task result-set` after a passed review. Final-21 completed strict Step review and the
194
+ final independent Task review without a rejected lifecycle mutation.
195
+
196
+ ### WF-STABLE-012 — Core-owned Git transitions omit the sandbox permission contract
197
+
198
+ - Status: Closed-regression in beta.2; clean release E2E verified
199
+ - Severity: High
200
+ - Area: Task execution, truthful navigation, Codex sandbox integration
201
+ - Evidence: the rebuilt beta.2 real-agent E2E followed `next.action = task step-complete`; Core ran
202
+ its owned checks and then failed non-mutating at `git add` because `.git/index.lock` was denied.
203
+ The exact same transition succeeded after a bounded Git-metadata escalation.
204
+ - Risk: a nominally autonomous Milestone learns required authority only by failing a lifecycle
205
+ mutation. This creates noisy retry history, invalidates clean release transcripts, and can strand
206
+ less capable agents despite a valid Plan and grant.
207
+ - Candidate evidence: positive and negative navigation regressions cover the four local Git-writing
208
+ transitions and absence on read-only/external routes. Final-21 consumed the policy before local
209
+ start, Step completion, and Core merge without a rejected lifecycle mutation.
210
+
211
+ ### WF-STABLE-013 — strict reviewer can wait indefinitely or fail before launch
212
+
213
+ - Status: Closed-regression in beta.2; clean release E2E verified
214
+ - Severity: Critical
215
+ - Area: strict Step review, final Task review, non-interactive Codex subprocess lifecycle
216
+ - Evidence: beta.2 `real-agent-release-final-6` left two `task step-review` parents and two nested
217
+ `codex exec` reviewers alive for more than five minutes at unchanged Task revision `6`. Neither
218
+ invocation returned a terminal success or failure result.
219
+ - Additional evidence: beta.2 `real-agent-release-final-10` exposed an integration error in the
220
+ first correction: the global `--ask-for-approval never` option was placed after `exec`, which the
221
+ real Codex CLI rejected with status `2`. Two launch failures consumed the two ordinary
222
+ remediation attempts before the run was stopped.
223
+ - Root cause: the strict reviewer used inherited/default approval behavior despite intentionally
224
+ probing a denied write, the synchronous subprocess had no host-side deadline, and the initial
225
+ correction did not test the real CLI's global-option ordering contract.
226
+ - Risk: an autonomous Milestone can hang forever inside Core before review evidence exists; a retry
227
+ can create a second concurrent reviewer for the same Step/revision.
228
+ - Candidate evidence: strict reviewers now place `approval=never` before the `exec` subcommand,
229
+ retain read-only sandboxing, and have a fixed host-side execution deadline that returns terminal
230
+ `unverified` evidence on timeout. Focused tests assert the exact global-option ordering as well as
231
+ deadline propagation and timeout fail-closed behavior. Final-21 completed both strict reviewer
232
+ invocations under the non-interactive, ephemeral, ignore-config/rules, read-only contract.
233
+
234
+ ### WF-STABLE-014 — transcript validator accepts a started mutation with no terminal result
235
+
236
+ - Status: Closed-regression in beta.2; clean release E2E verified
237
+ - Severity: Critical
238
+ - Area: release evidence, append-only harness transcript, indeterminate mutation recovery
239
+ - Evidence: the incomplete `real-agent-release-final-6` transcript originally returned PASS with
240
+ `181` checked events even though two `task step-review` commentaries had no matching mutation
241
+ result and the Task remained at revision `6`. Final-8 then exposed the same class for read-only
242
+ commands: successful `milestone autonomy-prepare` had no terminal observation event, so the
243
+ wrapper log alone could not distinguish success, failure, or interruption.
244
+ - Risk: a hung or externally interrupted mutation can be presented as valid release evidence; an
245
+ agent may re-enter the same semantic transition without knowing whether the first process is
246
+ still active.
247
+ - Candidate evidence: the validator pairs trusted-harness invocation commentary with the exact
248
+ terminal navigation, mutation, or read-only observation result; rejects failed observations,
249
+ EOF with a pending invocation, and any second command before the pending invocation resolves.
250
+ Immutable final-6 and final-8 transcripts are retained as diagnostic evidence and rejected for
251
+ their respective stranded invocations.
252
+
253
+ ### WF-STABLE-015 — `task plan-set` navigation omits its exact inclusion contract
254
+
255
+ - Status: Closed-regression in beta.2; clean release E2E verified
256
+ - Severity: High
257
+ - Area: Task planning navigation, autonomous Plan construction, fail-before-write usability
258
+ - Evidence: the Delegate followed `next.action = task plan-set` and produced substantive acceptance
259
+ statements, but Core rejected the first Plan because it did not contain the opaque Task acceptance
260
+ ID `AC-001` as an exact array member. The Task remained planning at revision `1`; the transcript
261
+ correctly rejected the run as failed release evidence.
262
+ - Root cause: Core validates exact Task requirement and acceptance ID inclusion, while `next`
263
+ previously exposed only the action and revision. The machine-readable precondition was visible
264
+ only indirectly in large status/Brief output and was not part of the exact transition contract.
265
+ - Candidate evidence: every `task plan-set` navigation now returns `taskPlanContract` with exact
266
+ required requirement IDs, acceptance IDs, current risks, Brief hash, and current Knowledge Map binding. The
267
+ packaged gateway requires planners to copy those exact IDs before adding semantic detail.
268
+
269
+ ### WF-STABLE-016 — Git-completion navigation omits the required writer lease input
270
+
271
+ - Status: Closed-regression in beta.2; clean release E2E verified
272
+ - Severity: High
273
+ - Area: Task completion/merge navigation, writer lease continuity, autonomous execution
274
+ - Evidence: after successful implementation, strict Step review, Task review, result, and delegated
275
+ acceptance, `next` advertised `task merge` plus `gitMutationPolicy`. The Delegate followed that
276
+ response without `--writer-token`; the CLI rejected the invocation before any mutation.
277
+ - Root cause: the mandatory writer lease was enforced by each transition but absent from the exact
278
+ machine-readable navigation contract. The gateway therefore had no local precondition telling it
279
+ to retain and pass the sensitive lease on the first call.
280
+ - Candidate evidence: `next` returns a non-secret `writerTokenContract` for `task step-complete`,
281
+ `task submit`, `task merge`, and `task merge-confirm`, and omits it for non-consuming adjacent
282
+ transitions. The packaged gateway treats it as a first-call precondition and never prints or
283
+ persists the token.
284
+
285
+ ### WF-STABLE-017 — subcommand `--help` is treated as a lifecycle mutation
286
+
287
+ - Status: Closed-regression in beta.2; clean release E2E verified
288
+ - Severity: High
289
+ - Area: CLI command discovery, autonomous execution, release transcript integrity
290
+ - Evidence: after clean seven-Task assembly and an active owner autonomy grant, the real Delegate
291
+ invoked `milestone authorize --help`. The CLI dispatched the underlying lifecycle operation and
292
+ rejected it with `INVALID_ARGUMENT: Missing required option --id` before any state write.
293
+ - Root cause: CLI dispatch had no early help route; parsed `--help` remained an unused option while
294
+ noun/action matching entered the ordinary mutation implementation.
295
+ - Candidate evidence: help is intercepted before repository/state construction, returns exit `0`
296
+ with a machine-readable `readOnly` response at top-level, noun, and action scopes, and never
297
+ requests mutation inputs or changes workflow state. Critical autonomous transitions expose exact
298
+ required and optional option lists. The transcript validator recognizes safe trusted-harness help
299
+ observations, rejects mutation-style help inputs, and requires a fresh successful `next` before
300
+ any subsequent mutation.
301
+
302
+ ### WF-STABLE-018 — credential-bearing receipts are buried after large Task payloads
303
+
304
+ - Status: Closed-regression in beta.2; clean release E2E verified
305
+ - Severity: High
306
+ - Area: C1 handoff, writer lease continuity, autonomous credential consumption
307
+ - Evidence: the real Delegate completed initial assembly through `task handoff-prepare` with zero
308
+ rejected lifecycle calls, then reported that the one-time claim token was unavailable. The raw
309
+ successful CLI result proves that the token was emitted exactly once but was buried after roughly
310
+ 5 KiB of Task/event data; the wrapper did not truncate stdout.
311
+ - Root cause: credential-bearing values shared the same large compatibility payload as canonical
312
+ Task state and context. Although Core emitted the token correctly, the response supplied no
313
+ compact, prominent transfer receipt for an autonomous consumer.
314
+ - Candidate evidence: `task handoff-prepare` now emits first-field `credentialHandoff`, and `task
315
+ run` emits first-field `writerLeaseReceipt`. Both name the intended next action, source, target or
316
+ owner, option, and sensitivity; the exact credential occurs once, while legacy payload data and
317
+ read-only responses contain no duplicate secret.
318
+
319
+ ### WF-STABLE-019 — claimed Task run requires a lease that navigation says will be issued later
320
+
321
+ - Status: Closed-regression in beta.2; clean release E2E verified
322
+ - Severity: High
323
+ - Area: C1 claim, writer lease continuity, truthful Task navigation
324
+ - Evidence: the real Delegate consumed the first-field claim token and completed `task claim`, then
325
+ safely paused for bounded Git permission. After resume, Core-owned `task start` succeeded. The
326
+ following `next` advertised `task run` without a writer-token contract, and the exact call was
327
+ rejected because claimed posture already required the lease created by claim.
328
+ - Root cause: the first writer-lease receipt was emitted by `task run`, but claimed posture requires
329
+ that same credential as an input to run. `task claim` returned the lease only inside its large
330
+ payload, while action-only navigation intentionally omitted `task run` from the writer contract.
331
+ - Candidate evidence: `task claim` now emits first-field `writerLeaseReceipt` with `task run` as its
332
+ consuming action, and claimed `task run` navigation advertises the exact `--writer-token`
333
+ precondition. Unclaimed runs still acquire their initial lease without a token.
334
+
335
+ ### WF-STABLE-020 — transcript validator rejects safe top-level help
336
+
337
+ - Status: Closed-regression in beta.2
338
+ - Severity: High
339
+ - Area: release transcript integrity, read-only CLI discovery
340
+ - Evidence: phase 1 completed initial assembly, one complete Plan, and autonomy preparation with
341
+ zero rejected lifecycle calls. A successful trusted-harness top-level `--help` was immediately
342
+ followed by fresh successful `next`, but packaged validation returned
343
+ `Unsupported read-only observation`.
344
+ - Root cause: CLI help semantics covered top-level, noun, and action scopes, while the transcript
345
+ recognizer's regular expression required at least one noun before `--help`.
346
+ - Candidate evidence: the validator recognizes bare top-level `--help` as safe help, retains the
347
+ mandatory fresh-`next` barrier, and still rejects failed help or embedded mutation inputs.
348
+
349
+ ### WF-STABLE-021 — checkpoint guidance permits parallel invocations rejected by release validation
350
+
351
+ - Status: Closed-regression in beta.2; clean release E2E verified
352
+ - Severity: Critical
353
+ - Area: gateway protocol, release transcript integrity, lifecycle checkpoints
354
+ - Evidence: `real-agent-release-final-21` completed phase-1 initial assembly with no individually
355
+ rejected command, but four times started `next` before the paired `status` had emitted its
356
+ terminal result (or vice versa). The strict validator rejected the first overlap with
357
+ `INCOMPLETE_INVOCATION` at event index `29`, before owner grant or Task execution.
358
+ - Root cause: the packaged gateway required both `status` and `next` after each boundary but did not
359
+ state that the first invocation must terminate before the second starts. Real agents may
360
+ parallelize independent-looking read-only calls, while the append-only validation contract
361
+ deliberately treats overlapping lifecycle invocations as indeterminate evidence.
362
+ - Candidate evidence: Skill, protocol, recovery guide, and E2E Brief now require terminal
363
+ `status` followed by terminal `next` and explicitly prohibit parallel tool batches. An exact
364
+ transcript fixture proves that overlapping checkpoint starts remain rejected. The final clean
365
+ `real-agent-release-final-21` followed every `status` then `next` checkpoint sequentially through
366
+ final acceptance; the complete transcript validates at `250/250` with no overlap.
367
+
368
+ ### WF-STABLE-022 — raw real-agent evidence persists one-time C1 credentials
369
+
370
+ - Status: Closed-regression in beta.2; clean release E2E verified
371
+ - Severity: Critical
372
+ - Area: real-agent evidence, C1 credentials, release security
373
+ - Evidence: the corrected `real-agent-release-final-21` consumed credential-first handoff, claim,
374
+ and run receipts successfully, but Codex `exec --json` serialized the literal `--claim-token`,
375
+ `--writer-token`, and credential-bearing stdout into the raw session JSONL. The semantic lifecycle
376
+ log remained secret-free, but the raw diagnostic artifact contradicted the stated memory-only
377
+ handling rule.
378
+ - Root cause: raw Codex JSONL was redirected directly to evidence without a streaming redaction
379
+ boundary. A language-model tool call necessarily contains the CLI argument it invokes, even when
380
+ the agent does not echo the value in prose.
381
+ - Candidate evidence: a streaming structural sanitizer removes exact credential fields and CLI
382
+ options before JSONL is persisted, preserves non-secret token metrics, and provides a fail-closed
383
+ post-run inspection mode. Deterministic tests cover command arguments, embedded receipt JSON,
384
+ structured receipts, and already-sanitized evidence. The final clean final-21 used the streaming
385
+ sanitizer from process start for both phases; fail-closed inspection reports zero credential
386
+ findings in both persisted raw JSONL artifacts.
387
+
388
+ ### WF-STABLE-023 — claimed strict-review navigation omits its writer lease precondition
389
+
390
+ - Status: Closed-regression in beta.2; clean release E2E verified
391
+ - Severity: Critical
392
+ - Area: claimed C1 review, truthful navigation, writer lease continuity
393
+ - Evidence: sanitized `real-agent-release-final-21` completed one guarded Step and its Core-owned
394
+ commit, then `next` advertised `task step-review` without `writerTokenContract`. The exact first
395
+ call was rejected non-mutating with `TRANSITION_BLOCKED` because claimed posture requires the
396
+ active lease token.
397
+ - Root cause: navigation enumerated always-lease-bound completion actions and claimed `task run`,
398
+ but not the later claimed-C1 mutations that call the same handoff authorization predicate.
399
+ - Candidate evidence: writer-token navigation is now posture-aware for every claimed-C1 action
400
+ that can consume an optional lease, including `task step-review` and `task review-launch`.
401
+ Regressions cover both claimed review boundaries while preserving token-free unclaimed review
402
+ navigation. The final clean final-21 exposed the contract and succeeded on the first call for
403
+ both `task step-review` and `task review-launch`, with zero rejected lifecycle mutations.
404
+
405
+ ## Beta.2 current evidence
406
+
407
+ - The first `real-agent-release-final-21` is immutable diagnostic evidence for WF-STABLE-021: its
408
+ lifecycle commands individually succeeded, but packaged validation rejected four overlapping
409
+ checkpoint pairs. It stopped before owner grant and was not resumed.
410
+
411
+ - Final clean `real-agent-release-final-21` used a rebuilt tarball with SHA-256
412
+ `24a7b69b0ada9d922946a8c0c593384d5806d58a35e04fae171d26f83585ac4f` and an isolated
413
+ `final21` marketplace/plugin cache. Phase 1 assembled exactly seven linked Tasks and stopped at
414
+ the autonomy gate; phase 2 completed the sole required guarded Task, strict Step review,
415
+ content-only context refresh, final review, delegated acceptance, Core merge, Milestone
416
+ validation, and delegated Milestone final acceptance. Task
417
+ `TASK-01M04B516YDHY5D1B78S2XEV0S` is `merged` at revision `14`; Milestone
418
+ `MS-01M04B42MC7VCEKTQ7K8ZYK0G1` is `accepted` at revision `5`; accepted head is
419
+ `64a2e58e030dfb95f5f5724fb1825b02143ffaa7`. Final `next` is repository idle with
420
+ `discovery start`. Transcript validation passes `250/250`, both credential scans report zero
421
+ findings, waived Tasks executed is zero, and rejected lifecycle mutations is zero.
422
+ - Post-WF-STABLE-023 full sequential validation on Node `24.17.0` passed `153/153` in
423
+ `644031 ms`. Plugin check, release check, isolated-cache dry-pack, downstream smoke, root
424
+ workflow regression, and `git diff --check` passed. The E2E-tested pre-evidence-doc tarball SHA-1 is
425
+ `4519d05b31fa08b39f5f5f9f9e2b9f0e13941935`.
426
+
427
+ - Post-WF-STABLE-020 sequential package validation passed `149/149` under Node `24.17.0`.
428
+ Current validation accepts the immutable `final-20` phase-1 transcript as `132/132`, while its
429
+ packaged pre-fix validator deterministically rejects it. Rebuilt package dry-pack, plugin check,
430
+ release check, downstream smoke, root regression, and `git diff --check` passed; dry-pack shasum
431
+ is `d5ca042dd1bb90e52c6d5313dafa6730e5d3795f`.
432
+ - Post-WF-STABLE-019 sequential package validation passed `149/149` under Node `24.17.0`.
433
+ Rebuilt package dry-pack, plugin validation, release check, downstream smoke, root workflow
434
+ regression, and `git diff --check` all passed; dry-pack shasum is
435
+ `547166399294368c89ae7c581192cf81a6391638`.
436
+ - Post-WF-STABLE-018 sequential package validation passed `147/147` under Node `24.17.0`.
437
+ Rebuilt package dry-pack with isolated npm cache, plugin validation, release check, downstream
438
+ smoke, root workflow regression, and `git diff --check` all passed; package shasum is
439
+ `04571ca2f51f48661c984e8d16a2e32c336efe64`.
440
+ - Final post-WF-STABLE-015 sequential package validation passed `141/141` under Node `24.17.0`.
441
+ - Package archive, downstream smoke, plugin validation, release check, and root workflow regression
442
+ passed on the rebuilt candidate. One root-regression setup attempt lacked Node on the child-process
443
+ `PATH`; the authoritative rerun with the declared Node 24 environment passed.
444
+ - Exact copied `signal_v4` snapshot replay passed without live-project or live-state writes.
445
+ - Disposable final-6 phase 1 assembled seven Tasks and stopped cleanly at the autonomy boundary.
446
+ Phase 2 authorized and completed the guarded Step, then correctly stopped as invalid evidence
447
+ when strict Step review remained indeterminate.
448
+ - Disposable final-11 assembled all seven Tasks and authorized the Milestone, then stopped on the
449
+ first rejected `task plan-set` because exact `AC-001` inclusion was not discoverable from `next`.
450
+ It is immutable diagnostic evidence for WF-STABLE-015, not release evidence.
451
+ - Disposable final-12 reached delegated Task acceptance and `task merge`, then stopped on the first
452
+ rejected merge because `next` did not advertise mandatory `--writer-token`. It is immutable
453
+ diagnostic evidence for WF-STABLE-016, not release evidence.
454
+ - Disposable final-13 passed clean bootstrap/preflight but the real Codex transport failed before
455
+ the first workflow action. It made no workflow mutation and is external diagnostic evidence, not
456
+ a package-defect or release signal.
457
+ - Disposable final-16 cleared transport, completed initial assembly and the owner grant, then
458
+ stopped on the first rejected `milestone authorize --help`. It is immutable diagnostic evidence
459
+ for WF-STABLE-017, not release evidence.
460
+ - Disposable final-17 completed seven-Task initial assembly with zero rejected mutations and proved
461
+ read-only help plus fresh `next`, but the packaged validator still rejected that help observation.
462
+ It stopped before owner grant and is immutable WF-STABLE-017 diagnostic evidence.
463
+ - Disposable final-18 completed initial assembly through C1 handoff preparation with zero rejected
464
+ lifecycle calls. It then exposed WF-STABLE-018: the exact one-time claim token existed in complete
465
+ stdout but was buried after the large Task/event payload and was not retained by the Delegate.
466
+ The run is immutable diagnostic evidence and is not eligible for continuation or release evidence.
467
+ - Disposable final-19 completed seven-Task assembly, delegated authorization, credential-first
468
+ handoff/claim, and bounded Core `task start`. It then exposed WF-STABLE-019 when claimed
469
+ `task run` was advertised without its already-bound lease precondition and was rejected once.
470
+ The run is immutable diagnostic evidence and is not eligible for continuation.
471
+ - Disposable final-20 completed clean seven-Task phase-1 assembly and autonomy preparation with no
472
+ rejected lifecycle call, then exposed WF-STABLE-020 when transcript validation rejected safe
473
+ top-level help plus fresh `next`. No owner grant was issued; the run is immutable diagnostic
474
+ evidence and is not eligible for continuation.
475
+ - The rebuilt tarball, fresh clean final-acceptance/idle E2E, transcript/security checks, and all
476
+ deterministic/package release gates are green. The independent source/evidence audit completed
477
+ with `PASS`, found no material blocker, and confirmed the beta.2 release recommendation.
478
+
17
479
  ## Workflow findings closed for beta.1
18
480
 
19
481
  ### WF-STABLE-001 — `locks repair` exposes a full writer token
@@ -115,7 +577,7 @@ Last reviewed: 2026-08-15.
115
577
  active but non-completable Milestone.
116
578
  - Stable-release requirement:
117
579
  - ship a canonical `split-required` operator/delegate recovery prompt;
118
- - require `status`/`next` after every state boundary;
580
+ - require sequential terminal `status` then terminal `next` after every state boundary;
119
581
  - distinguish Task creation, replacement linkage, membership evolution, and execution
120
582
  reauthorization;
121
583
  - prohibit manual state editing and resumption of the failed Step.
@@ -29,9 +29,29 @@ adoption posture.
29
29
  используйте внешний точный runner alpha.7 только для `update rescue-preflight`. Продолжать
30
30
  можно лишь при `eligible=true`; допустимы только перечисленные им `locks repair` и
31
31
  `task step-review`. Этот путь не меняет dependency и не разрешает другие команды alpha.7.
32
+ Для `task step-review` используйте lifecycle-actor из `next` или rescue-preflight; это claimant
33
+ или required actor, а не identity независимого reviewer-процесса.
32
34
  После terminal review выполните обычный Knowledge reconcile/rebind, доведите Task до безопасной
33
35
  границы и только затем обновляйте package/lock обычным способом.
34
36
 
37
+ ### Исключение beta.10 для retained reviewed commit
38
+
39
+ Если corrective replan уже убрал evidence завершённой попытки из текущего Step, но её product
40
+ commit остался в Git между `baseCommit` и новым dependency-only HEAD, beta.10 может штатно принять
41
+ такую историю. Это допустимо только при полной криптографически целостной strict-review цепочке с
42
+ решением `passed` и verified reviewer attestation. Pending/failed review, отдельный `evidence.json`,
43
+ повреждённый sidecar или неизвестный product commit не подходят.
44
+
45
+ Не регистрируйте сохранённый product commit вручную в `systemCommits`. После установки beta.10
46
+ выполните свежий `next`; продолжайте только если он рекламирует
47
+ `update dependency-provenance-recover`. Затем последовательно выполните read-only
48
+ `update dependency-provenance-preflight`, проверьте `eligible=true`, точные Task revision/HEAD,
49
+ пустой `blockers` и ожидаемый список `retainedHistoricalCommits`, и только после этого вызывайте
50
+ рекламируемый recover с той же revision. Успешный recover записывает dependency HEAD в
51
+ `systemCommits`, а исторические reviewed product commits — отдельно в recovery evidence. После
52
+ него обязательны последовательные `status` и `next`; выполняйте возвращённый Knowledge reconcile
53
+ или `task context-refresh`, если manifest/lock сделали Knowledge Map stale.
54
+
35
55
  ## 1. Подготовьте отдельный чат обновления
36
56
 
37
57
  Не обновляйте пакет во время выполняющегося Worker Step. Дождитесь завершения текущего ответа
@@ -78,6 +98,15 @@ plugin за пределами workspace. Это ожидаемая границ
78
98
  8. `update preflight` до изменения подтвердил чистую lifecycle-границу.
79
99
  9. Для alpha.6 существующий schema 2 проект либо уже имеет `adoption-posture.jsonl`,
80
100
  либо `next`/`status` требуют `state adoption-prepare` и затем `state adoption-apply`.
101
+ 10. При переходе с protocol v1 на v2 неизменённый и криптографически целостный adoption sidecar
102
+ остаётся читаемым как legacy evidence. Runtime не переписывает его автоматически; неизвестная
103
+ версия или смешанная protocol-цепочка считаются повреждением state.
104
+
105
+ Protocol v2 меняет navigation/CLI corrective-replan и lifecycle epoch, но не Task state schema.
106
+ До обновления не должно быть `in_progress` Step, writer lease, Core Task operation mutex или
107
+ незавершённого corrective Task journal. Такие состояния требуют штатного completion/repair старой
108
+ версией; переносить или удалять journal вручную нельзя. Старые grants/receipts не получают authority
109
+ в epoch 2 — новый corrective replan всегда проходит новый prepare/human-gate/execute цикл.
81
110
 
82
111
  Изменение `projectId`, исчезновение сущностей или ошибка unsupported state schema — причина
83
112
  остановиться. Не соглашайтесь на «починку» удалением state. Агент должен вернуть dependency к
@@ -224,14 +253,40 @@ Grant сам не запускает агента и не прикрепляет
224
253
  `next.delegatedApprovalOptions`. Внутренние Worker и Independent Reviewer grant не используют:
225
254
  его применяет координатор после получения их evidence.
226
255
 
227
- Рекомендуемые названия чатов:
256
+ Все автоматически создаваемые чаты получают проектный монотонный номер из
257
+ `plugins/codex-workflow-gateway/scripts/chat-registry.mjs`; `count + 1` запрещён. Основные формы:
228
258
 
229
259
  ```text
230
- NN - M2 delegated coordinator
231
- NN - M2/T1 delegated execution
232
- NN - Standalone delegated task
260
+ #NNN · M<NN> · Coord · <Milestone title> · <MS-ID>
261
+ #NNN · M<NN>/T<NN> · Task · <Task title> · <TASK-ID>
233
262
  ```
234
263
 
264
+ Task-чат создавайте только как новую standalone Codex task (`create_thread`) в том же Project, а
265
+ не как fork/handoff/продолжение Milestone-чата. В начальный prompt передавайте только exact
266
+ TaskContextPacket: repository, точные Milestone/Task ID и ordinal, текущие Task revision/title,
267
+ Brief/Plan bindings, Task requirements/acceptance, свежий маршрут `status -> next --task <Task
268
+ ID>`, Task-local scope/checks/stop conditions и exact actor/grant ID при необходимости. Не
269
+ переносите transcript Milestone-чата, историю recovery/approval, соседние Tasks, reasoning или
270
+ confirmation/handoff/writer credentials.
271
+
272
+ До создания проверьте, нет ли уже чата для exact Task ID. После создания передайте прочитанный
273
+ title в registry readback и применяйте только возвращённый deterministic fallback. Title должен
274
+ быть уникален и содержать exact `#NNN`, membership ordinal и ID. Input должен состоять из
275
+ TaskContextPacket; допустима только добавленная Codex App служебная `codex_delegation`-обёртка с
276
+ `source_thread_id`, но не parent turns или transcript. Если title отсутствует или нормализован
277
+ неверно, переименуйте и перепроверьте. Ошибка `create_thread` допускает один
278
+ последовательный retry после проверки списка, но не разрешает fallback на `fork_thread`.
279
+ Создавайте или переиспользуйте Task-чат непосредственно перед dispatch этой Task, а не как пустой
280
+ placeholder для всего membership; `T<NN>` берите только из утверждённого membership order.
281
+
282
+ После dispatch Milestone-координатор не заканчивает turn: он ждёт exact Task-чат bounded-вызовами
283
+ `wait_threads`, сохраняет cursor, читает completed/attention результат и обязательно сверяет его
284
+ через `status -> next`. Recoverable non-human продолжение отправляется в тот же чат через
285
+ `send_message_to_thread`; пользователь нужен только для mandatory human/semantic gate, внешнего
286
+ разрешения, unrecoverable integrity conflict или исчерпанного infrastructure retry. Следующий
287
+ Task-чат создаётся только после Core-подтверждения `terminal + merged`. Завершённый Task-чат сам по
288
+ себе не доказывает terminal state и не пробуждает уже завершившийся coordinator turn.
289
+
235
290
  После завершения автономного окна попросите отдельный контрольный чат показать
236
291
  `delegation list`, использованные authorization events и отозвать ненужный широкий grant.
237
292