@open-agent-toolkit/cli 0.3.18 → 0.3.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agents/oat-phase-implementer.md +81 -3
- package/assets/agents/oat-reviewer.md +15 -5
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/reference/cli-reference.md +8 -5
- package/assets/docs/reference/oat-directory-structure.md +1 -0
- package/assets/docs/reference/project-artifacts.md +17 -1
- package/assets/docs/reference/project-state-machine.md +19 -4
- package/assets/docs/skills/brainstorm.md +2 -1
- package/assets/docs/skills/index.md +1 -0
- package/assets/docs/workflows/advanced/autonomy.md +9 -1
- package/assets/docs/workflows/advanced/workflow-gates.md +11 -6
- package/assets/docs/workflows/approvals-and-automation.md +13 -8
- package/assets/docs/workflows/choose-workflow.md +16 -8
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +8 -3
- package/assets/docs/workflows/projects/closeout/pr-flow.md +2 -0
- package/assets/docs/workflows/projects/execution/execution-skills.md +14 -2
- package/assets/docs/workflows/projects/execution/implementation-execution.md +15 -0
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +10 -1
- package/assets/docs/workflows/projects/lifecycle.md +73 -9
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +18 -1
- package/assets/docs/workflows/projects/planning/planning-skills.md +11 -10
- package/assets/docs/workflows/projects/planning/starting-projects.md +92 -20
- package/assets/docs/workflows/projects/reviews/index.md +15 -2
- package/assets/docs/workflows/projects/reviews/review-flavors.md +5 -3
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +33 -9
- package/assets/skills/oat-brainstorm/references/destinations.md +9 -4
- package/assets/skills/oat-docs/SKILL.md +9 -4
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +14 -8
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +17 -2
- package/assets/skills/oat-project-brief/SKILL.md +592 -0
- package/assets/skills/oat-project-brief/references/brief-contract.md +294 -0
- package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +393 -0
- package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +84 -0
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-complete/SKILL.md +7 -2
- package/assets/skills/oat-project-discover/SKILL.md +3 -2
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -1
- package/assets/skills/oat-project-document/SKILL.md +11 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +40 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-implement/references/phase-execution.md +166 -1
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +97 -3
- package/assets/skills/oat-project-import-plan/SKILL.md +5 -1
- package/assets/skills/oat-project-lite/SKILL.md +4 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-new/SKILL.md +5 -1
- package/assets/skills/oat-project-next/SKILL.md +31 -4
- package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-plan/SKILL.md +12 -2
- package/assets/skills/oat-project-plan-writing/SKILL.md +6 -4
- package/assets/skills/oat-project-pr-final/SKILL.md +15 -3
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-pr-progress/SKILL.md +31 -4
- package/assets/skills/oat-project-progress/SKILL.md +30 -8
- package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
- package/assets/skills/oat-project-quick-start/SKILL.md +60 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +17 -2
- package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +4 -0
- package/assets/skills/oat-project-reconcile/SKILL.md +65 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +331 -12
- package/assets/skills/oat-project-review-receive/SKILL.md +86 -1
- package/assets/skills/oat-project-revise/SKILL.md +27 -4
- package/assets/skills/oat-project-summary/SKILL.md +95 -2
- package/assets/skills/oat-wave-execute/SKILL.md +3 -2
- package/assets/templates/implementation-brief.md +165 -0
- package/assets/templates/plan-brief.md +140 -0
- package/assets/templates/plan.md +1 -1
- package/assets/templates/state.md +8 -2
- package/dist/commands/project/new/scaffold.d.ts +1 -1
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +35 -7
- package/dist/commands/project/promote/promote.d.ts +32 -1
- package/dist/commands/project/promote/promote.d.ts.map +1 -1
- package/dist/commands/project/promote/promote.js +562 -5
- package/dist/commands/project/validate-plan/frontmatter.d.ts +12 -0
- package/dist/commands/project/validate-plan/frontmatter.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/frontmatter.js +27 -0
- package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/index.js +52 -18
- package/dist/commands/project/validate-plan/profiles.d.ts +54 -0
- package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/profiles.js +269 -0
- package/dist/commands/project/validate-plan/validate-plan.d.ts +3 -19
- package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/validate-plan.js +5 -82
- package/dist/commands/shared/frontmatter.d.ts +1 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +1 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +51 -2
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +3 -0
- package/package.json +2 -2
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Lifecycle Gate Approval Record
|
|
2
|
+
|
|
3
|
+
A configured lifecycle gate ends in an outcome the operator or a later session
|
|
4
|
+
needs to see again: it passed, it warned, the operator explicitly continued
|
|
5
|
+
past a failure, the project disabled it, or it blocked. Chat output does not
|
|
6
|
+
survive the session, so the skill that runs the gate persists the outcome in
|
|
7
|
+
project `state.md`. This document defines the record's shared core once; each
|
|
8
|
+
carrier names where it lives and what it adds.
|
|
9
|
+
|
|
10
|
+
## Core record
|
|
11
|
+
|
|
12
|
+
```yaml
|
|
13
|
+
<carrier>:
|
|
14
|
+
status: allowed # allowed | blocked
|
|
15
|
+
disposition: passed # passed | warned | prompt_approved | project_disabled; null when blocked
|
|
16
|
+
config_fingerprint: '<stable hash of the resolved gate declaration>'
|
|
17
|
+
reviewed_head: '<full SHA of the commit the gate reviewed>'
|
|
18
|
+
decided_at: '2026-10-02T15:20:00Z'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- `status`: `allowed` | `blocked`.
|
|
22
|
+
- `disposition`: `passed`, `warned`, `prompt_approved`, or `project_disabled`
|
|
23
|
+
when `status` is `allowed`; `null` when `status` is `blocked`.
|
|
24
|
+
- `config_fingerprint`: the writer's stable hash of the resolved gate
|
|
25
|
+
declaration it ran (command, description, `onFailure`, `maxAttempts`, and the
|
|
26
|
+
project override state), recorded as provenance. Implement recomputes its own
|
|
27
|
+
carrier's fingerprint under its Step 14 rules; quick-start readers do not.
|
|
28
|
+
- `reviewed_head`: the full 40-character SHA of the commit the gate reviewed,
|
|
29
|
+
recorded as provenance. `null` when no gate ran.
|
|
30
|
+
- `decided_at`: the ISO 8601 UTC time the outcome was decided. A record written
|
|
31
|
+
before `decided_at` existed is not malformed for that reason alone.
|
|
32
|
+
|
|
33
|
+
## Write rules
|
|
34
|
+
|
|
35
|
+
| Gate outcome | Record |
|
|
36
|
+
| --------------------------------------------------------------- | ----------------------------------------------------------- |
|
|
37
|
+
| Passed its threshold | `allowed` / `passed` |
|
|
38
|
+
| Failed under `onFailure: warn` | `allowed` / `warned` |
|
|
39
|
+
| Failed under `onFailure: prompt`, operator explicitly continued | `allowed` / `prompt_approved` |
|
|
40
|
+
| Failed under `onFailure: prompt`, operator declined or deferred | `blocked` / `null` |
|
|
41
|
+
| `block` still failing after `maxAttempts` | `blocked` / `null` |
|
|
42
|
+
| Configured but disabled by project override (no launch) | `allowed` / `project_disabled` |
|
|
43
|
+
| Launch, transport, validation, or receive failure | `blocked` / `null` |
|
|
44
|
+
| Not configured | no record (quick-start); implement writes `allowed/no_gate` |
|
|
45
|
+
|
|
46
|
+
Only an explicit operator continuation writes `prompt_approved`. Declining,
|
|
47
|
+
deferring, giving no response, or running under `OAT_AUTONOMOUS=1` writes
|
|
48
|
+
`blocked`, never anything that reads as approval. A rerun of the same gate
|
|
49
|
+
replaces the record.
|
|
50
|
+
|
|
51
|
+
## Carriers
|
|
52
|
+
|
|
53
|
+
- **`oat_implement_exit_gate`** (`oat-project-implement`,
|
|
54
|
+
`references/completion-and-closeout.md` Step 14) uses this core and keeps its
|
|
55
|
+
additional values and fields there: the `pending` and `stale` statuses, the
|
|
56
|
+
`no_gate` disposition, and the resolution, attempt, launch, receive, waiver,
|
|
57
|
+
and freshness fields. Its own effective-delta freshness rule decides whether a
|
|
58
|
+
record is current.
|
|
59
|
+
- **`oat_quick_start_gate`** (`oat-project-quick-start`, Gate Execution) carries
|
|
60
|
+
exactly the core.
|
|
61
|
+
- **`oat_brief_gate`** (`oat-project-brief`, Gate Execution) carries exactly the
|
|
62
|
+
core, written and read under the same rules as `oat_quick_start_gate`. It is
|
|
63
|
+
absent when no gate is configured, and nothing routes on it: it is provenance
|
|
64
|
+
only.
|
|
65
|
+
|
|
66
|
+
## Reading a quick-start record
|
|
67
|
+
|
|
68
|
+
Readers report a quick-start record as recorded and do not recompute
|
|
69
|
+
`config_fingerprint`: no CLI emits a canonical fingerprint for the quick-start
|
|
70
|
+
gate, so a recomputation could not be reproduced across sessions. They do not
|
|
71
|
+
route on the record either.
|
|
72
|
+
|
|
73
|
+
- Report `status`, `disposition`, `decided_at`, and `config_fingerprint` (as
|
|
74
|
+
provenance) exactly as stored.
|
|
75
|
+
- Report the record as malformed when `status` and `disposition` do not form
|
|
76
|
+
one of the combinations in the write rules, or when a present `decided_at` is
|
|
77
|
+
not a valid ISO 8601 UTC time.
|
|
78
|
+
- `reviewed_head` is provenance only and is not compared with `HEAD`, because
|
|
79
|
+
the quick-start completion step commits after the gate.
|
|
80
|
+
- An absent record means none was written: no gate was configured, the gate
|
|
81
|
+
has not reached an outcome, or the plan predates the record. Readers do not
|
|
82
|
+
infer which.
|
|
83
|
+
|
|
84
|
+
Readers never write, repair, or infer a record.
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.0.
|
|
8
|
+
version: 1.0.5
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Capture Untracked Work
|
|
@@ -29,7 +29,7 @@ Use when:
|
|
|
29
29
|
Don't use when:
|
|
30
30
|
|
|
31
31
|
- A project already exists for the current branch — use `oat-project-reconcile` instead
|
|
32
|
-
- You haven't started any work yet — use `oat-project-lite` for single-sitting work, `oat-project-quick-start` for quick work, or `oat-project-new` for spec-driven work
|
|
32
|
+
- You haven't started any work yet — use `oat-project-lite` for single-sitting work, `oat-project-brief` for one delivery planned as a Project Brief, `oat-project-quick-start` for quick work, or `oat-project-new` for spec-driven work
|
|
33
33
|
- You only need to map new commits to an existing plan — use `oat-project-reconcile`
|
|
34
34
|
|
|
35
35
|
## Prerequisites
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Bash, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.7.
|
|
8
|
+
version: 1.7.16
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Complete Project
|
|
@@ -390,6 +390,11 @@ Also preflight summary status using the same freshness rules as `oat-project-sum
|
|
|
390
390
|
- `summary.md` is `missing` when `{PROJECT_PATH}/summary.md` does not exist
|
|
391
391
|
- `summary.md` is `stale` when the tracking frontmatter fields `oat_summary_last_task`, `oat_summary_revision_count`, or `oat_summary_includes_revisions` no longer match `current_last_task`, `current_rev_count`, or `current_rev_list` as defined in `oat-project-summary` Step 3
|
|
392
392
|
- `summary.md` is `current` when those tracking fields still match the `oat-project-summary` Step 3 comparison inputs
|
|
393
|
+
- In brief modes staleness is decided by fingerprint instead: recompute the
|
|
394
|
+
phase fingerprint with the `oat-project-summary` Step 3 brief fragment;
|
|
395
|
+
`summary.md` is `stale` when its `oat_summary_phase_fingerprint` is absent or
|
|
396
|
+
differs from the recomputed value and `current` when they match.
|
|
397
|
+
`oat_summary_last_task` is not consulted for a brief project.
|
|
393
398
|
|
|
394
399
|
Preflight `{PROJECT_PATH}/references/project-retro.md` alongside the summary.
|
|
395
400
|
The safety-net offer is governed by how this completion run executes, not by how
|
|
@@ -1088,7 +1093,7 @@ If a PR description artifact already exists at `{PROJECT_PATH}/pr/project-pr-*.m
|
|
|
1088
1093
|
|
|
1089
1094
|
**Archive-aware References (required when `SHOULD_ARCHIVE` is `true`):**
|
|
1090
1095
|
|
|
1091
|
-
When archiving, the project artifacts at `{PROJECT_PATH}/{plan,implementation,discovery,spec,design,summary}.md` will move to a gitignored archive location in Step 8. After commit + push (Step 10), those paths no longer exist on the branch and any blob link to them returns 404 on GitHub. The PR description must anticipate this:
|
|
1096
|
+
When archiving, the project artifacts at `{PROJECT_PATH}/{plan,implementation,discovery,spec,design,summary}.md` will move to a gitignored archive location in Step 8. After commit + push (Step 10), those paths no longer exist on the branch and any blob link to them returns 404 on GitHub. The PR description must anticipate this. A brief project's artifact set is `plan.md` (the Project Brief), `implementation.md` (the phase journal), `summary.md`, and `references/`; it has no discovery, spec, or design artifact:
|
|
1092
1097
|
|
|
1093
1098
|
- **Drop References bullets** that point to artifacts about to become local-only:
|
|
1094
1099
|
- `plan.md`, `implementation.md`, `discovery.md`, `spec.md`, `design.md`, `summary.md`, `references/imported-plan.md`
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: false
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Bash(git:*), Bash(oat:*), Bash(pnpm:*), Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: 2.2.
|
|
8
|
+
version: 2.2.10
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Discovery Phase
|
|
@@ -32,7 +32,7 @@ Before acting:
|
|
|
32
32
|
2. Confirm `{PROJECT_PATH}/state.md` exists.
|
|
33
33
|
3. Confirm `oat_workflow_mode` is `spec-driven` or absent only in a legacy spec-driven project.
|
|
34
34
|
|
|
35
|
-
If any check fails, decline this skill. Offer `oat-project-new` for a new spec-driven project, `oat-project-quick-start` for a quick project, `oat-project-lite` for single-sitting work, or `oat-project-open` for switching to an existing project. When the gate passes, summarize the active project and ask before continuing discovery.
|
|
35
|
+
If any check fails, decline this skill. Offer `oat-project-new` for a new spec-driven project, `oat-project-quick-start` for a quick project, `oat-project-lite` for single-sitting work, `oat-project-brief` for one delivery planned as a Project Brief, or `oat-project-open` for switching to an existing project. When the gate passes, summarize the active project and ask before continuing discovery.
|
|
36
36
|
|
|
37
37
|
## Mode Assertion
|
|
38
38
|
|
|
@@ -107,6 +107,7 @@ PROJECTS_ROOT="${PROJECTS_ROOT%/}"
|
|
|
107
107
|
- If `oat_workflow_mode` is present and not `spec-driven`, stop and route:
|
|
108
108
|
- quick project: continue with `oat-project-quick-start` / `oat-project-progress`
|
|
109
109
|
- lite project: continue with `oat-project-lite` / `oat-project-progress`
|
|
110
|
+
- brief project: continue with `oat-project-brief` / `oat-project-progress`
|
|
110
111
|
- import project: continue with `oat-project-import-plan` / `oat-project-progress`
|
|
111
112
|
- Ask user:
|
|
112
113
|
- **Continue** with active project, or
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Bash
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.1.
|
|
8
|
+
version: 1.1.8
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Dispatching OAT Project Subagents
|
|
@@ -260,6 +260,14 @@ lifecycle_outcome:
|
|
|
260
260
|
Do not rewrite generic route, selector, acceptance, outcome, or diagnostic
|
|
261
261
|
fields inside the lifecycle extension.
|
|
262
262
|
|
|
263
|
+
`workflow_mode` carries the project's recorded mode, `brief` included. In a
|
|
264
|
+
brief project the lifecycle scope is a phase ID: `phase_id` (such as `p02`)
|
|
265
|
+
names the phase-unit, and `task_id` names the execution record the launch
|
|
266
|
+
executes, or is `null` for a whole-phase launch, because brief phases have no
|
|
267
|
+
planned tasks. The brief's one-committing-owner rule then sets
|
|
268
|
+
`commit_policy`: a nested worker returns edits on owned paths and never
|
|
269
|
+
commits.
|
|
270
|
+
|
|
263
271
|
## Failure Boundaries
|
|
264
272
|
|
|
265
273
|
- Invalid or stale project state: block before generic dispatch.
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: false
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Edit, Bash(git:*), Bash(jq:*), Bash(oat pjm:*), Bash(oat project push:*), Bash(oat project scope:*), Bash(oat tools:*), Glob, Grep, AskUserQuestion, Skill
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.8.
|
|
9
|
+
version: 1.8.9
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Project Documentation Sync
|
|
@@ -217,6 +217,16 @@ shipped results. A lite project accepts `discovery.md`, `spec.md`, and
|
|
|
217
217
|
`design.md` as absent; do not read or require them. Build the documentation
|
|
218
218
|
delta from what actually shipped and continue with code verification.
|
|
219
219
|
|
|
220
|
+
For `oat_workflow_mode: brief`, use the brief artifact set instead of the
|
|
221
|
+
numbered list below. Read `plan.md` (the Project Brief: Goal, Outcomes,
|
|
222
|
+
Approach and any `### Design` subsection, Constraints and Out of Scope,
|
|
223
|
+
Decisions, and the phases' Intent and Exit evidence), then `implementation.md`
|
|
224
|
+
phase sections, execution records, `Brief deltas`, and `Final Summary (for
|
|
225
|
+
PR/docs)` as the shipped results, plus `summary.md` and `references/research/`
|
|
226
|
+
when present. A brief project accepts `discovery.md`, `spec.md`, and
|
|
227
|
+
`design.md` as absent; do not read or require them. Build the documentation
|
|
228
|
+
delta from what actually shipped and continue with code verification.
|
|
229
|
+
|
|
220
230
|
For every other workflow mode, read the numbered artifact list below.
|
|
221
231
|
|
|
222
232
|
**Read in order:**
|
|
@@ -165,6 +165,17 @@ remains.
|
|
|
165
165
|
| LITE-08 | `oat-project-lite` | Plan artifact-review findings | Accept offered Medium/Low fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and lite disposition |
|
|
166
166
|
| LITE-09 | `oat-project-lite` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply the configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
|
|
167
167
|
| LITE-10 | `oat-project-lite` | Configured lifecycle gate posture | Keep or disable each configured lifecycle gate | Preserve an existing override map; otherwise preserve configured gates and write no override in non-interactive planning | `auto-resolve` / `boundary:repository-policy-approval` | `state.md` override map or recorded non-interactive preservation |
|
|
168
|
+
| BRIEF-01 | `oat-project-brief` | Inherited dirty tree | Commit, proceed, or abort | Proceed without staging unrelated files; a required destructive cleanup stops | `auto-resolve` / `boundary:destructive-change-risk` | Brief preflight note |
|
|
169
|
+
| BRIEF-02 | `oat-project-brief` | Missing name or description | Ask for required startup input | Derive a slug from the explicit goal and use the goal as the description; stop if the goal is not substantive | `auto-resolve` / `boundary:product-judgment` | Brief Goal and project path |
|
|
170
|
+
| BRIEF-03 | `oat-project-brief` | Alignment interview | Ask readiness rounds until the user accepts the design | Settle facts from repository evidence, adopt the supported recommendation for each decision, and record it; material product or design ambiguity stops | `auto-resolve` / `boundary:product-judgment` | `plan.md` Approach, Decisions, and Known Unknowns |
|
|
171
|
+
| BRIEF-04 | `oat-project-brief` | Workflow fit | Continue brief, promote to quick, or split the work | Apply the documented content heuristic; when an implementation-affecting design question cannot be settled from evidence, promote through `oat project promote --to quick` only after the Step 3 brief is validated and committed, and before that abandon the scaffold and start `oat-project-quick-start`; several independent deliveries stop; otherwise record why brief fits | `auto-resolve` / `boundary:product-judgment` | `plan.md` Decisions and promotion result |
|
|
172
|
+
| BRIEF-05 | `oat-project-brief` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
173
|
+
| BRIEF-06 | `oat-project-brief` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
174
|
+
| BRIEF-07 | `oat-project-brief` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: leave absent and disabled unless an explicit value already exists | `auto-resolve` | Phase-gate setup status |
|
|
175
|
+
| BRIEF-08 | `oat-project-brief` | Configured lifecycle gate posture | Keep or disable each configured lifecycle gate | Preserve an existing override map; otherwise preserve configured gates and write no override in non-interactive planning | `auto-resolve` / `boundary:repository-policy-approval` | `state.md` override map or recorded non-interactive preservation |
|
|
176
|
+
| BRIEF-09 | `oat-project-brief` | Brief artifact-review findings | Fold minor fixes; take material findings to the user | Apply only unambiguous artifact-local fixes and re-review; never rewrite agreed intent; unresolved Critical findings or material ambiguity stop | `auto-resolve` / `boundary:unresolved-critical-findings` | Brief review row and residual-finding disposition |
|
|
177
|
+
| BRIEF-10 | `oat-project-brief` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply the configured failure semantics; `prompt` becomes a reported boundary; persist the outcome as `oat_brief_gate` | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition, and `oat_brief_gate` |
|
|
178
|
+
| BRIEF-11 | `oat-project-brief` | Brief approval | Approve, revise, or promote | Approve the reviewed brief and record the approval line; contradictory or materially incomplete outcomes stop | `auto-resolve` / `boundary:product-judgment` | Approval line in `plan.md` |
|
|
168
179
|
| DISC-01 | `oat-project-discover` | Active-project confirmation or switch | Confirm the active project or choose another | Use only an explicitly supplied or valid active project; otherwise stop without guessing | `boundary:product-judgment` | Resolved project path |
|
|
169
180
|
| DISC-02 | `oat-project-discover` | Stale knowledge | Continue or refresh | Refresh through the canonical knowledge workflow when available; otherwise record staleness and continue only when it does not create material ambiguity | `auto-resolve` / `boundary:product-judgment` | Discovery evidence note |
|
|
170
181
|
| DISC-03 | `oat-project-discover` | Gray areas and clarifying questions | Select areas and answer questions | Select risk-relevant areas from evidence and record supported answers/assumptions; material ambiguity stops | `auto-resolve` / `boundary:product-judgment` | `discovery.md` Q&A and assumptions |
|
|
@@ -269,7 +280,7 @@ assertions, vendored copies, and other unreachable occurrences to `NG`. Add a
|
|
|
269
280
|
new inventory row when no existing gate ID describes the behavior.
|
|
270
281
|
|
|
271
282
|
`packages/cli/src/validation/autonomy-gate-inventory.test.ts` is the CI
|
|
272
|
-
backstop. It derives the
|
|
283
|
+
backstop. It derives the seventeen scan roots from the inventory, scans Markdown
|
|
273
284
|
recursively, and matches each site by file plus a stable semantic key derived
|
|
274
285
|
from its normalized heading and text, never by line number. Its failure output
|
|
275
286
|
provides the key to add or replace. The committed line-number comparison below
|
|
@@ -301,7 +312,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
|
|
|
301
312
|
| `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `c264a64398f0 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
|
|
302
313
|
| `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
303
314
|
| `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
|
|
304
|
-
| `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG`
|
|
315
|
+
| `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `e3c08ecdab17 -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
|
|
305
316
|
| `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `49ed2780983b -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `1d710fb4cc66 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `92578f7df686 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `e4c0625439f8 -> REVIEWRECEIVE-04`; `505ad8389c0a -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `e30e06f39281 -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
|
|
306
317
|
| `oat-project-review-provide/SKILL.md` | `2e794bf4fc4a -> REVIEWPROVIDE-08`; `5441ab977b46 -> REVIEWPROVIDE-08` |
|
|
307
318
|
| `oat-project-review-provide/SKILL.md` | `f4238ebb1887 -> NG`; `0360fa2db9a5 -> NG` |
|
|
@@ -317,6 +328,10 @@ remains immutable baseline evidence for the original p01-t01 verification.
|
|
|
317
328
|
| `oat-project-plan/SKILL.md` | `f99e44b39932 -> PLAN-12`; `7e6a9854504b -> NG` |
|
|
318
329
|
| `oat-project-complete/SKILL.md` | `0177956707aa -> NG`; `1234c29d1999 -> NG`; `3c0b26f0ff1c -> NG`; `8cc1fa5aab1e -> COMPLETE-01`; `4c209fbb4716 -> COMPLETE-01`; `02e4175e1171 -> COMPLETE-01`; `d698d4f98e76 -> COMPLETE-01`; `9f86a7218d93 -> COMPLETE-01`; `024713698d9a -> COMPLETE-01`; `c327995053fa -> COMPLETE-01`; `61f81d4ec7c1 -> COMPLETE-01`; `14fb2e56809f -> COMPLETE-01`; `7d4ff668744d -> COMPLETE-01`; `502a6c141784 -> COMPLETE-01`; `fb7e2db356af -> COMPLETE-01`; `f73f8476360a -> NG`; `1e15f420039f -> NG`; `cc234032ddd7 -> NG`; `1dd54687229b -> NG`; `fc05c8303cd2 -> NG`; `24be721d635e -> NG` |
|
|
319
330
|
| `oat-project-lite/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
331
|
+
| `oat-project-brief/references/docs/autonomy-contract.md` | `* -> NG` |
|
|
332
|
+
| `oat-project-brief/references/docs/gate-approval-record.md` | `* -> NG` |
|
|
333
|
+
| `oat-project-brief/SKILL.md` | `3d101cb200b3 -> NG`; `494f08a25a22 -> NG`; `ae6d9bdd3cc0 -> NG`; `beeb946393dc -> NG`; `83b5e9396197 -> NG`; `709dd744d813 -> NG`; `4e1222d879f2 -> BRIEF-03`; `a9dd42731b88 -> BRIEF-04`; `7bff55da6726 -> NG`; `c5fb9ce4b27d -> NG`; `e2e809154403 -> BRIEF-10`; `93d6f62c5dac -> BRIEF-10`; `92da21e87ab4 -> NG`; `304c39a13de5 -> BRIEF-10`; `06490315c2f9 -> BRIEF-10`; `0b85a5738ca5 -> BRIEF-11`; `f34dfb297a83 -> NG`; `06179c668e16 -> BRIEF-11`; `5ef3a708eed9 -> BRIEF-11`; `1c798da87f49 -> BRIEF-11`; `f73421b4937f -> NG`; `6e3e97f9cbcf -> NG`; `9b3abe616c5d -> BRIEF-08` |
|
|
334
|
+
| `oat-project-brief/references/brief-contract.md` | `5359cae29ca8 -> NG`; `b417d06e35b4 -> BRIEF-03`; `964e9fc49596 -> NG`; `02270b5b835d -> BRIEF-11`; `e1cb9cbbd308 -> NG` |
|
|
320
335
|
| `oat-project-implement/references/completion-and-closeout.md` | `87f1424a8692 -> NG`; `6b1ec05182f0 -> IMPLEMENT-11`; `e6d696a27c91 -> NG`; `c77f8ccb52ad -> NG`; `48de2614c0ba -> IMPLEMENT-11`; `32d53f5212e5 -> IMPLEMENT-11`; `7cdb4a9c57b7 -> IMPLEMENT-11`; `16ffc0aa099b -> IMPLEMENT-11`; `d6868ea10b3f -> IMPLEMENT-11`; `4f05ff5567be -> IMPLEMENT-11`; `c70b47ae7a6d -> IMPLEMENT-11`; `5fafd093b58e -> NG`; `21ceaf7e658a -> NG`; `249427a9f475 -> NG`; `8a7ec13a9b7c -> NG`; `9aeb7fce2012 -> IMPLEMENT-18`; `f11a7cdda220 -> IMPLEMENT-18`; `4523ac029152 -> NG`; `6e87b08c4046 -> NG`; `baa6052c7f0a -> IMPLEMENT-18`; `27d3fad116b1 -> IMPLEMENT-18`; `2cfbeb4388a5 -> IMPLEMENT-18`; `c56ea56a56db -> NG`; `43e2e3c1380d -> IMPLEMENT-17`; `b49690277fb5 -> NG`; `df12304d6a36 -> NG`; `52eacac11fef -> IMPLEMENT-17`; `60092df6b17b -> IMPLEMENT-17`; `361872c6b00e -> IMPLEMENT-17`; `d2bc711a75fb -> IMPLEMENT-17` |
|
|
321
336
|
| `oat-project-quick-start/SKILL.md` | `aa560418765a -> QS-13`; `40ddcac880ef -> NG` |
|
|
322
337
|
| `oat-project-plan/SKILL.md` | `2b32bc5e9fea -> NG`; `58cc6b0adf97 -> PLAN-13`; `9fba3b40b522 -> NG` |
|
|
@@ -35,10 +35,21 @@ Options:
|
|
|
35
35
|
3. Modify plan to address blocker
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
In brief modes `task_id` is the open execution record's ID, or the phase ID
|
|
39
|
+
when no record is open. Brief record statuses have no `blocked` value: keep the
|
|
40
|
+
record `**Status:** in_progress` with the `**Blocker:**` line, or close it
|
|
41
|
+
`failed` when the attempt is abandoned. Option 3 edits the brief's phases under
|
|
42
|
+
the `plan-and-resume.md` Step 2.2 rules.
|
|
43
|
+
|
|
38
44
|
### Step 11: Prepare Final Closeout Baseline
|
|
39
45
|
|
|
40
46
|
When all plan tasks are complete (i.e., there is no next incomplete `pNN-tNN` task):
|
|
41
47
|
|
|
48
|
+
In brief modes this step starts only when every phase-unit in the active scope
|
|
49
|
+
is accepted (`**Status:** completed` under its journal heading), no phase is
|
|
50
|
+
provisional, and no execution record is open. Closed records alone never start
|
|
51
|
+
it, and extracted units are outside the active scope.
|
|
52
|
+
|
|
42
53
|
**Update "Final Summary" (required):**
|
|
43
54
|
|
|
44
55
|
- Before requesting final review / running `oat-project-pr-final`, update the `## Final Summary (for PR/docs)` section in `"$PROJECT_PATH/implementation.md"`:
|
|
@@ -47,6 +58,15 @@ When all plan tasks are complete (i.e., there is no next incomplete `pNN-tNN` ta
|
|
|
47
58
|
- Verification performed (tests/lint/typecheck/build/manual)
|
|
48
59
|
- Design deltas (if any)
|
|
49
60
|
- This should reflect **what was actually implemented**, including any deviations from design and any review-fix work.
|
|
61
|
+
- **Brief modes: completion is audited against the brief's Outcomes.** Add an
|
|
62
|
+
`**Outcomes audit:**` block to the Final Summary with one line per numbered
|
|
63
|
+
Outcome naming its observed evidence (accepted phase, commit, or
|
|
64
|
+
verification result from the journal) or the explicit scope decision that
|
|
65
|
+
defers it. An Outcome with neither blocks closeout until it is resolved or
|
|
66
|
+
the user records the deferral. Report `Brief deltas` (the journal template's
|
|
67
|
+
heading) instead of design deltas, and fill the brief's
|
|
68
|
+
`## Implementation Complete` section with one line per accepted phase and the
|
|
69
|
+
phase total.
|
|
50
70
|
- Reconcile `"$PROJECT_PATH/state.md"`, `"$PROJECT_PATH/implementation.md"`,
|
|
51
71
|
and `"$PROJECT_PATH/plan.md"` so task totals, phase statuses, current-task
|
|
52
72
|
pointers, the final summary, and test results describe the same terminal
|
|
@@ -99,6 +119,10 @@ Implementation - Tasks complete; awaiting final review.
|
|
|
99
119
|
- ⧗ Awaiting final review
|
|
100
120
|
```
|
|
101
121
|
|
|
122
|
+
In brief modes the progress list names the brief and its phase-units instead of
|
|
123
|
+
the discovery, specification, design, and plan lines: `✓ Brief approved`,
|
|
124
|
+
`✓ All phase-units accepted`, `⧗ Awaiting final review`.
|
|
125
|
+
|
|
102
126
|
**Baseline bookkeeping commit (required):**
|
|
103
127
|
|
|
104
128
|
**DO NOT SKIP.** This commit prevents state drift across sessions.
|
|
@@ -150,6 +174,11 @@ An accepted reviewer `BLOCKED` terminal blocks final review. It does not invoke
|
|
|
150
174
|
fallback and must not be interpreted as a pass due to absent findings. Stop and
|
|
151
175
|
surface the review target and blocker reason.
|
|
152
176
|
|
|
177
|
+
In brief modes the `final` scope is every accepted non-extracted phase,
|
|
178
|
+
revision phases included, resolved from the recorded `**Base:**` and
|
|
179
|
+
`**Head:**` anchors in document order (brief contract section 10). Invalid or
|
|
180
|
+
contradictory anchors stop at `oat-project-reconcile` rather than narrowing.
|
|
181
|
+
|
|
153
182
|
Before requesting final review, ensure the latest project-artifact bookkeeping is already committed. Review should evaluate the implementation state as it actually stands on the branch, not a half-tracked working tree.
|
|
154
183
|
|
|
155
184
|
Check if final review already completed (preferred source of truth: plan.md Reviews table):
|
|
@@ -910,6 +939,14 @@ phase) or when it explicitly contains that final phase ID. Defer only a
|
|
|
910
939
|
checkpoint on the final implementation phase; non-final checkpoint behavior
|
|
911
940
|
remains unchanged.
|
|
912
941
|
|
|
942
|
+
Brief modes take this non-lite path. Their `[]` means none
|
|
943
|
+
(`plan-and-resume.md` Step 2.5), so a final HiLL checkpoint exists for a brief
|
|
944
|
+
only when `oat_plan_hill_phases` explicitly lists the final phase, which is the
|
|
945
|
+
last phase-unit in document order. The generic sequence normalization, the
|
|
946
|
+
autonomous lifecycle-tail default, the project recap, and the non-lite algorithm
|
|
947
|
+
below then apply unchanged; with no final checkpoint, item 5 of that algorithm
|
|
948
|
+
governs. In v1 the `pr` step keeps its target, `oat-project-pr-final`.
|
|
949
|
+
|
|
913
950
|
Run final verification (Step 12). Final review must be `passed` and the
|
|
914
951
|
configured implementation exit gate in Step 14 must be allowed before any
|
|
915
952
|
pre-approval dispatch. If final checkpoint auto-review is enabled, Step 8 has
|
|
@@ -1291,3 +1328,6 @@ Final review:
|
|
|
1291
1328
|
|
|
1292
1329
|
Next: Create PR or run the oat-project-pr-final skill (when available)
|
|
1293
1330
|
```
|
|
1331
|
+
|
|
1332
|
+
In brief modes report `Phases: {N} accepted` and `Execution records: {N}
|
|
1333
|
+
closed` instead of the task count, and include the Outcomes audit result.
|