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