@open-agent-toolkit/cli 0.2.58 → 0.2.62

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 (114) 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/configuration.md +16 -0
  5. package/assets/docs/cli-utilities/workflow-gates.md +91 -6
  6. package/assets/docs/contributing/skills.md +27 -5
  7. package/assets/docs/provider-sync/commands.md +23 -0
  8. package/assets/docs/reference/cli-reference.md +10 -3
  9. package/assets/docs/reference/oat-directory-structure.md +1 -0
  10. package/assets/docs/workflows/ideas/index.md +1 -1
  11. package/assets/docs/workflows/index.md +1 -0
  12. package/assets/docs/workflows/projects/artifacts.md +24 -3
  13. package/assets/docs/workflows/projects/autonomy.md +5 -2
  14. package/assets/docs/workflows/projects/dispatch-ceiling.md +43 -7
  15. package/assets/docs/workflows/projects/hill-checkpoints.md +21 -0
  16. package/assets/docs/workflows/projects/implementation-execution.md +10 -2
  17. package/assets/docs/workflows/projects/lifecycle.md +128 -10
  18. package/assets/docs/workflows/projects/pr-flow.md +2 -0
  19. package/assets/docs/workflows/projects/reviews.md +1 -1
  20. package/assets/docs/workflows/projects/state-machine.md +20 -0
  21. package/assets/docs/workflows/skills/index.md +2 -1
  22. package/assets/public-package-versions.json +4 -4
  23. package/assets/skills/oat-brainstorm/SKILL.md +61 -12
  24. package/assets/skills/oat-docs/SKILL.md +13 -8
  25. package/assets/skills/oat-doctor/SKILL.md +3 -3
  26. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
  27. package/assets/skills/oat-project-autonomous/SKILL.md +14 -9
  28. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +59 -38
  29. package/assets/skills/oat-project-capture/SKILL.md +2 -2
  30. package/assets/skills/oat-project-design/SKILL.md +10 -5
  31. package/assets/skills/oat-project-discover/SKILL.md +15 -9
  32. package/assets/skills/oat-project-document/SKILL.md +11 -1
  33. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +59 -38
  34. package/assets/skills/oat-project-implement/SKILL.md +3 -3
  35. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +149 -24
  36. package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +14 -8
  37. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +59 -38
  38. package/assets/skills/oat-project-implement/references/phase-execution.md +16 -1
  39. package/assets/skills/oat-project-implement/references/plan-and-resume.md +19 -1
  40. package/assets/skills/oat-project-import-plan/SKILL.md +75 -6
  41. package/assets/skills/oat-project-lite/SKILL.md +467 -0
  42. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +331 -0
  43. package/assets/skills/oat-project-next/SKILL.md +54 -11
  44. package/assets/skills/oat-project-plan/SKILL.md +42 -5
  45. package/assets/skills/oat-project-plan-writing/SKILL.md +100 -3
  46. package/assets/skills/oat-project-pr-final/SKILL.md +33 -7
  47. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +59 -38
  48. package/assets/skills/oat-project-pr-progress/SKILL.md +3 -3
  49. package/assets/skills/oat-project-progress/SKILL.md +27 -3
  50. package/assets/skills/oat-project-promote-spec-driven/SKILL.md +3 -1
  51. package/assets/skills/oat-project-quick-start/SKILL.md +29 -4
  52. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +59 -38
  53. package/assets/skills/oat-project-review-provide/SKILL.md +37 -11
  54. package/assets/skills/oat-project-review-provide-remote/SKILL.md +12 -5
  55. package/assets/skills/oat-project-summary/SKILL.md +27 -3
  56. package/assets/templates/plan-lite.md +165 -0
  57. package/assets/templates/plan.md +1 -1
  58. package/assets/templates/state.md +5 -2
  59. package/dist/commands/gate/index.d.ts.map +1 -1
  60. package/dist/commands/gate/index.js +102 -8
  61. package/dist/commands/init/index.d.ts.map +1 -1
  62. package/dist/commands/init/index.js +16 -1
  63. package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
  64. package/dist/commands/project/dispatch-ceiling/index.js +10 -1
  65. package/dist/commands/project/index.d.ts.map +1 -1
  66. package/dist/commands/project/index.js +2 -0
  67. package/dist/commands/project/new/index.d.ts +3 -2
  68. package/dist/commands/project/new/index.d.ts.map +1 -1
  69. package/dist/commands/project/new/index.js +2 -1
  70. package/dist/commands/project/new/scaffold.d.ts +5 -3
  71. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  72. package/dist/commands/project/new/scaffold.js +38 -10
  73. package/dist/commands/project/promote/index.d.ts +2 -0
  74. package/dist/commands/project/promote/index.d.ts.map +1 -0
  75. package/dist/commands/project/promote/index.js +1 -0
  76. package/dist/commands/project/promote/promote.d.ts +47 -0
  77. package/dist/commands/project/promote/promote.d.ts.map +1 -0
  78. package/dist/commands/project/promote/promote.js +322 -0
  79. package/dist/commands/project/split/run.d.ts.map +1 -1
  80. package/dist/commands/project/split/run.js +8 -1
  81. package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
  82. package/dist/commands/project/validate-plan/index.js +25 -1
  83. package/dist/commands/project/validate-plan/validate-plan.d.ts +8 -0
  84. package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
  85. package/dist/commands/project/validate-plan/validate-plan.js +49 -0
  86. package/dist/commands/remove/skill/remove-skill.d.ts.map +1 -1
  87. package/dist/commands/remove/skill/remove-skill.js +10 -1
  88. package/dist/commands/shared/frontmatter.d.ts +32 -1
  89. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  90. package/dist/commands/shared/frontmatter.js +93 -0
  91. package/dist/commands/state/generate.d.ts.map +1 -1
  92. package/dist/commands/state/generate.js +23 -0
  93. package/dist/commands/status/index.d.ts.map +1 -1
  94. package/dist/commands/status/index.js +8 -1
  95. package/dist/commands/sync/apply.d.ts.map +1 -1
  96. package/dist/commands/sync/apply.js +40 -6
  97. package/dist/commands/sync/index.d.ts.map +1 -1
  98. package/dist/commands/sync/index.js +11 -17
  99. package/dist/commands/sync/sync.types.d.ts +6 -6
  100. package/dist/commands/sync/sync.types.d.ts.map +1 -1
  101. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  102. package/dist/commands/tools/shared/pack-manifest.js +2 -0
  103. package/dist/config/resolve.d.ts +16 -0
  104. package/dist/config/resolve.d.ts.map +1 -1
  105. package/dist/config/resolve.js +16 -8
  106. package/dist/engine/execute-plan.d.ts.map +1 -1
  107. package/dist/engine/execute-plan.js +6 -0
  108. package/dist/manifest/index.d.ts +2 -1
  109. package/dist/manifest/index.d.ts.map +1 -1
  110. package/dist/manifest/index.js +1 -1
  111. package/dist/manifest/manager.d.ts +40 -0
  112. package/dist/manifest/manager.d.ts.map +1 -1
  113. package/dist/manifest/manager.js +35 -0
  114. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-next
3
- version: 1.0.13
3
+ version: 1.1.0
4
4
  description: Use when continuing work on the active OAT project. Reads project state, determines the next lifecycle action, and invokes the appropriate skill automatically.
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
@@ -106,6 +106,7 @@ projects, and synced records whose detached checkout is absent.
106
106
  - **The `projects` array is empty:** Report error and suggest:
107
107
  - `oat-project-new` — Create a spec-driven project
108
108
  - `oat-project-quick-start` — Start a quick workflow project
109
+ - `oat-project-lite` — Start a lite workflow project
109
110
  - `oat-project-import-plan` — Import an external plan
110
111
  - **STOP.** Do not attempt routing.
111
112
 
@@ -124,15 +125,15 @@ projects, and synced records whose detached checkout is absent.
124
125
 
125
126
  Read `"$PROJECT_PATH/state.md"` frontmatter and extract:
126
127
 
127
- | Field | Used For |
128
- | ------------------------- | ---------------------------------------------------------------------------- |
129
- | `oat_phase` | Current lifecycle position (discovery, spec, design, plan, implement) |
130
- | `oat_phase_status` | Phase completion state (in_progress, complete, pr_open) |
131
- | `oat_workflow_mode` | Routing table selection (spec-driven, quick, import). Default: `spec-driven` |
132
- | `oat_hill_checkpoints` | Which phases require HiLL approval |
133
- | `oat_hill_completed` | Which HiLL gates have been passed |
134
- | `oat_blockers` | Informational warnings (not routing gates) |
135
- | `oat_implement_exit_gate` | Whether the implementation exit gate is allowed and fresh |
128
+ | Field | Used For |
129
+ | ------------------------- | ---------------------------------------------------------------------------------- |
130
+ | `oat_phase` | Current lifecycle position (discovery, spec, design, plan, implement) |
131
+ | `oat_phase_status` | Phase completion state (in_progress, complete, pr_open) |
132
+ | `oat_workflow_mode` | Routing table selection (spec-driven, quick, import, lite). Default: `spec-driven` |
133
+ | `oat_hill_checkpoints` | Which phases require HiLL approval |
134
+ | `oat_hill_completed` | Which HiLL gates have been passed |
135
+ | `oat_blockers` | Informational warnings (not routing gates) |
136
+ | `oat_implement_exit_gate` | Whether the implementation exit gate is allowed and fresh |
136
137
 
137
138
  **If state.md is missing or unreadable:** Report error and suggest running the relevant phase skill directly. STOP.
138
139
 
@@ -256,6 +257,15 @@ Otherwise, look up the target skill from the routing table for the current `oat_
256
257
  | plan | complete | tier 1 | `oat-project-implement` \* |
257
258
  | implement | in_progress | — | `oat-project-implement` \* |
258
259
 
260
+ **Lite Mode:**
261
+
262
+ | Current Phase | Phase Status | Boundary Tier | Target Skill |
263
+ | ------------- | ------------ | ------------- | -------------------------- |
264
+ | plan | in_progress | tier 3 | `oat-project-lite` |
265
+ | plan | in_progress | tier 2 | `oat-project-implement` \* |
266
+ | plan | complete | tier 1 | `oat-project-implement` \* |
267
+ | implement | in_progress | — | `oat-project-implement` \* |
268
+
259
269
  \* `oat-project-implement` handles both sequential and parallel execution.
260
270
 
261
271
  ### Step 4: Check for Unprocessed Reviews (Review Safety Check)
@@ -302,7 +312,8 @@ unresolved or stale — resume with `oat-project-implement` before
302
312
  post-implementation routing."
303
313
 
304
314
  Only an `allowed` and fresh exit-gate disposition falls through to the normal
305
- post-implementation checks.
315
+ post-implementation checks. Every other combination keeps its current
316
+ fail-closed routing.
306
317
 
307
318
  Validate freshness from the complete persisted transition, not from `status`
308
319
  alone:
@@ -316,6 +327,32 @@ alone:
316
327
  `implementation_fingerprint`, configured gate-run provenance, and any eligible
317
328
  receive durably completed. Qualified state also requires the complete rolling
318
329
  freshness fields.
330
+ - `allowed/configured` with `disposition: project_disabled` is the third valid
331
+ combination. Null gate-run and artifact provenance is required here, not
332
+ merely tolerated: nothing launched, so any non-null launch provenance is
333
+ contradictory and fails closed. It additionally requires a matching
334
+ `config_fingerprint`, `reviewed_head`, and `implementation_fingerprint`, a
335
+ `project_override` sub-record recording the disabled value and its
336
+ `state.md:oat_skill_gate_overrides` source, and the same rolling-freshness
337
+ rules as every other allowed result. The complete accepted shape is
338
+ `resolved_command` set to the configured command, `launch_state:
339
+ not_started`, null `launch_attempt_id`, `launch_started_at`,
340
+ `launch_result_receipt`, `gate_run_marker`, `gate_run_id`, `envelope_status`,
341
+ `artifact`, and `handoff`, plus `receive_state: not_started`,
342
+ `receive_correlation`, `receive_source_artifact`,
343
+ `receive_archived_artifact`, `receive_event_identity`, `receive_pre_head`,
344
+ and `receive_commit` all null, `receive_eligible: false`,
345
+ `receive_completed: false`, `attempts_completed: 0`, and `failure: null`.
346
+ Any populated launch, receive, attempt, or failure field contradicts a gate
347
+ that never ran and fails closed.
348
+ - Because the override lives in the state carrier the implementation
349
+ fingerprint excludes, a persisted `project_disabled` result is never accepted
350
+ on its stored value alone. Re-resolve the gate with project context and
351
+ require that the current resolution is still `configured_disabled_by_project`
352
+ and that `config_fingerprint` recomputed from that current resolution equals
353
+ the persisted one. A re-enabled gate changes the resolution and the
354
+ fingerprint, so an override-era transition routes as stale and a fresh
355
+ configured run is required.
319
356
  - `pending`, `blocked`, malformed, contradictory, or legacy-absent state never
320
357
  falls through. Pending and blocked generations resume their persisted
321
358
  configuration; configuration-fingerprint mismatch fails closed.
@@ -397,6 +434,12 @@ Ignore matching rows outside `REVIEWS_SECTION`; they are not review events.
397
434
  - If `FINAL_ROW` has `Status="passed"`:
398
435
  → Continue to 5.5
399
436
 
437
+ **Lite closeout route:** If `oat_workflow_mode: lite`, a passed final review
438
+ routes directly to `oat-project-pr-final` before the summary check below.
439
+ Announce: "Final review passed — creating final PR". Optional lite summary or
440
+ documentation work is owned by the immutable implementation closeout snapshot,
441
+ not this fallback router.
442
+
400
443
  **5.5: Summary not done**
401
444
 
402
445
  Read `{PROJECT_PATH}/summary.md`:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-plan
3
- version: 1.4.7
3
+ version: 1.4.9
4
4
  description: Use when design.md is complete and executable implementation tasks are needed. Breaks design into bite-sized TDD tasks in canonical plan.md format.
5
5
  oat_gateable: true
6
6
  disable-model-invocation: true
@@ -14,13 +14,16 @@ Transform detailed design into an executable implementation plan with bite-sized
14
14
 
15
15
  ## Prerequisites
16
16
 
17
- This skill is the plan authoring path for **spec-driven** projects only. Quick and import modes have dedicated entry skills that produce `plan.md` directly.
17
+ This skill is the plan authoring path for **spec-driven** projects only. Quick,
18
+ import, and lite modes have dedicated entry skills that produce `plan.md`
19
+ directly.
18
20
 
19
21
  Read `oat_workflow_mode` from `{PROJECT_PATH}/state.md` (default: `spec-driven`):
20
22
 
21
23
  - **`spec-driven`**: Complete design document required (`design.md` with `oat_status: complete`). If missing, **Stop.** Tell the user: "Run the `oat-project-design` skill first, then return to planning." Otherwise proceed with planning.
22
24
  - **`quick`**: **Stop.** Plan is already produced by the quick workflow. Tell the user: "Plan already produced by quick workflow. Run `oat-project-implement` to begin execution."
23
25
  - **`import`**: **Stop.** If a normalized `plan.md` exists, tell the user: "Imported plan is ready. Run `oat-project-implement` to begin execution." If no `plan.md` exists, tell the user: "Run `oat-project-import-plan` to import and normalize the external plan first."
26
+ - **`lite`**: **Stop.** Tell the user: "Lite planning is owned by `oat-project-lite`; run it to author or resume the combined plan contract."
24
27
 
25
28
  ## Plan Format Contract
26
29
 
@@ -119,6 +122,15 @@ WORKFLOW_MODE=$(oat project status --field project.workflowMode 2>/dev/null || e
119
122
 
120
123
  Exit skill.
121
124
 
125
+ **Mode: `lite`** — **STOP.** Print:
126
+
127
+ ```
128
+ ⚠️ This project uses lite mode. Run `oat-project-lite` to author or resume
129
+ its combined requirements and single-phase plan.
130
+ ```
131
+
132
+ Exit skill.
133
+
122
134
  **Mode: `import`** — **STOP.** Check if `"$PROJECT_PATH/plan.md"` exists:
123
135
 
124
136
  - If yes: Print: "Imported plan is ready. Run `oat-project-implement` to begin execution."
@@ -483,6 +495,25 @@ This Phase gate review setup is independent from HiLL checkpoints. Do not read o
483
495
  change HiLL fields here, and do not add a provider/model `--target` to any
484
496
  lifecycle command.
485
497
 
498
+ ### Step 12.35: Configure Lifecycle Gate Posture
499
+
500
+ After the confirmed plan has stable phase IDs and before Step 12.5 starts the
501
+ plan artifact review, invoke the `Shared Lifecycle Gate Posture Setup Contract` from
502
+ `oat-project-plan-writing`: load the current
503
+ `oat-project-plan-writing/SKILL.md` and follow that contract as written. This
504
+ runs adjacent to, but independently from, the phase gate review setup above.
505
+
506
+ If `"$PROJECT_PATH/state.md"` already contains an explicit
507
+ `oat_skill_gate_overrides` map, preserve it through the shared contract without
508
+ probing, prompting, or mutation. Otherwise let the contract probe the configured
509
+ gate-aware skills and offer a keep-or-disable choice for each configured gate
510
+ independently.
511
+
512
+ Persist only disabled choices, and only in `"$PROJECT_PATH/state.md"`. Keeping
513
+ every gate leaves the map absent. Never modify the shared, local, or user
514
+ configuration layers, and never prompt or write a new map in non-interactive
515
+ mode.
516
+
486
517
  ### Step 12.5: Run Plan Artifact Review Loop
487
518
 
488
519
  Before dispatching the artifact reviewer, invoke the `Managed Dispatch
@@ -540,13 +571,19 @@ Apply the shared loop exactly:
540
571
  After the plan artifact is finalized and reviewed, run the configured gate as
541
572
  the last check before the completion boundary:
542
573
 
543
- 1. Resolve the gate for this skill:
574
+ 1. Resolve the gate for this skill with project context:
544
575
 
545
576
  ```bash
546
- oat gate resolve <this-skill> --json
577
+ oat gate resolve <this-skill> --project "$PROJECT_PATH" --json
547
578
  ```
548
579
 
549
- If the command returns JSON `null`, no gate is configured; proceed directly to the completion steps in Step 13 below.
580
+ Handle all three `resolution` values explicitly:
581
+ - `not_configured`: no gate is configured; proceed directly to the completion steps in Step 13 below.
582
+ - `configured_disabled_by_project`: the operator disabled this configured gate for this project. Do not launch any process. Emit `configured but disabled by project override`, including the project path and the `projectOverride` source from the envelope, then proceed directly to the completion steps in Step 13 below. A project-disabled gate never enters the passed, missing, or failed branches, and its `configuredGate` is evidence only, never executed.
583
+ - `configured`: continue with the steps below, executing `effectiveGate` exactly as configured.
584
+
585
+ A null, missing, malformed, or unrecognized result is an operational failure
586
+ that fails closed as unresolved. Never treat it as "no gate configured."
550
587
 
551
588
  2. Export the resolved project path into the command shell:
552
589
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-plan-writing
3
- version: 1.2.21
3
+ version: 1.2.23
4
4
  description: Use when authoring or mutating plan.md in any OAT workflow. Defines canonical format invariants — stable task IDs, required sections, review table rules, and resume guardrails.
5
5
  disable-model-invocation: true
6
6
  user-invocable: false
@@ -86,7 +86,8 @@ then continue without formatting.
86
86
  ## Managed Dispatch Readiness and Review Contract
87
87
 
88
88
  All plan-producing workflows and their artifact reviews use this contract:
89
- spec-driven planning, quick-start, imported plans, and provider-plan-via-import.
89
+ spec-driven planning, quick-start, lite planning, imported plans, and
90
+ provider-plan-via-import.
90
91
  The contract runs before a plan becomes implementation-ready and immediately
91
92
  before each artifact review dispatch.
92
93
 
@@ -403,6 +404,100 @@ This setup is independent from HiLL checkpoints. It must not read or change
403
404
  choice is offered; normal lifecycle gate commands remain provider-neutral.
404
405
  They must not add a provider/model `--target` argument.
405
406
 
407
+ ## Shared Lifecycle Gate Posture Setup Contract
408
+
409
+ Every plan-producing workflow invokes this procedure after the complete plan
410
+ has stable phase IDs and before the plan artifact review begins, which is the
411
+ same boundary the phase gate review setup uses. It runs adjacent to, but
412
+ independently from, that setup: neither contract reads, writes, or
413
+ satisfies the other's setting. The calling skill owns the prompt and the write
414
+ to `"$PROJECT_PATH/state.md"`; this section owns the shared eligibility,
415
+ preservation, validation, and non-interactive behavior.
416
+
417
+ This contract governs the configured lifecycle gates declared with
418
+ `oat_gateable: true` in skill frontmatter. It never reads or writes
419
+ `oat_phase_review_gate`, HiLL policy, or any autonomous design-gate setting.
420
+
421
+ ### 1. Preserve an explicit existing map
422
+
423
+ Inspect `"$PROJECT_PATH/state.md"` frontmatter before probing configuration. If
424
+ an explicit `oat_skill_gate_overrides` key is present, preserve the complete
425
+ value unchanged. Do not probe, prompt, or mutate it. This applies equally to
426
+ resumed and imported projects. Report:
427
+
428
+ ```text
429
+ Lifecycle gate posture: preserved existing oat_skill_gate_overrides setting.
430
+ ```
431
+
432
+ A malformed map is never silently repaired, replaced, or dropped. Stop and
433
+ report the offending project state path so the operator can correct it.
434
+
435
+ ### 2. Probe configured gate-aware skills
436
+
437
+ When no explicit map exists, probe each gate-aware skill read-only. The probe
438
+ resolves configuration and never launches a gate:
439
+
440
+ ```bash
441
+ oat gate resolve <gate-aware-skill> --project "$PROJECT_PATH" --json
442
+ ```
443
+
444
+ A gate qualifies for a choice only when `resolution` is literally `configured`.
445
+ `not_configured` means no gate is configured for that skill: offer no choice and
446
+ never fabricate configuration from an override alone.
447
+
448
+ If the probe fails, emit exactly this concise warning and continue planning
449
+ without writing a map:
450
+
451
+ ```text
452
+ Warning: Lifecycle gate posture probe failed; configured gates remain enabled.
453
+ ```
454
+
455
+ If no gate is configured, emit:
456
+
457
+ ```text
458
+ Lifecycle gate posture: no configured lifecycle gates; nothing to disable.
459
+ ```
460
+
461
+ ### 3. Offer one choice per configured gate
462
+
463
+ When at least one gate is configured and an interactive user-response channel is
464
+ available, present each configured gate separately and let the user keep or
465
+ disable it independently. Granularity is per skill; no single answer disables
466
+ every gate at once.
467
+
468
+ For each configured gate, show the skill name, its configured command, and the
469
+ config source reported by the probe, then offer exactly these outcomes:
470
+
471
+ 1. **Keep** - run this configured gate for this project.
472
+ 2. **Disable** - skip this configured gate for this project only.
473
+
474
+ Persist only the disabled choices, as a strict map whose sole permitted value is
475
+ the literal `disabled`:
476
+
477
+ ```yaml
478
+ oat_skill_gate_overrides:
479
+ oat-project-implement: disabled
480
+ ```
481
+
482
+ Keeping every gate leaves the map absent; an explicitly empty map is equivalent.
483
+ Never write an `enabled` value, a boolean, or a list. Write the map only to
484
+ `"$PROJECT_PATH/state.md"`; the shared, local, and user configuration layers are
485
+ never modified. Disabling here records project posture, not gate outcome: it
486
+ never marks a gate passed, failed, or missing.
487
+
488
+ ### 4. Handle non-interactive planning
489
+
490
+ Non-interactive mode includes `OAT_NON_INTERACTIVE=1` and any environment with
491
+ no user-response channel. Never prompt in this mode, and never write a new map,
492
+ even when configured gates exist. Leave the setting absent and emit:
493
+
494
+ ```text
495
+ Lifecycle gate posture: configured gates unchanged (non-interactive; no selection recorded).
496
+ ```
497
+
498
+ An explicit map that already exists is still preserved unchanged in this mode
499
+ under section 1.
500
+
406
501
  ## Auto Artifact-Review Loop
407
502
 
408
503
  This is the canonical contract for bounded automated reviews of generated OAT artifacts. Calling skills own the concrete edits, progress indicators, and commits; this section defines the shared loop they must follow.
@@ -455,7 +550,7 @@ Every `plan.md` produced or edited by any OAT skill **must** satisfy these invar
455
550
 
456
551
  ```yaml
457
552
  ---
458
- oat_plan_source: spec-driven | quick | imported # origin workflow mode
553
+ oat_plan_source: spec-driven | quick | imported | lite # origin workflow mode
459
554
  oat_status: in_progress | complete # plan lifecycle status
460
555
  oat_ready_for: null | oat-project-implement # downstream consumer
461
556
  # Optional after implementation confirmation:
@@ -559,10 +654,12 @@ Required inputs vary by workflow mode. The calling skill reads `oat_workflow_mod
559
654
  | `spec-driven` | Complete `design.md` (`oat_status: complete`) | Yes |
560
655
  | `quick` | `discovery.md` + repo knowledge context | No |
561
656
  | `import` | Preserved external source + normalized `plan.md` | No |
657
+ | `lite` | `plan.md` only | No |
562
658
 
563
659
  - **`spec-driven`**: Plan is derived from a complete design document. All design components must be covered by tasks.
564
660
  - **`quick`**: Plan is generated directly from discovery decisions and repo knowledge. No design artifact is required.
565
661
  - **`import`**: External plan is preserved in `references/imported-plan.md` and normalized into canonical format. Subsequent edits follow this contract.
662
+ - **`lite`**: `plan.md` is the sole requirements and implementation contract. It carries Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria before one sequential phase; no discovery, spec, or design artifact is required.
566
663
 
567
664
  ## Resume and Edit Guardrails
568
665
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-pr-final
3
- version: 1.6.1
3
+ version: 1.6.2
4
4
  description: Use when the user requests or confirms opening the final PR for an active OAT project — e.g. "open the final PR", "ship it", "run oat-project-pr-final", or confirms a previously offered final-PR step. Do NOT auto-invoke when phases are marked complete. Generates the final lifecycle PR description from artifacts and creates the PR.
5
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -26,7 +26,8 @@ Generate a PR-ready summary grounded in canonical OAT artifacts, including:
26
26
  - `activeProject` in `.oat/config.local.json` points at an active project directory (or you can provide project name when prompted)
27
27
  - `{PROJECT_PATH}/plan.md` exists
28
28
  - In `spec-driven` mode: `{PROJECT_PATH}/spec.md` and `{PROJECT_PATH}/design.md` are required
29
- - In `quick`/`import` mode: `spec.md`/`design.md` are optional
29
+ - In `quick`/`import`/`lite` mode: `spec.md`/`design.md` are optional; lite
30
+ proceeds with a reduced assurance note because plan.md is its full contract
30
31
 
31
32
  **Required (recommended to proceed):**
32
33
 
@@ -162,7 +163,7 @@ If `WORKFLOW_MODE=spec-driven`, also require:
162
163
  ls "$PROJECT_PATH/spec.md" "$PROJECT_PATH/design.md" 2>/dev/null
163
164
  ```
164
165
 
165
- If `WORKFLOW_MODE` is `quick` or `import`, proceed without spec/design and include a reduced-assurance note in the PR body.
166
+ If `WORKFLOW_MODE` is `quick`, `import`, or `lite`, proceed without spec/design and include a reduced assurance note in the PR body. For lite, explicitly note that plan.md is the reduced artifact contract and the absence of discovery/spec/design is intentional.
166
167
 
167
168
  ### Step 2: Check Final Review Status
168
169
 
@@ -214,7 +215,32 @@ sequence step.
214
215
 
215
216
  **Step 3.0: Check for summary.md**
216
217
 
217
- Check if `{PROJECT_PATH}/summary.md` exists:
218
+ Resolve the structurally exclusive route first:
219
+
220
+ ```bash
221
+ # BEGIN LITE PR SUMMARY ROUTE CONTRACT
222
+ if [ "$WORKFLOW_MODE" = "lite" ]; then
223
+ PR_SUMMARY_STRATEGY="lite-artifacts"
224
+ GENERIC_SUMMARY_REACHABLE="false"
225
+ else
226
+ PR_SUMMARY_STRATEGY="summary-md"
227
+ GENERIC_SUMMARY_REACHABLE="true"
228
+ fi
229
+ # END LITE PR SUMMARY ROUTE CONTRACT
230
+ ```
231
+
232
+ For `oat_workflow_mode: lite`, do not generate, refresh, or require
233
+ `summary.md`. Synthesize the PR summary directly from the `plan.md` `Summary`,
234
+ `Decisions`, and `Validation Criteria` sections plus the
235
+ `implementation.md` `Final Summary (for PR/docs)` shipped results. This is the
236
+ explicit reduced assurance path: absent `discovery.md`, `spec.md`, and
237
+ `design.md` are valid and must not block PR creation. Then continue to Step 3.1
238
+ only for the remaining available artifacts; do not invoke
239
+ `oat-project-summary` for lite. This branch ends Step 3.0 and jumps directly to
240
+ Step 3.1.
241
+
242
+ **Non-lite branch only:** If the route contract sets
243
+ `GENERIC_SUMMARY_REACHABLE=true`, check if `{PROJECT_PATH}/summary.md` exists:
218
244
 
219
245
  - If `summary.md` is missing or stale, refresh it automatically before proceeding.
220
246
  - When skill-to-skill invocation is available in the current host/runtime, load the current `oat-project-summary/SKILL.md` and follow it; never synthesize the summary from a remembered version of that skill.
@@ -229,8 +255,8 @@ Check if `{PROJECT_PATH}/summary.md` exists:
229
255
 
230
256
  Read:
231
257
 
232
- - `{PROJECT_PATH}/spec.md` (goals, priorities, verification; optional in quick/import)
233
- - `{PROJECT_PATH}/design.md` (architecture + testing strategy; optional in quick/import)
258
+ - `{PROJECT_PATH}/spec.md` (goals, priorities, verification; optional in quick/import/lite)
259
+ - `{PROJECT_PATH}/design.md` (architecture + testing strategy; optional in quick/import/lite)
234
260
  - `{PROJECT_PATH}/plan.md` (phases/tasks + reviews table)
235
261
  - `{PROJECT_PATH}/implementation.md` (if exists; preferred for “what actually happened”)
236
262
  - `{PROJECT_PATH}/discovery.md` (recommended for quick mode)
@@ -339,7 +365,7 @@ oat_project: { PROJECT_PATH }
339
365
 
340
366
  ## Goals / Non-Goals
341
367
 
342
- {brief bullets from available requirement artifacts: spec in spec-driven mode; discovery/import source in quick/import}
368
+ {brief bullets from available requirement artifacts: spec in spec-driven mode; discovery/import source in quick/import; plan contract in lite}
343
369
 
344
370
  ## Changes
345
371