@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.
- package/assets/agents/oat-phase-implementer.md +27 -4
- package/assets/agents/oat-reviewer.md +25 -14
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/configuration.md +16 -0
- package/assets/docs/cli-utilities/workflow-gates.md +91 -6
- package/assets/docs/contributing/skills.md +27 -5
- package/assets/docs/provider-sync/commands.md +23 -0
- package/assets/docs/reference/cli-reference.md +10 -3
- package/assets/docs/reference/oat-directory-structure.md +1 -0
- package/assets/docs/workflows/ideas/index.md +1 -1
- package/assets/docs/workflows/index.md +1 -0
- package/assets/docs/workflows/projects/artifacts.md +24 -3
- package/assets/docs/workflows/projects/autonomy.md +5 -2
- package/assets/docs/workflows/projects/dispatch-ceiling.md +43 -7
- package/assets/docs/workflows/projects/hill-checkpoints.md +21 -0
- package/assets/docs/workflows/projects/implementation-execution.md +10 -2
- package/assets/docs/workflows/projects/lifecycle.md +128 -10
- package/assets/docs/workflows/projects/pr-flow.md +2 -0
- package/assets/docs/workflows/projects/reviews.md +1 -1
- package/assets/docs/workflows/projects/state-machine.md +20 -0
- package/assets/docs/workflows/skills/index.md +2 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +61 -12
- package/assets/skills/oat-docs/SKILL.md +13 -8
- package/assets/skills/oat-doctor/SKILL.md +3 -3
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +14 -9
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +59 -38
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-design/SKILL.md +10 -5
- package/assets/skills/oat-project-discover/SKILL.md +15 -9
- package/assets/skills/oat-project-document/SKILL.md +11 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-implement/SKILL.md +3 -3
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +149 -24
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +14 -8
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-implement/references/phase-execution.md +16 -1
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +19 -1
- package/assets/skills/oat-project-import-plan/SKILL.md +75 -6
- package/assets/skills/oat-project-lite/SKILL.md +467 -0
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +331 -0
- package/assets/skills/oat-project-next/SKILL.md +54 -11
- package/assets/skills/oat-project-plan/SKILL.md +42 -5
- package/assets/skills/oat-project-plan-writing/SKILL.md +100 -3
- package/assets/skills/oat-project-pr-final/SKILL.md +33 -7
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-pr-progress/SKILL.md +3 -3
- package/assets/skills/oat-project-progress/SKILL.md +27 -3
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +3 -1
- package/assets/skills/oat-project-quick-start/SKILL.md +29 -4
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +59 -38
- package/assets/skills/oat-project-review-provide/SKILL.md +37 -11
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +12 -5
- package/assets/skills/oat-project-summary/SKILL.md +27 -3
- package/assets/templates/plan-lite.md +165 -0
- package/assets/templates/plan.md +1 -1
- package/assets/templates/state.md +5 -2
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +102 -8
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +16 -1
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +10 -1
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/new/index.d.ts +3 -2
- package/dist/commands/project/new/index.d.ts.map +1 -1
- package/dist/commands/project/new/index.js +2 -1
- package/dist/commands/project/new/scaffold.d.ts +5 -3
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +38 -10
- package/dist/commands/project/promote/index.d.ts +2 -0
- package/dist/commands/project/promote/index.d.ts.map +1 -0
- package/dist/commands/project/promote/index.js +1 -0
- package/dist/commands/project/promote/promote.d.ts +47 -0
- package/dist/commands/project/promote/promote.d.ts.map +1 -0
- package/dist/commands/project/promote/promote.js +322 -0
- package/dist/commands/project/split/run.d.ts.map +1 -1
- package/dist/commands/project/split/run.js +8 -1
- package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/index.js +25 -1
- package/dist/commands/project/validate-plan/validate-plan.d.ts +8 -0
- package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/validate-plan.js +49 -0
- package/dist/commands/remove/skill/remove-skill.d.ts.map +1 -1
- package/dist/commands/remove/skill/remove-skill.js +10 -1
- package/dist/commands/shared/frontmatter.d.ts +32 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +93 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +23 -0
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +8 -1
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +40 -6
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +11 -17
- package/dist/commands/sync/sync.types.d.ts +6 -6
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +2 -0
- package/dist/config/resolve.d.ts +16 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +16 -8
- package/dist/engine/execute-plan.d.ts.map +1 -1
- package/dist/engine/execute-plan.js +6 -0
- package/dist/manifest/index.d.ts +2 -1
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/manifest/index.js +1 -1
- package/dist/manifest/manager.d.ts +40 -0
- package/dist/manifest/manager.d.ts.map +1 -1
- package/dist/manifest/manager.js +35 -0
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-next
|
|
3
|
-
version: 1.0
|
|
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.
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
|
|
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.
|
|
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 `
|
|
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
|
-
|
|
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
|
|