@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.
- package/assets/agents/oat-phase-implementer.md +81 -3
- package/assets/agents/oat-reviewer.md +15 -5
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/reference/cli-reference.md +8 -5
- package/assets/docs/reference/oat-directory-structure.md +1 -0
- package/assets/docs/reference/project-artifacts.md +17 -1
- package/assets/docs/reference/project-state-machine.md +19 -4
- package/assets/docs/skills/brainstorm.md +2 -1
- package/assets/docs/skills/index.md +1 -0
- package/assets/docs/workflows/advanced/autonomy.md +9 -1
- package/assets/docs/workflows/advanced/workflow-gates.md +11 -6
- package/assets/docs/workflows/approvals-and-automation.md +13 -8
- package/assets/docs/workflows/choose-workflow.md +16 -8
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +8 -3
- package/assets/docs/workflows/projects/closeout/pr-flow.md +2 -0
- package/assets/docs/workflows/projects/execution/execution-skills.md +14 -2
- package/assets/docs/workflows/projects/execution/implementation-execution.md +15 -0
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +10 -1
- package/assets/docs/workflows/projects/execution/project-log.md +22 -0
- package/assets/docs/workflows/projects/lifecycle.md +73 -9
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +18 -1
- package/assets/docs/workflows/projects/planning/planning-skills.md +11 -10
- package/assets/docs/workflows/projects/planning/starting-projects.md +92 -20
- package/assets/docs/workflows/projects/reviews/index.md +15 -2
- package/assets/docs/workflows/projects/reviews/review-flavors.md +5 -3
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +33 -9
- package/assets/skills/oat-brainstorm/references/destinations.md +9 -4
- package/assets/skills/oat-docs/SKILL.md +9 -4
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +14 -8
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +17 -2
- package/assets/skills/oat-project-brief/SKILL.md +592 -0
- package/assets/skills/oat-project-brief/references/brief-contract.md +294 -0
- package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +393 -0
- package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +84 -0
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-complete/SKILL.md +7 -2
- package/assets/skills/oat-project-discover/SKILL.md +3 -2
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -1
- package/assets/skills/oat-project-document/SKILL.md +11 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +40 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-implement/references/phase-execution.md +166 -1
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +97 -3
- package/assets/skills/oat-project-import-plan/SKILL.md +5 -1
- package/assets/skills/oat-project-lite/SKILL.md +4 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-new/SKILL.md +5 -1
- package/assets/skills/oat-project-next/SKILL.md +31 -4
- package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-plan/SKILL.md +12 -2
- package/assets/skills/oat-project-plan-writing/SKILL.md +6 -4
- package/assets/skills/oat-project-pr-final/SKILL.md +15 -3
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-pr-progress/SKILL.md +31 -4
- package/assets/skills/oat-project-progress/SKILL.md +30 -8
- package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
- package/assets/skills/oat-project-quick-start/SKILL.md +60 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-reconcile/SKILL.md +65 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +331 -12
- package/assets/skills/oat-project-review-receive/SKILL.md +86 -1
- package/assets/skills/oat-project-revise/SKILL.md +27 -4
- package/assets/skills/oat-project-summary/SKILL.md +95 -2
- package/assets/skills/oat-wave-execute/SKILL.md +3 -2
- package/assets/templates/implementation-brief.md +165 -0
- package/assets/templates/plan-brief.md +140 -0
- package/assets/templates/plan.md +1 -1
- package/assets/templates/state.md +8 -2
- package/dist/commands/init/tools/shared/skill-script-references.d.ts.map +1 -1
- package/dist/commands/init/tools/shared/skill-script-references.js +8 -1
- package/dist/commands/project/log/append.d.ts.map +1 -1
- package/dist/commands/project/log/append.js +70 -10
- package/dist/commands/project/new/scaffold.d.ts +1 -1
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +35 -7
- package/dist/commands/project/promote/promote.d.ts +32 -1
- package/dist/commands/project/promote/promote.d.ts.map +1 -1
- package/dist/commands/project/promote/promote.js +562 -5
- package/dist/commands/project/validate-plan/frontmatter.d.ts +12 -0
- package/dist/commands/project/validate-plan/frontmatter.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/frontmatter.js +27 -0
- package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/index.js +52 -18
- package/dist/commands/project/validate-plan/profiles.d.ts +54 -0
- package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/profiles.js +269 -0
- package/dist/commands/project/validate-plan/validate-plan.d.ts +3 -19
- package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/validate-plan.js +5 -82
- package/dist/commands/shared/agents-md-lock.d.ts +3 -0
- package/dist/commands/shared/agents-md-lock.d.ts.map +1 -0
- package/dist/commands/shared/agents-md-lock.js +130 -0
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +26 -8
- package/dist/commands/shared/frontmatter.d.ts +1 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +1 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +51 -2
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +3 -0
- 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
|
|
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
|
|
118
|
-
an empty list means every phase and therefore
|
|
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
|
|
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.
|