@open-agent-toolkit/cli 0.3.17 → 0.3.19

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 (109) hide show
  1. package/assets/agents/oat-phase-implementer.md +81 -3
  2. package/assets/agents/oat-reviewer.md +15 -5
  3. package/assets/bundle-metadata.json +1 -1
  4. package/assets/docs/reference/cli-reference.md +8 -5
  5. package/assets/docs/reference/oat-directory-structure.md +1 -0
  6. package/assets/docs/reference/project-artifacts.md +17 -1
  7. package/assets/docs/reference/project-state-machine.md +19 -4
  8. package/assets/docs/skills/brainstorm.md +2 -1
  9. package/assets/docs/skills/index.md +1 -0
  10. package/assets/docs/workflows/advanced/autonomy.md +9 -1
  11. package/assets/docs/workflows/advanced/workflow-gates.md +11 -6
  12. package/assets/docs/workflows/approvals-and-automation.md +13 -8
  13. package/assets/docs/workflows/choose-workflow.md +16 -8
  14. package/assets/docs/workflows/projects/closeout/closeout-skills.md +8 -3
  15. package/assets/docs/workflows/projects/closeout/pr-flow.md +2 -0
  16. package/assets/docs/workflows/projects/execution/execution-skills.md +14 -2
  17. package/assets/docs/workflows/projects/execution/implementation-execution.md +15 -0
  18. package/assets/docs/workflows/projects/execution/picking-up-projects.md +10 -1
  19. package/assets/docs/workflows/projects/execution/project-log.md +22 -0
  20. package/assets/docs/workflows/projects/lifecycle.md +73 -9
  21. package/assets/docs/workflows/projects/planning/hill-checkpoints.md +18 -1
  22. package/assets/docs/workflows/projects/planning/planning-skills.md +11 -10
  23. package/assets/docs/workflows/projects/planning/starting-projects.md +92 -20
  24. package/assets/docs/workflows/projects/reviews/index.md +15 -2
  25. package/assets/docs/workflows/projects/reviews/review-flavors.md +5 -3
  26. package/assets/public-package-versions.json +4 -4
  27. package/assets/skills/oat-brainstorm/SKILL.md +33 -9
  28. package/assets/skills/oat-brainstorm/references/destinations.md +9 -4
  29. package/assets/skills/oat-docs/SKILL.md +9 -4
  30. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
  31. package/assets/skills/oat-project-autonomous/SKILL.md +14 -8
  32. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +17 -2
  33. package/assets/skills/oat-project-brief/SKILL.md +592 -0
  34. package/assets/skills/oat-project-brief/references/brief-contract.md +294 -0
  35. package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +393 -0
  36. package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +84 -0
  37. package/assets/skills/oat-project-capture/SKILL.md +2 -2
  38. package/assets/skills/oat-project-complete/SKILL.md +7 -2
  39. package/assets/skills/oat-project-discover/SKILL.md +3 -2
  40. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -1
  41. package/assets/skills/oat-project-document/SKILL.md +11 -1
  42. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +17 -2
  43. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  44. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +40 -0
  45. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +17 -2
  46. package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +4 -0
  47. package/assets/skills/oat-project-implement/references/phase-execution.md +166 -1
  48. package/assets/skills/oat-project-implement/references/plan-and-resume.md +97 -3
  49. package/assets/skills/oat-project-import-plan/SKILL.md +5 -1
  50. package/assets/skills/oat-project-lite/SKILL.md +4 -1
  51. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +17 -2
  52. package/assets/skills/oat-project-new/SKILL.md +5 -1
  53. package/assets/skills/oat-project-next/SKILL.md +31 -4
  54. package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +4 -0
  55. package/assets/skills/oat-project-plan/SKILL.md +12 -2
  56. package/assets/skills/oat-project-plan-writing/SKILL.md +6 -4
  57. package/assets/skills/oat-project-pr-final/SKILL.md +15 -3
  58. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +17 -2
  59. package/assets/skills/oat-project-pr-progress/SKILL.md +31 -4
  60. package/assets/skills/oat-project-progress/SKILL.md +30 -8
  61. package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +4 -0
  62. package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
  63. package/assets/skills/oat-project-quick-start/SKILL.md +60 -1
  64. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +17 -2
  65. package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +4 -0
  66. package/assets/skills/oat-project-reconcile/SKILL.md +65 -3
  67. package/assets/skills/oat-project-review-provide/SKILL.md +331 -12
  68. package/assets/skills/oat-project-review-receive/SKILL.md +86 -1
  69. package/assets/skills/oat-project-revise/SKILL.md +27 -4
  70. package/assets/skills/oat-project-summary/SKILL.md +95 -2
  71. package/assets/skills/oat-wave-execute/SKILL.md +3 -2
  72. package/assets/templates/implementation-brief.md +165 -0
  73. package/assets/templates/plan-brief.md +140 -0
  74. package/assets/templates/plan.md +1 -1
  75. package/assets/templates/state.md +8 -2
  76. package/dist/commands/init/tools/shared/skill-script-references.d.ts.map +1 -1
  77. package/dist/commands/init/tools/shared/skill-script-references.js +8 -1
  78. package/dist/commands/project/log/append.d.ts.map +1 -1
  79. package/dist/commands/project/log/append.js +70 -10
  80. package/dist/commands/project/new/scaffold.d.ts +1 -1
  81. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  82. package/dist/commands/project/new/scaffold.js +35 -7
  83. package/dist/commands/project/promote/promote.d.ts +32 -1
  84. package/dist/commands/project/promote/promote.d.ts.map +1 -1
  85. package/dist/commands/project/promote/promote.js +562 -5
  86. package/dist/commands/project/validate-plan/frontmatter.d.ts +12 -0
  87. package/dist/commands/project/validate-plan/frontmatter.d.ts.map +1 -0
  88. package/dist/commands/project/validate-plan/frontmatter.js +27 -0
  89. package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
  90. package/dist/commands/project/validate-plan/index.js +52 -18
  91. package/dist/commands/project/validate-plan/profiles.d.ts +54 -0
  92. package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -0
  93. package/dist/commands/project/validate-plan/profiles.js +269 -0
  94. package/dist/commands/project/validate-plan/validate-plan.d.ts +3 -19
  95. package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
  96. package/dist/commands/project/validate-plan/validate-plan.js +5 -82
  97. package/dist/commands/shared/agents-md-lock.d.ts +3 -0
  98. package/dist/commands/shared/agents-md-lock.d.ts.map +1 -0
  99. package/dist/commands/shared/agents-md-lock.js +130 -0
  100. package/dist/commands/shared/agents-md.d.ts.map +1 -1
  101. package/dist/commands/shared/agents-md.js +26 -8
  102. package/dist/commands/shared/frontmatter.d.ts +1 -1
  103. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  104. package/dist/commands/shared/frontmatter.js +1 -0
  105. package/dist/commands/state/generate.d.ts.map +1 -1
  106. package/dist/commands/state/generate.js +51 -2
  107. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  108. package/dist/commands/tools/shared/pack-manifest.js +3 -0
  109. package/package.json +2 -2
@@ -165,6 +165,17 @@ remains.
165
165
  | LITE-08 | `oat-project-lite` | Plan artifact-review findings | Accept offered Medium/Low fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and lite disposition |
166
166
  | LITE-09 | `oat-project-lite` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply the configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
167
167
  | LITE-10 | `oat-project-lite` | Configured lifecycle gate posture | Keep or disable each configured lifecycle gate | Preserve an existing override map; otherwise preserve configured gates and write no override in non-interactive planning | `auto-resolve` / `boundary:repository-policy-approval` | `state.md` override map or recorded non-interactive preservation |
168
+ | BRIEF-01 | `oat-project-brief` | Inherited dirty tree | Commit, proceed, or abort | Proceed without staging unrelated files; a required destructive cleanup stops | `auto-resolve` / `boundary:destructive-change-risk` | Brief preflight note |
169
+ | BRIEF-02 | `oat-project-brief` | Missing name or description | Ask for required startup input | Derive a slug from the explicit goal and use the goal as the description; stop if the goal is not substantive | `auto-resolve` / `boundary:product-judgment` | Brief Goal and project path |
170
+ | BRIEF-03 | `oat-project-brief` | Alignment interview | Ask readiness rounds until the user accepts the design | Settle facts from repository evidence, adopt the supported recommendation for each decision, and record it; material product or design ambiguity stops | `auto-resolve` / `boundary:product-judgment` | `plan.md` Approach, Decisions, and Known Unknowns |
171
+ | BRIEF-04 | `oat-project-brief` | Workflow fit | Continue brief, promote to quick, or split the work | Apply the documented content heuristic; when an implementation-affecting design question cannot be settled from evidence, promote through `oat project promote --to quick` only after the Step 3 brief is validated and committed, and before that abandon the scaffold and start `oat-project-quick-start`; several independent deliveries stop; otherwise record why brief fits | `auto-resolve` / `boundary:product-judgment` | `plan.md` Decisions and promotion result |
172
+ | BRIEF-05 | `oat-project-brief` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
173
+ | BRIEF-06 | `oat-project-brief` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
174
+ | BRIEF-07 | `oat-project-brief` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: leave absent and disabled unless an explicit value already exists | `auto-resolve` | Phase-gate setup status |
175
+ | BRIEF-08 | `oat-project-brief` | Configured lifecycle gate posture | Keep or disable each configured lifecycle gate | Preserve an existing override map; otherwise preserve configured gates and write no override in non-interactive planning | `auto-resolve` / `boundary:repository-policy-approval` | `state.md` override map or recorded non-interactive preservation |
176
+ | BRIEF-09 | `oat-project-brief` | Brief artifact-review findings | Fold minor fixes; take material findings to the user | Apply only unambiguous artifact-local fixes and re-review; never rewrite agreed intent; unresolved Critical findings or material ambiguity stop | `auto-resolve` / `boundary:unresolved-critical-findings` | Brief review row and residual-finding disposition |
177
+ | BRIEF-10 | `oat-project-brief` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply the configured failure semantics; `prompt` becomes a reported boundary; persist the outcome as `oat_brief_gate` | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition, and `oat_brief_gate` |
178
+ | BRIEF-11 | `oat-project-brief` | Brief approval | Approve, revise, or promote | Approve the reviewed brief and record the approval line; contradictory or materially incomplete outcomes stop | `auto-resolve` / `boundary:product-judgment` | Approval line in `plan.md` |
168
179
  | DISC-01 | `oat-project-discover` | Active-project confirmation or switch | Confirm the active project or choose another | Use only an explicitly supplied or valid active project; otherwise stop without guessing | `boundary:product-judgment` | Resolved project path |
169
180
  | DISC-02 | `oat-project-discover` | Stale knowledge | Continue or refresh | Refresh through the canonical knowledge workflow when available; otherwise record staleness and continue only when it does not create material ambiguity | `auto-resolve` / `boundary:product-judgment` | Discovery evidence note |
170
181
  | DISC-03 | `oat-project-discover` | Gray areas and clarifying questions | Select areas and answer questions | Select risk-relevant areas from evidence and record supported answers/assumptions; material ambiguity stops | `auto-resolve` / `boundary:product-judgment` | `discovery.md` Q&A and assumptions |
@@ -269,7 +280,7 @@ assertions, vendored copies, and other unreachable occurrences to `NG`. Add a
269
280
  new inventory row when no existing gate ID describes the behavior.
270
281
 
271
282
  `packages/cli/src/validation/autonomy-gate-inventory.test.ts` is the CI
272
- backstop. It derives the fifteen scan roots from the inventory, scans Markdown
283
+ backstop. It derives the seventeen scan roots from the inventory, scans Markdown
273
284
  recursively, and matches each site by file plus a stable semantic key derived
274
285
  from its normalized heading and text, never by line number. Its failure output
275
286
  provides the key to add or replace. The committed line-number comparison below
@@ -301,7 +312,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
301
312
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `c264a64398f0 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
302
313
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
303
314
  | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
304
- | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
315
+ | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `e3c08ecdab17 -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
305
316
  | `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `49ed2780983b -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `1d710fb4cc66 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `92578f7df686 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `e4c0625439f8 -> REVIEWRECEIVE-04`; `505ad8389c0a -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `e30e06f39281 -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
306
317
  | `oat-project-review-provide/SKILL.md` | `2e794bf4fc4a -> REVIEWPROVIDE-08`; `5441ab977b46 -> REVIEWPROVIDE-08` |
307
318
  | `oat-project-review-provide/SKILL.md` | `f4238ebb1887 -> NG`; `0360fa2db9a5 -> NG` |
@@ -317,6 +328,10 @@ remains immutable baseline evidence for the original p01-t01 verification.
317
328
  | `oat-project-plan/SKILL.md` | `f99e44b39932 -> PLAN-12`; `7e6a9854504b -> NG` |
318
329
  | `oat-project-complete/SKILL.md` | `0177956707aa -> NG`; `1234c29d1999 -> NG`; `3c0b26f0ff1c -> NG`; `8cc1fa5aab1e -> COMPLETE-01`; `4c209fbb4716 -> COMPLETE-01`; `02e4175e1171 -> COMPLETE-01`; `d698d4f98e76 -> COMPLETE-01`; `9f86a7218d93 -> COMPLETE-01`; `024713698d9a -> COMPLETE-01`; `c327995053fa -> COMPLETE-01`; `61f81d4ec7c1 -> COMPLETE-01`; `14fb2e56809f -> COMPLETE-01`; `7d4ff668744d -> COMPLETE-01`; `502a6c141784 -> COMPLETE-01`; `fb7e2db356af -> COMPLETE-01`; `f73f8476360a -> NG`; `1e15f420039f -> NG`; `cc234032ddd7 -> NG`; `1dd54687229b -> NG`; `fc05c8303cd2 -> NG`; `24be721d635e -> NG` |
319
330
  | `oat-project-lite/references/docs/autonomy-contract.md` | `* -> NG` |
331
+ | `oat-project-brief/references/docs/autonomy-contract.md` | `* -> NG` |
332
+ | `oat-project-brief/references/docs/gate-approval-record.md` | `* -> NG` |
333
+ | `oat-project-brief/SKILL.md` | `3d101cb200b3 -> NG`; `494f08a25a22 -> NG`; `ae6d9bdd3cc0 -> NG`; `beeb946393dc -> NG`; `83b5e9396197 -> NG`; `709dd744d813 -> NG`; `4e1222d879f2 -> BRIEF-03`; `a9dd42731b88 -> BRIEF-04`; `7bff55da6726 -> NG`; `c5fb9ce4b27d -> NG`; `e2e809154403 -> BRIEF-10`; `93d6f62c5dac -> BRIEF-10`; `92da21e87ab4 -> NG`; `304c39a13de5 -> BRIEF-10`; `06490315c2f9 -> BRIEF-10`; `0b85a5738ca5 -> BRIEF-11`; `f34dfb297a83 -> NG`; `06179c668e16 -> BRIEF-11`; `5ef3a708eed9 -> BRIEF-11`; `1c798da87f49 -> BRIEF-11`; `f73421b4937f -> NG`; `6e3e97f9cbcf -> NG`; `9b3abe616c5d -> BRIEF-08` |
334
+ | `oat-project-brief/references/brief-contract.md` | `5359cae29ca8 -> NG`; `b417d06e35b4 -> BRIEF-03`; `964e9fc49596 -> NG`; `02270b5b835d -> BRIEF-11`; `e1cb9cbbd308 -> NG` |
320
335
  | `oat-project-implement/references/completion-and-closeout.md` | `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`; `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` |
321
336
  | `oat-project-quick-start/SKILL.md` | `aa560418765a -> QS-13`; `40ddcac880ef -> NG` |
322
337
  | `oat-project-plan/SKILL.md` | `2b32bc5e9fea -> NG`; `58cc6b0adf97 -> PLAN-13`; `9fba3b40b522 -> NG` |
@@ -58,6 +58,10 @@ replaces the record.
58
58
  record is current.
59
59
  - **`oat_quick_start_gate`** (`oat-project-quick-start`, Gate Execution) carries
60
60
  exactly the core.
61
+ - **`oat_brief_gate`** (`oat-project-brief`, Gate Execution) carries exactly the
62
+ core, written and read under the same rules as `oat_quick_start_gate`. It is
63
+ absent when no gate is configured, and nothing routes on it: it is provenance
64
+ only.
61
65
 
62
66
  ## Reading a quick-start record
63
67
 
@@ -15,6 +15,137 @@ optional bounded child for beneficial recon, isolated fanout, or specialist
15
15
  work under the shared dispatch contract. The phase implementer remains
16
16
  responsible for file boundaries, verification, and task commits.
17
17
 
18
+ #### Brief-Mode Phase Execution
19
+
20
+ When `oat_workflow_mode` is `brief`, each phase is one phase-unit with Intent
21
+ and Exit evidence instead of planned tasks. Every rule in this route still
22
+ applies except where this subsection replaces it, and
23
+ `oat-project-brief/references/brief-contract.md` (sections 3, 6, 7, and 10) is
24
+ authoritative where the two differ. The subsection is inert for every other
25
+ workflow mode.
26
+
27
+ **Requirement source.** The phase's `**Intent:**` and `**Exit evidence:**`
28
+ lines plus the brief's Outcomes, Constraints and Out of Scope, and Decisions
29
+ sections. There is no planned task list, file list, or commit message to
30
+ extract. A provisional phase is never dispatched; `plan-and-resume.md` Step 2.2
31
+ makes it concrete first.
32
+
33
+ **Execution precedence.** Select exactly one execution shape per phase, in this
34
+ order, and record it in the phase-start record:
35
+
36
+ 1. **Declared parallel group.** A ready group of concrete phases in
37
+ `oat_plan_parallel_groups` runs through Parallel Group Execution below: one
38
+ worktree and one phase implementer per phase, merged back in document order.
39
+ 2. **Root fan-out.** For a phase outside any group, the root fans out bounded
40
+ slices when at least two slices pass the independence test. The root is
41
+ then the committing owner for that phase, and each worker is a nested
42
+ worker.
43
+ 3. **One phase implementer.** Otherwise resolve and dispatch one phase
44
+ implementer through the flow below.
45
+ 4. **Inline exception.** The root works inline only through an exception
46
+ written into the journal before editing that holds for the whole phase: no
47
+ new surface, no unresolved design, no consequential change, and one existing
48
+ proof command. File count alone is not a predicate. Reclassify, and leave the
49
+ inline shape, as soon as the scope grows past any of those conditions.
50
+
51
+ **Independence test**, for phases and slices alike: no shared files, state,
52
+ generated files, lockfiles, formatter or build output, fixtures, or services,
53
+ and no sequential dependency. A parallel phase is also a coherent deliverable on
54
+ its own. Slices that fail the test stay with one executor.
55
+
56
+ There is exactly one committing owner per worktree: the root for a root fan-out
57
+ or inline exception, the phase implementer for its phase or phase worktree.
58
+ Nested workers return edits on owned paths and never commit.
59
+
60
+ **Phase-start record.** Before phase work starts, capture
61
+ `PHASE_ANCHOR_BASE=$(git rev-parse HEAD)` on a clean tree. The root writes these
62
+ exact lines directly under the phase's `## Phase pNN:` heading in
63
+ `implementation.md`, replacing `**Status:** pending`:
64
+
65
+ ```markdown
66
+ **Status:** in_progress
67
+ **Base:** {PHASE_ANCHOR_BASE as a full 40-character SHA}
68
+ **Executor:** {root | phase-implementer:<request_id> | inline:<exception-ref>}
69
+ ```
70
+
71
+ followed by prose naming the worktree, the committing owner, and the
72
+ parallelism assessment: the precedence rung selected and why each higher rung
73
+ did not apply. Commit it through Step 7a's scope-resolving bookkeeping branch
74
+ with the message `chore(oat): start {pNN}`, then record `PHASE_BASE_HEAD` (the
75
+ dispatch base the implementer verifies) after that commit. The phase-start
76
+ commit sits inside `PHASE_ANCHOR_BASE..Head`, which is allowed. For a parallel
77
+ group the root writes every member's start record, without `**Base:**`, in one
78
+ `chore(oat): start {group}` commit, then captures `EXPECTED_HEAD` as the group's
79
+ fork commit; each member's `**Base:**` is that fork commit, written at fan-in
80
+ (see Parallel Group Execution). The Late-fix rule below forbids a later phase
81
+ from taking a `**Base:**` while an earlier phase still expects a head-advancing
82
+ fix.
83
+
84
+ **Execution records.** Tasks are execution records, never a plan. Whoever
85
+ executes creates the record: the committing owner opens
86
+ `### Task pNN-tNN: <name>` under the phase's journal section when the work
87
+ starts, with `**Status:** in_progress`, `**Executor:**`, intent, files, proof
88
+ command, and the live handle while in flight. Record IDs take the next free
89
+ ordinal in the phase (`prevN-tNN` in a revision phase) and are never reused. The
90
+ record's one implementation commit carries `(pNN-tNN)` in its message and
91
+ excludes the journal. After it lands, the owner closes the record with
92
+ `**Status:** completed` and `**Commit:** <full SHA>`, or with a terminal
93
+ `failed`, `cancelled`, or `no-change` status and no fabricated commit, and
94
+ commits the journal separately as `chore(oat): record {pNN-tNN}`. Lookahead is
95
+ allowed: the owner may open several independent records before dispatching
96
+ them together. A request for a maintained up-front task plan is an offer to
97
+ promote the brief to quick, never lookahead. Records are coherent units tied to
98
+ one commit, not one per command or edit, and they never change phase totals.
99
+
100
+ **Phase head.** When the executor's work is done and phase-wide verification
101
+ passes, the committing owner writes `**Head:** <full SHA>`, the candidate head,
102
+ which is the last implementation or record commit of the phase, plus a short
103
+ verification summary, and commits the journal as `chore(oat): record {pNN}
104
+ head`. A phase without a `**Head:**` line never reaches review or the
105
+ completion line.
106
+
107
+ **Fresh reviewer on anchors.** Per-Phase Review dispatches a fresh reviewer for
108
+ every phase: never the phase implementer, never a reviewer handle from an
109
+ earlier phase. For a sequential phase, before dispatch verify that both anchors
110
+ exist and that `**Base:**` is an ancestor of `**Head:**`; a failed check routes
111
+ to `oat-project-reconcile` and is never narrowed. For a parallel-group member,
112
+ step 3's check that the worktree head descends from `EXPECTED_HEAD` stands in
113
+ for that pre-check, because the member has no journal anchors until fan-in. The
114
+ per-phase Review Scope range is `Base..Head` for a sequential phase and
115
+ `EXPECTED_HEAD..<worktree head from the phase report>` for a parallel-group
116
+ member, whose `oat_review_base_sha` is `EXPECTED_HEAD`; the fan-in
117
+ `**Base:**`/`**Head:**` written afterwards govern `pNN-pMM` and `final` scopes.
118
+ In both cases the in-scope IDs are the phase's execution-record IDs, and the
119
+ scope carries the artifact record fields `oat_review_requested_scope: pNN`,
120
+ `oat_review_phase_ids: [pNN]`, `oat_review_base_sha`, and
121
+ `oat_review_scope_source: anchors` for the reviewer to copy into its artifact.
122
+
123
+ **Late-fix rule.** A review-fix commit may advance the phase's `**Head:**`, base
124
+ unchanged, only while no later phase in document order has a `**Base:**`. Once
125
+ a later phase has started, a correction becomes an appended revision phase
126
+ `## Phase p-revN:` with its own anchors and `**Corrects:** pNN`, recorded in both
127
+ `plan.md` and the journal; the corrected phase keeps its anchors. Under this
128
+ route the next phase's start record is written only after the current phase's
129
+ review and fix loop settles, so ordinary fix-mode commits advance the head.
130
+
131
+ **Acceptance.** The root alone writes `**Status:** completed` under the phase
132
+ heading, in the Step 7b (or later) bookkeeping commit that observes every
133
+ review disposition settled and every selected phase gate passed. That line is
134
+ what makes the phase-unit accepted. Step 7a keeps `**Status:** in_progress`.
135
+
136
+ **Journal ownership in parallel worktrees.** A phase implementer in a parallel
137
+ group writes its execution records into its own phase section of the
138
+ worktree's journal and lists them in its report, but writes no anchors. At
139
+ fan-in the root reconciles those phase-local records into `implementation.md`:
140
+ it keeps each phase's own section from its worktree when resolving a journal
141
+ merge, writes every member's `**Base:**` as the group's fork commit and its
142
+ `**Head:**` as that phase's integration head on the project branch (its merge
143
+ commit, or its last cherry-picked commit when step 7 integrates by
144
+ cherry-pick), and lists integration and conflict-resolution commits to the
145
+ reviewer as integration commits. The review-provide resolver checks only the
146
+ shared fork base and that member heads advance in document order; it does not
147
+ require a head to be a merge commit.
148
+
18
149
  #### Required Manual or Visual Proof Boundary
19
150
 
20
151
  Before committing a task that declares required manual or visual proof, the
@@ -69,7 +200,7 @@ Before each phase:
69
200
  spec: {PROJECT_PATH}/spec.md
70
201
  implementation: {PROJECT_PATH}/implementation.md
71
202
  discovery: {PROJECT_PATH}/discovery.md
72
- workflow_mode: {spec-driven|quick|import|lite} # lite is always a single phase
203
+ workflow_mode: {spec-driven|quick|import|lite|brief} # lite is always a single phase; brief phases carry Intent and Exit evidence, not tasks
73
204
  active_provider: {codex|claude|cursor|other}
74
205
  phase_base_head: {PHASE_BASE_HEAD}
75
206
  worktree: {assigned checkout}
@@ -118,6 +249,12 @@ must not use route escalation, route-level advancement, model/provider
118
249
  replacement, or `oat_orchestration_retry_limit`. It remains pinned to the exact
119
250
  accepted implementation target.
120
251
 
252
+ In brief modes the Phase Scope keeps every field above. `design`, `spec`, and
253
+ `discovery` are absent by design (set them to `null`), `commit_convention`
254
+ names the `(pNN-tNN)` record convention, and the scope adds the phase-start
255
+ record's `parallelism_assessment` and `committing_owner`, plus
256
+ `anchor_base: {PHASE_ANCHOR_BASE}` for a sequential phase.
257
+
121
258
  Tier 2 inline execution is allowed only under the existing verified-equivalent
122
259
  controls or documented inherit/default exception. Inline mode executes the
123
260
  phase-implementer contract directly; it does not reintroduce mandatory
@@ -720,6 +857,10 @@ commit range, task IDs and boundaries, artifacts, verification evidence,
720
857
  configured axes, selection reason, and candidates. Require a timestamped review
721
858
  artifact under the project's `reviews/` directory.
722
859
 
860
+ In brief modes the phase commit range, the in-scope execution-record IDs, and
861
+ the artifact record fields come from the phase anchors as Brief-Mode Phase
862
+ Execution describes; validate the anchors before launch.
863
+
723
864
  The Review Scope names review-outcome bookkeeping as out of scope: this
724
865
  review's `## Reviews` row and its disposition, the Orchestration Run entry for
725
866
  this review's outcome, the deferred phase-outcome and review-orchestration
@@ -907,6 +1048,15 @@ Head`, `Invocation`, and `Gate Target`) to the header and separator, then pad
907
1048
 
908
1049
  For a multi-phase schedule entry:
909
1050
 
1051
+ In brief modes, step 6 merges passing phases in document order, and step 10's
1052
+ bookkeeping writes every member's anchors and phase-local records as the
1053
+ Brief-Mode Phase Execution subsection describes. Step 5's per-phase review
1054
+ still runs before the merge: For a parallel-group member the per-phase Review Scope range is
1055
+ `EXPECTED_HEAD..<worktree head from the phase report>` with
1056
+ `oat_review_base_sha: EXPECTED_HEAD` and `oat_review_scope_source: anchors`;
1057
+ the fan-in `**Base:**`/`**Head:**` written afterwards govern `pNN-pMM` and
1058
+ `final` scopes.
1059
+
910
1060
  1. Capture `EXPECTED_HEAD=$(git rev-parse HEAD)`.
911
1061
  2. Bootstrap one worktree per phase through `oat-worktree-bootstrap-auto` with
912
1062
  explicit base `EXPECTED_HEAD`. Never substitute host-native worktree
@@ -957,6 +1107,12 @@ reviewer. Write the phase's task ledger:
957
1107
  - remove legacy `oat_execution_mode: subagent-driven`; and
958
1108
  - preserve any configured retry override.
959
1109
 
1110
+ In brief modes the task ledger is the phase's journal section: validate that
1111
+ the execution records and `**Head:**` the executor committed are present,
1112
+ update the phase's Progress Overview row, keep `**Status:** in_progress`, and
1113
+ point both resume pointers at the phase ID. A missing `**Head:**` stops before
1114
+ review.
1115
+
960
1116
  The task rows, resume pointer, and recovery settlement do not depend on the
961
1117
  review outcome, which is why they can move ahead of the review; the recovery
962
1118
  settlement is validated from the phase report, not from the review. A
@@ -1028,6 +1184,13 @@ commit observes that last condition: this Step 7b commit when nothing is
1028
1184
  queued and no gate is selected, otherwise the commit that records the final
1029
1185
  review-fix task or the passing gate.
1030
1186
 
1187
+ In brief modes the row is the phase's journal section and `complete` is the
1188
+ exact line `**Status:** completed` under its heading, written only by the root
1189
+ under that same rule; the brief's `pNN` code row in `## Reviews` records the
1190
+ review event, and the phase summary prose records the reviewer's disposition
1191
+ and gate results. A review-fix commit that advances the phase head updates
1192
+ `**Head:**` under the Late-fix rule.
1193
+
1031
1194
  Bookkeeping is mandatory:
1032
1195
 
1033
1196
  ```bash
@@ -1052,6 +1215,8 @@ when it exists; logging can be disabled.
1052
1215
  At every phase boundary, verify `implementation.md`, task pointers, phase
1053
1216
  summary, and design/plan deviations. `oat_plan_hill_phases` lists phases after
1054
1217
  which execution pauses; an empty list means every phase.
1218
+ In brief modes an empty list means none (`plan-and-resume.md` Step 2.5), and a
1219
+ phase boundary is reached only when the phase-unit is accepted.
1055
1220
 
1056
1221
  Before a configured non-final HiLL pause, run auto-review when enabled. Scope
1057
1222
  starts after the last passed whole-phase review and ends at the current phase.
@@ -5,6 +5,25 @@ This reference preserves the route-specific implementation contract. Load it onl
5
5
  Step 0 of the entry skill has already pulled and materialized any discoverable
6
6
  synced project before this route validates or reads its artifacts.
7
7
 
8
+ ### Brief-Family Projects
9
+
10
+ When `state.md` records `oat_workflow_mode: brief`, `plan.md` is a Project
11
+ Brief. Its `## Phase pNN:` blocks carry `**Intent:**`, `**Exit evidence:**`,
12
+ and `**Provisional:**` lines instead of tasks, and each phase is one
13
+ **phase-unit**, accepted only by the exact `**Status:** completed` line under
14
+ its heading in `implementation.md`. Read
15
+ `oat-project-brief/references/brief-contract.md` from the same installed skills
16
+ root as this skill once, before Step 1. It owns the phase grammar, journal
17
+ markers, execution records, pointer interpretation, and anchor rules, and it
18
+ wins where this route restates them. The brief branches in this route, in
19
+ `phase-execution.md`, and in `completion-and-closeout.md` are inert for every
20
+ other workflow mode.
21
+
22
+ The entry skill's rule against changing plan structure does not cover the
23
+ logged brief edits Step 2.2 allows (adding, splitting, reordering, or making
24
+ phases concrete within the approved outcomes); those are part of brief
25
+ execution, not scope expansion.
26
+
8
27
  ### Step 1: Check Plan Complete
9
28
 
10
29
  ```bash
@@ -59,6 +78,15 @@ If `{PROJECT_PATH}/implementation.md` already contains orchestration run entries
59
78
 
60
79
  6. Once resume target is identified, continue from that phase with the normal per-phase flow.
61
80
 
81
+ **Brief modes:** before any redispatch, reconcile every open execution record
82
+ (a `### Task pNN-tNN:` record in the journal without a terminal status) against
83
+ `git log` commits carrying `(pNN-tNN)` and against live handles, as brief
84
+ contract section 7 requires. A record whose implementation commit landed closes
85
+ with that SHA; a record whose handle is still live is continued through that
86
+ handle and never redispatched; a record with neither stays open for its phase's
87
+ next executor. Records never change phase totals, so this reconciliation never
88
+ writes a phase's `**Status:** completed`.
89
+
62
90
  **On first-ever invocation** (no prior run entries), skip resumption detection and proceed to Step 2.
63
91
 
64
92
  ### Step 2: Read Plan Document
@@ -70,6 +98,15 @@ Read `"$PROJECT_PATH/plan.md"` completely to understand:
70
98
  - Verification commands
71
99
  - Commit messages
72
100
 
101
+ **Brief modes:** read the whole brief: Goal, Outcomes, Approach, Constraints and
102
+ Out of Scope, Decisions, Known Unknowns, Delivery endpoint and authority, the
103
+ phase blocks, Parallelism, and Reviews. There are no planned tasks, file lists,
104
+ or commit messages to extract. Each phase's Intent and Exit evidence are its
105
+ requirement and proof source, and execution records are opened only when work
106
+ starts (`phase-execution.md`, Brief-Mode Phase Execution). `oat project
107
+ validate-plan` in Step 2.1 applies the brief profile from the recorded workflow
108
+ mode.
109
+
73
110
  ### Step 2.1: Validate Parallelism Metadata
74
111
 
75
112
  Invoke the CLI validator to check plan.md parallelism metadata:
@@ -108,14 +145,31 @@ Example:
108
145
  - `oat_plan_parallel_groups: [["p02", "p03"], ["p04", "p05"]]`
109
146
  - Schedule: `[p01]` → `[p02, p03]` (group) → `[p04, p05]` (group)
110
147
 
148
+ **Brief modes** build the schedule from the brief's phase-units in document
149
+ order, which governs execution even when numeric order differs. Extracted units
150
+ are excluded. A provisional phase stays in the schedule but is never
151
+ dispatched: before its schedule entry starts, the root makes it concrete in
152
+ `plan.md` (writes its Intent and Exit evidence and sets `**Provisional:** no`)
153
+ within the approved outcomes, constraints, authority, and evidence, logs the
154
+ change (in `project-log.md` when the project log is enabled, otherwise in the
155
+ journal), re-runs Step 2.1, and commits the brief before dispatch. A change that
156
+ alters an Outcome, a Constraint, the authority, the endpoint, a Decision, or the
157
+ agreed Approach stops for the focused realignment in brief contract section 4.
158
+ Within those bounds the root may also add, split, or reorder phases and declare
159
+ parallel groups whenever their phases become concrete, with the same logging and
160
+ re-validation, and adds one `code` row per new phase to the brief's
161
+ `## Reviews` table.
162
+
111
163
  ### Step 2.5: Confirm Plan HiLL Checkpoints
112
164
 
113
165
  #### Lite checkpoint bypass
114
166
 
115
167
  Resolve `oat_workflow_mode` from project state before any generic checkpoint
116
168
  field read. When `oat_workflow_mode` is `lite`, resolve checkpoint state as
117
- `none` without reading or interpreting `oat_plan_hill_phases`; for other modes,
118
- an empty list means every phase and therefore cannot represent lite's policy.
169
+ `none` without reading or interpreting `oat_plan_hill_phases`; for the task modes
170
+ (spec-driven, quick, import) an empty list means every phase and therefore
171
+ cannot represent lite's policy; brief modes read it as none (Brief checkpoint
172
+ resolution below).
119
173
  Write this plan frontmatter value:
120
174
 
121
175
  ```yaml
@@ -127,7 +181,8 @@ auto-review preference prompt in both interactive and autonomous runs. Continue
127
181
  directly to Step 2.6. The standard root-owned per-phase review and final review
128
182
  remain required; only HiLL approval pauses are absent.
129
183
 
130
- For every other workflow mode, read `oat_plan_hill_phases` from
184
+ For every workflow mode other than lite and the brief modes (see Brief
185
+ checkpoint resolution below), read `oat_plan_hill_phases` from
131
186
  `"$PROJECT_PATH/plan.md"` frontmatter when present and validate it.
132
187
 
133
188
  - **Valid format:** JSON-like array of phase IDs (e.g., `["p01","p03"]`)
@@ -139,6 +194,22 @@ Determine whether this is a first implementation run:
139
194
  - If `"$PROJECT_PATH/implementation.md"` does not exist, treat as first run.
140
195
  - If it exists but still has template placeholders and no completed task evidence, treat as first run.
141
196
 
197
+ #### Brief checkpoint resolution
198
+
199
+ Brief modes read `oat_plan_hill_phases` with the brief meaning, not the generic
200
+ one: `[]` and an absent field both mean **none**, and an explicit phase array
201
+ means exactly those phases, an opt-in the user recorded. Never reinterpret a
202
+ brief's `[]` as every phase. With none, write
203
+ `oat_auto_review_at_hill_checkpoints: false # brief: no checkpoints` when that
204
+ key is absent, skip the workflow preference check, the first-run checkpoint
205
+ question, Touchpoint A, and the autonomous checkpoint resolution below in both
206
+ interactive and autonomous runs, and continue directly to Step 2.6. With an
207
+ explicit array, validate it with the normal format rules and keep it as the
208
+ recorded value without re-asking; resolve Touchpoint A below (under
209
+ `OAT_AUTONOMOUS=1`, the autonomous checkpoint resolution, which preserves the
210
+ array) and continue to Step 2.6. The per-phase reviews and the final review run
211
+ either way.
212
+
142
213
  #### Autonomous checkpoint resolution
143
214
 
144
215
  If `OAT_AUTONOMOUS=1`, resolve checkpoint state before the workflow preference
@@ -313,6 +384,18 @@ cat "$PROJECT_PATH/implementation.md" 2>/dev/null | head -20
313
384
  - If `oat_current_task_id` points at a task already marked `completed` in the body, advance to the **next incomplete** task (first `pending` / `in_progress` / `blocked` entry).
314
385
  - If all tasks are completed, skip ahead to finalization (Step 11+).
315
386
  - **Always resume** from the resolved task. Print `Resuming from {task_id}.` Do not prompt.
387
+ - **Brief modes:** `oat_current_task_id` may hold a phase ID or an execution
388
+ record ID (brief contract section 8). Resolve a record ID to its phase and a
389
+ phase ID to itself; `null`, an unknown ID, or an accepted or extracted unit
390
+ resolves to the first incomplete phase-unit in document order within the
391
+ active scope, which is every phase in brief. Phase-units come from the brief's
392
+ `## Phase` headings, never from task headings, and a provisional phase is
393
+ incomplete. Print `Resuming from {phase_id}.` and apply the Step 2.2
394
+ provisional rule before dispatching it. When every phase-unit in the active
395
+ scope is accepted, skip ahead to finalization (Step 11+). Finalization starts
396
+ only then, never because every execution record is closed. The stale-state
397
+ reconciliation below resolves the next phase-unit the same way instead of a
398
+ next task.
316
399
  - **Fresh start is an explicit override only.** If the user invoked the skill with `fresh=true` (argument), warn `Starting fresh — this will overwrite implementation.md. Any draft logs will be lost.` and proceed with fresh initialization. Do not offer fresh start interactively; it is a rare edge case reserved for corrupt state or deliberate plan rewrites.
317
400
 
318
401
  **Stale-state reconciliation (approval required):**
@@ -332,6 +415,9 @@ cat "$PROJECT_PATH/implementation.md" 2>/dev/null | head -20
332
415
 
333
416
  - Initialize from template (Step 4)
334
417
 
418
+ In brief modes `oat-project-brief` already initialized the journal; Step 4 runs
419
+ only when it is missing.
420
+
335
421
  **Important:** Never overwrite an existing `implementation.md` without explicit user confirmation (and warn that draft logs will be lost).
336
422
 
337
423
  ### Step 4: Initialize Implementation Document
@@ -357,3 +443,11 @@ Initialize project state so other skills (e.g., `oat-project-progress`) reflect
357
443
  - `oat_phase_status: in_progress`
358
444
  - `oat_current_task: p01-t01`
359
445
  - `oat_project_state_updated: "{ISO 8601 UTC timestamp}"`
446
+
447
+ **Brief modes:** resolve the journal with
448
+ `oat template resolve implementation-brief --output "$PROJECT_PATH/implementation.md"`
449
+ instead, write one Progress Overview row and one `## Phase pNN: <name>` section
450
+ holding only `**Status:** pending` per brief phase, and set both resume pointers
451
+ (`oat_current_task_id` here and `oat_current_task` in `state.md`) to the first
452
+ incomplete phase ID, such as `p01`, rather than a task ID. Anchors and execution
453
+ records are written only when work starts.