@open-agent-toolkit/cli 0.2.26 → 0.2.28

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 (76) hide show
  1. package/assets/NOTICES.md +156 -0
  2. package/assets/agents/oat-phase-implementer.md +312 -7
  3. package/assets/docs/contributing/explainer-kit-verification.md +125 -0
  4. package/assets/docs/contributing/index.md +1 -0
  5. package/assets/docs/reference/troubleshooting.md +47 -0
  6. package/assets/docs/workflows/projects/artifacts.md +24 -6
  7. package/assets/docs/workflows/projects/implementation-execution.md +151 -1
  8. package/assets/docs/workflows/skills/explainer-kit-providers.md +144 -0
  9. package/assets/docs/workflows/skills/explainer-kit.md +121 -69
  10. package/assets/docs/workflows/skills/index.md +1 -0
  11. package/assets/public-package-versions.json +4 -4
  12. package/assets/skills/explainer-kit/SKILL.md +18 -3
  13. package/assets/skills/explainer-kit/recipes/project-recap.json +43 -16
  14. package/assets/skills/explainer-kit/references/contracts.md +167 -20
  15. package/assets/skills/explainer-kit/references/golden-conformance.md +80 -0
  16. package/assets/skills/explainer-kit/references/visual-authoring.md +92 -0
  17. package/assets/skills/explainer-kit/references/visual-review.md +57 -0
  18. package/assets/skills/explainer-kit/schemas/author-request.v2.schema.json +172 -1
  19. package/assets/skills/explainer-kit/schemas/build-record.schema.json +7 -1
  20. package/assets/skills/explainer-kit/schemas/fact-base.schema.json +38 -2
  21. package/assets/skills/explainer-kit/schemas/manifest.schema.json +25 -1
  22. package/assets/skills/explainer-kit/schemas/run-request.schema.json +4 -0
  23. package/assets/skills/explainer-kit/schemas/set-plan.v1.schema.json +149 -0
  24. package/assets/skills/explainer-kit/schemas/visual-review-request.v1.schema.json +117 -0
  25. package/assets/skills/explainer-kit/schemas/visual-review-result.v1.schema.json +80 -0
  26. package/assets/skills/explainer-kit/scripts/lib/browser-runtime.mjs +148 -4
  27. package/assets/skills/explainer-kit/scripts/lib/catalog.mjs +243 -0
  28. package/assets/skills/explainer-kit/scripts/lib/contracts.mjs +586 -8
  29. package/assets/skills/explainer-kit/scripts/lib/diagram.mjs +285 -8
  30. package/assets/skills/explainer-kit/scripts/lib/durability.mjs +35 -0
  31. package/assets/skills/explainer-kit/scripts/lib/fact-base.mjs +144 -8
  32. package/assets/skills/explainer-kit/scripts/lib/package-coverage.mjs +379 -0
  33. package/assets/skills/explainer-kit/scripts/lib/png.mjs +287 -0
  34. package/assets/skills/explainer-kit/scripts/lib/qa.mjs +280 -8
  35. package/assets/skills/explainer-kit/scripts/lib/recipes.mjs +132 -3
  36. package/assets/skills/explainer-kit/scripts/lib/records.mjs +513 -21
  37. package/assets/skills/explainer-kit/scripts/lib/render.mjs +67 -3
  38. package/assets/skills/explainer-kit/scripts/lib/s3-static.mjs +43 -1
  39. package/assets/skills/explainer-kit/scripts/lib/set-plan.mjs +208 -0
  40. package/assets/skills/explainer-kit/scripts/lib/source-backlinks.mjs +218 -0
  41. package/assets/skills/explainer-kit/scripts/lib/visual-review.mjs +380 -0
  42. package/assets/skills/explainer-kit/scripts/render-qa.mjs +48 -10
  43. package/assets/skills/explainer-kit/scripts/run.mjs +859 -134
  44. package/assets/skills/oat-dispatch-subagents/SKILL.md +16 -3
  45. package/assets/skills/oat-explainer-kit/SKILL.md +40 -12
  46. package/assets/skills/oat-explainer-kit/references/author-callback.md +12 -10
  47. package/assets/skills/oat-explainer-kit/references/lifecycle-contract.md +40 -2
  48. package/assets/skills/oat-explainer-kit/references/visual-review-callback.md +72 -0
  49. package/assets/skills/oat-explainer-kit/scripts/bind-project-sources.mjs +167 -5
  50. package/assets/skills/oat-explainer-kit/scripts/finalize-tracked-run.mjs +92 -5
  51. package/assets/skills/oat-explainer-kit/scripts/run.mjs +324 -2
  52. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +2 -2
  53. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +2 -2
  54. package/assets/skills/oat-project-implement/SKILL.md +5 -4
  55. package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +21 -0
  56. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +2 -2
  57. package/assets/skills/oat-project-implement/references/phase-execution.md +359 -12
  58. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +2 -2
  59. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +2 -2
  60. package/assets/templates/state.md +7 -0
  61. package/dist/commands/project/archive/archive-utils.d.ts +1 -0
  62. package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
  63. package/dist/commands/project/archive/archive-utils.js +109 -42
  64. package/dist/commands/project/archive/explainer-package-coverage.d.ts +14 -0
  65. package/dist/commands/project/archive/explainer-package-coverage.d.ts.map +1 -0
  66. package/dist/commands/project/archive/explainer-package-coverage.js +27 -0
  67. package/dist/commands/project/archive/explainer-source-backlinks.d.ts +18 -0
  68. package/dist/commands/project/archive/explainer-source-backlinks.d.ts.map +1 -0
  69. package/dist/commands/project/archive/explainer-source-backlinks.js +27 -0
  70. package/dist/commands/project/archive/push-runner.d.ts +2 -1
  71. package/dist/commands/project/archive/push-runner.d.ts.map +1 -1
  72. package/dist/commands/project/archive/push-runner.js +5 -1
  73. package/dist/release/public-package-contract.d.ts +6 -0
  74. package/dist/release/public-package-contract.d.ts.map +1 -1
  75. package/dist/release/public-package-contract.js +75 -0
  76. package/package.json +2 -2
@@ -235,9 +235,9 @@ remains immutable baseline evidence for the original p01-t01 verification.
235
235
  | `oat-project-import-plan/SKILL.md` | `f7ca8635452f -> NG`; `c2e5fa410069 -> NG`; `655d61df0a8f -> NG`; `dceff5cc04b5 -> NG`; `1af4957a1af2 -> IMPORT-01`; `45b699c1c0b5 -> IMPORT-01`; `ba6d120791c1 -> IMPORT-01`; `070ebc5259af -> IMPORT-03`; `c11552696e2e -> IMPORT-03`; `cfe661966baf -> IMPORT-04`; `baa91c0a0bf8 -> NG`; `e364e84b2702 -> NG`; `39031985a945 -> IMPORT-06`; `f106aa29a217 -> IMPORT-07`; `65038450aee3 -> IMPORT-07`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPORT-09` |
236
236
  | `oat-project-implement/SKILL.md` | `18980f6bc1a6 -> NG`; `e0355c7a05e9 -> IMPLEMENT-11+IMPLEMENT-13+IMPLEMENT-16`; `6296f41ae11c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> IMPLEMENT-01`; `8ce8a09feca4 -> NG`; `bd0cb4988188 -> NG`; `28af4ee0055d -> NG` |
237
237
  | `oat-project-implement/references/completion-and-closeout.md` | `f7dab9c1f96c -> IMPLEMENT-12`; `c69c17a069a8 -> IMPLEMENT-14`; `a97fa5634a68 -> IMPLEMENT-14`; `3af58881811c -> IMPLEMENT-14`; `4203e1f49d0f -> IMPLEMENT-14`; `c3bd2458a3d3 -> IMPLEMENT-13`; `95b5eafc070d -> IMPLEMENT-13`; `25ecbe9c998b -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f6f24fd71da4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f18283bc1cf9 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `2c1ffc4a82dd -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `3454a07aa843 -> IMPLEMENT-16`; `0d86e2098cfb -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d5fe597d266f -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `55a152e944c1 -> IMPLEMENT-16`; `effac7cbd573 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d2a34d8b148 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d27462aaed26 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d52ecb17268 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `5b91aabe3757 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `fd0ad919f702 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `63bf28df1474 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a4ed471dbc78 -> IMPLEMENT-16`; `6b7a64cec6e5 -> IMPLEMENT-16`; `0a4fdba0ebc0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a5033c2aada5 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `e77609eddba0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `351156e8dde4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `51d45bd2bbd1 -> IMPLEMENT-16`; `f7796ffcc804 -> IMPLEMENT-16`; `990d730cb494 -> IMPLEMENT-16`; `6ed28bb7d384 -> IMPLEMENT-16`; `8b7d4b5bcf1b -> IMPLEMENT-16`; `88aad500e6e9 -> IMPLEMENT-16`; `877e3e3f9eda -> IMPLEMENT-16`; `fc03c97f834e -> IMPLEMENT-16`; `12939a3da5e0 -> IMPLEMENT-16`; `bdb418335a88 -> IMPLEMENT-16`; `fba97e596ebd -> IMPLEMENT-16`; `3d0b5e2f14f0 -> IMPLEMENT-17`; `87f1424a8692 -> NG`; `6b1ec05182f0 -> IMPLEMENT-11`; `e6d696a27c91 -> NG`; `c77f8ccb52ad -> NG`; `48de2614c0ba -> IMPLEMENT-11`; `32d53f5212e5 -> IMPLEMENT-11`; `7cdb4a9c57b7 -> IMPLEMENT-11`; `16ffc0aa099b -> IMPLEMENT-11`; `d6868ea10b3f -> IMPLEMENT-11`; `4f05ff5567be -> IMPLEMENT-11`; `c70b47ae7a6d -> IMPLEMENT-11`; `5fafd093b58e -> NG`; `567d43ab0c2e -> NG`; `21ceaf7e658a -> NG`; `249427a9f475 -> NG`; `8a7ec13a9b7c -> NG`; `9aeb7fce2012 -> IMPLEMENT-18`; `f11a7cdda220 -> IMPLEMENT-18`; `4523ac029152 -> NG`; `6e87b08c4046 -> NG`; `baa6052c7f0a -> IMPLEMENT-18`; `27d3fad116b1 -> IMPLEMENT-18`; `2cfbeb4388a5 -> IMPLEMENT-18`; `c56ea56a56db -> NG`; `43e2e3c1380d -> IMPLEMENT-17`; `b49690277fb5 -> NG`; `df12304d6a36 -> NG`; `52eacac11fef -> IMPLEMENT-17`; `60092df6b17b -> IMPLEMENT-17`; `361872c6b00e -> IMPLEMENT-17`; `d2bc711a75fb -> IMPLEMENT-17` |
238
- | `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG`; `8ba5dbd2a0d8 -> NG` |
238
+ | `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG`; `8ba5dbd2a0d8 -> NG`; `4d6c519131e5 -> NG` |
239
239
  | `oat-project-implement/references/docs/autonomy-contract.md` | `* -> NG` |
240
- | `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10` |
240
+ | `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10`; `25f2a6e104ee -> NG`; `4aa21120295f -> NG` |
241
241
  | `oat-project-implement/references/plan-and-resume.md` | `413829d31e32 -> IMPLEMENT-02`; `c7706cd8ad09 -> IMPLEMENT-03`; `a80a948df658 -> IMPLEMENT-03`; `b7ea139780ec -> IMPLEMENT-03+IMPLEMENT-04`; `8d438f2180ba -> IMPLEMENT-03`; `9e72e0518cda -> IMPLEMENT-03`; `3e177a1021e6 -> IMPLEMENT-03+IMPLEMENT-04`; `b59fc9eb9ce3 -> IMPLEMENT-03`; `a2b1d6855283 -> IMPLEMENT-03`; `44351a32e52a -> IMPLEMENT-03`; `b98b022f5523 -> IMPLEMENT-03`; `e9f5b949e214 -> IMPLEMENT-03`; `316fb6d9e980 -> IMPLEMENT-03`; `8b25a2c5c548 -> IMPLEMENT-03`; `1a59b1c0e705 -> IMPLEMENT-03`; `466cd562fc52 -> IMPLEMENT-03`; `083d896978d5 -> IMPLEMENT-03`; `f4ab11c13ae9 -> IMPLEMENT-03`; `7dc17ffcc1c4 -> IMPLEMENT-03`; `f731a90adabd -> IMPLEMENT-04`; `886ac01e7aa9 -> IMPLEMENT-04`; `b715db67df0c -> IMPLEMENT-04`; `2d9f26a539f3 -> IMPLEMENT-10`; `28384dee114f -> IMPLEMENT-05`; `f2591a4978b4 -> NG`; `8290823080b5 -> IMPLEMENT-06`; `f75789bf6c8e -> IMPLEMENT-07` |
242
242
  | `oat-project-document/SKILL.md` | `4fc2d8618208 -> NG`; `3f9b0273ba77 -> NG`; `40f8be47affa -> NG`; `3a3c390528f3 -> DOCUMENT-03`; `2a7ba093b315 -> DOCUMENT-02`; `252aabe44db2 -> DOCUMENT-02`; `3751172de299 -> DOCUMENT-02`; `b987a0697ba9 -> DOCUMENT-01`; `a06ff3ca7926 -> NG`; `0d04714ca9fc -> NG`; `f79af01d94c6 -> DOCUMENT-02`; `71634113c348 -> DOCUMENT-02`; `cdb707f5081e -> NG` |
243
243
  | `oat-project-document/references/docs/autonomy-contract.md` | `* -> NG` |
@@ -22,7 +22,16 @@ Before each phase:
22
22
  1. Resolve the project dispatch policy and optional narrower phase maximum from
23
23
  the plan's `## Dispatch Profile`. Classify the complete phase scope and
24
24
  record the classification source and rationale. For Codex, also classify
25
- the preferred task effort.
25
+ the preferred task effort. Separately resolve
26
+ `oat_phase_recovery_policy`: use the phase-specific
27
+ `phase_attempt_limits.<pNN>` value when present, otherwise
28
+ `default_attempt_limit`, which defaults to `10`. Both project-default and
29
+ phase-specific limits must be integers from `0` through `20`; fail closed on
30
+ malformed values. Read `phase_recovery_attempts_used` only from the
31
+ authoritative
32
+ `oat_phase_recovery_policy.phase_attempt_usage.<pNN>.used_attempts` ledger in
33
+ `state.md`, never from a report summary or a reset local counter. Reconcile
34
+ any `pending_attempt` before launch.
26
35
  2. Resolve one exact phase implementer target with
27
36
  `--role implementer --ceiling-tier <project-or-phase-named-tier> --task-class <task-class> [--task-effort <codex-preferred-effort>] --report-scope <pNN> --report-action implementation`.
28
37
  Use the phase scope, not each task ID. Omit `--ceiling-tier` only for
@@ -53,6 +62,12 @@ Before each phase:
53
62
  expected_base_sha: {group base or PHASE_BASE_HEAD}
54
63
  commit_convention: {from plan.md}
55
64
  request_id: {generic dispatch request ID}
65
+ phase_recovery_limit: {resolved 0-20 limit}
66
+ phase_recovery_attempts_used: {durable prior usage, initially 0}
67
+ attempt_usage_ledger: {state.md oat_phase_recovery_policy.phase_attempt_usage.<pNN>}
68
+ pending_attempt: {reconciled pending entry or null}
69
+ original_request_id: {same generic phase dispatch request ID}
70
+ phase_recovery_authorization: {phase-standing|operator-extension}
56
71
  dispatch_policy: {resolver policy}
57
72
  dispatch_ceiling: {resolved project/phase maximum or none}
58
73
  dispatch_target: {resolver exact target}
@@ -77,6 +92,11 @@ another target-preserving route. After acceptance, missing telemetry, timeout,
77
92
  `BLOCKED`, or any other terminal outcome cannot trigger fallback or
78
93
  replacement.
79
94
 
95
+ The phase recovery limit is not a route retry limit. Implementation recovery
96
+ must not use route escalation, route-level advancement, model/provider
97
+ replacement, or `oat_orchestration_retry_limit`. It remains pinned to the exact
98
+ accepted implementation target.
99
+
80
100
  Tier 2 inline execution is allowed only under the existing verified-equivalent
81
101
  controls or documented inherit/default exception. Inline mode executes the
82
102
  phase-implementer contract directly; it does not reintroduce mandatory
@@ -86,23 +106,345 @@ Optional third-tier readiness is not a preflight blocker. Codex depth two may be
86
106
  provisioned as capability, but default phase execution requires only the root →
87
107
  phase-agent depth.
88
108
 
89
- #### Verify the Phase Report
109
+ #### Dedicated Phase Recovery Contract
110
+
111
+ This contract covers only a post-commit defect discovered by declared task,
112
+ transition, or phase verification. The default `10` attempt limit and a
113
+ phase-specific `0`–`20` override are independent of review-fix and gate retry
114
+ configuration.
115
+
116
+ ```yaml
117
+ oat_phase_recovery_policy:
118
+ default_attempt_limit: 10
119
+ phase_attempt_limits: {} # optional pNN: 0-20 overrides
120
+ phase_attempt_usage:
121
+ pNN:
122
+ used_attempts: 0
123
+ pending_attempt: null
124
+ ```
90
125
 
91
- On return:
126
+ A phase's `phase_attempt_usage.<pNN>` entry in `state.md` is the authoritative
127
+ durable usage ledger. The count is monotonic and survives process, handle, and
128
+ session interruption. Reports and canonical events corroborate the ledger; they
129
+ never replace it.
130
+
131
+ For a new attempt, the phase implementer that owns the worktree atomically
132
+ increments `used_attempts` and writes `pending_attempt` before edit. The pending
133
+ entry records attempt number, event ID, original request, original task/commit,
134
+ discovering check, exact dispatch target, reservation HEAD, and status. The
135
+ agent's narrow ledger write is the only project-state write allowed while it
136
+ owns the worktree; no root writer may race it.
137
+
138
+ On return or resume, reconcile the ledger against the original commit, current
139
+ HEAD, bounded diff, report, and canonical event:
140
+
141
+ - before bookkeeping, `pending_attempt` is either an active reservation, a
142
+ matching committed terminal marker with status `completed` or `failed`, or
143
+ `null` only when no recovery attempt is reported;
144
+ - an active pending attempt continues, after every recorded identity and bounded
145
+ diff reconcile, as the same attempt without consuming another;
146
+ - a nonzero `used_attempts` count with a matching pending attempt continues only
147
+ after complete reconciliation and does not consume another attempt;
148
+ - an interruption preserves the consumed reservation in the working tree, even
149
+ if no recovery commit exists yet;
150
+ - a matching committed terminal marker is a pre-bookkeeping handoff for root
151
+ validation, not a settled ledger;
152
+ - a prematurely cleared marker when a report claims an attempt, a mismatched
153
+ status or identity, an active marker presented as terminal, an unreconciled
154
+ pending attempt, a regressed count, a missing reservation, or an unexplained
155
+ dirty file fails closed before bookkeeping; and
156
+ - when `used_attempts` is equal to or greater than `phase_recovery_limit`, no
157
+ new attempt may be reserved because the phase recovery budget is exhausted.
158
+ An already-pending attempt may only finish or fail.
159
+
160
+ An unreconciled pending attempt rejects and blocks resume before editing; it
161
+ cannot be converted into a terminal handoff by report wording.
162
+
163
+ After applying a bounded correction, the agent runs focused and phase
164
+ verification before creating a candidate commit. When both checks pass, it
165
+ atomically marks the pending entry `completed`, creates the append-only recovery
166
+ commit containing the bounded correction plus that transition, and immediately
167
+ reruns both checks against the committed HEAD. Those post-commit reruns are the
168
+ authoritative recovery result. If either rerun fails, the agent atomically
169
+ replaces `completed` with `failed` and durably commits that ledger-only
170
+ transition; the immutable candidate commit is not reported as a successful
171
+ recovery commit. A check that fails before the candidate commit instead restores
172
+ the bounded files to their original committed content and durably commits only
173
+ the matching `failed` transition. Inability to commit terminal evidence remains
174
+ unreconciled and cannot be cleared. Root bookkeeping clears a matching terminal
175
+ marker only after validating the report, event, immutable history, accounting,
176
+ exact target and axes, and authoritative post-commit verification when a
177
+ candidate commit exists.
178
+ It always preserves `used_attempts` and, for a failed attempt, the terminal-stop
179
+ disposition. The resulting `pending_attempt: null` state is the settled ledger.
180
+ Failed edit, commit, or re-verification paths retain the consumed count. No
181
+ retry, fresh launch, extension, or nonzero resume resets usage.
182
+
183
+ A project default limit of `0` stops automatic recovery for direction without
184
+ edit, commit, attempt consumption, or fallback. A phase-specific override of
185
+ `0` has the same effect: stop for direction without edit, commit, attempt
186
+ consumption, or fallback. Still append the direction-required recovery event.
187
+
188
+ Automatic recovery is eligible only when every condition is true:
189
+
190
+ - the correction is mechanically bounded and unambiguous;
191
+ - it remains within declared phase intent and public requirements;
192
+ - any file-boundary expansion is mechanically derived and remains in-phase;
193
+ - architecture, security, product scope, requirements, and public behavior are
194
+ unchanged;
195
+ - the work is non-destructive, reversible, and outside protected-branch,
196
+ credential, or other consequential boundaries;
197
+ - the exact target remains unchanged and bindable regardless of handle state;
198
+ - handle continuity follows one of the authorized alternatives below;
199
+ - attempt accounting follows one of the authorized alternatives below; and
200
+ - focused plus relevant phase verification can establish correctness.
201
+
202
+ Handle and exact-target continuity use these mutually compatible branches:
203
+
204
+ 1. When the accepted handle is available or resumable, use same-handle
205
+ continuation.
206
+ 2. When the accepted handle is unavailable or unresumable, an unchanged,
207
+ bindable exact target plus a lifecycle-authorized recover scope, a reconciled
208
+ pending attempt, and continuation linkage authorizes fresh `mode: recover`.
209
+ 3. A lost or unbindable exact target requires a direction-required stop with no
210
+ fallback.
211
+
212
+ Handle unavailability alone does not make automatic recovery ineligible or
213
+ stop it. It selects the second branch only when all its conditions hold.
214
+
215
+ Attempt accounting uses exactly one of these alternatives:
216
+
217
+ 1. **Pending completion:** a matching `pending_attempt` may continue only after
218
+ complete reconciliation of the authoritative ledger, original request,
219
+ immutable original commit at the same history position, bounded worktree
220
+ diff, and unchanged exact target. Continue and finish that same reserved
221
+ attempt without incrementing `used_attempts` or creating another
222
+ reservation, even when the existing count equals the limit.
223
+ 2. **New reservation:** when no `pending_attempt` exists,
224
+ `phase_recovery_attempts_used < phase_recovery_limit` is mandatory. Atomically
225
+ increment usage and write the new reservation before editing.
226
+
227
+ For the final-attempt boundary, `limit=1`, `used=1`, and a fully reconciled
228
+ matching `pending_attempt` continue and finish the same reserved attempt
229
+ without incrementing usage. With `limit=1`, `used=1`, and no `pending_attempt`,
230
+ stop direction-required before edit with no new reservation and no fallback.
231
+
232
+ The implementer records eligibility before editing. A new reservation consumes
233
+ one attempt before editing begins. A failed edit, commit, or re-verification
234
+ leaves that attempt consumed and records no successful recovery commit.
235
+ Continuing a reconciled pending attempt does not consume another. Successful
236
+ recovery creates one append-only recovery commit per successful attempt, reruns
237
+ the failing focused command and relevant phase verification against committed
238
+ HEAD as the authoritative result, and continues without a prompt. A failed
239
+ post-commit rerun transitions the committed marker to `failed` in separate
240
+ ledger-only terminal evidence and stops without claiming the candidate as a
241
+ successful recovery commit. At three recovery events, require an elevated
242
+ recovery-volume warning and continue if all eligibility conditions still hold.
243
+
244
+ One no-edit rerun is permitted for evidence-backed infrastructure or flake
245
+ failure without attempt consumption. A repeated unexplained failure is
246
+ ambiguous: stop without edit and record direction-required rather than
247
+ speculating.
248
+
249
+ The accepted task commit remains immutable at the same history position.
250
+ Amend, reset, rebase, squash, replacement task IDs, or concealed rewriting
251
+ invalidates the report. Mechanically related failures from the same
252
+ verification command may be handled in one atomic attempt and commit.
253
+ Independent failures require separate attempts and commits.
254
+
255
+ Stop with `DONE_WITH_CONCERNS` or `BLOCKED` for ambiguous or contradictory
256
+ evidence; architecture, security, product, requirements, or public-behavior
257
+ change; non-mechanical file-boundary widening; destructive, irreversible,
258
+ credential-bearing, protected-branch, or out-of-scope work; retry exhaustion;
259
+ dirty worktree or dirty history; inability to establish correctness; missing
260
+ original-request or missing exact-target provenance; unverifiable commit range;
261
+ malformed recovery event; exact-target loss; or an independent governance cap.
262
+ No stop boundary authorizes a fallback model, provider, route, or worker.
263
+ If the exact target is lost or cannot continue, stop before editing.
264
+ Architecture, security, product, or requirements changes stop for direction.
265
+ Non-mechanical widening or destructive work stops before editing. Retry
266
+ exhaustion and every governance cap stop automatic recovery. A dirty worktree
267
+ or dirty history blocks continuation. Inability to establish correctness,
268
+ missing original-request provenance, missing exact-target provenance, an
269
+ unverifiable commit range, or a malformed recovery event stops for direction.
270
+ If focused and phase verification cannot establish correctness, stop for
271
+ direction.
272
+
273
+ When the accepted handle can continue, use only that handle. If it cannot be
274
+ resumed, a fresh same-target recovery launch is allowed only under this
275
+ already-resolved lifecycle authority. Preserve the exact target and link the
276
+ fresh record to the original request through the generic dispatch record's
277
+ existing `continuation_events`. Missing or changed provenance stops; it never
278
+ creates route eligibility.
279
+
280
+ Before that fresh launch, reconcile or create exactly one authoritative pending
281
+ attempt reservation. Launch the exact original phase-agent target in
282
+ `mode: recover` with this isolated scope:
283
+
284
+ ```yaml
285
+ mode: recover
286
+ phase: { pNN }
287
+ original_request_id: { original phase request }
288
+ continuation_event: { generic continuation_events identifier }
289
+ recovery_base_head: { current immutable Git HEAD }
290
+ original_task_id: { originating planned task }
291
+ original_commit: { immutable task commit }
292
+ defect_class: { lint|type|test|build|composition|other }
293
+ discovered_by: { exact command or transition check }
294
+ bounded_correction_scope: { mechanical correction only }
295
+ bounded_files: { declared or mechanically derived in-phase files }
296
+ phase_recovery_limit: { resolved total limit }
297
+ phase_recovery_attempts_used: { authoritative nonzero used count }
298
+ pending_attempt: { matching authoritative ledger entry }
299
+ focused_verification: { exact failing check }
300
+ phase_verification: { relevant phase command }
301
+ dispatch_target: { exact original launcher-owned target }
302
+ dispatch_axes: { unchanged original axes }
303
+ dispatch_stamp: { original formal Dispatch line }
304
+ ```
305
+
306
+ Recover mode never replays planned tasks and never consumes review findings.
307
+ Require its Phase Recovery Continuation Report, matching canonical event,
308
+ ledger reconciliation, immutable-history proof, focused/phase verification,
309
+ and recovery commit when successful. A missing field, changed target, unrelated
310
+ dirty diff, or unreconciled reservation is an accepted terminal stop, not
311
+ fallback eligibility.
312
+
313
+ Exhaustion requires operator direction with one of these durable outcomes:
314
+
315
+ 1. **Add N attempts:** set the active phase's total
316
+ to `used_attempts + N` under `phase_attempt_limits.<pNN>`, capped at `20`;
317
+ do not reset prior usage.
318
+ 2. **Authorize changed scope:** record a consequential or scope-expanding
319
+ action outside automatic recovery.
320
+ 3. **Stop:** preserve the worktree, immutable history, and evidence.
321
+
322
+ An extension preserves the exact implementation target unless the operator
323
+ explicitly authorizes a separate route action. Repeated exhaustion never resets
324
+ usage or silently lifts the cap.
325
+
326
+ Append exactly one canonical recovery event for every recovered,
327
+ direction-required, or failed-attempt disposition:
328
+
329
+ ```markdown
330
+ ### Recovery Event {event-id}
331
+
332
+ - Phase/task: {phase and originating task when known}
333
+ - Original request: {original_request_id}
334
+ - Original commit: {immutable task commit}
335
+ - Defect class: lint | type | test | build | composition | other
336
+ - Discovered by: {exact verification command or transition check}
337
+ - Disposition: recovered | direction-required | failed-attempt
338
+ - Authorization: phase-standing | operator-extension | operator-scope
339
+ - Attempt: {used}/{phase_recovery_limit}
340
+ - Dispatch target: {exact launcher-owned implementation target}
341
+ - Recovery commit: {sha or -}
342
+ - Verification: {focused and relevant phase result}
343
+ - Reason: {eligibility or stop-boundary evidence}
344
+ ```
92
345
 
93
- - require `DONE` or `DONE_WITH_CONCERNS`;
94
- - verify phase ID, request ID, phase base, task count, and phase verification;
95
- - for each task, verify its commit is exactly one append-only commit in plan
96
- order, changes only declared files, and has passing task verification;
346
+ Exactly one event is counted even when an attempt fails before a commit. The
347
+ canonical fields make defect count, prompt count, and successful repair count
348
+ independently measurable. Root bookkeeping copies validated report facts; it
349
+ does not infer or reconstruct them.
350
+
351
+ #### Verify the Phase Report
352
+
353
+ On return, select exactly one branch from this status matrix:
354
+
355
+ | Report status | Validation branch | Root action |
356
+ | -------------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------- |
357
+ | `DONE` | accepted success | Validate the complete report and continue lifecycle execution. |
358
+ | `DONE_WITH_CONCERNS` | accepted success or accepted terminal stop, from event state | Continue only for validated success; otherwise record the stop and return. |
359
+ | `BLOCKED` | accepted terminal stop | Validate the complete terminal evidence, record it, and stop. |
360
+ | `NEEDS_CONTEXT` | context-only continuation | Supply only missing artifact context through the original accepted handle. |
361
+ | `INVALID_RUN_ABORT` | invalid-run terminal | Preserve invalidating evidence and terminate every handle owned by the run. |
362
+
363
+ `INVALID_RUN_ABORT` terminates every accepted handle and never authorizes
364
+ fallback, replacement, or sequential degradation.
365
+
366
+ ##### Pre-bookkeeping terminal handoff matrix
367
+
368
+ Select the report-status branch and exactly one attempt-state row. These are
369
+ pre-bookkeeping states, so none of the rows with a terminal marker is a settled
370
+ ledger:
371
+
372
+ | Reported attempt state | Required committed pre-bookkeeping ledger | Root validation | Root action |
373
+ | --------------------------------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
374
+ | No recovery attempt reported | `pending_attempt: null` | Validate that the report claims no recovery attempt or recovery event and no attempt-accounting transition; ordinary phase success may continue. | Leave `pending_attempt` null; accepted success may continue. |
375
+ | `direction-required` before any attempt | `pending_attempt: null` | Validate the terminal-stop report, canonical `direction-required` event, unchanged usage, immutable history, and evidence of no reservation, edit, or recovery commit. | Leave `pending_attempt` null, preserve usage, record the event, and stop. |
376
+ | Recovery reported as `recovered` | Matching committed `completed` marker | Validate the report, immutable original history, recovery commit, exact target and axes, canonical `recovered` event, attempt count, and all verification. | After all validation passes, clear the marker, preserve `used_attempts`, record the event, continue. |
377
+ | Recovery reported as `failed-attempt` | Matching committed `failed` marker | Validate the terminal-stop report, event, immutable history, accounting, exact target and axes, attempt count, and failed verification evidence. | After all validation passes, clear the marker, preserve `used_attempts` and the stop disposition. |
378
+ | Attempt reported with `pending_attempt: null` | Invalid premature clear | Fail closed because the claimed attempt has no committed terminal marker. | Perform no bookkeeping and do not continue or fallback. |
379
+ | Terminal status or identity mismatch | Invalid contradiction | Fail closed on a status, event ID, request, task/commit, target, attempt-number, or disposition mismatch. | Perform no bookkeeping and do not continue or fallback. |
380
+ | Marker status `active` | Invalid in-flight state | Fail closed because an active reservation is not a terminal handoff. | Perform no bookkeeping and do not continue or fallback. |
381
+ | Any other unreconciled or contradictory state | Invalid | Fail closed before mutating project state. | Perform no bookkeeping and do not continue or fallback. |
382
+
383
+ Only after a selected `recovered` or `failed-attempt` row validates completely
384
+ may root bookkeeping clear `pending_attempt`, append the validated canonical
385
+ event, and preserve monotonic `used_attempts`. For `failed-attempt`, clearing
386
+ must also preserve the terminal-stop disposition and then stop. The no-recovery
387
+ and pre-attempt `direction-required` rows already have `pending_attempt: null`;
388
+ root leaves it null and never treats it as attempted-recovery evidence. The
389
+ post-bookkeeping result is the only settled state for an attempted recovery:
390
+ `pending_attempt: null` with nondecreasing `used_attempts`.
391
+
392
+ Both accepted success and accepted terminal-stop branches must:
393
+
394
+ - verify phase ID, request ID, phase or recovery base, and phase verification;
395
+ - for a Phase Implementation Report, verify task count; for a Phase Recovery
396
+ Continuation Report, verify the original task and commit instead;
397
+ - only for a Phase Implementation Report, verify each planned task commit is
398
+ exactly one append-only commit in plan order, changes only declared files, and
399
+ has passing task verification; never require a Phase Recovery Continuation
400
+ Report to replay or restate all planned task outcomes;
401
+ - for each reported attempted recovery (`recovered` or `failed-attempt`), verify
402
+ attempt accounting, the immutable original commit and original request,
403
+ exact-target provenance, one in-scope append-only recovery commit when
404
+ successful, focused and phase verification, exactly one well-formed canonical
405
+ recovery event, and the matching committed `completed` or `failed`
406
+ pre-bookkeeping terminal marker;
407
+ - for a pre-attempt `direction-required` event, verify unchanged accounting,
408
+ immutable history, exact-target and stop-boundary evidence, and the absence of
409
+ any reservation, edit, or recovery commit; require `pending_attempt: null`;
410
+ - verify recovered, direction-required, and failed-attempt dispositions are all
411
+ represented without gaps or duplicate events;
97
412
  - verify the reported commit range equals the worktree's range from
98
- `PHASE_BASE_HEAD` to HEAD;
99
- - require a clean worktree; and
413
+ `PHASE_BASE_HEAD` to HEAD for implementation, or from `recovery_base_head` to
414
+ HEAD for recover mode;
415
+ - verify the worktree state matches the selected branch; and
100
416
  - validate every optional child record without requiring any child.
101
417
 
418
+ The accepted success branch requires passing phase verification, the matching
419
+ pre-bookkeeping row above, no unresolved direction-required event, a clean
420
+ worktree, and then continues. If recovery was reported, it requires the
421
+ committed `completed` marker while validation runs; if no recovery was reported,
422
+ it permits `pending_attempt: null`. It never clears a marker before validation.
423
+
424
+ The accepted terminal-stop branch validates provenance, attempt accounting,
425
+ immutable history, canonical recovery event shape, commit range, and ledger
426
+ state before bookkeeping. A pre-attempt `direction-required` stop requires
427
+ `pending_attempt: null`, unchanged usage, and evidence that no reservation,
428
+ edit, or recovery commit occurred; root records its event without clearing a
429
+ marker. A reported failed attempt instead requires the matching committed
430
+ `failed` marker while validation runs; a marker that is active, missing,
431
+ mismatched, prematurely cleared, or otherwise unreconciled is invalid. Its
432
+ worktree may retain only a bounded failed-attempt diff named by the report; any
433
+ other dirt is invalid. After complete validation, root clears the failed marker
434
+ while preserving usage and the stop disposition. A valid `BLOCKED` report is
435
+ recorded, then stops without continuation or fallback.
436
+ `DONE_WITH_CONCERNS` uses this terminal branch when it reports an unresolved
437
+ direction-required or failed-attempt disposition; otherwise it may use the
438
+ success branch only when every success invariant passes.
439
+
440
+ A dirty worktree, unverifiable commit range, missing provenance, malformed
441
+ recovery event, rewritten original commit, or recovery commit outside the
442
+ declared/mechanically derived phase boundary blocks continuation.
443
+
102
444
  `NEEDS_CONTEXT` may receive only missing artifact context through the original
103
- handle. `BLOCKED` is terminal for the attempt. `INVALID_RUN_ABORT` terminates
104
- every accepted handle owned by the run, preserves invalidating evidence, and
105
- never authorizes fallback, replacement, or sequential degradation. Sequential
445
+ handle. It cannot change target or scope. `INVALID_RUN_ABORT` terminates every
446
+ accepted handle owned by the run, preserves invalidating evidence, and never
447
+ authorizes fallback, replacement, or sequential degradation. Sequential
106
448
  degradation is forbidden for the invalid run.
107
449
 
108
450
  ### Per-Phase Review
@@ -197,6 +539,11 @@ On Critical/Important findings:
197
539
  4. Dispatch one new root-owned reviewer round against the updated range.
198
540
  5. Repeat until pass or retry exhaustion.
199
541
 
542
+ Review-fix and gate rounds continue to use
543
+ `oat_orchestration_retry_limit`; implementation recovery does not consume or
544
+ alter that counter. The independent three-cycle review governance cap,
545
+ Critical/Important handling, and protected boundaries remain unchanged.
546
+
200
547
  If the original phase handle cannot be resumed after successful phase
201
548
  completion, the root may launch at most one fresh phase implementer with the
202
549
  same exact target and bounded fix scope. Its generic dispatch record must
@@ -235,9 +235,9 @@ remains immutable baseline evidence for the original p01-t01 verification.
235
235
  | `oat-project-import-plan/SKILL.md` | `f7ca8635452f -> NG`; `c2e5fa410069 -> NG`; `655d61df0a8f -> NG`; `dceff5cc04b5 -> NG`; `1af4957a1af2 -> IMPORT-01`; `45b699c1c0b5 -> IMPORT-01`; `ba6d120791c1 -> IMPORT-01`; `070ebc5259af -> IMPORT-03`; `c11552696e2e -> IMPORT-03`; `cfe661966baf -> IMPORT-04`; `baa91c0a0bf8 -> NG`; `e364e84b2702 -> NG`; `39031985a945 -> IMPORT-06`; `f106aa29a217 -> IMPORT-07`; `65038450aee3 -> IMPORT-07`; `bee4c4aa34c6 -> NG`; `3f0b53056edd -> IMPORT-09` |
236
236
  | `oat-project-implement/SKILL.md` | `18980f6bc1a6 -> NG`; `e0355c7a05e9 -> IMPLEMENT-11+IMPLEMENT-13+IMPLEMENT-16`; `6296f41ae11c -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> IMPLEMENT-01`; `8ce8a09feca4 -> NG`; `bd0cb4988188 -> NG`; `28af4ee0055d -> NG` |
237
237
  | `oat-project-implement/references/completion-and-closeout.md` | `f7dab9c1f96c -> IMPLEMENT-12`; `c69c17a069a8 -> IMPLEMENT-14`; `a97fa5634a68 -> IMPLEMENT-14`; `3af58881811c -> IMPLEMENT-14`; `4203e1f49d0f -> IMPLEMENT-14`; `c3bd2458a3d3 -> IMPLEMENT-13`; `95b5eafc070d -> IMPLEMENT-13`; `25ecbe9c998b -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f6f24fd71da4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `f18283bc1cf9 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `2c1ffc4a82dd -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `3454a07aa843 -> IMPLEMENT-16`; `0d86e2098cfb -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d5fe597d266f -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `55a152e944c1 -> IMPLEMENT-16`; `effac7cbd573 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d2a34d8b148 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `d27462aaed26 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `9d52ecb17268 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `5b91aabe3757 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `fd0ad919f702 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `63bf28df1474 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a4ed471dbc78 -> IMPLEMENT-16`; `6b7a64cec6e5 -> IMPLEMENT-16`; `0a4fdba0ebc0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `a5033c2aada5 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `e77609eddba0 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `351156e8dde4 -> IMPLEMENT-13+IMPLEMENT-14+IMPLEMENT-15+IMPLEMENT-16`; `51d45bd2bbd1 -> IMPLEMENT-16`; `f7796ffcc804 -> IMPLEMENT-16`; `990d730cb494 -> IMPLEMENT-16`; `6ed28bb7d384 -> IMPLEMENT-16`; `8b7d4b5bcf1b -> IMPLEMENT-16`; `88aad500e6e9 -> IMPLEMENT-16`; `877e3e3f9eda -> IMPLEMENT-16`; `fc03c97f834e -> IMPLEMENT-16`; `12939a3da5e0 -> IMPLEMENT-16`; `bdb418335a88 -> IMPLEMENT-16`; `fba97e596ebd -> IMPLEMENT-16`; `3d0b5e2f14f0 -> IMPLEMENT-17`; `87f1424a8692 -> NG`; `6b1ec05182f0 -> IMPLEMENT-11`; `e6d696a27c91 -> NG`; `c77f8ccb52ad -> NG`; `48de2614c0ba -> IMPLEMENT-11`; `32d53f5212e5 -> IMPLEMENT-11`; `7cdb4a9c57b7 -> IMPLEMENT-11`; `16ffc0aa099b -> IMPLEMENT-11`; `d6868ea10b3f -> IMPLEMENT-11`; `4f05ff5567be -> IMPLEMENT-11`; `c70b47ae7a6d -> IMPLEMENT-11`; `5fafd093b58e -> NG`; `567d43ab0c2e -> NG`; `21ceaf7e658a -> NG`; `249427a9f475 -> NG`; `8a7ec13a9b7c -> NG`; `9aeb7fce2012 -> IMPLEMENT-18`; `f11a7cdda220 -> IMPLEMENT-18`; `4523ac029152 -> NG`; `6e87b08c4046 -> NG`; `baa6052c7f0a -> IMPLEMENT-18`; `27d3fad116b1 -> IMPLEMENT-18`; `2cfbeb4388a5 -> IMPLEMENT-18`; `c56ea56a56db -> NG`; `43e2e3c1380d -> IMPLEMENT-17`; `b49690277fb5 -> NG`; `df12304d6a36 -> NG`; `52eacac11fef -> IMPLEMENT-17`; `60092df6b17b -> IMPLEMENT-17`; `361872c6b00e -> IMPLEMENT-17`; `d2bc711a75fb -> IMPLEMENT-17` |
238
- | `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG`; `8ba5dbd2a0d8 -> NG` |
238
+ | `oat-project-implement/references/dispatch-and-dry-run.md` | `21b85f5e4daa -> IMPLEMENT-08`; `74c92b32bb2a -> IMPLEMENT-08`; `8efd2d0517ab -> IMPLEMENT-09`; `461ed9b3e495 -> IMPLEMENT-09`; `b5ad64fd744d -> NG`; `14ce436cfffa -> NG`; `043ca36da3e2 -> NG`; `a23e45c1dc8d -> NG`; `498143bb41a7 -> NG`; `4fe3eb179023 -> NG`; `7f75485e5a33 -> NG`; `8ec3a96df029 -> NG`; `16c3f96e758d -> NG`; `5915c41fe058 -> NG`; `f51e43eeac56 -> NG`; `fd41c25623cb -> NG`; `58a932ed6453 -> NG`; `4718bd3ce12d -> NG`; `58c444a2126b -> NG`; `2df3adae4120 -> NG`; `e75df892b55c -> NG`; `8ba5dbd2a0d8 -> NG`; `4d6c519131e5 -> NG` |
239
239
  | `oat-project-implement/references/docs/autonomy-contract.md` | `* -> NG` |
240
- | `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10` |
240
+ | `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10`; `25f2a6e104ee -> NG`; `4aa21120295f -> NG` |
241
241
  | `oat-project-implement/references/plan-and-resume.md` | `413829d31e32 -> IMPLEMENT-02`; `c7706cd8ad09 -> IMPLEMENT-03`; `a80a948df658 -> IMPLEMENT-03`; `b7ea139780ec -> IMPLEMENT-03+IMPLEMENT-04`; `8d438f2180ba -> IMPLEMENT-03`; `9e72e0518cda -> IMPLEMENT-03`; `3e177a1021e6 -> IMPLEMENT-03+IMPLEMENT-04`; `b59fc9eb9ce3 -> IMPLEMENT-03`; `a2b1d6855283 -> IMPLEMENT-03`; `44351a32e52a -> IMPLEMENT-03`; `b98b022f5523 -> IMPLEMENT-03`; `e9f5b949e214 -> IMPLEMENT-03`; `316fb6d9e980 -> IMPLEMENT-03`; `8b25a2c5c548 -> IMPLEMENT-03`; `1a59b1c0e705 -> IMPLEMENT-03`; `466cd562fc52 -> IMPLEMENT-03`; `083d896978d5 -> IMPLEMENT-03`; `f4ab11c13ae9 -> IMPLEMENT-03`; `7dc17ffcc1c4 -> IMPLEMENT-03`; `f731a90adabd -> IMPLEMENT-04`; `886ac01e7aa9 -> IMPLEMENT-04`; `b715db67df0c -> IMPLEMENT-04`; `2d9f26a539f3 -> IMPLEMENT-10`; `28384dee114f -> IMPLEMENT-05`; `f2591a4978b4 -> NG`; `8290823080b5 -> IMPLEMENT-06`; `f75789bf6c8e -> IMPLEMENT-07` |
242
242
  | `oat-project-document/SKILL.md` | `4fc2d8618208 -> NG`; `3f9b0273ba77 -> NG`; `40f8be47affa -> NG`; `3a3c390528f3 -> DOCUMENT-03`; `2a7ba093b315 -> DOCUMENT-02`; `252aabe44db2 -> DOCUMENT-02`; `3751172de299 -> DOCUMENT-02`; `b987a0697ba9 -> DOCUMENT-01`; `a06ff3ca7926 -> NG`; `0d04714ca9fc -> NG`; `f79af01d94c6 -> DOCUMENT-02`; `71634113c348 -> DOCUMENT-02`; `cdb707f5081e -> NG` |
243
243
  | `oat-project-document/references/docs/autonomy-contract.md` | `* -> NG` |