@open-agent-toolkit/cli 0.2.59 → 0.2.63

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 (120) hide show
  1. package/assets/agents/oat-phase-implementer.md +27 -4
  2. package/assets/agents/oat-reviewer.md +25 -14
  3. package/assets/bundle-metadata.json +1 -1
  4. package/assets/docs/cli-utilities/config-and-local-state.md +1 -0
  5. package/assets/docs/cli-utilities/configuration.md +10 -8
  6. package/assets/docs/cli-utilities/project-log.md +16 -0
  7. package/assets/docs/cli-utilities/workflow-gates.md +127 -19
  8. package/assets/docs/provider-sync/commands.md +3 -0
  9. package/assets/docs/provider-sync/instruction-sync.md +107 -0
  10. package/assets/docs/reference/cli-reference.md +26 -9
  11. package/assets/docs/reference/oat-directory-structure.md +33 -31
  12. package/assets/docs/workflows/ideas/index.md +1 -1
  13. package/assets/docs/workflows/index.md +1 -0
  14. package/assets/docs/workflows/projects/artifacts.md +24 -3
  15. package/assets/docs/workflows/projects/hill-checkpoints.md +21 -0
  16. package/assets/docs/workflows/projects/implementation-execution.md +5 -0
  17. package/assets/docs/workflows/projects/lifecycle.md +169 -7
  18. package/assets/docs/workflows/projects/picking-up-projects.md +14 -0
  19. package/assets/docs/workflows/projects/pr-flow.md +2 -0
  20. package/assets/docs/workflows/projects/reviews.md +1 -1
  21. package/assets/docs/workflows/projects/state-machine.md +20 -0
  22. package/assets/docs/workflows/skills/explainer-kit.md +10 -4
  23. package/assets/docs/workflows/skills/index.md +2 -1
  24. package/assets/docs/workflows/skills/repo-improve.md +15 -1
  25. package/assets/public-package-versions.json +4 -4
  26. package/assets/skills/oat-brainstorm/SKILL.md +61 -12
  27. package/assets/skills/oat-docs/SKILL.md +13 -8
  28. package/assets/skills/oat-doctor/SKILL.md +3 -3
  29. package/assets/skills/oat-explainer-kit/SKILL.md +14 -1
  30. package/assets/skills/oat-explainer-kit/references/config-contract.md +12 -0
  31. package/assets/skills/oat-explainer-kit/references/lifecycle-contract.md +57 -10
  32. package/assets/skills/oat-explainer-kit/scripts/check-terminal-outcome.mjs +28 -5
  33. package/assets/skills/oat-explainer-kit/scripts/probe-recap-seams.mjs +371 -0
  34. package/assets/skills/oat-explainer-kit/scripts/resolve-intent.mjs +123 -1
  35. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
  36. package/assets/skills/oat-project-autonomous/SKILL.md +23 -9
  37. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +164 -150
  38. package/assets/skills/oat-project-capture/SKILL.md +2 -2
  39. package/assets/skills/oat-project-complete/SKILL.md +134 -4
  40. package/assets/skills/oat-project-discover/SKILL.md +6 -5
  41. package/assets/skills/oat-project-document/SKILL.md +11 -1
  42. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +164 -150
  43. package/assets/skills/oat-project-implement/SKILL.md +3 -3
  44. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +144 -21
  45. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +164 -150
  46. package/assets/skills/oat-project-implement/references/phase-execution.md +16 -1
  47. package/assets/skills/oat-project-implement/references/plan-and-resume.md +19 -1
  48. package/assets/skills/oat-project-import-plan/SKILL.md +47 -3
  49. package/assets/skills/oat-project-lite/SKILL.md +467 -0
  50. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +331 -0
  51. package/assets/skills/oat-project-next/SKILL.md +75 -16
  52. package/assets/skills/oat-project-plan/SKILL.md +44 -6
  53. package/assets/skills/oat-project-plan-writing/SKILL.md +6 -3
  54. package/assets/skills/oat-project-pr-final/SKILL.md +33 -7
  55. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +164 -150
  56. package/assets/skills/oat-project-pr-progress/SKILL.md +3 -3
  57. package/assets/skills/oat-project-progress/SKILL.md +27 -5
  58. package/assets/skills/oat-project-promote-spec-driven/SKILL.md +3 -1
  59. package/assets/skills/oat-project-quick-start/SKILL.md +264 -4
  60. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +164 -150
  61. package/assets/skills/oat-project-review-provide/SKILL.md +25 -6
  62. package/assets/skills/oat-project-summary/SKILL.md +61 -26
  63. package/assets/skills/oat-repo-improve/SKILL.md +40 -5
  64. package/assets/skills/oat-repo-improve/references/plan-template.md +84 -7
  65. package/assets/templates/plan-lite.md +165 -0
  66. package/assets/templates/plan.md +1 -1
  67. package/assets/templates/state.md +1 -1
  68. package/dist/commands/config/index.d.ts +1 -0
  69. package/dist/commands/config/index.d.ts.map +1 -1
  70. package/dist/commands/config/index.js +401 -18
  71. package/dist/commands/gate/index.d.ts +3 -1
  72. package/dist/commands/gate/index.d.ts.map +1 -1
  73. package/dist/commands/gate/index.js +699 -211
  74. package/dist/commands/init/tools/shared/skill-script-references.d.ts +126 -0
  75. package/dist/commands/init/tools/shared/skill-script-references.d.ts.map +1 -0
  76. package/dist/commands/init/tools/shared/skill-script-references.js +311 -0
  77. package/dist/commands/instructions/instructions.types.d.ts +63 -0
  78. package/dist/commands/instructions/instructions.types.d.ts.map +1 -1
  79. package/dist/commands/instructions/instructions.utils.d.ts +51 -2
  80. package/dist/commands/instructions/instructions.utils.d.ts.map +1 -1
  81. package/dist/commands/instructions/instructions.utils.js +201 -4
  82. package/dist/commands/instructions/sync/sync.d.ts.map +1 -1
  83. package/dist/commands/instructions/sync/sync.js +12 -1
  84. package/dist/commands/instructions/validate/validate.d.ts.map +1 -1
  85. package/dist/commands/instructions/validate/validate.js +12 -1
  86. package/dist/commands/project/index.d.ts.map +1 -1
  87. package/dist/commands/project/index.js +2 -0
  88. package/dist/commands/project/log/append.d.ts +195 -0
  89. package/dist/commands/project/log/append.d.ts.map +1 -1
  90. package/dist/commands/project/log/append.js +1034 -11
  91. package/dist/commands/project/new/index.d.ts +3 -2
  92. package/dist/commands/project/new/index.d.ts.map +1 -1
  93. package/dist/commands/project/new/index.js +2 -1
  94. package/dist/commands/project/new/scaffold.d.ts +5 -3
  95. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  96. package/dist/commands/project/new/scaffold.js +38 -10
  97. package/dist/commands/project/promote/index.d.ts +2 -0
  98. package/dist/commands/project/promote/index.d.ts.map +1 -0
  99. package/dist/commands/project/promote/index.js +1 -0
  100. package/dist/commands/project/promote/promote.d.ts +47 -0
  101. package/dist/commands/project/promote/promote.d.ts.map +1 -0
  102. package/dist/commands/project/promote/promote.js +322 -0
  103. package/dist/commands/project/split/run.d.ts.map +1 -1
  104. package/dist/commands/project/split/run.js +8 -1
  105. package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
  106. package/dist/commands/project/validate-plan/index.js +25 -1
  107. package/dist/commands/project/validate-plan/validate-plan.d.ts +8 -0
  108. package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
  109. package/dist/commands/project/validate-plan/validate-plan.js +49 -0
  110. package/dist/commands/shared/frontmatter.d.ts +1 -1
  111. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  112. package/dist/commands/shared/frontmatter.js +1 -0
  113. package/dist/commands/state/generate.d.ts.map +1 -1
  114. package/dist/commands/state/generate.js +23 -0
  115. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  116. package/dist/commands/tools/shared/pack-manifest.js +2 -0
  117. package/dist/config/oat-config.d.ts +41 -0
  118. package/dist/config/oat-config.d.ts.map +1 -1
  119. package/dist/config/oat-config.js +111 -0
  120. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-review-provide
3
- version: 1.5.4
3
+ version: 1.5.5
4
4
  description: Use when the user explicitly asks to review an OAT project — e.g. "review project", "review the project", "run project review", or confirms a previously offered review. Do NOT auto-invoke on completed work alone. Resolves a project review scope and offers before running.
5
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -306,6 +306,7 @@ WORKFLOW_MODE=$(oat project status --project-path "$PROJECT_PATH" --field projec
306
306
  - `spec-driven`: `spec.md`, `design.md`, `plan.md`
307
307
  - `quick`: `discovery.md`, `plan.md` (`spec.md`/`design.md` optional if present)
308
308
  - `import`: `plan.md` (`references/imported-plan.md` recommended, `spec.md`/`design.md` optional)
309
+ - `lite`: `plan.md`, `implementation.md` (`discovery.md`/`spec.md`/`design.md` are absent by design)
309
310
 
310
311
  **Required for artifact review:**
311
312
 
@@ -314,9 +315,10 @@ WORKFLOW_MODE=$(oat project status --project-path "$PROJECT_PATH" --field projec
314
315
  - reviewing `spec` requires `discovery.md`
315
316
  - reviewing `design` in `spec-driven` mode requires `spec.md`
316
317
  - reviewing `design` in `quick/import` mode requires only `discovery.md` (spec is skipped in these modes)
317
- - in `quick/import` mode, missing `spec.md` must not be treated as a project review gate failure for `artifact design`; proceed with normal project-scoped review flow, artifact writing, and bookkeeping
318
+ - in `quick/import` mode (lite has no design artifact), missing `spec.md` must not be treated as a project review gate failure for `artifact design`; proceed with normal project-scoped review flow, artifact writing, and bookkeeping
318
319
  - reviewing `plan` in `spec-driven` mode requires `spec.md` + `design.md`
319
- - reviewing `plan` in `quick/import` mode may use `discovery.md` and/or `references/imported-plan.md` instead
320
+ - reviewing `plan` in `quick/import` mode may use `discovery.md` and/or `references/imported-plan.md` instead; lite uses the separate rule below
321
+ - reviewing `plan` in `lite` mode requires only `plan.md`; its Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria sections are the complete upstream contract
320
322
 
321
323
  **If missing:** Report missing required artifacts for the current mode and stop if requirements are not met.
322
324
 
@@ -502,6 +504,8 @@ case "$SCOPE_TOKEN" in
502
504
  FILES_CHANGED=$(printf "%s\n" "$PROJECT_PATH/plan.md" "$PROJECT_PATH/spec.md" "$PROJECT_PATH/design.md")
503
505
  elif [[ "$WORKFLOW_MODE" == "quick" ]]; then
504
506
  FILES_CHANGED=$(printf "%s\n" "$PROJECT_PATH/plan.md" "$PROJECT_PATH/discovery.md")
507
+ elif [[ "$WORKFLOW_MODE" == "lite" ]]; then
508
+ FILES_CHANGED=$(printf "%s\n" "$PROJECT_PATH/plan.md")
505
509
  else
506
510
  FILES_CHANGED=$(printf "%s\n" "$PROJECT_PATH/plan.md" "$PROJECT_PATH/references/imported-plan.md")
507
511
  fi
@@ -581,10 +585,12 @@ Build the "Review Scope" metadata for the reviewer:
581
585
  **Scope:** {scope}{optional: " (" + SCOPE_RANGE + ")"}
582
586
  **Date:** {today}
583
587
 
588
+ - Workflow mode: {WORKFLOW_MODE}
589
+
584
590
  **Artifact Paths:**
585
591
 
586
- - Spec: {PROJECT_PATH}/spec.md (required in spec-driven mode; optional in quick/import)
587
- - Design: {PROJECT_PATH}/design.md (required in spec-driven mode; optional in quick/import)
592
+ - Spec: {PROJECT_PATH}/spec.md (required in spec-driven mode; optional in quick/import/lite)
593
+ - Design: {PROJECT_PATH}/design.md (required in spec-driven mode; optional in quick/import/lite)
588
594
  - Plan: {PROJECT_PATH}/plan.md
589
595
  - Implementation: {PROJECT_PATH}/implementation.md
590
596
  - Discovery: {PROJECT_PATH}/discovery.md
@@ -622,6 +628,19 @@ Build the "Review Scope" metadata for the reviewer:
622
628
  - Do not force a code-defect framing for accepted design drift; `oat-project-review-receive` can convert artifact drift into alignment tasks or explicit deferrals.
623
629
  ```
624
630
 
631
+ For `WORKFLOW_MODE=lite`, render the artifact-path portion of every artifact-plan
632
+ and code-final Review Scope explicitly as:
633
+
634
+ - Discovery: not required (absent by design)
635
+ - Spec: not required (absent by design)
636
+ - Design: not required (absent by design)
637
+ - Import reference: not required
638
+ - Plan: `{PROJECT_PATH}/plan.md` (Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria are the requirements contract)
639
+ - Implementation: `{PROJECT_PATH}/implementation.md`
640
+
641
+ Always pass the resolved workflow mode. Never omit it and let the reviewer fall
642
+ back to its spec-driven default.
643
+
625
644
  ### Step 6: Execute Review (3-Tier Capability Model)
626
645
 
627
646
  **Canonical reviewer instructions:** Before a direct reviewer-definition read or
@@ -944,7 +963,7 @@ If running inline (Tier 3), execute the review and write artifact.
944
963
  **Review checklist (from oat-reviewer):**
945
964
 
946
965
  1. Verify scope (don't review out-of-scope changes)
947
- 2. If code review: verify alignment to available requirements sources (`spec`/`design` for spec-driven mode; `discovery`/import reference for quick/import)
966
+ 2. If code review: verify alignment to available requirements sources (`spec`/`design` for spec-driven mode; `discovery`/import reference for quick/import; plan.md Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria for lite)
948
967
  3. If code review: verify code quality (correctness, tests, security, maintainability)
949
968
  4. If artifact review: verify completeness/clarity/readiness of the artifact and its alignment with upstream artifacts
950
969
  5. Categorize findings (Critical/Important/Medium/Minor)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-summary
3
- version: 1.5.1
3
+ version: 1.5.3
4
4
  description: Use when the user requests or confirms summarizing an active OAT project — e.g. "summarize the project", "generate the summary", "run oat-project-summary", or confirms a previously offered summary run. Do NOT auto-invoke when implementation completes. Generates summary.md from project artifacts as institutional memory.
5
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -117,7 +117,16 @@ test -f "$PROJECT_PATH/implementation.md"
117
117
 
118
118
  ### Step 2: Read Project Artifacts
119
119
 
120
- Read all available artifacts for synthesis:
120
+ For `oat_workflow_mode: lite`, use the reduced artifact contract and skip the
121
+ ordinary artifact list below. Read the five `plan.md` sections `Summary`,
122
+ `Decisions`, `Assumptions`, `Out of Scope`, and `Validation Criteria`, then read
123
+ `implementation.md` for task outcomes and the shipped results in `Final
124
+ Summary (for PR/docs)`. Read `state.md` only for routing metadata. A lite
125
+ project accepts `discovery.md`, `spec.md`, and `design.md` as absent; do not
126
+ read or require them. Ground the summary in what actually shipped, with
127
+ `implementation.md` taking precedence over the plan.
128
+
129
+ For every other workflow mode, read all available artifacts for synthesis:
121
130
 
122
131
  - `"$PROJECT_PATH/discovery.md"` — initial request, decisions, constraints
123
132
  - `"$PROJECT_PATH/spec.md"` — requirements, goals (optional — may not exist in quick mode)
@@ -213,39 +222,64 @@ For each section, synthesize content from the relevant artifacts. Apply these ru
213
222
 
214
223
  **Minimum viable summary:** Overview + What Was Implemented + Key Decisions. All other sections are included only when they have content worth preserving.
215
224
 
216
- **Section sources:**
217
-
218
- | Section | Primary Sources |
219
- | ------------------------------ | ---------------------------------------------------------------------- |
220
- | Overview | discovery.md initial request, spec.md problem statement |
221
- | What Was Implemented | implementation.md task outcomes, plan.md phase structure |
222
- | Key Decisions | design.md decisions, implementation.md notes/decisions |
223
- | Design Deltas | implementation.md deviations table; review-received design drift notes |
224
- | Notable Challenges | implementation.md issues/blockers in task notes |
225
- | Tradeoffs Made | implementation.md decisions, design.md tradeoff sections |
226
- | Integration Notes | implementation.md notes about cross-cutting concerns |
227
- | Revision History | plan.md p-revN phases, implementation.md revision notes |
228
- | Follow-up Items | implementation.md deferred findings, plan.md deferred items |
229
- | Associated Issues | state.md `associated_issues` field |
230
- | Workflow Observations | project-log.md via `oat project log rollup` only |
231
- | Autonomous Execution Learnings | oat-execution-learnings.md dated entries |
232
- | Explainer Outcome | project-recap `manifest.json` and `build-record.json` |
225
+ **Lite section sources:**
226
+
227
+ Use this table only for `oat_workflow_mode: lite`. It maps every canonical lite
228
+ plan section and shipped implementation results without requiring discovery,
229
+ spec, or design artifacts.
230
+
231
+ | Summary Section | Primary Lite Sources |
232
+ | -------------------- | ------------------------------------------------------------- |
233
+ | Overview | plan.md `Summary`; implementation.md `Final Summary` |
234
+ | What Was Implemented | implementation.md shipped results and task outcomes |
235
+ | Key Decisions | plan.md `Decisions`; implementation.md accepted decisions |
236
+ | Tradeoffs Made | plan.md `Assumptions`; implementation.md decisions |
237
+ | Follow-up Items | plan.md `Out of Scope`; implementation.md deferred results |
238
+ | Integration Notes | plan.md `Validation Criteria`; implementation.md test results |
239
+
240
+ **Non-lite section sources:**
241
+
242
+ | Section | Primary Sources |
243
+ | ------------------------------ | --------------------------------------------------------------------------------- |
244
+ | Overview | discovery.md initial request, spec.md problem statement |
245
+ | What Was Implemented | implementation.md task outcomes, plan.md phase structure |
246
+ | Key Decisions | design.md decisions, implementation.md notes/decisions |
247
+ | Design Deltas | implementation.md deviations table; review-received design drift notes |
248
+ | Notable Challenges | implementation.md issues/blockers in task notes |
249
+ | Tradeoffs Made | implementation.md decisions, design.md tradeoff sections |
250
+ | Integration Notes | implementation.md notes about cross-cutting concerns |
251
+ | Revision History | plan.md p-revN phases, implementation.md revision notes |
252
+ | Follow-up Items | implementation.md deferred findings, plan.md deferred items |
253
+ | Associated Issues | state.md `associated_issues` field |
254
+ | Workflow Observations | project-log.md via `oat project log rollup` only |
255
+ | Autonomous Execution Learnings | oat-execution-learnings.md dated entries |
256
+ | Explainer Outcome | project-recap `manifest.json` and `build-record.json`, or the recorded recap skip |
233
257
 
234
258
  **Explainer Outcome (conditional):**
235
259
 
236
- When a project-recap attempt exists, render this section:
260
+ When a project-recap attempt or a recorded recap skip exists, render this
261
+ section with exactly one item. A run that happened uses the first form:
262
+
263
+ ```markdown
264
+ ## Explainer Outcome
265
+
266
+ - **project-recap:** {generated | degraded} {outcome} — `{run path}`{optional warning or recovery note}
267
+ ```
268
+
269
+ A recap that never ran because a required seam was unavailable uses the second
270
+ form, which has a reason and no run path:
237
271
 
238
272
  ```markdown
239
273
  ## Explainer Outcome
240
274
 
241
- - **project-recap:** {outcome} — `{run path}`{optional warning or recovery note}
275
+ - **project-recap:** skipped — {skip reason}
242
276
  ```
243
277
 
244
- When a project-recap attempt exists, include exactly one concise outcome item with its recipe, outcome (`built-durable`, `built-not-durable`, or `failed`), run path, and warning or recovery note when applicable.
278
+ Include exactly one concise item with its recipe, state (`generated`, `degraded`, or `skipped`), and either its outcome (`built-durable`, `built-not-durable`, `built-needs-review`, or `failed`) with run path, or its skip reason. Add a warning or recovery note when applicable. Use `generated` for `built-durable`, `degraded` for any other terminal outcome, and `skipped` only for a recap whose intent resolved to skip.
245
279
 
246
- Use `manifest.json` and `build-record.json` as the source of truth; refresh the existing item instead of appending a duplicate.
280
+ Use `manifest.json` and `build-record.json` as the source of truth for a run, and the recorded recap intent for a skip; refresh the existing item instead of appending a duplicate.
247
281
 
248
- Omit `Explainer Outcome` when no project-recap attempt exists. A failed or non-durable recap remains visible as its product outcome; do not reinterpret it as project implementation failure.
282
+ Omit `Explainer Outcome` only when no project-recap attempt and no recorded recap skip exist. A degraded or skipped recap remains visible as its own product outcome; do not reinterpret either as project implementation failure. A `capability_probe` skip means the host had no provider configured for a required seam, not that the recap failed.
249
283
 
250
284
  **Autonomous Execution Learnings (conditional):**
251
285
 
@@ -595,5 +629,6 @@ Summary tracks: last task {task_id}, {N} revision phases
595
629
  ledger graduation
596
630
  - When the PJM tool pack is available, each Key Decision is promoted to a canonical `reference/decisions/DR-YYMMDD-slug` record via `oat decision new` (status `accepted`), deduped on the date-independent slug so re-runs never create duplicate records
597
631
  - When the PJM tool pack is unavailable, decision promotion is skipped silently with no prompt
598
- - A project-recap attempt appears once in a concise Explainer Outcome section
599
- sourced from its manifest and build record
632
+ - A project-recap attempt or recorded capability skip appears once in a concise
633
+ Explainer Outcome section sourced from its manifest and build record, or from
634
+ the recorded recap intent
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-repo-improve
3
- version: 2.1.2
3
+ version: 2.1.3
4
4
  description: Use when auditing a repository or turning maintainability reviews, backlog reviews, backlog directories, or backlog items into self-contained external implementation plans.
5
5
  argument-hint: '[repo-audit|maintainability-review|backlog-review|backlog-directory|backlog-item] [path-or-id] [quick|standard|deep] [focus] [--backlog-items] [--issues]'
6
6
  disable-model-invocation: false
@@ -162,7 +162,14 @@ Do not treat review rankings or backlog wording as verified code facts. Preserve
162
162
 
163
163
  ### Step 4: Vet and Select Plan Candidates
164
164
 
165
- For audit and review sources, present a concise vetted candidate table with impact/value, effort, risk, confidence, dependencies, and evidence. Keep rejected or stale candidates out of plans and explain material rejections.
165
+ For audit and review sources, present a concise vetted candidate table with impact/value, effort, risk, confidence, `plan_ready`, `execution_ready`, dependencies, and evidence. Keep rejected or stale candidates out of plans and explain material rejections.
166
+
167
+ Score the two readiness axes separately; they answer different questions:
168
+
169
+ - **`plan_ready`** — is the candidate understood well enough to write a self-contained, executable plan? Its evidence is verified live, it has one coherent outcome, and its verification boundary is known.
170
+ - **`execution_ready`** — could an executor start today? Every hard dependency the plan would name is already satisfied.
171
+
172
+ Dependency state alone does not disqualify a candidate. A candidate that is `plan_ready` but not `execution_ready` is still planned: its plan records `oat_execution_status: BLOCKED`, types the blocking row `Hard` in `## Dependencies`, and names the state that would unblock it. Reject a candidate for not being `plan_ready`, never for being blocked.
166
173
 
167
174
  Ask which candidates to plan. Recommend a bounded set of 3–5 when several are viable. In a non-interactive run, select the top 3–5 by leverage and record that default in the generated index.
168
175
 
@@ -179,7 +186,18 @@ For `backlog-item`, the selected candidate is the item itself unless investigati
179
186
 
180
187
  ### Step 5: Write External Plans
181
188
 
182
- Read `references/plan-template.md` before writing the first plan. Record `git rev-parse --short HEAD` and write only under:
189
+ Read `references/plan-template.md` before writing the first plan. Record plan provenance with this block before writing anything:
190
+
191
+ ```bash
192
+ git rev-parse HEAD # inspected baseline → oat_external_plan_commit
193
+ git fetch origin main && git rev-parse origin/main # comparison evidence → oat_external_plan_main_commit
194
+ git merge-base HEAD origin/main # comparison evidence when HEAD is a branch
195
+ git status --porcelain # must be empty, or name every dirty path in the plan
196
+ ```
197
+
198
+ `oat_external_plan_commit` is the full SHA of the `HEAD` whose content was actually inspected. Never stamp it with a fetched tip that was not read: fetching `origin/main` and recording its SHA as the planned-at commit claims evidence the plan never inspected. The fetched `origin/main` or merge-base SHA is comparison evidence and belongs in `oat_external_plan_main_commit`; the two may differ, and they normally do when planning from a branch. If `git status --porcelain` is not empty, name every dirty path in the plan's evidence section so a later executor knows what the inspected tree contained.
199
+
200
+ Then write only under:
183
201
 
184
202
  `.oat/repo/reference/external-plans/`
185
203
 
@@ -196,13 +214,23 @@ The index records source artifacts, selection rationale, execution order, depend
196
214
  Each plan must:
197
215
 
198
216
  - be self-contained for an executor with no session context;
199
- - carry external-plan frontmatter identifying source mode, source paths, planned-at commit, and related backlog IDs;
217
+ - carry external-plan frontmatter identifying source mode, source paths, and related backlog IDs;
218
+ - record the full inspected `HEAD` in `oat_external_plan_commit`, the compared `origin/main` or merge-base SHA in `oat_external_plan_main_commit`, and the planning date in `oat_external_plan_date`;
219
+ - carry `oat_execution_status: READY|BLOCKED` that agrees with its own `## Dependencies` table;
220
+ - include a typed `## Dependencies` table whose rows are `Hard`, `Soft`, or `Satisfied` and whose `Hard` rows name an unblock state, a `## Landing-event impact` table, and a `## Revalidation Before Execution` section;
221
+ - link back to its source backlog item or artifact from the plan body, so the link runs in both directions;
200
222
  - state explicitly that it is not a canonical OAT `plan.md`;
201
223
  - include exact paths, live-state evidence, relevant conventions, hard scope boundaries, ordered steps, tests, machine-checkable verification, done criteria, and specific STOP conditions;
202
- - avoid OAT phase/task IDs and lifecycle metadata;
224
+ - avoid canonical OAT phase/task IDs and lifecycle bookkeeping, while carrying the external execution-readiness metadata above;
203
225
  - preserve source intent without copying unverified claims;
204
226
  - never contain secret values.
205
227
 
228
+ Three document kinds live under `external-plans/`, and the readiness rules differ by kind. A plan carries the full contract. An index (`oat_external_plan_index: true`) carries provenance but no status or dependency/landing/revalidation sections. An execution program (`oat_execution_program: true`, written by `oat-wave-program`) maps plans into waves: it inspects no tree, so it carries no provenance SHAs and no status, and must instead carry `oat_program_indexes`, a `## Status Ledger` whose wave statuses are `composed`, `in-progress`, `merged`, or `done`, and a `## Wave Table`. A program has no plan date, so its mode is selected from `created`. See the "Execution Programs" section of `references/plan-template.md`.
229
+
230
+ Plans written before this contract landed on 2026-09-07 are read in legacy mode and are never retrofitted. The 31 plans in the 2026-08-31 execution program stamped `oat_external_plan_commit` with the `origin/main` SHA whose content they inspected from a planning branch; legacy mode accepts that provenance as-is. Apply the full provenance rule only to plans written from now on.
231
+
232
+ A plan executed inside a wave refreshes its drift check against the exact execution `HEAD` after predecessor lanes integrate, not only from the authored SHA to `origin/main`. Record that refreshed comparison rather than re-stamping the authored provenance.
233
+
206
234
  Before writing, apply the project-size threshold. If a candidate contains multiple independently shippable outcomes, spans subsystems that need separate design decisions, has no single coherent verification boundary, or is otherwise project-sized:
207
235
 
208
236
  1. Split separable work into bounded external plans.
@@ -219,6 +247,8 @@ After every plan write succeeds, update each source backlog item:
219
247
  - update `updated` to the current ISO 8601 UTC timestamp;
220
248
  - preserve all unrelated frontmatter and body content.
221
249
 
250
+ Links must run in both directions: the item's `external_plans` array points at the plan, and the plan body's source section links back to the item. A plan that no source links to, or that links to no source, is only half-tracked; verify both directions before reporting the plan as written.
251
+
222
252
  If safe YAML mutation cannot be established, leave the item unchanged and report the missing reverse link. Never leave a reverse link to a failed or partial plan write.
223
253
 
224
254
  Plans are always the primary output. Tracking publication happens only after the relevant plan writes succeed.
@@ -298,9 +328,14 @@ Audit the repository for security and test improvements, then let me choose what
298
328
 
299
329
  **A candidate is project-sized:** Split it when possible; otherwise recommend the appropriate OAT project/import route instead of writing a mega-plan.
300
330
 
331
+ **A candidate's dependency has not landed:** Plan it anyway when it is `plan_ready`. Record `oat_execution_status: BLOCKED`, type the blocking row `Hard` in `## Dependencies`, and name the state that unblocks it. Do not silently drop the candidate, and do not mark it `READY` to keep the table tidy — an unsatisfied hard dependency with a `READY` status is exactly the contradiction this contract exists to prevent.
332
+
301
333
  ## Success Criteria
302
334
 
303
335
  - Exactly one source mode and source boundary are explicit.
336
+ - Candidates are scored for plan readiness and execution readiness separately, and a plan-ready but blocked candidate is planned as `BLOCKED` rather than dropped.
337
+ - Every plan records the full inspected `HEAD` SHA, a separate comparison SHA, the planning date, and an `oat_execution_status` that agrees with its dependency table.
338
+ - Every plan carries typed dependencies, landing-event impact, and revalidation triggers, and links back to its source item.
304
339
  - Repo audits disclose and lock agent-directory inclusion plus any additional user exclusions before reconnaissance.
305
340
  - Substantive repo audits use managed read-only delegation or stop for narrowing/authorization.
306
341
  - Artifact-backed modes remain scoped to their source material plus bounded verification.
@@ -2,7 +2,9 @@
2
2
 
3
3
  Use this template for plans written by `oat-repo-improve`. Every plan must stand alone for an executor that has zero context from the advisor session, source review, backlog discussion, or sibling plans.
4
4
 
5
- External plans are durable reference artifacts. They are deliberately not canonical OAT `plan.md` files and must not contain OAT phase IDs, task IDs, lifecycle readiness, review tables, or implementation bookkeeping.
5
+ External plans are durable reference artifacts. They are deliberately not canonical OAT `plan.md` files and must not carry canonical OAT lifecycle state: phase IDs, task IDs, phase or task status tables, review tables, or implementation bookkeeping.
6
+
7
+ External execution-readiness metadata is a different thing and is explicitly permitted and required: `oat_execution_status`, the `## Dependencies` table, `## Landing-event impact`, and `## Revalidation Before Execution`. These record whether the plan's own prerequisites have merged, not how an OAT project is progressing through phases.
6
8
 
7
9
  ## File Contract
8
10
 
@@ -19,7 +21,10 @@ oat_external_plan: true
19
21
  oat_external_plan_source: repo-audit|maintainability-review|backlog-review|backlog-directory|backlog-item
20
22
  oat_external_plan_sources:
21
23
  - <repo-relative source artifact or scope>
22
- oat_external_plan_commit: <short SHA>
24
+ oat_external_plan_commit: <full 40-character SHA of the inspected HEAD>
25
+ oat_external_plan_main_commit: <full 40-character SHA of the compared origin/main or merge-base>
26
+ oat_external_plan_date: '<YYYY-MM-DD>'
27
+ oat_execution_status: READY|BLOCKED
23
28
  oat_backlog_items: []
24
29
  oat_issue_url: null
25
30
  created: '<ISO 8601 UTC>'
@@ -28,6 +33,14 @@ created: '<ISO 8601 UTC>'
28
33
 
29
34
  `oat_backlog_items` contains backlog IDs represented by the plan. Keep it empty when none apply. Set `oat_issue_url` only after confirmed issue publication. Never record absolute workstation paths in durable frontmatter.
30
35
 
36
+ `oat_external_plan_commit` is the full SHA of the `HEAD` whose content was actually inspected while planning — never a fetched tip that was not read. `oat_external_plan_main_commit` records the fetched `origin/main`, or the merge-base with it, as comparison evidence only. The two SHAs may differ, and they normally do when planning happens on a branch; recording them separately is what keeps "what I read" distinct from "what I compared against". `oat_external_plan_date` is the planning date. `oat_execution_status` is `READY` when no unsatisfied hard dependency blocks execution and `BLOCKED` otherwise.
37
+
38
+ ### Legacy plans
39
+
40
+ A plan with no `oat_external_plan_date`, or dated before this contract's landing date of `2026-09-07`, is read in legacy mode. Legacy mode accepts a short `oat_external_plan_commit` SHA, a missing `oat_external_plan_main_commit`, missing `## Dependencies`, `## Landing-event impact`, and `## Revalidation Before Execution` sections, and a missing `oat_execution_status` (read as `READY`).
41
+
42
+ Legacy plans are never rewritten to satisfy the prospective rules. Retrofitting durable plans is not a prerequisite for this contract, and a rule that would make an existing plan invalid or unimportable is a defect in the rule.
43
+
31
44
  ## Plan Template
32
45
 
33
46
  ````markdown
@@ -41,6 +54,11 @@ created: '<ISO 8601 UTC>'
41
54
  > Begin with the drift check. Follow the steps and verification gates in order.
42
55
  > If a STOP condition occurs, stop and report instead of improvising.
43
56
 
57
+ > [!IMPORTANT]
58
+ > **Execution status: READY|BLOCKED.** Say why in one or two sentences: assert
59
+ > that no unsatisfied hard dependency blocks execution, or name the blocking
60
+ > dependency and the state that would unblock it.
61
+
44
62
  ## Outcome
45
63
 
46
64
  State the observable end result in 2–5 sentences. Explain why it matters and preserve the source intent in language an executor and reviewer can understand without opening the source artifact.
@@ -48,19 +66,43 @@ State the observable end result in 2–5 sentences. Explain why it matters and p
48
66
  ## Source and live evidence
49
67
 
50
68
  - Source artifact or scope: `<repo-relative path or scope>`
51
- - Planned at: commit `<short SHA>` on `<YYYY-MM-DD>`
52
- - Related backlog items: `<ID and title, or none>`
69
+ - Inspected `HEAD`: `<full SHA>` — the tree whose content this plan actually read
70
+ - Comparison baseline: `<full SHA>` — say which it is, the fetched `origin/main` tip or the merge-base with it; comparison evidence only, and it may differ from the inspected `HEAD`
71
+ - Planning date: `<YYYY-MM-DD>`
72
+ - Working tree while planning: `git status --porcelain` was empty, or every dirty path is named here
73
+ - Related backlog items: `<ID and title, or none>` — link the item from this plan body so the link runs in both directions
53
74
  - Verified evidence:
54
75
  - `<file:line or command evidence>` — what it establishes
55
76
 
56
77
  Distinguish source assertions from facts verified against the live repository. Do not copy stale evidence forward.
57
78
 
79
+ ## Dependencies
80
+
81
+ Type every dependency and name its unblock state. `Hard` blocks execution. `Soft` records an ordering, integration, or evidence preference that never blocks. `Satisfied` records a formerly hard dependency that is now met.
82
+
83
+ The first word of the Type cell is the class; anything after it is a free-form qualifier, as in `Hard ordering`, `Soft adjacency`, or `Satisfied predecessor`. Earlier plans used ad-hoc type words such as `Related, distinct`, `Downstream`, or `Open question`; those stay valid in legacy mode, and a new plan expresses the same meaning as a `Soft` row with that word as its qualifier.
84
+
85
+ | Type | Dependency | Required state | Current state |
86
+ | ------------- | ---------------------------- | ------------------------ | ------------- |
87
+ | Hard ordering | [Plan](./YYYY-MM-DD-slug.md) | Merged to `origin/main`. | Pending. |
88
+ | Soft ordering | [Plan](./YYYY-MM-DD-slug.md) | Never in one group. | Landed. |
89
+
90
+ Every `Hard` row's Current state begins with a named unblock state: `Satisfied`, `Landed`, `Merged`, or `Accepted` when it is met; `Pending`, `Blocked`, or `In flight` when it is not. State plainly whether any unsatisfied hard dependency remains, and keep `oat_execution_status` in agreement with that sentence.
91
+
92
+ Dependency state alone never disqualifies a plan. A well-formed plan whose prerequisites have not merged is written and recorded as `BLOCKED`, not withheld.
93
+
94
+ ## Landing-event impact
95
+
96
+ | Event | Affected | Files in common | Required update |
97
+ | ----------------------- | -------- | --------------- | -------------------------------------- |
98
+ | `<PR or project>` lands | Minor | `<shared file>` | Re-anchor `<citation>` before editing. |
99
+
58
100
  ## Drift check
59
101
 
60
102
  Run before editing:
61
103
 
62
104
  ```bash
63
- git diff --stat <planned-at SHA>..HEAD -- <in-scope paths>
105
+ git diff --stat <inspected HEAD SHA>..HEAD -- <in-scope paths>
64
106
  ```
65
107
  ````
66
108
 
@@ -136,10 +178,24 @@ Stop and report instead of improvising when:
136
178
  - a required change crosses an out-of-scope boundary;
137
179
  - a named verification gate fails twice after one bounded correction;
138
180
  - a load-bearing dependency, API, ownership assumption, or migration precondition is false;
181
+ - an unsatisfied hard dependency in `## Dependencies` still blocks execution, whatever `oat_execution_status` claims;
139
182
  - the work would expose, copy, or rotate a credential without explicit authority.
140
183
 
141
184
  Add plan-specific STOP conditions for its actual risks.
142
185
 
186
+ ## Revalidation Before Execution
187
+
188
+ Revalidate this plan against live state before executing when:
189
+
190
+ - substantial time passes after the planning date;
191
+ - `origin/main` advances materially from the inspected `HEAD`;
192
+ - a named in-flight project or PR lands;
193
+ - a dependency named in `## Dependencies` changes state;
194
+ - an in-scope file's step numbering, section order, or cited line anchors change;
195
+ - a load-bearing evidence claim cannot be reproduced.
196
+
197
+ Apply the `## Landing-event impact` table when one of its events has occurred. A plan executed inside a wave refreshes its drift check against the exact execution `HEAD` after predecessor lanes integrate, not only from the authored SHA to `origin/main`.
198
+
143
199
  ## Review focus
144
200
 
145
201
  - What a reviewer should inspect most closely.
@@ -159,7 +215,9 @@ oat_external_plan_index: true
159
215
  oat_external_plan_source: <source mode>
160
216
  oat_external_plan_sources:
161
217
  - <source artifact or scope>
162
- oat_external_plan_commit: <short SHA>
218
+ oat_external_plan_commit: <full 40-character SHA of the inspected HEAD>
219
+ oat_external_plan_main_commit: <full 40-character SHA of the compared origin/main or merge-base>
220
+ oat_external_plan_date: '<YYYY-MM-DD>'
163
221
  created: '<ISO 8601 UTC>'
164
222
  ---
165
223
 
@@ -187,6 +245,22 @@ not an `oat-project-import-plan` target.
187
245
 
188
246
  Do not use a repository-wide `README.md` as the index. Do not ask executors to mutate the index; execution tracking belongs to the chosen execution workflow.
189
247
 
248
+ An index records the same provenance as a plan, but it carries no `oat_execution_status` and none of the dependency, landing-event, or revalidation sections: it is not executable, so it has no execution readiness of its own. Each indexed plan carries its own status.
249
+
250
+ ## Execution Programs
251
+
252
+ A third document kind can appear in `external-plans/`: an execution program, marked `oat_execution_program: true`. Programs are written by `oat-wave-program`, not by this skill, and this contract only says how to read one.
253
+
254
+ A program maps a corpus of plans into waves. It inspects no tree, so it carries no `oat_external_plan_commit`, no `oat_external_plan_main_commit`, and no `oat_execution_status` — asking a map for provenance or execution readiness is a category error, and each plan it lists answers those questions for itself. What a program must carry instead is its ledger:
255
+
256
+ - `oat_program_indexes` listing at least one plan index path;
257
+ - a `## Status Ledger` section with a `Wave | Theme | Lanes | Status | Record` table recording at least one wave, where every Status cell is `composed`, `in-progress`, `merged`, or `done` — the vocabulary `oat-wave-program` itself uses;
258
+ - a `## Wave Table` section recording at least one plan; its heading may carry a coverage suffix, as in `## Wave Table (coverage: 31 plans = 31 index rows)`.
259
+
260
+ A program's mode is selected by `oat_external_plan_date` when it has one and by the date part of `created` otherwise, because the producing template emits `created` and no plan date. Without that fallback every generated program would sort into legacy mode permanently and never be checked at all.
261
+
262
+ A program dated on or after the contract's landing date is held to exactly the rules above; an earlier one is read in legacy mode like any other artifact. The exemption is deliberate and bounded: a program is not exempt from the contract, it is held to the part of it that applies to a map.
263
+
190
264
  ## Quality Gate
191
265
 
192
266
  Before finishing each plan, confirm:
@@ -197,4 +271,7 @@ Before finishing each plan, confirm:
197
271
  - Every step names exact files/symbols and ends in a command with an expected result.
198
272
  - Scope and STOP conditions are specific enough to prevent plausible but unauthorized expansion.
199
273
  - Frontmatter source paths are repo-relative and backlog IDs are exact.
200
- - No secret value, workstation-only absolute path, OAT task ID, or lifecycle bookkeeping appears.
274
+ - `oat_external_plan_commit` holds the full SHA of the inspected `HEAD`, `oat_external_plan_main_commit` holds the compared `origin/main` or merge-base SHA, and `oat_external_plan_date` is set.
275
+ - `oat_execution_status` is exactly `READY` or `BLOCKED` and agrees with the unblock states recorded in `## Dependencies`.
276
+ - `## Dependencies`, `## Landing-event impact`, and `## Revalidation Before Execution` are all present, and the plan body links back to its source item.
277
+ - No secret value, workstation-only absolute path, OAT phase or task ID, or canonical OAT lifecycle bookkeeping appears; external execution-readiness metadata is permitted.
@@ -0,0 +1,165 @@
1
+ ---
2
+ oat_status: in_progress
3
+ oat_ready_for: null
4
+ oat_blockers: []
5
+ oat_last_updated: YYYY-MM-DD
6
+ oat_phase: plan
7
+ oat_phase_status: in_progress
8
+ oat_plan_hill_phases: []
9
+ oat_plan_parallel_groups: []
10
+ oat_plan_source: lite
11
+ oat_import_reference: null
12
+ oat_import_source_path: null
13
+ oat_import_provider: null
14
+ oat_generated: false
15
+ oat_template: true
16
+ oat_template_name: plan-lite
17
+ ---
18
+
19
+ # Lite Plan: {Project Name}
20
+
21
+ **Goal:** [State the outcome this single-sitting change must achieve.]
22
+
23
+ ## Summary
24
+
25
+ [Summarize the requested behavior and the smallest coherent implementation.]
26
+
27
+ ## Decisions
28
+
29
+ - **Content shape:** `[minimal | product | technical | both]` — [One-line rationale tied to the observable shape triggers.]
30
+ - [Record the other decisions made during the critical interview.]
31
+
32
+ ## Product Behavior
33
+
34
+ <!-- Include for product or both; omit this section for minimal or technical. -->
35
+
36
+ 1. **[Observable behavior]** — [State the testable user-visible outcome.]
37
+
38
+ ## Technical Design
39
+
40
+ <!-- Include for technical or both; omit this section for minimal or product. -->
41
+
42
+ - **Current operation:** [Describe how the affected modules and contracts work now.]
43
+ - **Proposed changes:** [Describe the change with file-and-symbol references, not line numbers.]
44
+ - **Data flow:** [When state or data crosses a boundary, describe its path and transformations. Omit this item otherwise.]
45
+
46
+ ## Assumptions
47
+
48
+ - [Record assumptions the implementation and validation depend on.]
49
+
50
+ ## Out of Scope
51
+
52
+ - [Name adjacent work intentionally excluded from this change.]
53
+
54
+ ## Validation Criteria
55
+
56
+ - [ ] [Observable criterion] — Check: `[exact verification command]`
57
+ - [ ] [Observable criterion] — Check: `[exact verification command]`
58
+
59
+ ## Parallelism
60
+
61
+ This plan has one phase and executes sequentially.
62
+
63
+ ## Phase 1: [Phase Name]
64
+
65
+ ### Task p01-t01: [Task Name]
66
+
67
+ **Files:**
68
+
69
+ - Create: `[path/to/file.ts]`
70
+ - Modify: `[path/to/existing.ts]`
71
+
72
+ **Implementation and Proof Strategy:**
73
+
74
+ - **Strategy:** `[test-first | characterization-first | implementation-then-regression | static-or-build | manual-or-visual]`
75
+ - **Observable risk:** [Name the behavior, contract, or invariant this evidence covers.]
76
+ - **Why proportionate:** [Explain why this is the smallest proof capable of detecting the relevant failure.]
77
+
78
+ **Step 1: Implement**
79
+
80
+ [Describe the bounded implementation in the order required by the selected strategy.]
81
+
82
+ **Step 2: Prove**
83
+
84
+ Run: `[exact proof command or manual: instruction]`
85
+ Expected: [State the observable passing result and, for behavior changes, how this proof fails without the change.]
86
+
87
+ **Step 3: Refactor and format**
88
+
89
+ [Describe bounded cleanup and name the exact write-mode formatting command.]
90
+
91
+ **Step 4: Verify**
92
+
93
+ Run: `[exact task verification command]`
94
+ Expected: No errors
95
+
96
+ **Step 5: Commit**
97
+
98
+ ```bash
99
+ git add [task files]
100
+ git commit -m "feat(p01-t01): [description]"
101
+ ```
102
+
103
+ ---
104
+
105
+ ### Task p01-t02: [Task Name]
106
+
107
+ **Files:**
108
+
109
+ - Modify: `[path/to/existing.ts]`
110
+
111
+ **Implementation and Proof Strategy:**
112
+
113
+ - **Strategy:** `[test-first | characterization-first | implementation-then-regression | static-or-build | manual-or-visual]`
114
+ - **Observable risk:** [Name the behavior, contract, or invariant this evidence covers.]
115
+ - **Why proportionate:** [Explain why this is the smallest proof capable of detecting the relevant failure.]
116
+
117
+ **Step 1: Implement**
118
+
119
+ [Describe the bounded implementation in the order required by the selected strategy.]
120
+
121
+ **Step 2: Prove**
122
+
123
+ Run: `[exact proof command or manual: instruction]`
124
+ Expected: [State the observable passing result and, for behavior changes, how this proof fails without the change.]
125
+
126
+ **Step 3: Refactor and format**
127
+
128
+ [Describe bounded cleanup and name the exact write-mode formatting command.]
129
+
130
+ **Step 4: Verify**
131
+
132
+ Run: `[exact task verification command]`
133
+ Expected: No errors
134
+
135
+ **Step 5: Commit**
136
+
137
+ ```bash
138
+ git add [task files]
139
+ git commit -m "feat(p01-t02): [description]"
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Reviews
145
+
146
+ | Scope | Type | Status | Date | Artifact | Reviewed Head | Invocation | Gate Target |
147
+ | ------ | -------- | ------- | ---- | -------- | ------------- | ---------- | ----------- |
148
+ | p01 | code | pending | - | - | - | - | - |
149
+ | final | code | pending | - | - | - | - | - |
150
+ | spec | artifact | pending | - | - | - | - | - |
151
+ | design | artifact | pending | - | - | - | - | - |
152
+
153
+ ## Implementation Complete
154
+
155
+ **Summary:**
156
+
157
+ - Phase 1: [N] tasks — [Description]
158
+
159
+ **Total: [N] tasks**
160
+
161
+ Ready for final code review and PR preparation.
162
+
163
+ ## References
164
+
165
+ - Imported Source: `references/imported-plan.md` (when imported provenance applies)
@@ -7,7 +7,7 @@ oat_phase: plan
7
7
  oat_phase_status: in_progress
8
8
  oat_plan_hill_phases: [] # phases to pause AFTER completing (empty = every phase)
9
9
  oat_plan_parallel_groups: [] # groups of phases that run concurrently in worktrees; [] = fully sequential
10
- oat_plan_source: spec-driven # spec-driven | quick | imported
10
+ oat_plan_source: spec-driven # spec-driven | quick | imported | lite
11
11
  oat_import_reference: null # e.g., references/imported-plan.md
12
12
  oat_import_source_path: null # original source path provided by user
13
13
  oat_import_provider: null # codex | cursor | claude | null