create-agdf 0.20.2 → 0.30.0

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 (836) hide show
  1. package/README.md +148 -191
  2. package/generated/.agdf/control/README.md +31 -110
  3. package/generated/.agdf/control/planned-urs.md +95 -0
  4. package/generated/.agdf/control/templates/RUN_STATE.md +15 -64
  5. package/generated/.agdf/control/templates/artefacts/UR.md +1 -1
  6. package/generated/.agents/plugins/marketplace.json +12 -0
  7. package/generated/.opencode/agdf-agent-router.md +3 -3
  8. package/generated/.opencode/agdf-interaction-locales.json +2668 -2682
  9. package/generated/.opencode/contracts/closeout.md +1 -1
  10. package/generated/.opencode/contracts/control-scaffold.md +63 -46
  11. package/generated/.opencode/contracts/gate-artifact-preparation.md +58 -48
  12. package/generated/.opencode/contracts/gate-transition.md +5 -6
  13. package/generated/.opencode/contracts/interaction.md +43 -126
  14. package/generated/.opencode/contracts/modes.md +4 -3
  15. package/generated/.opencode/contracts/prd-definition.md +6 -6
  16. package/generated/.opencode/contracts/quality.md +10 -2
  17. package/generated/.opencode/contracts/request-activation.md +9 -8
  18. package/generated/.opencode/contracts/sd-definition.md +3 -3
  19. package/generated/.opencode/contracts/task-target-resolution.md +24 -0
  20. package/generated/.opencode/contracts/tp-definition.md +1 -1
  21. package/generated/.opencode/contracts/ur-definition.md +41 -7
  22. package/generated/.opencode/skills/agdf-brownfield-analysis/SKILL.md +8 -5
  23. package/generated/.opencode/skills/agdf-clean-implementation-review/SKILL.md +3 -2
  24. package/generated/.opencode/skills/agdf-code-review/SKILL.md +5 -3
  25. package/generated/.opencode/skills/agdf-delivery-closeout/SKILL.md +3 -2
  26. package/generated/.opencode/skills/agdf-delivery-path-search/SKILL.md +3 -2
  27. package/generated/.opencode/skills/agdf-gate-check/SKILL.md +35 -31
  28. package/generated/.opencode/skills/agdf-prd-definition/SKILL.md +3 -2
  29. package/generated/.opencode/skills/agdf-qa-gate/SKILL.md +3 -2
  30. package/generated/.opencode/skills/agdf-release-or/SKILL.md +8 -5
  31. package/generated/.opencode/skills/agdf-sd-definition/SKILL.md +3 -2
  32. package/generated/.opencode/skills/agdf-task-plan-review/SKILL.md +3 -2
  33. package/generated/.opencode/skills/agdf-tp-definition/SKILL.md +3 -2
  34. package/generated/.opencode/skills/agdf-ur-definition/SKILL.md +12 -4
  35. package/generated/.opencode/skills/agdf-ux-intent-definition/SKILL.md +5 -4
  36. package/generated/plugins/agdf/.claude-plugin/plugin.json +3 -2
  37. package/generated/plugins/agdf/.codex-plugin/plugin.json +1 -1
  38. package/generated/plugins/agdf/companion/assignment.mjs +65 -0
  39. package/generated/plugins/agdf/companion/companion.json +4 -0
  40. package/generated/plugins/agdf/companion/core.mjs +16 -0
  41. package/generated/plugins/agdf/companion/figure.mjs +137 -0
  42. package/generated/plugins/agdf/companion/gate-bar.mjs +54 -0
  43. package/generated/plugins/agdf/companion/hooks.json +3 -0
  44. package/generated/plugins/agdf/companion/locales.json +200 -0
  45. package/generated/plugins/agdf/companion/localization.mjs +89 -0
  46. package/generated/plugins/agdf/companion/notice.mjs +90 -0
  47. package/generated/plugins/agdf/companion/persistence.mjs +36 -0
  48. package/generated/plugins/agdf/companion/register.mjs +444 -0
  49. package/generated/plugins/agdf/companion/run-state.mjs +110 -0
  50. package/generated/plugins/agdf/companion/state.mjs +48 -0
  51. package/generated/plugins/agdf/companion/view.mjs +84 -0
  52. package/generated/plugins/agdf/control/README.md +31 -110
  53. package/generated/plugins/agdf/control/planned-urs.md +95 -0
  54. package/generated/plugins/agdf/control/templates/RUN_STATE.md +15 -64
  55. package/generated/plugins/agdf/control/templates/artefacts/UR.md +1 -1
  56. package/generated/plugins/agdf/mcp/server/README.md +119 -7
  57. package/generated/plugins/agdf/mcp/server/package.json +12 -7
  58. package/generated/plugins/agdf/mcp/server/src/generation-entry.js +3 -85
  59. package/generated/plugins/agdf/mcp/server/src/generation-protocol.js +2 -44
  60. package/generated/plugins/agdf/mcp/server/src/generation-runtime.js +94 -0
  61. package/generated/plugins/agdf/mcp/server/src/generation-thread-entry.js +8 -0
  62. package/generated/plugins/agdf/mcp/server/src/generation.js +64 -20
  63. package/generated/plugins/agdf/mcp/server/src/main.js +42 -10
  64. package/generated/plugins/agdf/mcp/server/src/server.js +24 -15
  65. package/generated/plugins/agdf/mcp/server/src/stdio-output.js +42 -0
  66. package/generated/plugins/agdf/mcp/server/src/worker-entry.js +2 -2
  67. package/generated/plugins/agdf/mcp/server/src/worker.js +53 -7
  68. package/generated/plugins/agdf/mcp/server/ui/cockpit.html +31 -31
  69. package/generated/plugins/agdf/mcp/server/ui/decision-manifest.json +3 -3
  70. package/generated/plugins/agdf/mcp/server/ui/decision.html +36 -36
  71. package/generated/plugins/agdf/mcp/server/ui/manifest.json +4 -4
  72. package/generated/plugins/agdf/meta/agdf-agent-router.md +3 -3
  73. package/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
  74. package/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
  75. package/generated/plugins/agdf/meta/agdf-interaction-locales.json +2668 -2682
  76. package/generated/plugins/agdf/meta/agdf-mcp-capability.json +1 -1
  77. package/generated/plugins/agdf/meta/agdf-plugin.definition.json +8 -3
  78. package/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
  79. package/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
  80. package/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
  81. package/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
  82. package/generated/plugins/agdf/meta/contracts/interaction.md +43 -126
  83. package/generated/plugins/agdf/meta/contracts/modes.md +4 -3
  84. package/generated/plugins/agdf/meta/contracts/prd-definition.md +6 -6
  85. package/generated/plugins/agdf/meta/contracts/quality.md +10 -2
  86. package/generated/plugins/agdf/meta/contracts/request-activation.md +9 -8
  87. package/generated/plugins/agdf/meta/contracts/sd-definition.md +3 -3
  88. package/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
  89. package/generated/plugins/agdf/meta/contracts/tp-definition.md +1 -1
  90. package/generated/plugins/agdf/meta/contracts/ur-definition.md +41 -7
  91. package/generated/plugins/agdf/meta/copilot-payload-baseline.json +3 -3
  92. package/generated/plugins/agdf/meta/distribution-profile-history.json +7 -0
  93. package/generated/plugins/agdf/runtime/agdf-session-check.js +25 -21
  94. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
  95. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
  96. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-interaction-locales.json +2668 -2682
  97. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-plugin.definition.json +8 -3
  98. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
  99. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
  100. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
  101. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
  102. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/interaction.md +43 -126
  103. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/modes.md +4 -3
  104. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/prd-definition.md +6 -6
  105. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/quality.md +10 -2
  106. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/request-activation.md +9 -8
  107. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/sd-definition.md +3 -3
  108. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
  109. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/tp-definition.md +1 -1
  110. package/generated/plugins/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/ur-definition.md +41 -7
  111. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/codex-document-command.js +195 -0
  112. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/command-registry.js +82 -148
  113. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/control-maintenance-command.js +8 -37
  114. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/parse-args.js +98 -16
  115. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/planned-command.js +55 -0
  116. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/project-read-command.js +35 -0
  117. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/run-command-aliases.js +116 -0
  118. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/runtime-context.js +1 -59
  119. package/generated/plugins/agdf/runtime/create-agdf/lib/cli/validation-handlers.js +33 -103
  120. package/generated/plugins/agdf/runtime/create-agdf/lib/control-evaluation/git-observation.js +7 -5
  121. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/startup.js +2 -2
  122. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-decision-protocol.js +40 -0
  123. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-dispatch-runtime.js +71 -306
  124. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-entry.js +3 -24
  125. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
  126. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-runtime.js +29 -0
  127. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
  128. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/owner-client.js +79 -0
  129. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/package.js +14 -80
  130. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/plugin-runtime.js +29 -9
  131. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-lifecycle/thread-owner.js +164 -0
  132. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-owner-protocol.js +1 -0
  133. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-protocol-runtime.js +308 -0
  134. package/generated/plugins/agdf/runtime/create-agdf/lib/mcp-worker-runtime.js +152 -0
  135. package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/control-command-service.js +22 -7
  136. package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/control-context.js +8 -1
  137. package/generated/plugins/agdf/runtime/create-agdf/lib/runtime/validator-application.js +2 -2
  138. package/generated/plugins/agdf/runtime/create-agdf/package.json +5 -1
  139. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/closeout-readiness.js +10 -2
  140. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
  141. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
  142. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
  143. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
  144. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/doctor.js +162 -172
  145. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-check.js +10 -9
  146. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-inputs.js +11 -0
  147. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-pure.js +446 -0
  148. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
  149. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/next-action.js +2 -0
  150. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
  151. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
  152. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/required-files.js +9 -7
  153. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
  154. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state.js +15 -9
  155. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
  156. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
  157. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared-value.js +7 -0
  158. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared.js +5 -254
  159. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
  160. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/ur-readiness.js +7 -2
  161. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/verified-change.js +11 -9
  162. package/{runtime/core/lib/control-evaluation/backlog-vocabulary.js → generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/work-vocabulary.js} +2 -2
  163. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/artifact-readiness.js +5 -3
  164. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/authoring-inputs.js +110 -0
  165. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
  166. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-context.js +2 -1
  167. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-contract.js +11 -4
  168. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-list.d.ts +10 -6
  169. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-list.js +32 -41
  170. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-session.js +8 -8
  171. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-work.js +33 -0
  172. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit.js +75 -44
  173. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/contract.js +124 -32
  174. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/decision-session.js +53 -11
  175. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
  176. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
  177. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-state.js +48 -0
  178. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/result.js +61 -0
  179. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/selection.js +9 -3
  180. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/service.js +119 -67
  181. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/compatibility.js +42 -132
  182. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/contract.js +5 -5
  183. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/presentation.js +27 -119
  184. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/service.js +9 -37
  185. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-pool.js +25 -9
  186. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-worker.js +4 -3
  187. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-reader.js +92 -0
  188. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-worker.js +11 -0
  189. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/fs.js +18 -0
  190. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-read/snapshot.js +68 -17
  191. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/aggregate.js +3 -1
  192. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-command.js +13 -10
  193. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-operations.js +10 -7
  194. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
  195. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-bindings.js +10 -7
  196. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/canonical-initialization.js +761 -0
  197. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/control-layout.js +183 -0
  198. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-action-contract.js +10 -1
  199. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-action-service.js +24 -3
  200. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-material-contract.js +2 -1
  201. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/evidence-bindings.js +7 -7
  202. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/git-identity.js +86 -0
  203. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/index.js +0 -1
  204. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/input-resolution.js +99 -0
  205. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-entry.js +273 -0
  206. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-handoff.js +174 -0
  207. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-inventory.js +90 -0
  208. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
  209. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin.js +40 -0
  210. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-decision.js +12 -7
  211. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-delivery.js +90 -0
  212. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-render.js +5 -2
  213. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-review.js +3 -2
  214. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-snapshot.js +9 -6
  215. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/recording-formats.js +12 -16
  216. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
  217. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-closure.js +343 -0
  218. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-contract.js +33 -250
  219. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-schema.js +508 -0
  220. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-service.js +198 -34
  221. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-create-command.js +60 -0
  222. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.d.ts +14 -0
  223. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.js +40 -0
  224. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-input-resolution.js +72 -0
  225. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory-reader.js +31 -0
  226. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory.js +179 -0
  227. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-material.js +211 -0
  228. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-mutation.js +51 -0
  229. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-identity.js +2 -1
  230. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-proof.js +7 -4
  231. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-status.js +20 -4
  232. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operations.js +70 -13
  233. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
  234. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
  235. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-render.js +8 -7
  236. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation.js +45 -21
  237. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recording.js +10 -179
  238. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
  239. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-history.js +23 -16
  240. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision.js +84 -161
  241. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal-compute.js +19 -44
  242. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal.js +6 -1
  243. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-source-revisions.js +19 -18
  244. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-document.js +110 -42
  245. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-edits.js +13 -5
  246. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-parser.js +14 -6
  247. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-reader.js +27 -18
  248. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-repository.js +112 -48
  249. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-resolver.js +12 -15
  250. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-writer.js +21 -377
  251. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-pending.js +2 -1
  252. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-transaction.js +125 -114
  253. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-steps.js +136 -248
  254. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-store-inspection.js +14 -2
  255. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-verified-change.js +81 -0
  256. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
  257. package/{runtime/core/lib/control-state/backlog-summary-shape.js → generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-work-summary-shape.js} +7 -19
  258. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-continuation/service.js +5 -66
  259. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/persistence.js +26 -8
  260. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
  261. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/index.js +14 -6
  262. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/interaction-catalog.js +3 -3
  263. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/interaction-presentation.js +29 -11
  264. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-hints.js +46 -0
  265. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-resolution.js +98 -0
  266. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-schema.js +15 -0
  267. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-resource-contract.js +1 -1
  268. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/mcp-tool-errors.js +31 -15
  269. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/owned-file-lock.js +266 -0
  270. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/owner-placement.js +50 -0
  271. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/canonical-init-plan.js +34 -0
  272. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/configuration.js +92 -0
  273. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/context.js +7 -11
  274. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/resources/language-preference.js +59 -0
  275. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
  276. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/runtime/plugin-provenance.js +173 -18
  277. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
  278. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/contract.js +28 -9
  279. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-intake.js +11 -5
  280. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
  281. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/mcp-continuation.js +64 -0
  282. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/prd-definition.js +14 -5
  283. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/sd-definition.js +2 -1
  284. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/service.js +49 -14
  285. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/tp-definition.js +2 -1
  286. package/generated/plugins/agdf/runtime/runtime-manifest.json +2 -2
  287. package/generated/plugins/agdf/scripts/check-runtime-integrity.mjs +60 -42
  288. package/generated/plugins/agdf/scripts/instruction-footprint.mjs +5 -5
  289. package/generated/plugins/agdf/skills/brownfield-analysis/SKILL.md +8 -5
  290. package/generated/plugins/agdf/skills/clean-implementation-review/SKILL.md +3 -2
  291. package/generated/plugins/agdf/skills/code-review/SKILL.md +5 -3
  292. package/generated/plugins/agdf/skills/delivery-closeout/SKILL.md +3 -2
  293. package/generated/plugins/agdf/skills/delivery-path-search/SKILL.md +3 -2
  294. package/generated/plugins/agdf/skills/gate-check/SKILL.md +35 -31
  295. package/generated/plugins/agdf/skills/prd-definition/SKILL.md +3 -2
  296. package/generated/plugins/agdf/skills/qa-gate/SKILL.md +3 -2
  297. package/generated/plugins/agdf/skills/release-or/SKILL.md +8 -5
  298. package/generated/plugins/agdf/skills/sd-definition/SKILL.md +3 -2
  299. package/generated/plugins/agdf/skills/task-plan-review/SKILL.md +3 -2
  300. package/generated/plugins/agdf/skills/tp-definition/SKILL.md +3 -2
  301. package/generated/plugins/agdf/skills/ur-definition/SKILL.md +12 -4
  302. package/generated/plugins/agdf/skills/ux-intent-definition/SKILL.md +5 -4
  303. package/generated/plugins/agdf/submission/openai/availability.md +1 -1
  304. package/generated/plugins/agdf/submission/openai/capability-matrix.json +1 -1
  305. package/generated/plugins/agdf/submission/openai/release-notes.md +9 -1
  306. package/generated/plugins/agdf/submission/openai/reviewer-cases.json +1 -1
  307. package/generated/plugins/agdf-planning/.codex-plugin/plugin.json +40 -0
  308. package/generated/plugins/agdf-planning/README.md +21 -0
  309. package/generated/plugins/agdf-planning/assets/agdf-icon.svg +16 -0
  310. package/generated/plugins/agdf-planning/assets/agdf-logo.svg +16 -0
  311. package/generated/plugins/agdf-planning/meta/agdf-planning.definition.json +9 -0
  312. package/generated/plugins/agdf-planning/plugin.json +45 -0
  313. package/generated/plugins/agdf-planning/skills/planning/SKILL.md +56 -0
  314. package/generated/plugins/copilot/agdf/.agdf-payload-inventory.json +878 -475
  315. package/generated/plugins/copilot/agdf/control/README.md +31 -110
  316. package/generated/plugins/copilot/agdf/control/planned-urs.md +95 -0
  317. package/generated/plugins/copilot/agdf/control/templates/RUN_STATE.md +15 -64
  318. package/generated/plugins/copilot/agdf/control/templates/artefacts/UR.md +1 -1
  319. package/generated/plugins/copilot/agdf/mcp/server/README.md +119 -7
  320. package/generated/plugins/copilot/agdf/mcp/server/package.json +12 -7
  321. package/generated/plugins/copilot/agdf/mcp/server/src/generation-entry.js +3 -85
  322. package/generated/plugins/copilot/agdf/mcp/server/src/generation-protocol.js +2 -44
  323. package/generated/plugins/copilot/agdf/mcp/server/src/generation-runtime.js +94 -0
  324. package/generated/plugins/copilot/agdf/mcp/server/src/generation-thread-entry.js +8 -0
  325. package/generated/plugins/copilot/agdf/mcp/server/src/generation.js +64 -20
  326. package/generated/plugins/copilot/agdf/mcp/server/src/main.js +42 -10
  327. package/generated/plugins/copilot/agdf/mcp/server/src/server.js +24 -15
  328. package/generated/plugins/copilot/agdf/mcp/server/src/stdio-output.js +42 -0
  329. package/generated/plugins/copilot/agdf/mcp/server/src/worker-entry.js +2 -2
  330. package/generated/plugins/copilot/agdf/mcp/server/src/worker.js +53 -7
  331. package/generated/plugins/copilot/agdf/meta/agdf-agent-router.md +3 -3
  332. package/generated/plugins/copilot/agdf/meta/agdf-plugin.definition.json +8 -3
  333. package/generated/plugins/copilot/agdf/meta/distribution-profile-history.json +7 -0
  334. package/generated/plugins/copilot/agdf/plugin.json +1 -1
  335. package/generated/plugins/copilot/agdf/runtime/agdf-session-check.js +25 -21
  336. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.json +9 -0
  337. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-defaults.schema.json +20 -0
  338. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-interaction-locales.json +2668 -2682
  339. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/agdf-plugin.definition.json +8 -3
  340. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/closeout.md +1 -1
  341. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/control-scaffold.md +63 -46
  342. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
  343. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/gate-transition.md +5 -6
  344. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/interaction.md +43 -126
  345. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/modes.md +4 -3
  346. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/prd-definition.md +6 -6
  347. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/quality.md +10 -2
  348. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/request-activation.md +9 -8
  349. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/sd-definition.md +3 -3
  350. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/task-target-resolution.md +24 -0
  351. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/tp-definition.md +1 -1
  352. package/generated/plugins/copilot/agdf/runtime/create-agdf/generated/plugins/agdf/meta/contracts/ur-definition.md +41 -7
  353. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/codex-document-command.js +195 -0
  354. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/command-registry.js +82 -148
  355. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/control-maintenance-command.js +8 -37
  356. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/parse-args.js +98 -16
  357. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/planned-command.js +55 -0
  358. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/project-read-command.js +35 -0
  359. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/run-command-aliases.js +116 -0
  360. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/runtime-context.js +1 -59
  361. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/cli/validation-handlers.js +33 -103
  362. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-evaluation/git-observation.js +7 -5
  363. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/startup.js +2 -2
  364. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-decision-protocol.js +40 -0
  365. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-dispatch-runtime.js +71 -306
  366. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-entry.js +3 -24
  367. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
  368. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-runtime.js +29 -0
  369. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
  370. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/owner-client.js +79 -0
  371. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/package.js +14 -80
  372. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/plugin-runtime.js +29 -9
  373. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-lifecycle/thread-owner.js +164 -0
  374. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-owner-protocol.js +1 -0
  375. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-protocol-runtime.js +308 -0
  376. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/mcp-worker-runtime.js +152 -0
  377. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/control-command-service.js +22 -7
  378. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/control-context.js +8 -1
  379. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/runtime/validator-application.js +2 -2
  380. package/generated/plugins/copilot/agdf/runtime/create-agdf/package.json +5 -1
  381. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/closeout-readiness.js +10 -2
  382. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
  383. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
  384. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
  385. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
  386. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/doctor.js +162 -172
  387. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-check.js +10 -9
  388. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-inputs.js +11 -0
  389. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy-pure.js +446 -0
  390. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
  391. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/next-action.js +2 -0
  392. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
  393. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
  394. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/required-files.js +9 -7
  395. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
  396. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-state.js +15 -9
  397. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
  398. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
  399. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared-value.js +7 -0
  400. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/shared.js +5 -254
  401. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
  402. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/ur-readiness.js +7 -2
  403. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/verified-change.js +11 -9
  404. package/generated/plugins/{agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/backlog-vocabulary.js → copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/work-vocabulary.js} +2 -2
  405. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/artifact-readiness.js +5 -3
  406. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/authoring-inputs.js +110 -0
  407. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
  408. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/contract.js +124 -32
  409. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
  410. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
  411. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/project-state.js +48 -0
  412. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/result.js +61 -0
  413. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/selection.js +9 -3
  414. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/service.js +119 -67
  415. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/compatibility.js +42 -132
  416. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/contract.js +5 -5
  417. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/presentation.js +27 -119
  418. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/service.js +9 -37
  419. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/cockpit-pool.js +121 -0
  420. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-reader.js +92 -0
  421. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/doctor-worker.js +11 -0
  422. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/fs.js +18 -0
  423. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-read/snapshot.js +68 -17
  424. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/aggregate.js +3 -1
  425. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-command.js +13 -10
  426. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/approval-operations.js +10 -7
  427. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
  428. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/artefact-bindings.js +10 -7
  429. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/canonical-initialization.js +761 -0
  430. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/control-layout.js +183 -0
  431. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/decision-material-contract.js +2 -1
  432. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/evidence-bindings.js +7 -7
  433. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/git-identity.js +86 -0
  434. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/index.js +0 -1
  435. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/input-resolution.js +99 -0
  436. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-entry.js +273 -0
  437. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-handoff.js +174 -0
  438. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-inventory.js +90 -0
  439. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
  440. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/planned-origin.js +40 -0
  441. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-decision.js +12 -7
  442. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/presentation-delivery.js +90 -0
  443. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-render.js +5 -2
  444. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-review.js +3 -2
  445. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/preview-snapshot.js +9 -6
  446. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/recording-formats.js +12 -16
  447. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
  448. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-closure.js +343 -0
  449. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-contract.js +33 -250
  450. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-schema.js +508 -0
  451. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-command-service.js +198 -34
  452. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-create-command.js +60 -0
  453. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.d.ts +14 -0
  454. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-identity.js +40 -0
  455. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-input-resolution.js +72 -0
  456. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory-reader.js +31 -0
  457. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-inventory.js +179 -0
  458. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-material.js +211 -0
  459. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-mutation.js +51 -0
  460. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-identity.js +2 -1
  461. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-proof.js +7 -4
  462. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operation-status.js +20 -4
  463. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-operations.js +70 -13
  464. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
  465. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
  466. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation-render.js +8 -7
  467. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-presentation.js +45 -21
  468. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recording.js +10 -179
  469. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
  470. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision-history.js +23 -16
  471. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-revision.js +84 -161
  472. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal-compute.js +19 -44
  473. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-seal.js +6 -1
  474. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-source-revisions.js +19 -18
  475. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-document.js +110 -42
  476. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-edits.js +13 -5
  477. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-parser.js +14 -6
  478. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-reader.js +27 -18
  479. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-repository.js +112 -48
  480. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-resolver.js +12 -15
  481. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-state-writer.js +21 -377
  482. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-pending.js +2 -1
  483. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-step-transaction.js +125 -114
  484. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-steps.js +136 -248
  485. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-store-inspection.js +14 -2
  486. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-verified-change.js +81 -0
  487. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
  488. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/{backlog-summary-shape.js → run-work-summary-shape.js} +7 -19
  489. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-continuation/service.js +5 -66
  490. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/persistence.js +26 -8
  491. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
  492. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/index.js +14 -6
  493. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/interaction-catalog.js +3 -3
  494. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/interaction-presentation.js +29 -11
  495. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-hints.js +46 -0
  496. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-resolution.js +98 -0
  497. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-input-schema.js +15 -0
  498. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-resource-contract.js +1 -1
  499. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/mcp-tool-errors.js +31 -15
  500. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/owned-file-lock.js +266 -0
  501. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/owner-placement.js +50 -0
  502. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/canonical-init-plan.js +34 -0
  503. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/configuration.js +92 -0
  504. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/context.js +7 -11
  505. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/resources/language-preference.js +59 -0
  506. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
  507. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/runtime/plugin-provenance.js +173 -18
  508. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
  509. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/contract.js +28 -9
  510. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-intake.js +11 -5
  511. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
  512. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/mcp-continuation.js +64 -0
  513. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/prd-definition.js +14 -5
  514. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/sd-definition.js +2 -1
  515. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/service.js +49 -14
  516. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/skill-dispatch/tp-definition.js +2 -1
  517. package/generated/plugins/copilot/agdf/runtime/runtime-manifest.json +2 -2
  518. package/generated/plugins/copilot/agdf/skills/agdf-brownfield-analysis/SKILL.md +8 -5
  519. package/generated/plugins/copilot/agdf/skills/agdf-clean-implementation-review/SKILL.md +3 -2
  520. package/generated/plugins/copilot/agdf/skills/agdf-code-review/SKILL.md +5 -3
  521. package/generated/plugins/copilot/agdf/skills/agdf-delivery-closeout/SKILL.md +3 -2
  522. package/generated/plugins/copilot/agdf/skills/agdf-delivery-path-search/SKILL.md +3 -2
  523. package/generated/plugins/copilot/agdf/skills/agdf-gate-check/SKILL.md +35 -31
  524. package/generated/plugins/copilot/agdf/skills/agdf-interaction-locales.json +1 -1
  525. package/generated/plugins/copilot/agdf/skills/agdf-prd-definition/SKILL.md +3 -2
  526. package/generated/plugins/copilot/agdf/skills/agdf-qa-gate/SKILL.md +3 -2
  527. package/generated/plugins/copilot/agdf/skills/agdf-release-or/SKILL.md +8 -5
  528. package/generated/plugins/copilot/agdf/skills/agdf-sd-definition/SKILL.md +3 -2
  529. package/generated/plugins/copilot/agdf/skills/agdf-task-plan-review/SKILL.md +3 -2
  530. package/generated/plugins/copilot/agdf/skills/agdf-tp-definition/SKILL.md +3 -2
  531. package/generated/plugins/copilot/agdf/skills/agdf-ur-definition/SKILL.md +12 -4
  532. package/generated/plugins/copilot/agdf/skills/agdf-ux-intent-definition/SKILL.md +5 -4
  533. package/generated/plugins/copilot/agdf/skills/contracts/closeout.md +1 -1
  534. package/generated/plugins/copilot/agdf/skills/contracts/control-scaffold.md +63 -46
  535. package/generated/plugins/copilot/agdf/skills/contracts/gate-artifact-preparation.md +58 -48
  536. package/generated/plugins/copilot/agdf/skills/contracts/gate-transition.md +5 -6
  537. package/generated/plugins/copilot/agdf/skills/contracts/interaction.md +43 -126
  538. package/generated/plugins/copilot/agdf/skills/contracts/modes.md +4 -3
  539. package/generated/plugins/copilot/agdf/skills/contracts/prd-definition.md +6 -6
  540. package/generated/plugins/copilot/agdf/skills/contracts/quality.md +10 -2
  541. package/generated/plugins/copilot/agdf/skills/contracts/request-activation.md +9 -8
  542. package/generated/plugins/copilot/agdf/skills/contracts/sd-definition.md +3 -3
  543. package/generated/plugins/copilot/agdf/skills/contracts/task-target-resolution.md +24 -0
  544. package/generated/plugins/copilot/agdf/skills/contracts/tp-definition.md +1 -1
  545. package/generated/plugins/copilot/agdf/skills/contracts/ur-definition.md +41 -7
  546. package/generated/submissions/openai/agdf/.codex-plugin/plugin.json +1 -1
  547. package/generated/submissions/openai/agdf/meta/agdf-agent-router.md +3 -3
  548. package/generated/submissions/openai/agdf/meta/agdf-defaults.json +9 -0
  549. package/generated/submissions/openai/agdf/meta/agdf-defaults.schema.json +20 -0
  550. package/generated/submissions/openai/agdf/meta/agdf-interaction-locales.json +2668 -2682
  551. package/generated/submissions/openai/agdf/meta/agdf-plugin.definition.json +8 -3
  552. package/generated/submissions/openai/agdf/meta/contracts/closeout.md +1 -1
  553. package/generated/submissions/openai/agdf/meta/contracts/control-scaffold.md +63 -46
  554. package/generated/submissions/openai/agdf/meta/contracts/gate-artifact-preparation.md +58 -48
  555. package/generated/submissions/openai/agdf/meta/contracts/gate-transition.md +5 -6
  556. package/generated/submissions/openai/agdf/meta/contracts/interaction.md +43 -126
  557. package/generated/submissions/openai/agdf/meta/contracts/modes.md +4 -3
  558. package/generated/submissions/openai/agdf/meta/contracts/prd-definition.md +6 -6
  559. package/generated/submissions/openai/agdf/meta/contracts/quality.md +10 -2
  560. package/generated/submissions/openai/agdf/meta/contracts/request-activation.md +9 -8
  561. package/generated/submissions/openai/agdf/meta/contracts/sd-definition.md +3 -3
  562. package/generated/submissions/openai/agdf/meta/contracts/task-target-resolution.md +24 -0
  563. package/generated/submissions/openai/agdf/meta/contracts/tp-definition.md +1 -1
  564. package/generated/submissions/openai/agdf/meta/contracts/ur-definition.md +41 -7
  565. package/generated/submissions/openai/agdf/meta/copilot-payload-baseline.json +3 -3
  566. package/generated/submissions/openai/agdf/meta/distribution-profile-history.json +7 -0
  567. package/generated/submissions/openai/agdf/plugin.json +1 -1
  568. package/generated/submissions/openai/agdf/skills/brownfield-analysis/SKILL.md +8 -5
  569. package/generated/submissions/openai/agdf/skills/clean-implementation-review/SKILL.md +3 -2
  570. package/generated/submissions/openai/agdf/skills/code-review/SKILL.md +5 -3
  571. package/generated/submissions/openai/agdf/skills/delivery-closeout/SKILL.md +3 -2
  572. package/generated/submissions/openai/agdf/skills/delivery-path-search/SKILL.md +3 -2
  573. package/generated/submissions/openai/agdf/skills/gate-check/SKILL.md +35 -31
  574. package/generated/submissions/openai/agdf/skills/prd-definition/SKILL.md +3 -2
  575. package/generated/submissions/openai/agdf/skills/qa-gate/SKILL.md +3 -2
  576. package/generated/submissions/openai/agdf/skills/release-or/SKILL.md +8 -5
  577. package/generated/submissions/openai/agdf/skills/sd-definition/SKILL.md +3 -2
  578. package/generated/submissions/openai/agdf/skills/task-plan-review/SKILL.md +3 -2
  579. package/generated/submissions/openai/agdf/skills/tp-definition/SKILL.md +3 -2
  580. package/generated/submissions/openai/agdf/skills/ur-definition/SKILL.md +12 -4
  581. package/generated/submissions/openai/agdf/skills/ux-intent-definition/SKILL.md +5 -4
  582. package/generated/submissions/openai/agdf/submission/openai/availability.md +1 -1
  583. package/generated/submissions/openai/agdf/submission/openai/capability-matrix.json +1 -1
  584. package/generated/submissions/openai/agdf/submission/openai/inventory.json +49 -41
  585. package/generated/submissions/openai/agdf/submission/openai/listing.json +1 -1
  586. package/generated/submissions/openai/agdf/submission/openai/readiness.json +2 -2
  587. package/generated/submissions/openai/agdf/submission/openai/readiness.md +2 -2
  588. package/generated/submissions/openai/agdf/submission/openai/release-notes.md +9 -1
  589. package/generated/submissions/openai/agdf/submission/openai/reviewer-cases.json +1 -1
  590. package/lib/cli/application.js +31 -43
  591. package/lib/cli/codex-document-command.js +195 -0
  592. package/lib/cli/command-registry.js +82 -148
  593. package/lib/cli/control-maintenance-command.js +8 -37
  594. package/lib/cli/parse-args.js +98 -16
  595. package/lib/cli/planned-command.js +55 -0
  596. package/lib/cli/project-init-command.js +21 -0
  597. package/lib/cli/project-read-command.js +35 -0
  598. package/lib/cli/run-command-aliases.js +116 -0
  599. package/lib/cli/runtime-context.js +1 -59
  600. package/lib/cli/validation-handlers.js +33 -103
  601. package/lib/control-evaluation/git-observation.js +7 -5
  602. package/lib/control-maintenance/startup.js +2 -2
  603. package/lib/host-adapters/codex/plugin.js +48 -1
  604. package/lib/install-setup/contract.js +4 -4
  605. package/lib/install-setup/{control-migration.js → control-compatibility.js} +1 -2
  606. package/lib/install-setup/interaction.js +0 -1
  607. package/lib/install-setup/presentation.js +3 -4
  608. package/lib/install-setup/service.js +5 -18
  609. package/lib/installers/local-marketplace.js +262 -8
  610. package/lib/lifecycle/codex-startup-status.js +29 -0
  611. package/lib/lifecycle/presentation.js +6 -0
  612. package/lib/mcp-decision-protocol.js +40 -0
  613. package/lib/mcp-dispatch-runtime.js +71 -306
  614. package/lib/mcp-lifecycle/adapters/codex-origin-probe.js +28 -4
  615. package/lib/mcp-lifecycle/evidence.js +2 -1
  616. package/lib/mcp-lifecycle/facade-entry.js +3 -24
  617. package/lib/mcp-lifecycle/facade-owner-entry.js +31 -15
  618. package/lib/mcp-lifecycle/facade-runtime.js +29 -0
  619. package/lib/mcp-lifecycle/facade-thread-entry.js +11 -0
  620. package/lib/mcp-lifecycle/owner-client.js +79 -0
  621. package/lib/mcp-lifecycle/package.js +14 -80
  622. package/lib/mcp-lifecycle/plugin-runtime.js +29 -9
  623. package/lib/mcp-lifecycle/service.js +5 -4
  624. package/lib/mcp-lifecycle/thread-owner.js +164 -0
  625. package/lib/mcp-owner-protocol.js +1 -0
  626. package/lib/mcp-protocol-runtime.js +308 -0
  627. package/lib/mcp-worker-runtime.js +152 -0
  628. package/lib/runtime/control-command-service.js +22 -7
  629. package/lib/runtime/control-context.js +8 -1
  630. package/lib/runtime/validator-application.js +2 -2
  631. package/lib/scaffold/canonical-init.js +2 -691
  632. package/lib/scaffold/plan.js +9 -32
  633. package/lib/scaffold/presentation.js +2 -2
  634. package/lib/scaffold/write.js +6 -1
  635. package/package.json +6 -2
  636. package/runtime/core/lib/control-evaluation/closeout-readiness.js +10 -2
  637. package/runtime/core/lib/control-evaluation/decision-content-placeholder.js +9 -0
  638. package/runtime/core/lib/control-evaluation/decision-content-readiness.js +2 -7
  639. package/runtime/core/lib/control-evaluation/definition-sources.js +3 -2
  640. package/runtime/core/lib/control-evaluation/delivery-map.js +2 -12
  641. package/runtime/core/lib/control-evaluation/doctor.js +162 -172
  642. package/runtime/core/lib/control-evaluation/gate-check.js +10 -9
  643. package/runtime/core/lib/control-evaluation/gate-policy-inputs.js +11 -0
  644. package/runtime/core/lib/control-evaluation/gate-policy-pure.js +446 -0
  645. package/runtime/core/lib/control-evaluation/gate-policy.js +3 -434
  646. package/runtime/core/lib/control-evaluation/next-action.js +2 -0
  647. package/runtime/core/lib/control-evaluation/parent-reconciliation.js +2 -1
  648. package/runtime/core/lib/control-evaluation/qa-follow-up.js +2 -1
  649. package/runtime/core/lib/control-evaluation/required-files.js +9 -7
  650. package/runtime/core/lib/control-evaluation/run-state-policy.js +1 -1
  651. package/runtime/core/lib/control-evaluation/run-state.js +15 -9
  652. package/runtime/core/lib/control-evaluation/run-step-policy.js +2 -1
  653. package/runtime/core/lib/control-evaluation/run-work-summary.js +6 -4
  654. package/runtime/core/lib/control-evaluation/shared-value.js +7 -0
  655. package/runtime/core/lib/control-evaluation/shared.js +5 -254
  656. package/runtime/core/lib/control-evaluation/tp-planning.js +3 -2
  657. package/runtime/core/lib/control-evaluation/ur-readiness.js +7 -2
  658. package/runtime/core/lib/control-evaluation/verified-change.js +11 -9
  659. package/{generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-evaluation/backlog-vocabulary.js → runtime/core/lib/control-evaluation/work-vocabulary.js} +2 -2
  660. package/runtime/core/lib/control-inspect/artifact-readiness.js +5 -3
  661. package/runtime/core/lib/control-inspect/authoring-inputs.js +110 -0
  662. package/runtime/core/lib/control-inspect/cockpit-archive.js +53 -0
  663. package/runtime/core/lib/control-inspect/cockpit-context.js +2 -1
  664. package/runtime/core/lib/control-inspect/cockpit-contract.js +11 -4
  665. package/runtime/core/lib/control-inspect/cockpit-list.d.ts +10 -6
  666. package/runtime/core/lib/control-inspect/cockpit-list.js +32 -41
  667. package/runtime/core/lib/control-inspect/cockpit-session.js +8 -8
  668. package/runtime/core/lib/control-inspect/cockpit-work.js +33 -0
  669. package/runtime/core/lib/control-inspect/cockpit.js +75 -44
  670. package/runtime/core/lib/control-inspect/contract.js +124 -32
  671. package/runtime/core/lib/control-inspect/decision-session.js +53 -11
  672. package/runtime/core/lib/control-inspect/doctor-observation.js +91 -0
  673. package/runtime/core/lib/control-inspect/project-operation-call.js +5 -0
  674. package/runtime/core/lib/control-inspect/project-state.js +48 -0
  675. package/runtime/core/lib/control-inspect/result.js +61 -0
  676. package/runtime/core/lib/control-inspect/selection.js +9 -3
  677. package/runtime/core/lib/control-inspect/service.js +119 -67
  678. package/runtime/core/lib/control-maintenance/compatibility.js +42 -132
  679. package/runtime/core/lib/control-maintenance/contract.js +5 -5
  680. package/runtime/core/lib/control-maintenance/presentation.js +27 -119
  681. package/runtime/core/lib/control-maintenance/service.js +9 -37
  682. package/runtime/core/lib/control-read/cockpit-pool.js +25 -9
  683. package/runtime/core/lib/control-read/cockpit-worker.js +4 -3
  684. package/runtime/core/lib/control-read/doctor-reader.js +92 -0
  685. package/runtime/core/lib/control-read/doctor-worker.js +11 -0
  686. package/runtime/core/lib/control-read/fs.js +18 -0
  687. package/runtime/core/lib/control-read/snapshot.js +68 -17
  688. package/runtime/core/lib/control-state/aggregate.js +3 -1
  689. package/runtime/core/lib/control-state/approval-command.js +13 -10
  690. package/runtime/core/lib/control-state/approval-operations.js +10 -7
  691. package/runtime/core/lib/control-state/artefact-binding-proof.js +12 -20
  692. package/runtime/core/lib/control-state/artefact-bindings.js +10 -7
  693. package/runtime/core/lib/control-state/canonical-initialization.js +761 -0
  694. package/runtime/core/lib/control-state/control-layout.js +183 -0
  695. package/runtime/core/lib/control-state/decision-action-contract.js +10 -1
  696. package/runtime/core/lib/control-state/decision-action-service.js +24 -3
  697. package/runtime/core/lib/control-state/decision-material-contract.js +2 -1
  698. package/runtime/core/lib/control-state/evidence-bindings.js +7 -7
  699. package/runtime/core/lib/control-state/git-identity.js +86 -0
  700. package/runtime/core/lib/control-state/index.js +0 -1
  701. package/runtime/core/lib/control-state/input-resolution.js +99 -0
  702. package/runtime/core/lib/control-state/planned-entry.js +273 -0
  703. package/runtime/core/lib/control-state/planned-handoff.js +174 -0
  704. package/runtime/core/lib/control-state/planned-inventory.js +90 -0
  705. package/runtime/core/lib/control-state/planned-origin-reader.js +48 -0
  706. package/runtime/core/lib/control-state/planned-origin.js +40 -0
  707. package/runtime/core/lib/control-state/presentation-decision.js +12 -7
  708. package/runtime/core/lib/control-state/presentation-delivery.js +90 -0
  709. package/runtime/core/lib/control-state/preview-render.js +5 -2
  710. package/runtime/core/lib/control-state/preview-review.js +3 -2
  711. package/runtime/core/lib/control-state/preview-snapshot.js +9 -6
  712. package/runtime/core/lib/control-state/recording-formats.js +12 -16
  713. package/runtime/core/lib/control-state/run-artefact-recording.js +54 -66
  714. package/runtime/core/lib/control-state/run-closure.js +343 -0
  715. package/runtime/core/lib/control-state/run-command-contract.js +33 -250
  716. package/runtime/core/lib/control-state/run-command-schema.js +508 -0
  717. package/runtime/core/lib/control-state/run-command-service.js +198 -34
  718. package/runtime/core/lib/control-state/run-create-command.js +60 -0
  719. package/runtime/core/lib/control-state/run-identity.d.ts +14 -0
  720. package/runtime/core/lib/control-state/run-identity.js +40 -0
  721. package/runtime/core/lib/control-state/run-input-resolution.js +72 -0
  722. package/runtime/core/lib/control-state/run-inventory-reader.js +31 -0
  723. package/runtime/core/lib/control-state/run-inventory.js +179 -0
  724. package/runtime/core/lib/control-state/run-material.js +211 -0
  725. package/runtime/core/lib/control-state/run-mutation.js +51 -0
  726. package/runtime/core/lib/control-state/run-operation-identity.js +2 -1
  727. package/runtime/core/lib/control-state/run-operation-proof.js +7 -4
  728. package/runtime/core/lib/control-state/run-operation-status.js +20 -4
  729. package/runtime/core/lib/control-state/run-operations.js +70 -13
  730. package/runtime/core/lib/control-state/run-owned-outputs.js +21 -9
  731. package/runtime/core/lib/control-state/run-presentation-envelope.js +25 -33
  732. package/runtime/core/lib/control-state/run-presentation-render.js +8 -7
  733. package/runtime/core/lib/control-state/run-presentation.js +45 -21
  734. package/runtime/core/lib/control-state/run-recording.js +10 -179
  735. package/runtime/core/lib/control-state/run-revision-boundary.js +7 -21
  736. package/runtime/core/lib/control-state/run-revision-history.js +23 -16
  737. package/runtime/core/lib/control-state/run-revision.js +84 -161
  738. package/runtime/core/lib/control-state/run-seal-compute.js +19 -44
  739. package/runtime/core/lib/control-state/run-seal.js +6 -1
  740. package/runtime/core/lib/control-state/run-source-revisions.js +19 -18
  741. package/runtime/core/lib/control-state/run-state-document.js +110 -42
  742. package/runtime/core/lib/control-state/run-state-edits.js +13 -5
  743. package/runtime/core/lib/control-state/run-state-parser.js +14 -6
  744. package/runtime/core/lib/control-state/run-state-reader.js +27 -18
  745. package/runtime/core/lib/control-state/run-state-repository.js +112 -48
  746. package/runtime/core/lib/control-state/run-state-resolver.js +12 -15
  747. package/runtime/core/lib/control-state/run-state-writer.js +21 -377
  748. package/runtime/core/lib/control-state/run-step-pending.js +2 -1
  749. package/runtime/core/lib/control-state/run-step-transaction.js +125 -114
  750. package/runtime/core/lib/control-state/run-steps.js +136 -248
  751. package/runtime/core/lib/control-state/run-store-inspection.js +14 -2
  752. package/runtime/core/lib/control-state/run-verified-change.js +81 -0
  753. package/runtime/core/lib/control-state/run-work-summary-shape.d.ts +1 -0
  754. package/{generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary-shape.js → runtime/core/lib/control-state/run-work-summary-shape.js} +7 -19
  755. package/runtime/core/lib/delivery-continuation/service.js +5 -66
  756. package/runtime/core/lib/delivery-path-search/persistence.js +26 -8
  757. package/runtime/core/lib/delivery-path-search/state-adapter.js +1 -1
  758. package/runtime/core/lib/index.js +14 -6
  759. package/runtime/core/lib/interaction-catalog.js +3 -3
  760. package/runtime/core/lib/interaction-presentation.js +29 -11
  761. package/runtime/core/lib/mcp-input-hints.js +46 -0
  762. package/runtime/core/lib/mcp-input-resolution.js +98 -0
  763. package/runtime/core/lib/mcp-input-schema.js +15 -0
  764. package/runtime/core/lib/mcp-resource-contract.js +1 -1
  765. package/runtime/core/lib/mcp-tool-errors.js +31 -15
  766. package/runtime/core/lib/owned-file-lock.js +266 -0
  767. package/runtime/core/lib/owner-placement.js +50 -0
  768. package/runtime/core/lib/resources/canonical-init-plan.js +34 -0
  769. package/runtime/core/lib/resources/configuration.js +92 -0
  770. package/runtime/core/lib/resources/context.js +7 -11
  771. package/runtime/core/lib/resources/language-preference.js +59 -0
  772. package/runtime/core/lib/runtime/mcp-owner-protocol.js +102 -0
  773. package/runtime/core/lib/runtime/plugin-provenance.js +173 -18
  774. package/runtime/core/lib/skill-dispatch/compact-continuation.js +3 -3
  775. package/runtime/core/lib/skill-dispatch/contract.js +28 -9
  776. package/runtime/core/lib/skill-dispatch/delivery-intake.js +11 -5
  777. package/runtime/core/lib/skill-dispatch/delivery-run-assignment.js +6 -10
  778. package/runtime/core/lib/skill-dispatch/mcp-continuation.js +64 -0
  779. package/runtime/core/lib/skill-dispatch/prd-definition.js +14 -5
  780. package/runtime/core/lib/skill-dispatch/sd-definition.js +2 -1
  781. package/runtime/core/lib/skill-dispatch/service.js +49 -14
  782. package/runtime/core/lib/skill-dispatch/tp-definition.js +2 -1
  783. package/generated/.agdf/control/templates/AGDF_RUN.md +0 -139
  784. package/generated/.agdf/control/templates/MASTER_BACKLOG.md +0 -39
  785. package/generated/plugins/agdf/control/templates/AGDF_RUN.md +0 -139
  786. package/generated/plugins/agdf/control/templates/MASTER_BACKLOG.md +0 -39
  787. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/interaction.js +0 -28
  788. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/repair.js +0 -4
  789. package/generated/plugins/agdf/runtime/create-agdf/lib/control-maintenance/service.js +0 -3
  790. package/generated/plugins/agdf/runtime/create-agdf/lib/control-state/run-recovery.js +0 -5
  791. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-inspect/cockpit-backlog.js +0 -135
  792. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/interaction.js +0 -57
  793. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/migration.js +0 -85
  794. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/repair.js +0 -226
  795. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
  796. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary.js +0 -67
  797. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-migration.js +0 -69
  798. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
  799. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
  800. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog.js +0 -90
  801. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recovery.js +0 -296
  802. package/generated/plugins/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
  803. package/generated/plugins/copilot/agdf/control/templates/AGDF_RUN.md +0 -139
  804. package/generated/plugins/copilot/agdf/control/templates/MASTER_BACKLOG.md +0 -39
  805. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/interaction.js +0 -28
  806. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/repair.js +0 -4
  807. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-maintenance/service.js +0 -3
  808. package/generated/plugins/copilot/agdf/runtime/create-agdf/lib/control-state/run-recovery.js +0 -5
  809. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/interaction.js +0 -57
  810. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/migration.js +0 -85
  811. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-maintenance/repair.js +0 -226
  812. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
  813. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/backlog-summary.js +0 -67
  814. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-migration.js +0 -69
  815. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
  816. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
  817. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-backlog.js +0 -90
  818. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-recovery.js +0 -296
  819. package/generated/plugins/copilot/agdf/runtime/create-agdf/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
  820. package/lib/control-maintenance/interaction.js +0 -28
  821. package/lib/control-maintenance/repair.js +0 -4
  822. package/lib/control-maintenance/service.js +0 -3
  823. package/lib/control-state/run-recovery.js +0 -5
  824. package/lib/install-setup/control-repair.js +0 -1
  825. package/runtime/core/lib/control-inspect/cockpit-backlog.js +0 -135
  826. package/runtime/core/lib/control-maintenance/interaction.js +0 -57
  827. package/runtime/core/lib/control-maintenance/migration.js +0 -85
  828. package/runtime/core/lib/control-maintenance/repair.js +0 -226
  829. package/runtime/core/lib/control-state/backlog-summary-shape.d.ts +0 -4
  830. package/runtime/core/lib/control-state/backlog-summary.js +0 -67
  831. package/runtime/core/lib/control-state/legacy-migration.js +0 -69
  832. package/runtime/core/lib/control-state/legacy-projection-reader.js +0 -38
  833. package/runtime/core/lib/control-state/run-backlog-writer.js +0 -80
  834. package/runtime/core/lib/control-state/run-backlog.js +0 -90
  835. package/runtime/core/lib/control-state/run-recovery.js +0 -296
  836. package/runtime/core/lib/control-state/run-relationship-correction.js +0 -74
@@ -1,40 +1,39 @@
1
+ import { extractField } from '../control-evaluation/verified-change.js';
2
+ import { transitionDecisionForRunState } from '../control-evaluation/gate-policy.js';
3
+ import { runDocumentPath, runEvidencePath, isRunDataPath } from './run-identity.js';
4
+ import { resolutionRecordVersion } from './input-resolution.js';
1
5
  import { resolveControlCommandTarget } from './approval-command-contract.js';
2
- import { policyForRunContent as policyForDecision } from '../control-evaluation/run-step-policy.js';
6
+
3
7
  import { assertRunOperationIdentity } from "./run-operation-identity.js";
4
8
  import { readArtefactBindings } from "./artefact-bindings.js";
5
9
  import { pendingRunStepPath } from "./run-step-pending.js";
6
- import { appendRunOperation, readRunOperations } from "./run-operations.js";
10
+ import { appendRunOperation, readRunOperations, closureSuccessorText } from "./run-operations.js";
7
11
  import { readOperationSource, operationSourceSetDigest, operationSources, operationReceipt, internalStepEligibility, reviewCorrectionRefusal, reviewCorrectionAvailable } from "./run-operation-proof.js";
8
12
  import { appendEvidenceBinding, evidenceSourceSetDigest, CORRECTABLE_REVIEWS } from './evidence-bindings.js';
9
13
  import { reviewFindingDiagnostics } from '../control-evaluation/normalized-gaps.js';
10
14
  import { qaReportReferences } from '../control-evaluation/qa-follow-up.js';
11
15
  import { COOPERATIVE_ASSURANCE } from './approval-command-contract.js';
12
16
  import { INTERNAL_STEP_FILES, prepareOwnedOutput } from "./run-owned-outputs.js";
13
- import { canonicalJson, digest } from "./approval-command-contract.js";
17
+ import { withControlMutation, assertLayoutRunWrite } from './control-layout.js';
18
+ import { digest } from "./approval-command-contract.js";
14
19
  import { existsSync, readFileSync } from "node:fs";
15
20
  import { join, posix } from "node:path";
16
21
  import { runPath } from "./run-state-reader.js";
17
- import { parseControlState } from "./run-state-parser.js";
18
- import { APPROVAL_GATES, canonicalRunText } from "./run-seal-compute.js";
22
+ import { parseRunState } from "./run-state-parser.js";
23
+ import { canonicalRunText } from "./run-seal-compute.js";
19
24
  import {
20
25
  firstSection,
21
26
  projectUrObjective,
22
27
  guardedWrite,
23
28
  readRun,
24
29
  rejected,
25
- removeTableRows,
30
+ endedRunRejection,
26
31
  replaceFirstScalar,
27
32
  replaceSectionScalar,
28
- tableCells,
29
- tableLineIndexes,
30
- upsertTableRow,
31
- appendTableRow,
32
33
  } from "./run-state-edits.js";
33
- import { withOwnedFileLock, writeRunLocked } from "./run-state-writer.js";
34
- import { commitRunStepLocked, recoverPendingRunStepLocked, readPendingRunStepJournal } from "./run-step-transaction.js";
35
- import { pendingRunStepIds } from "./run-step-pending.js";
34
+ import { withOwnedFileLock } from "./run-state-writer.js";
35
+ import { commitRunStepLocked, recoverPendingRunStepLocked, readPendingRunStepJournal, pendingRunStepConflictIds } from "./run-step-transaction.js";
36
36
  import { prepareArtefactRecording } from "./run-artefact-recording.js";
37
- import { backlogStatusForSummary, assertBacklogPath, prepareRunBacklog, backlogTableLayout } from "./run-backlog.js";
38
37
  import { prepareRunContentState } from "../control-evaluation/run-state.js";
39
38
  import { randomUUID } from "node:crypto";
40
39
  import { evaluateCloseoutReadiness, closeoutConfirmation, closeoutContext } from '../control-evaluation/closeout-readiness.js';
@@ -43,39 +42,34 @@ import { inspectQaReports } from '../control-evaluation/qa-follow-up.js';
43
42
  import { containedRegularFile, hasSymlinkComponent } from './contained-file.js';
44
43
  import { statSync } from 'node:fs';
45
44
  import { runWorkSummary, assertSummarySources } from "../control-evaluation/run-work-summary.js";
46
- import { recordBacklogSummary } from "./backlog-summary.js";
47
45
  import { decisionMaterial, presentationDecisionState, decisionRemediationOwner } from './presentation-decision.js';
48
46
  import { validateRunPresentation, validateRunPresentationRecord } from './run-presentation.js';
49
- import { withRunBacklogLock, writeRunWithBacklogLocked } from './run-backlog-writer.js';
47
+ import { withRunMutationLock, writeRunMutationLocked } from './run-mutation.js';
50
48
  import { APPROVAL_GATES as DECISION_GATES, REVISION_ID_PATTERN } from './run-identity.js';
51
49
  import { runSealState, artefactFileDigest } from './run-seal.js';
52
50
  import { inspectUxIntentDecision } from '../control-evaluation/definition-sources.js';
53
51
  import { readReportDecision } from '../control-evaluation/report-decision.js';
52
+ import { prepareVerifiedChangeRecording } from './run-verified-change.js';
54
53
 
55
- // run-step records one standard transition of the small path in a single sealed revision. The agent
56
- // supplies content, reasons and evidence; the command maintains the dependent tables, the backlog
57
- // pointer and the policy-derived next action so no hand edit of the control state is needed.
54
+ // Record one typed transition and its owned files in a single sealed revision.
55
+ // Current control and next actions are derived from those canonical facts.
58
56
  export const RUN_STEPS = Object.freeze(["ur", "route", "review", "evidence", "closeout", "artefact", "internal"]);
59
57
  export const RUN_STEP_ROUTES = Object.freeze(["quick_task", "verified_change", "structured_slice", "structured_delivery", "block"]);
58
+ // Internal steps are reachable only from their owning Core operation, never from run-step or step.record.
59
+ const INTERNAL_STEP_KINDS = Object.freeze({ lifecycle_close: "lifecycle_close.record" });
60
+ const knownStep = (step, operationContext) => RUN_STEPS.includes(step) || Object.hasOwn(INTERNAL_STEP_KINDS, step) && INTERNAL_STEP_KINDS[step] === operationContext?.kind;
61
+ export const RUN_CLOSED_NEXT_ACTION = "none, run ended";
60
62
  const REVIEW_DECISIONS = new Set(["pass", "revise", "block"]);
61
- const NEXT_GATE_BY_ROUTE = Object.freeze({
62
- quick_task: "Quick Task Execution",
63
- verified_change: "Verified Change Execution",
64
- structured_slice: "PRD",
65
- structured_delivery: "PRD",
66
- block: "none",
67
- });
68
- const BACKLOG_LABELS = Object.freeze([["UR", "UR"], ["Brownfield Review", "Brownfield"], ["PRD", "PRD"], ["SD", "SD"], ["TP", "TP"], ["QA", "QA"], ["OR", "OR"]]);
69
- const BACKLOG_PATH = join(".agdf", "control", "MASTER_BACKLOG.md");
70
63
  const CONTROL_PREFIX = ".agdf/control/";
71
64
 
72
- const artefactPath = (key, file) => `${CONTROL_PREFIX}artefacts/${key}/${file}`;
65
+ const artefactPath = (key, file) => file.startsWith('EVIDENCE-') ? runEvidencePath(key, file) : runDocumentPath(key, file);
73
66
  const filled = (value) => typeof value === "string" && value.trim() !== "";
67
+ const recordingStep = (step, context) => knownStep(step, context) || step === 'verified_change' && context?.kind === 'step.record';
74
68
  const oneLine = (value) => String(value ?? "").replace(/\s+/gu, " ").trim();
75
69
  // Bounded strict-UTF-8 read of an artefact inside the selected Run; anything else is unavailable.
76
70
  function readRunArtefact(root, runId, rawPath, limit = 131072) {
77
71
  const path = String(rawPath ?? '').replace(/^`|`$/gu, '');
78
- if (!path.startsWith(`.agdf/control/artefacts/${runId}/`) || posix.normalize(path) !== path || hasSymlinkComponent(root, path)) return undefined;
72
+ if (!isRunDataPath(runId, path) || posix.normalize(path) !== path || hasSymlinkComponent(root, path)) return undefined;
79
73
  const file = containedRegularFile(root, path);
80
74
  if (file.status !== 'valid' || statSync(file.path).size > limit) return undefined;
81
75
  try { return new TextDecoder('utf-8', { fatal: true }).decode(readFileSync(file.path)); } catch { return undefined; }
@@ -85,8 +79,8 @@ const REVIEW_REPORT_LIMIT = 262144;
85
79
  // Every recording of a review or QA report applies the closeout quality rules; at most 64 diagnostics are returned.
86
80
  const findingsRefusal = (runId, diagnostics) => rejected(runId, 'review_findings_invalid',
87
81
  { diagnostics: diagnostics.slice(0, 64), ...(diagnostics.length > 64 ? { diagnostics_truncated: true } : {}) });
88
- function qaReportDiagnostics(root, runId, qa, control) {
89
- const content = readRunArtefact(root, runId, qa.path, REVIEW_REPORT_LIMIT);
82
+ function qaReportDiagnostics(root, runId, qa, control, proposedContent) {
83
+ const content = proposedContent ?? readRunArtefact(root, runId, qa.path, REVIEW_REPORT_LIMIT);
90
84
  if (typeof content !== 'string') return [{ review: 'QA', finding_id: null, field: 'report', expected: 'a readable UTF-8 report of at most 256 KiB inside the Run', rule: 'report_unreadable' }];
91
85
  const references = qaReportReferences(content, qa.path);
92
86
  // Closeout inspects at most 64 distinct reports: the QA report, the recorded reviews and its references.
@@ -113,91 +107,10 @@ function withSectionEdit(runId, text, edit) {
113
107
  return next === null ? { rejection: rejected(runId, "run_layout_unsupported") } : { text: next };
114
108
  }
115
109
 
116
- function artefactHeading(root, path) {
117
- try {
118
- return readFileSync(join(root, path), "utf8").match(/^#\s+(.+)$/mu)?.[1]?.trim() ?? "";
119
- } catch {
120
- return "";
121
- }
122
- }
123
-
124
- function backlogLinks(text) {
125
- const control = parseControlState(text, { userGates: APPROVAL_GATES, internalSteps: ["Brownfield Review"], closeoutArtefacts: ["OR"] });
126
- return BACKLOG_LABELS
127
- .map(([type, label]) => [label, control.artefacts.get(type)?.path ?? ""])
128
- .filter(([, path]) => path.startsWith(CONTROL_PREFIX))
129
- .map(([label, path]) => `[${label}](${path.slice(CONTROL_PREFIX.length)})`);
130
- }
131
-
132
- function prepareBacklog(root, key, { title, status, links, next, closeout }) {
133
- const path = join(root, BACKLOG_PATH);
134
- if (!existsSync(path)) return { status: "missing", update: null };
135
- const original = readFileSync(path, "utf8");
136
- let text = canonicalRunText(original);
137
- const lines = text.split("\n");
138
- const active = firstSection(lines, "Active Backlog");
139
- const indexes = active ? tableLineIndexes(lines, active) : [];
140
- const layout = indexes.length ? backlogTableLayout(tableCells(lines[indexes[0]])) : null;
141
- if (layout === "legacy") return { status: "layout_legacy", update: null };
142
- if (layout !== "compact") return { status: "layout_unsupported", update: null };
143
- const matching = indexes.slice(2).filter(index => tableCells(lines[index])[1]?.replaceAll("`", "").trim() === key);
144
- if (matching.length > 1) throw Error("AGDF_BACKLOG_IDENTITY_AMBIGUOUS");
145
- if (matching.some(index => tableCells(lines[index]).length !== 7)) return { status: "layout_unsupported", update: null };
146
- const existing = active
147
- ? tableLineIndexes(lines, active).slice(2).map((index) => tableCells(lines[index])).find((cells) => cells[1]?.replaceAll("`", "").trim() === key)
148
- : undefined;
149
- const rowTitle = oneLine(title) || existing?.[2] || key;
150
- if (closeout) {
151
- text = removeTableRows(text, "Active Backlog", 1, existing?.[1] ?? key) ?? text;
152
- text = upsertTableRow(text, "Completed / Superseded Pointers", 0, key, [key, rowTitle, "Completed", closeout.record, oneLine(closeout.outcome)]);
153
- } else {
154
- text = upsertTableRow(text, "Active Backlog", 1, existing?.[1] ?? key, [
155
- existing?.[0] || "P1",
156
- existing?.[1] ?? key,
157
- rowTitle,
158
- status ?? existing?.[3] ?? "In Progress",
159
- links.join(" · "),
160
- links[0] ?? "",
161
- oneLine(next),
162
- ]);
163
- }
164
- if (text === null) return { status: "layout_unsupported", update: null };
165
- // A step commits a new Run revision even when its visible row cells are unchanged.
166
- // Keep the candidate so the caller records that revision's observation in this transaction.
167
- return { status: "updated", update: { old: original, next: text } };
168
- }
169
-
170
- function closeoutRecord({ title, runId, date, result, evidence, risk, next }) {
171
- return [
172
- `# OR-lite: ${title}`,
173
- "",
174
- "Report mode: OR-lite",
175
- `Run: \`${runId}\``,
176
- "Route: `quick_task` (Compact Delivery)",
177
- `Date: ${date}`,
178
- "",
179
- "## Result",
180
- "",
181
- oneLine(result),
182
- "",
183
- "## Evidence",
184
- "",
185
- oneLine(evidence),
186
- "",
187
- "## Risk",
188
- "",
189
- oneLine(risk),
190
- "",
191
- "## Next Step",
192
- "",
193
- oneLine(next),
194
- "",
195
- ].join("\n");
196
- }
197
-
198
- function recordRunStepLocked(root, input, { policy, date, afterWrite, operationContext, packageVersion }) {
110
+ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationContext, packageVersion, resolveMaterial, gitObservation }) {
199
111
  const { runId, revisionId, step } = input;
200
- if (!RUN_STEPS.includes(step)) return rejected(runId, "step_invalid", { steps: RUN_STEPS });
112
+ if (!operationContext) return rejected(runId, 'operation_context_required');
113
+ if (!recordingStep(step, operationContext)) return rejected(runId, "step_invalid", { steps: RUN_STEPS });
201
114
  const run = readRun(root, runId);
202
115
  if (run.rejection) return run.rejection;
203
116
  if (operationContext) {
@@ -211,7 +124,30 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
211
124
  receipt: previous.original ?? previous, revision_id: run.meta.revision_id, authorizes: false };
212
125
  }
213
126
  }
127
+ const ended = endedRunRejection(runId, run.content);
128
+ if (ended) return ended;
214
129
  if (run.meta.revision_id !== revisionId) return rejected(runId, "stale_revision");
130
+ let stagedSource;
131
+ if (input.sourceBinding?.material_id) {
132
+ stagedSource = resolveMaterial?.(input.sourceBinding);
133
+ const slot = input.step === 'internal' ? input.internalStep : input.step === 'verified_change' ? 'Verified Change'
134
+ : input.step === 'closeout' && stagedSource?.slot === 'Verified Change' ? 'Verified Change'
135
+ : ({ ur: 'UR', route: 'Brownfield Review', review: 'CR', evidence: 'EVIDENCE', closeout: 'OR' })[input.step];
136
+ if (!stagedSource || stagedSource.slot !== slot) return rejected(runId, 'material_slot_mismatch');
137
+ const file = slot === 'EVIDENCE' ? `EVIDENCE-${stagedSource.digest.slice(7)}.md`
138
+ : ({ UR: 'UR.md', OR: 'OR.md', 'Verified Change': 'VERIFIED_CHANGE.md', ...INTERNAL_STEP_FILES })[slot];
139
+ const path = artefactPath(runId, file);
140
+ input = { ...input, sourceBinding: { path, digest: stagedSource.digest }, evidence: path };
141
+ }
142
+ if (input.material) {
143
+ const sourceFile = input.material.path ? readOperationSource(root, runId, input.material) : null;
144
+ const staged = sourceFile ? { slot: input.gate, content: sourceFile.content, digest: input.material.digest, validate: sourceFile.validate } : resolveMaterial?.(input.material);
145
+ if (!staged || staged.slot !== input.gate) return rejected(runId, 'material_slot_mismatch');
146
+ input = { ...input, stagedMaterial: staged };
147
+ }
148
+ const readSource = () => stagedSource ? { content: stagedSource.content,
149
+ validate: () => { if (digest(canonicalRunText(stagedSource.content)) !== input.sourceBinding.digest) throw Error('AGDF_RUN_OPERATION_SOURCE_CHANGED'); } }
150
+ : readOperationSource(root, runId, input.sourceBinding);
215
151
 
216
152
  const key = runId;
217
153
  let text = canonicalRunText(run.content);
@@ -219,14 +155,13 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
219
155
  const approved = (gate) => control.approvals.get(gate)?.status === "approved";
220
156
  const route = control.mode_slice_decision.decision;
221
157
  const before = policy(root, text, run.path);
222
- let known = "";
223
- let evidenceRow = null;
224
- let backlog = null;
225
- let orContent = null;
158
+ if (operationContext?.kind === 'ur_draft.replace' && (before.current_gate !== 'UR'
159
+ || !control.artefacts.get('UR')?.path || approved('UR'))) return rejected(runId, 'ur_draft_not_replaceable');
226
160
  let recording = null;
227
161
  let ownedOutputs = [];
228
162
  let operationSource = null;
229
163
  let operationRecord = null;
164
+ let compactPreparation = null;
230
165
  const edit = (fn) => {
231
166
  const result = withSectionEdit(runId, text, fn);
232
167
  if (result.rejection) return result.rejection;
@@ -234,11 +169,12 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
234
169
  return null;
235
170
  };
236
171
 
237
- if (operationContext && step !== "internal" && step !== "artefact" && step !== "closeout") {
172
+ if (operationContext && !['internal', 'artefact', 'closeout', 'verified_change', 'lifecycle_close'].includes(step)) {
238
173
  if (!input.sourceBinding || control.meta.lifecycle !== "active") return rejected(runId, "operation_source_required");
239
- operationSource = readOperationSource(root, runId, input.sourceBinding);
174
+ operationSource = readSource();
240
175
  const canonicalFile = { ur: "UR.md", route: "BROWNFIELD_REVIEW.md", review: INTERNAL_STEP_FILES.CR }[step];
241
176
  if (canonicalFile) ownedOutputs = [prepareOwnedOutput(root, runId, artefactPath(key, canonicalFile), operationSource.content)];
177
+ else if (stagedSource) ownedOutputs = [prepareOwnedOutput(root, runId, input.sourceBinding.path, operationSource.content)];
242
178
  if (step === "review") {
243
179
  if (!['CR', 'Quick Task Execution'].includes(before.current_gate)
244
180
  || !['pass', 'revise', 'block'].includes(input.decision)) return rejected(runId, "review_step_not_ready");
@@ -250,12 +186,33 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
250
186
  status: step === "review" && input.decision !== "pass" ? input.decision : "done", covers: oneLine(input.covers) || "selected Run scope",
251
187
  source_set_digest: operationSourceSetDigest(root, control, step) };
252
188
  }
253
- if (step === "internal") {
189
+ if (step === "lifecycle_close") {
190
+ // Only an active, validly sealed Run closes; the closure keeps its gate and every artefact byte.
191
+ const closure = input.closure;
192
+ if (control.meta.lifecycle !== "active") return rejected(runId, "not_active");
193
+ if (runSealState(root, run.content).status !== "valid") return rejected(runId, "seal_invalid");
194
+ for (const fn of [value => replaceFirstScalar(value, "lifecycle", closure.lifecycle)]) {
195
+ const failed = edit(fn); if (failed) return failed;
196
+ }
197
+ const successor = closureSuccessorText(closure.successor);
198
+ const confirmer = closure.confirmed_by.statement === "unknown" ? "unknown person" : [closure.confirmed_by.name, closure.confirmed_by.email && `<${closure.confirmed_by.email}>`].filter(Boolean).join(" ");
199
+
200
+ operationRecord = closure;
201
+
202
+ } else if (step === 'verified_change') {
203
+ operationSource = readSource();
204
+ try { compactPreparation = prepareVerifiedChangeRecording(root, run, control, before, input, operationSource, gitObservation); }
205
+ catch (e) { if (e.message.startsWith('verified_change_') || e.message === 'confirmation_required') return rejected(runId, e.message); throw e; }
206
+ text = compactPreparation.text; ownedOutputs = compactPreparation.outputs;
207
+ operationRecord = { step: 'Verified Change', source: { path: compactPreparation.path, digest: compactPreparation.digest },
208
+ status: extractField(compactPreparation.content, 'status'), covers: `Verified Change ${input.phase}`, source_set_digest: operationSourceSetDigest(root, control, 'Verified Change') };
209
+
210
+ } else if (step === "internal") {
254
211
  const ux = input.internalStep === 'UX Intent Definition';
255
212
  if (!operationContext || !internalStepEligibility(control, before, input, root) || !(ux ? ['ready', 'blocked', 'not_applicable'] : ["pass", "revise", "block", "not_applicable"]).includes(input.decision)
256
213
  || ["CD+Tests", "CR", "TP Review", "Clean Implementation Review"].includes(input.internalStep) && input.decision === "not_applicable"
257
214
  || input.decision === "not_applicable" && !filled(input.reason)) return rejected(runId, "internal_step_not_ready");
258
- operationSource = readOperationSource(root, runId, input.sourceBinding);
215
+ operationSource = readSource();
259
216
  if (ux) {
260
217
  const checked = inspectUxIntentDecision(operationSource.content);
261
218
  if (!checked.well_formed || !checked.supported || checked.decision !== input.decision
@@ -276,24 +233,20 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
276
233
  const path = artefactPath(key, INTERNAL_STEP_FILES[input.internalStep]);
277
234
  const status = ['pass', 'ready'].includes(input.decision) ? "done" : input.decision === 'blocked' ? 'block' : input.decision;
278
235
  ownedOutputs = [prepareOwnedOutput(root, runId, path, operationSource.content)];
279
- const failed = edit(value => upsertTableRow(value, "Artefacts", 0, input.internalStep,
280
- [input.internalStep, path, status, `Recorded exact internal result; operation ${operationContext.operation_id}`]));
281
- if (failed) return failed;
282
- known = `${input.internalStep} result recorded: ${input.decision}.`;
283
- evidenceRow = [input.internalStep, path, oneLine(input.covers) || "approved TP scope", "bound cooperative result"];
236
+
284
237
  operationRecord = { step: input.internalStep, source: { path, digest: input.sourceBinding.digest }, status,
285
238
  covers: oneLine(input.covers) || "approved TP scope", source_set_digest: operationSourceSetDigest(root, control, input.internalStep) };
286
- backlog = {};
239
+
287
240
  } else if (step === "artefact") {
288
- if (operationContext) operationSource = readOperationSource(root, runId, input.sourceBinding);
241
+ if (operationContext && !input.material) operationSource = readSource();
289
242
  recording = prepareArtefactRecording(root, run, { ...input, ...(operationContext ? { operationId: operationContext.operation_id, requestDigest: operationContext.request_digest } : {}) }, control, before);
243
+ ownedOutputs = recording.outputs ?? [];
290
244
  if (input.gate === 'QA') {
291
- const diagnostics = qaReportDiagnostics(root, runId, recording.receipt.destination, control);
245
+ const diagnostics = qaReportDiagnostics(root, runId, recording.receipt.destination, control, input.stagedMaterial?.content);
292
246
  if (diagnostics.length) return findingsRefusal(runId, diagnostics);
293
247
  }
294
248
  text = recording.text;
295
- known = `${input.gate} artefact and reviewed source binding recorded together.`;
296
- backlog = {};
249
+
297
250
  } else if (step === "ur") {
298
251
  if (approved("UR")) return rejected(runId, "gate_not_ready", { current_gate: before.current_gate });
299
252
  if (!filled(input.title)) return rejected(runId, "title_missing");
@@ -302,11 +255,7 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
302
255
  if (missing) return missing;
303
256
  // Only this authorized UR writer projects orientation; reading never repairs.
304
257
  text = projectUrObjective(text, operationSource?.content ?? readFileSync(join(root, path), 'utf8'));
305
- const failed = edit((value) => upsertTableRow(value, "Artefacts", 0, "UR", ["UR", `\`${path}\``, "draft"]));
306
- if (failed) return failed;
307
- known = `UR drafted at \`${path}\`.`;
308
- evidenceRow = ["UR draft", `\`${path}\``, "problem, goal, scope and acceptance signals", "direct"];
309
- backlog = { title: input.title };
258
+
310
259
  } else if (step === "route") {
311
260
  const routeBeforeUrApproval = !approved("UR")
312
261
  && before.status === "open"
@@ -321,9 +270,6 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
321
270
  const missing = ownedOutputs.some(row => row.path === path) ? null : requireFile(root, runId, path, `${CONTROL_PREFIX}templates/artefacts/BROWNFIELD_REVIEW.md`);
322
271
  if (missing) return missing;
323
272
  for (const fn of [
324
- (value) => upsertTableRow(value, "Artefacts", 0, "Brownfield Review", ["Brownfield Review", `\`${path}\``, "done"]),
325
- (value) => replaceSectionScalar(value, "Mode/Slice Decision", "decision", input.route),
326
- (value) => replaceSectionScalar(value, "Mode/Slice Decision", "required_next_gate", NEXT_GATE_BY_ROUTE[input.route]),
327
273
  (value) => replaceSectionScalar(value, "Mode/Slice Decision", "scope_reason", oneLine(input.reason)),
328
274
  (value) => replaceSectionScalar(value, "Mode/Slice Decision", "evidence", oneLine(input.evidence)),
329
275
  (value) => replaceFirstScalar(value, "mode", input.route),
@@ -331,32 +277,29 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
331
277
  const failed = edit(fn);
332
278
  if (failed) return failed;
333
279
  }
334
- known = `Brownfield Review at \`${path}\` selected \`${input.route}\`.`;
335
- evidenceRow = ["Brownfield Review", `\`${path}\``, `Mode/Slice Decision \`${input.route}\``, "direct"];
336
- backlog = {};
280
+
337
281
  } else if (step === "review") {
338
282
  if (!RUN_STEP_ROUTES.includes(route)) return rejected(runId, "gate_not_ready", { current_gate: before.current_gate });
339
283
  if (!REVIEW_DECISIONS.has(input.decision)) return rejected(runId, "decision_invalid", { decisions: [...REVIEW_DECISIONS] });
340
284
  if (!filled(input.evidence)) return rejected(runId, "evidence_missing");
341
285
  const status = input.decision === "pass" ? "done" : input.decision;
342
- const failed = edit((value) => upsertTableRow(value, "Artefacts", 0, "CR", ["CR", "", status, `Code Review ${input.decision}`]));
343
- if (failed) return failed;
344
- if (operationContext) {
345
- const failed = edit(value => upsertTableRow(value, "Artefacts", 0, "CR", ["CR", operationRecord.source.path, status, "Bound actual Code Review result"]));
346
- if (failed) return failed;
347
- }
348
- known = `Code Review decision \`${input.decision}\`.`;
349
- evidenceRow = ["Code Review", oneLine(input.source) || "code-review", `decision ${input.decision}: ${oneLine(input.evidence)}`, "direct"];
350
- backlog = {};
286
+
351
287
  } else if (step === "evidence") {
352
288
  if (!filled(input.evidence)) return rejected(runId, "evidence_missing");
353
- known = `Evidence recorded: ${oneLine(input.evidence)}.`;
354
- evidenceRow = [oneLine(input.evidence), oneLine(input.source) || "agent", oneLine(input.covers) || "delivery", "direct"];
289
+
290
+ } else if (step === 'closeout' && route === 'verified_change') {
291
+ if (operationContext?.kind !== 'closeout.record') return rejected(runId, 'closeout_not_ready');
292
+ operationSource = readSource();
293
+ try { compactPreparation = prepareVerifiedChangeRecording(root, run, control, before, { ...input, operationId: operationContext.operation_id }, operationSource, gitObservation); }
294
+ catch (e) { if (e.message.startsWith('verified_change_') || e.message === 'confirmation_required') return rejected(runId, e.message); throw e; }
295
+ if (!exactApprovedArtefacts(root, control)) return rejected(runId, 'approved_source_proof_invalid');
296
+ text = compactPreparation.text; ownedOutputs = compactPreparation.outputs; operationRecord = compactPreparation.record;
297
+
355
298
  } else if (step === "closeout") {
356
299
  if (operationContext) {
357
300
  if (operationContext.kind !== 'closeout.record' || !input.sourceBinding || control.meta.lifecycle !== 'active'
358
301
  || !['OR', 'Quick Task Execution'].includes(before.current_gate) || before.status === 'blocked') return rejected(runId, 'closeout_not_ready');
359
- operationSource = readOperationSource(root, runId, input.sourceBinding);
302
+ operationSource = readSource();
360
303
  const report = operationSource.content;
361
304
  const readiness = evaluateCloseoutReadiness(control, report, path => readRunArtefact(root, runId, path), { prepared: true });
362
305
  if (!readiness.ready) {
@@ -377,8 +320,7 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
377
320
  if (input.confirmation !== confirmation) return rejected(runId, 'closeout_confirmation_required', { confirmation_selector: confirmation });
378
321
  const path = artefactPath(key, 'OR.md');
379
322
  ownedOutputs = [prepareOwnedOutput(root, runId, path, report)];
380
- for (const fn of [value => upsertTableRow(value, 'Artefacts', 0, 'OR', ['OR', path, 'done', 'Bound exact orchestration report']),
381
- value => replaceFirstScalar(value, 'lifecycle', 'completed'), value => replaceFirstScalar(value, 'current_gate', 'OR'), value => replaceFirstScalar(value, 'decision', 'completed')]) {
323
+ for (const fn of [value => replaceFirstScalar(value, 'lifecycle', 'completed')]) {
382
324
  const failed = edit(fn); if (failed) return failed;
383
325
  }
384
326
  if (route !== 'quick_task') for (const [field, value] of Object.entries(closeoutContext(report))) {
@@ -388,93 +330,41 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
388
330
  const failed = edit(text => replaceSectionScalar(text, heading, field, value)); if (failed) return failed;
389
331
  }
390
332
  operationRecord = { or: { path, digest: input.sourceBinding.digest }, lifecycle: 'completed', context_evidence_digest: readiness.context_digest, confirmation_digest: digest(confirmation) };
391
- known = `Run delivery completed; exact ${route === 'quick_task' ? 'OR-lite' : 'OR-full'} at ${path}.`;
392
- evidenceRow = ['OR', path, 'selected Run closeout; no VCS or publication effect', 'bound cooperative result'];
393
- backlog = { closeout: { record: `[OR](artefacts/${key}/OR.md)`, outcome: 'Completed approved scope with disclosed report obligations.' } };
394
- } else {
395
- if (route !== "quick_task") return rejected(runId, "closeout_route_unsupported", { route: route || "undecided" });
396
- if (before.current_gate !== "Quick Task Execution") return rejected(runId, "gate_not_ready", { current_gate: before.current_gate });
397
- if (control.artefacts.get("CR")?.status !== "done") return rejected(runId, "code_review_missing");
398
- if (![input.result, input.evidence, input.risk, input.next].every(filled)) return rejected(runId, "closeout_fields_missing");
399
- const path = artefactPath(key, "OR.md");
400
- const title = artefactHeading(root, artefactPath(key, "UR.md")).replace(/^UR:\s*/u, "") || key;
401
- for (const fn of [
402
- (value) => upsertTableRow(value, "Artefacts", 0, "OR", ["OR", `\`${path}\``, "done"]),
403
- (value) => replaceFirstScalar(value, "lifecycle", "completed"),
404
- (value) => replaceFirstScalar(value, "current_gate", "OR"),
405
- (value) => replaceFirstScalar(value, "decision", "completed"),
406
- ]) {
407
- const failed = edit(fn);
408
- if (failed) return failed;
409
- }
410
- orContent = closeoutRecord({ title, runId, date, ...input });
411
- known = `Quick task delivered; OR-lite at \`${path}\`.`;
412
- evidenceRow = ["OR-lite", `\`${path}\``, "quick task closeout", "direct"];
413
- backlog = { closeout: { record: `[OR](artefacts/${key}/OR.md)`, outcome: input.result } };
333
+
414
334
  }
415
335
  }
416
336
 
417
- if (evidenceRow) {
418
- const failed = edit((value) => appendTableRow(value, "Evidence", evidenceRow));
419
- if (failed) return failed;
420
- }
421
- const proposedArtefacts = new Map(ownedOutputs.map(row => [row.path, { content: row.next, digest: input.sourceBinding.digest }]));
422
- if (orContent) proposedArtefacts.set(artefactPath(key, 'OR.md'), { content: orContent, digest: digest(canonicalRunText(orContent)) });
337
+ const proposedArtefacts = new Map(ownedOutputs.map(row => [row.path, { content: row.next, digest: digest(canonicalRunText(row.next)) }]));
423
338
  const nextRevisionId = recording?.nextRevisionId ?? randomUUID();
424
339
  let appendedOperation = null, appendedEvidence = null;
425
- if (operationContext && operationRecord) {
426
- appendedOperation = operationReceipt(root, run, operationContext, nextRevisionId, operationRecord, packageVersion);
427
- text = appendRunOperation(text, appendedOperation);
428
- }
429
- if (operationContext && (operationRecord && operationContext.kind === 'step.record' || recording && input.gate === 'QA')) {
340
+ if (operationContext && (operationRecord && ['step.record', 'ur_draft.replace'].includes(operationContext.kind) || recording && input.gate === 'QA')) {
430
341
  const evidenceStep = operationRecord?.step ?? input.gate;
431
342
  const sources = operationSources(root, control, evidenceStep);
432
- appendedEvidence = { schema_version: '1', run_id: runId, operation_id: operationContext.operation_id, action: operationContext.kind, step: evidenceStep,
343
+ appendedEvidence = { schema_version: operationContext.kind === 'ur_draft.replace' ? '2' : '1', run_id: runId, operation_id: operationContext.operation_id, action: operationContext.kind, step: evidenceStep,
433
344
  report: operationRecord?.source ?? { path: recording.receipt.destination.path, digest: recording.receipt.destination.digest }, sources,
434
345
  source_set_digest: evidenceSourceSetDigest(sources), producer: { contract: 'run-command/1', package_version: packageVersion }, assurance: COOPERATIVE_ASSURANCE };
435
346
  text = appendEvidenceBinding(text, appendedEvidence);
436
347
  }
437
- const after = policy(root, text, run.path, { proposedArtefacts });
438
- const approvedGates = APPROVAL_GATES.filter((gate) => parseControlState(text, { userGates: APPROVAL_GATES }).approvals.get(gate)?.status === "approved");
439
- for (const fn of [
440
- (value) => replaceFirstScalar(value, "current_gate", after.current_gate),
441
- (value) => replaceFirstScalar(value, "next_allowed_action", after.next_allowed_action),
442
- (value) => upsertTableRow(value, "Current Control State", 0, "What is known?", ["What is known?", known]),
443
- (value) => upsertTableRow(value, "Current Control State", 0, "What is approved?", ["What is approved?", approvedGates.length ? approvedGates.map((gate) => `Approval: ${gate}`).join(", ") : "Nothing yet."]),
444
- (value) => upsertTableRow(value, "Current Control State", 0, "What is missing?", ["What is missing?", after.missing_approval !== "none" ? `Exact ${after.missing_approval}.` : "No approval is pending."]),
445
- (value) => upsertTableRow(value, "Current Control State", 0, "What is the next allowed action?", ["What is the next allowed action?", after.next_allowed_action]),
446
- (value) => upsertTableRow(value, "Current Control State", 0, "What is explicitly forbidden right now?", ["What is explicitly forbidden right now?", after.forbidden.join("; ") || "none"]),
447
- ]) {
448
- const failed = edit(fn);
449
- if (failed) return failed;
348
+ if (operationContext && operationRecord) {
349
+ const record = appendedEvidence ? { evidence_binding_id: appendedEvidence.operation_id, status: operationRecord.status, covers: operationRecord.covers } : operationRecord;
350
+ appendedOperation = operationReceipt(root, run, operationContext, nextRevisionId, record, packageVersion);
351
+ text = appendRunOperation(text, appendedOperation);
450
352
  }
353
+ const after = policy(root, text, run.path, { proposedArtefacts });
354
+ const closing = step === 'lifecycle_close', nextAction = closing ? RUN_CLOSED_NEXT_ACTION : after.next_allowed_action;
451
355
 
452
356
  // Owned outputs are published before the precommit source check, so the summary reads them as proposed.
453
357
  const summary = runWorkSummary(root, text, run.path, after, { proposed: new Map([...proposedArtefacts].map(([path, row]) => [path, row.content])) });
454
- const statusLabel = backlogStatusForSummary(summary, after);
455
- let backlogPlan = backlog
456
- ? prepareBacklog(root, key, { ...backlog, status: statusLabel, links: backlogLinks(text), next: summary.display_action })
457
- : prepareRunBacklog(root, key, text, run.path, nextRevisionId);
458
- // Legacy rows keep their title and per-gate link columns. Status and next step still follow
459
- // the Run where the row exists; a closeout move is left to the maintainer.
460
- if (backlogPlan.status === "layout_legacy") backlogPlan = { ...(backlog.closeout ? { status: "skipped", update: null }
461
- : prepareRunBacklog(root, key, text, run.path, nextRevisionId)), reason: "backlog_layout_legacy" };
462
- if (backlogPlan.status === "layout_unsupported") return rejected(runId, "backlog_layout_unsupported");
463
- if (backlog && backlogPlan.update) backlogPlan.update.next = recordBacklogSummary(root, backlogPlan.update.next, key,
464
- backlog.closeout ? "Completed / Superseded Pointers" : "Active Backlog", summary, nextRevisionId);
465
- const written = guardedWrite(runId, () => (recording || orContent || backlogPlan.update || operationContext)
466
- ? commitRunStepLocked(root, {
358
+ const written = guardedWrite(runId, () => commitRunStepLocked(root, {
467
359
  runId, runPath: run.path, content: text, revisionId, expectedContent: run.content,
468
- backlog: backlogPlan.update, or: orContent, afterWrite,
360
+ afterWrite,
469
361
  nextRevisionId, outputs: ownedOutputs, operationContext,
470
362
  writeOptions: { ...(appendedOperation ? { appendedOperation } : {}), ...(appendedEvidence ? { appendedEvidence } : {}), ...(recording ? { appendedBinding: recording.receipt, allowContentChange: recording.allowContentChange } : {}),
471
- validateBeforeWrite: () => { recording?.validateBeforeWrite(); operationSource?.validate();
363
+ validateBeforeWrite: () => { recording?.validateBeforeWrite(); operationSource?.validate(); compactPreparation?.validate();
472
364
  if (operationRecord?.step && operationSourceSetDigest(root, control, operationRecord.step) !== operationRecord.source_set_digest) throw Error("AGDF_RUN_OPERATION_SOURCE_CHANGED");
473
365
  if (operationContext?.kind === 'closeout.record' && !exactApprovedArtefacts(root, control)) throw Error('AGDF_RUN_OPERATION_SOURCE_CHANGED');
474
366
  assertSummarySources(root, summary); } },
475
- })
476
- : writeRunLocked(run.path, text, revisionId, { expectedContent: run.content, nextRevisionId,
477
- validateBeforeWrite: () => assertSummarySources(root, summary) }));
367
+ }));
478
368
  if (written.rejection) return written.rejection;
479
369
  return Object.freeze({
480
370
  schema_version: "1",
@@ -484,40 +374,42 @@ function recordRunStepLocked(root, input, { policy, date, afterWrite, operationC
484
374
  previous_revision_id: revisionId,
485
375
  revision: written.state.meta.revision,
486
376
  revision_id: written.state.meta.revision_id,
487
- current_gate: after.current_gate,
488
- next_allowed_action: after.next_allowed_action,
489
- backlog: backlogPlan.status,
490
- ...(backlogPlan.reason ? { backlog_reason: backlogPlan.reason } : {}),
377
+ current_gate: closing ? before.current_gate : after.current_gate,
378
+ next_allowed_action: nextAction,
491
379
  ...(appendedOperation ? { operation_id: appendedOperation.operation_id, receipt: appendedOperation }
492
380
  : recording ? { operation_id: recording.receipt.operation.id, receipt: recording.receipt } : {}),
493
381
  });
494
382
  }
495
383
 
496
- export function recordRunStep(root, input, { policy, date = new Date().toISOString().slice(0, 10), afterWrite, operationContext, packageVersion = "0.14.5" } = {}) {
384
+ export function recordRunStep(root, input, { policy, date = new Date().toISOString().slice(0, 10), afterWrite, operationContext, packageVersion = "0.14.5", resolveMaterial, gitObservation } = {}) {
497
385
  const { runId, step } = input;
498
- if (!RUN_STEPS.includes(step)) return rejected(runId, "step_invalid", { steps: RUN_STEPS });
386
+ if (!recordingStep(step, operationContext)) return rejected(runId, "step_invalid", { steps: RUN_STEPS });
499
387
  let path;
500
388
  try { path = runPath(root, runId); } catch { return rejected(runId, "run_id_invalid"); }
501
- const backlogPath = join(root, BACKLOG_PATH);
502
389
  const locked = guardedWrite(runId, () => withOwnedFileLock(path, () => {
503
- assertBacklogPath(root);
504
- return withOwnedFileLock(backlogPath, () => {
505
- const otherPending = pendingRunStepIds(root).find((id) => id !== runId);
390
+ return withControlMutation(root, { resource: `run:${runId}`, operation_id: operationContext?.operation_id ?? randomUUID(),
391
+ resume: true, proveOutcome: result => ['recorded', 'recovered', 'already_applied'].includes(result?.outcome) }, () => {
392
+ const perform = () => {
393
+ const parsed = parseRunState(readFileSync(path, 'utf8'));
394
+ if (!parsed.valid) return rejected(runId, 'run_state_invalid');
395
+ assertLayoutRunWrite(root, parsed);
396
+ const otherPending = pendingRunStepConflictIds(root, runId).find((id) => id !== runId);
506
397
  if (otherPending) return rejected(runId, "run_step_recovery_required", { pending_run_id: otherPending });
507
398
  if (operationContext && existsSync(pendingRunStepPath(root, runId))) {
508
399
  const pending = readPendingRunStepJournal(root, runId);
509
- if (pending.schema_version !== 3 || pending.kind !== operationContext.kind || pending.operation_id !== operationContext.operation_id
400
+ if (resolutionRecordVersion(pending) !== 7 || pending.kind !== operationContext.kind || pending.operation_id !== operationContext.operation_id
510
401
  || pending.request_digest !== operationContext.request_digest || pending.old_revision_id !== input.revisionId) return rejected(runId, "original_operation_recovery_required");
511
402
  recoverPendingRunStepLocked(root, runId);
512
- return recordRunStepLocked(root, input, { policy, date, afterWrite, operationContext, packageVersion });
403
+ return recordRunStepLocked(root, input, { policy, date, afterWrite, operationContext, packageVersion, resolveMaterial, gitObservation });
513
404
  }
514
405
  const recovered = recoverPendingRunStepLocked(root, runId);
515
406
  if (recovered.status === "completed") {
516
407
  return Object.freeze({ schema_version: "1", outcome: "recovered", run_id: runId,
517
- operation_id: recovered.operation_id, revision_id: recovered.revision_id,
518
- backlog: "updated" });
408
+ operation_id: recovered.operation_id, revision_id: recovered.revision_id });
519
409
  }
520
- return recordRunStepLocked(root, input, { policy, date, afterWrite, operationContext, packageVersion });
410
+ return recordRunStepLocked(root, input, { policy, date, afterWrite, operationContext, packageVersion, resolveMaterial, gitObservation });
411
+ };
412
+ return perform();
521
413
  });
522
414
  }));
523
415
  return locked.rejection ?? locked.state;
@@ -532,13 +424,14 @@ export function recordRunPresentationDecision(root, input, { evaluateGateCheck,
532
424
  || typeof comment !== 'string' || Buffer.byteLength(comment) > 8192 || /\0/u.test(comment)
533
425
  || action === 'request_change' && !comment.trim() || !/^sha256:[0-9a-f]{64}$/u.test(requestDigest ?? '')) return rejected(runId, 'decision_input_invalid');
534
426
  const context = { kind: 'presentation_decision.record', operation_id: operationId, request_digest: requestDigest };
535
- const written = guardedWrite(runId, () => withRunBacklogLock(root, runPath(root, runId), () => {
427
+ const written = guardedWrite(runId, () => withRunMutationLock(root, runPath(root, runId), () => {
536
428
  const run = readRun(root, runId); if (run.rejection) return run.rejection;
537
429
  assertRunOperationIdentity(root, run, operationId, context.kind);
538
430
  const previous = readRunOperations(run.content).receipts.find(row => row.operation_id === operationId);
539
431
  if (previous) return previous.kind === context.kind && previous.request_digest === requestDigest
540
432
  ? { outcome: 'already_applied', receipt: previous, historical_effect: true, authorizes: false }
541
433
  : rejected(runId, 'operation_payload_conflict');
434
+ const ended = endedRunRejection(runId, run.content); if (ended) return ended;
542
435
  if (run.meta.revision_id !== revisionId) return rejected(runId, 'stale_revision');
543
436
  if (runSealState(root, run.content).status !== 'valid') return rejected(runId, 'seal_invalid');
544
437
  const state = prepareRunContentState(root, run.content, run.path);
@@ -553,18 +446,13 @@ export function recordRunPresentationDecision(root, input, { evaluateGateCheck,
553
446
  owner: decisionRemediationOwner(gate), artefact_digest: gate === 'UAT' ? null : artefactFileDigest(root, state.artefacts.get(gate)?.path) };
554
447
  const receipt = operationReceipt(root, run, context, nextRevisionId, record, packageVersion);
555
448
  let next = appendRunOperation(run.content, receipt);
556
- next = appendTableRow(next, 'Evidence', [`Gate ${action}`, `presentation ${presentationId}`, `Version ${material.material_version}; comment: ${comment || '(none)'}`, 'cooperative bound decision']);
557
- if (next === null) return rejected(runId, 'run_layout_unsupported');
558
- const after = policyForDecision(root, next, run.path);
559
- next = replaceFirstScalar(next, 'next_allowed_action', after.next_allowed_action) ?? next;
560
- for (const [key, value] of [['What is known?', `${action} recorded for current ${gate} material.`], ['What is missing?', 'Changed material and a fresh deliberate decision.'],
561
- ['What is the next allowed action?', after.next_allowed_action]]) next = upsertTableRow(next, 'Current Control State', 0, key, [key, value]) ?? next;
562
- const saved = writeRunWithBacklogLocked(root, run.path, next, revisionId, { expectedContent: run.content,
449
+ const saved = writeRunMutationLocked(root, run.path, next, revisionId, { expectedContent: run.content,
563
450
  appendedOperation: receipt, nextRevisionId, operationContext: { ...context, target_id: receipt.target_id }, afterWrite,
564
451
  validateDuringTransaction: () => {
565
452
  const fresh = validateRunPresentationRecord(root, { runId, gate, revisionId, presentationId });
566
453
  if (fresh.reason || fresh.digest !== presentation.digest || decisionMaterial(root, state, gate).material_version !== material.material_version) throw Error('AGDF_STALE_RUN_REVISION');
567
454
  } });
455
+ const after = transitionDecisionForRunState(prepareRunContentState(root, saved.content, run.path));
568
456
  return { outcome: 'recorded', receipt, revision_id: saved.meta.revision_id, next_operation: after.next_operation, authorizes: false };
569
457
  }, { operationContext: { ...context, target_id: resolveControlCommandTarget(root).target_id } }));
570
458
  return written.rejection ?? written.state;