@open-agent-toolkit/cli 0.3.13 → 0.3.15
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/README.md +1 -1
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/contributing/index.md +14 -1
- package/assets/docs/contributing/markdown-features.md +38 -0
- package/assets/docs/contributing/skills.md +64 -2
- package/assets/docs/contributing/smoke-testing.md +23 -16
- package/assets/docs/contributing/updating-model-guidance.md +2 -2
- package/assets/docs/contributing/verifying-cursor-pins.md +1 -1
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +32 -0
- package/assets/docs/docs-tooling/agent-instructions.md +131 -0
- package/assets/docs/docs-tooling/index.md +1 -0
- package/assets/docs/docs-tooling/meta.json +1 -1
- package/assets/docs/docs-tooling/workflows.md +338 -2
- package/assets/docs/{cli-utilities → getting-started}/bootstrap.md +60 -5
- package/assets/docs/getting-started/concepts.md +120 -0
- package/assets/docs/getting-started/index.md +68 -0
- package/assets/docs/getting-started/meta.json +4 -0
- package/assets/docs/getting-started/quickstart.md +174 -0
- package/assets/docs/{cli-utilities → getting-started}/tool-packs.md +142 -14
- package/assets/docs/index.md +47 -48
- package/assets/docs/meta.json +6 -7
- package/assets/docs/provider-sync/commands.md +25 -2
- package/assets/docs/provider-sync/config.md +60 -1
- package/assets/docs/provider-sync/index.md +31 -15
- package/assets/docs/provider-sync/instruction-sync.md +32 -1
- package/assets/docs/provider-sync/manifest-and-drift.md +92 -0
- package/assets/docs/provider-sync/meta.json +1 -0
- package/assets/docs/provider-sync/pilot-with-a-team.md +236 -0
- package/assets/docs/provider-sync/scope-and-surface.md +37 -3
- package/assets/docs/reference/cli-reference.md +33 -33
- package/assets/docs/{cli-utilities → reference}/config-and-local-state.md +25 -9
- package/assets/docs/{cli-utilities → reference}/configuration.md +151 -34
- package/assets/docs/reference/file-locations.md +4 -1
- package/assets/docs/reference/index.md +13 -1
- package/assets/docs/reference/meta.json +7 -1
- package/assets/docs/reference/oat-directory-structure.md +1 -1
- package/assets/docs/{workflows/projects/artifacts.md → reference/project-artifacts.md} +4 -4
- package/assets/docs/{workflows/projects/state-machine.md → reference/project-state-machine.md} +28 -21
- package/assets/docs/{workflows/projects/repo-analysis.md → reference/repository-pr-comments.md} +2 -2
- package/assets/docs/reference/troubleshooting.md +125 -10
- package/assets/docs/reference/what-oat-writes.md +410 -0
- package/assets/docs/skills/brainstorm.md +77 -0
- package/assets/docs/skills/diagnostics.md +56 -0
- package/assets/docs/{workflows/skills → skills}/explainer-kit.md +121 -0
- package/assets/docs/skills/index.md +416 -0
- package/assets/docs/{workflows/skills → skills}/meta.json +4 -2
- package/assets/docs/{workflows/skills → skills}/recon.md +49 -0
- package/assets/docs/skills/repo-improve.md +254 -0
- package/assets/docs/skills/research.md +237 -0
- package/assets/docs/skills/session-closeout.md +61 -0
- package/assets/docs/workflows/advanced/autonomy.md +344 -0
- package/assets/docs/workflows/{projects → advanced}/cursor-cloud.md +69 -1
- package/assets/docs/workflows/{projects → advanced}/dispatch-ceiling.md +163 -18
- package/assets/docs/workflows/{projects → advanced}/evidence-layers.md +20 -13
- package/assets/docs/workflows/advanced/index.md +19 -0
- package/assets/docs/workflows/advanced/meta.json +13 -0
- package/assets/docs/workflows/{projects → advanced}/orchestration-model.md +108 -35
- package/assets/docs/workflows/{projects → advanced}/programmatic-execution.md +4 -4
- package/assets/docs/{cli-utilities → workflows/advanced}/workflow-gates.md +162 -8
- package/assets/docs/workflows/advanced/worktree-bootstrap.md +83 -0
- package/assets/docs/workflows/approvals-and-automation.md +261 -0
- package/assets/docs/workflows/backlog-and-planning/backlog-lifecycle.md +348 -0
- package/assets/docs/workflows/backlog-and-planning/index.md +13 -0
- package/assets/docs/workflows/backlog-and-planning/meta.json +4 -0
- package/assets/docs/workflows/backlog-and-planning/remote-project-management.md +303 -0
- package/assets/docs/workflows/choose-workflow.md +114 -0
- package/assets/docs/workflows/ideas/index.md +3 -3
- package/assets/docs/workflows/ideas/lifecycle.md +225 -1
- package/assets/docs/workflows/index.md +11 -62
- package/assets/docs/workflows/meta.json +10 -2
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +538 -0
- package/assets/docs/workflows/projects/closeout/index.md +14 -0
- package/assets/docs/workflows/projects/closeout/meta.json +4 -0
- package/assets/docs/workflows/projects/{pr-flow.md → closeout/pr-flow.md} +1 -1
- package/assets/docs/workflows/projects/{retro.md → closeout/retro.md} +1 -1
- package/assets/docs/workflows/projects/execution/execution-skills.md +258 -0
- package/assets/docs/workflows/projects/{implementation-execution.md → execution/implementation-execution.md} +52 -38
- package/assets/docs/workflows/projects/execution/index.md +15 -0
- package/assets/docs/workflows/projects/execution/meta.json +9 -0
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +376 -0
- package/assets/docs/{cli-utilities → workflows/projects/execution}/project-log.md +1 -1
- package/assets/docs/workflows/projects/index.md +38 -49
- package/assets/docs/workflows/projects/lifecycle.md +159 -74
- package/assets/docs/workflows/projects/meta.json +2 -23
- package/assets/docs/workflows/projects/{design-modes.md → planning/design-modes.md} +29 -0
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +167 -0
- package/assets/docs/workflows/projects/planning/index.md +16 -0
- package/assets/docs/workflows/projects/planning/meta.json +10 -0
- package/assets/docs/workflows/projects/planning/planning-skills.md +381 -0
- package/assets/docs/workflows/projects/{splitting.md → planning/splitting.md} +3 -3
- package/assets/docs/workflows/projects/planning/starting-projects.md +511 -0
- package/assets/docs/workflows/projects/{reviews.md → reviews/index.md} +51 -5
- package/assets/docs/workflows/projects/reviews/meta.json +4 -0
- package/assets/docs/workflows/projects/reviews/review-flavors.md +650 -0
- package/assets/docs/workflows/projects/{reviewing-oat-prs.md → reviews/reviewing-oat-prs.md} +3 -3
- package/assets/docs/workflows/waves/index.md +12 -0
- package/assets/docs/workflows/waves/meta.json +4 -0
- package/assets/docs/workflows/waves/wave-workflows.md +206 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-docs/SKILL.md +19 -19
- package/assets/skills/oat-docs-analyze/SKILL.md +1 -1
- package/assets/skills/oat-docs-apply/SKILL.md +1 -1
- package/assets/skills/oat-docs-authoring/SKILL.md +1 -1
- package/assets/skills/oat-docs-bootstrap/SKILL.md +1 -1
- package/assets/skills/oat-doctor/SKILL.md +25 -25
- package/assets/templates/docs-app-fuma/app/[[...slug]]/page.tsx +14 -2
- package/assets/templates/docs-app-fuma/app/globals.css +1 -0
- package/dist/release/public-package-contract.js +1 -1
- package/package.json +2 -2
- package/assets/docs/cli-utilities/backlog-lifecycle.md +0 -80
- package/assets/docs/cli-utilities/index.md +0 -74
- package/assets/docs/cli-utilities/meta.json +0 -13
- package/assets/docs/cli-utilities/remote-project-management.md +0 -191
- package/assets/docs/guide/concepts.md +0 -88
- package/assets/docs/guide/index.md +0 -31
- package/assets/docs/guide/meta.json +0 -4
- package/assets/docs/quickstart.md +0 -88
- package/assets/docs/workflows/projects/autonomy.md +0 -196
- package/assets/docs/workflows/projects/hill-checkpoints.md +0 -93
- package/assets/docs/workflows/projects/picking-up-projects.md +0 -124
- package/assets/docs/workflows/projects/review-flavors.md +0 -138
- package/assets/docs/workflows/skills/index.md +0 -184
- package/assets/docs/workflows/skills/repo-improve.md +0 -89
- package/assets/docs/workflows/wave-workflows.md +0 -77
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Autonomous Project Execution
|
|
3
|
-
description: 'Session-scoped autonomy signals, gate boundaries, review requirements, and execution-learnings behavior for OAT projects.'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Autonomous Project Execution
|
|
7
|
-
|
|
8
|
-
OAT autonomy is an explicit session policy for driving a project through its
|
|
9
|
-
lifecycle without waiting at ordinary interactive gates. It does not bypass the
|
|
10
|
-
gate-owning skills: each skill still applies its own checks, records provenance,
|
|
11
|
-
and either resolves the gate or reports a boundary.
|
|
12
|
-
|
|
13
|
-
The provider-agnostic entry point is `oat-project-autonomous`. Invoke it
|
|
14
|
-
deliberately with a goal, project slug, ticket reference, or active project. A
|
|
15
|
-
restart does not silently resume autonomy; invoke the skill again and it resumes
|
|
16
|
-
from the persisted project state.
|
|
17
|
-
|
|
18
|
-
## Activation contract
|
|
19
|
-
|
|
20
|
-
An autonomous session uses both signals:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
export OAT_AUTONOMOUS=1
|
|
24
|
-
export OAT_NON_INTERACTIVE=1
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
`OAT_AUTONOMOUS=1` implies and sets `OAT_NON_INTERACTIVE=1` for the current
|
|
28
|
-
run. The distinction is intentional:
|
|
29
|
-
|
|
30
|
-
- `OAT_NON_INTERACTIVE=1` selects existing safe no-prompt paths for one
|
|
31
|
-
workflow.
|
|
32
|
-
- `OAT_AUTONOMOUS=1` additionally enables lifecycle chaining, defined gate
|
|
33
|
-
resolutions, boundary stops, and provenance requirements.
|
|
34
|
-
|
|
35
|
-
Both signals are session-scoped. Never write them to `state.md`, `plan.md`,
|
|
36
|
-
repository config, user config, or any other durable artifact. A later
|
|
37
|
-
interactive session therefore needs no autonomy cleanup and behaves
|
|
38
|
-
interactively around the state the autonomous run left behind.
|
|
39
|
-
|
|
40
|
-
## Gate outcomes
|
|
41
|
-
|
|
42
|
-
Every interactive lifecycle gate has one of two autonomous outcomes:
|
|
43
|
-
|
|
44
|
-
1. **Auto-resolve** using an existing safe path, then record the decision and
|
|
45
|
-
evidence.
|
|
46
|
-
2. **Boundary stop** with a structured blocker and a resumable next step.
|
|
47
|
-
|
|
48
|
-
The main boundary classes are:
|
|
49
|
-
|
|
50
|
-
- **Product judgment** — repository evidence cannot resolve material scope or
|
|
51
|
-
requirements ambiguity.
|
|
52
|
-
- **Destructive-change risk** — an action could discard work, delete data,
|
|
53
|
-
rewrite history, or broadly restructure an unapproved surface.
|
|
54
|
-
- **Unresolved Critical findings** — a blocking review has not passed.
|
|
55
|
-
- **Repository-policy approval** — protected operations require authority the
|
|
56
|
-
session does not have.
|
|
57
|
-
- **Missing credentials** — a required external action has no authenticated
|
|
58
|
-
route or offline equivalent.
|
|
59
|
-
|
|
60
|
-
A boundary is a successful fail-closed outcome, not permission to continue with
|
|
61
|
-
a guessed answer. The run reports what stopped, the evidence, and the operator
|
|
62
|
-
action needed to resume.
|
|
63
|
-
|
|
64
|
-
The canonical autonomy contract and exhaustive gate inventory
|
|
65
|
-
(`.agents/docs/autonomy-contract.md`, vendored into each consuming skill at
|
|
66
|
-
`references/docs/autonomy-contract.md`) map each prompt to its autonomous
|
|
67
|
-
resolution and provenance.
|
|
68
|
-
|
|
69
|
-
### Dispatch-ladder scope selection
|
|
70
|
-
|
|
71
|
-
An incomplete reusable dispatch ladder is auto-resolvable when an authorized
|
|
72
|
-
adoption-compatible config scope is available. Autonomous planning checks
|
|
73
|
-
config-file existence in this fixed order without prompting or reordering from
|
|
74
|
-
effective value or matrix-cell provenance:
|
|
75
|
-
|
|
76
|
-
1. user config (`~/.oat/config.json`);
|
|
77
|
-
2. repo-local config (`.oat/config.local.json`);
|
|
78
|
-
3. shared config (`.oat/config.json`), only when repository policy already
|
|
79
|
-
authorizes that write.
|
|
80
|
-
|
|
81
|
-
Before writing, planning rejects a candidate that would preserve a
|
|
82
|
-
provider-level scalar in that scope or remain shadowed by one at higher
|
|
83
|
-
precedence. It always tries the next authorized compatible candidate and stops
|
|
84
|
-
without mutation only when none remains.
|
|
85
|
-
|
|
86
|
-
The planner runs exactly one matching `oat config adopt dispatch-matrix --keep-existing`
|
|
87
|
-
command, records file-existence and compatibility evidence plus the selected
|
|
88
|
-
scope, and re-runs dispatch preflight. Existing explicit cells remain unchanged;
|
|
89
|
-
their provenance does not select the persistence scope. No authorized
|
|
90
|
-
compatible scope, or a ladder that remains incomplete after adoption, is still
|
|
91
|
-
a repository-policy boundary. `OAT_NON_INTERACTIVE=1` without
|
|
92
|
-
`OAT_AUTONOMOUS=1` does not select a scope and continues to fail closed.
|
|
93
|
-
|
|
94
|
-
## Review contract
|
|
95
|
-
|
|
96
|
-
Autonomous execution preserves independent review:
|
|
97
|
-
|
|
98
|
-
- Discovery, design, and plan artifacts run their configured exit gates.
|
|
99
|
-
Quick-start reviews the discovery, optional lightweight design, and plan as
|
|
100
|
-
one bundle when those artifacts exist.
|
|
101
|
-
- Review routing is selected before launch through the dispatch substrate.
|
|
102
|
-
A configured gate target is preferred when available; otherwise policy may
|
|
103
|
-
choose a target-preserving subagent route. Any reduced independence is
|
|
104
|
-
explicit in the dispatch record.
|
|
105
|
-
- Once a launch is accepted, it is terminal for route selection. Failures use
|
|
106
|
-
bounded recovery with the same payload; they do not silently fall through to
|
|
107
|
-
a cheaper or less independent reviewer.
|
|
108
|
-
- Eligible review artifacts are received immediately. Fix tasks use the normal
|
|
109
|
-
bounded implement-and-re-review loop.
|
|
110
|
-
- Critical findings and failed blocking reviews stop progression. High
|
|
111
|
-
findings follow the configured gate policy.
|
|
112
|
-
- A normal phase or final lifecycle review cannot satisfy a configured
|
|
113
|
-
implementation exit gate. Only gate invocation provenance with the matching
|
|
114
|
-
run ID can authorize that boundary.
|
|
115
|
-
|
|
116
|
-
Project review artifacts and review rows reference launcher-owned dispatch
|
|
117
|
-
records. The configured invocation is authoritative evidence; child
|
|
118
|
-
self-reporting is optional corroboration. See [Evidence
|
|
119
|
-
Layers](evidence-layers.md) and [Reviews](reviews.md).
|
|
120
|
-
|
|
121
|
-
## HiLL and lifecycle closeout
|
|
122
|
-
|
|
123
|
-
If checkpoint selection is unconfirmed when autonomy starts implementation,
|
|
124
|
-
OAT takes the existing `workflow.hillCheckpointDefault: final` path explicitly:
|
|
125
|
-
|
|
126
|
-
```yaml
|
|
127
|
-
oat_plan_hill_phases: ['<final-phase-id>']
|
|
128
|
-
oat_auto_review_at_hill_checkpoints: true
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
An existing valid explicit list is preserved. An existing `[]` is also
|
|
132
|
-
preserved and means every phase, never no phases. At each configured checkpoint,
|
|
133
|
-
autonomy runs and receives the review without waiting.
|
|
134
|
-
|
|
135
|
-
At final closeout, autonomy follows the same authoritative order as an
|
|
136
|
-
interactive run: final verification, mandatory final lifecycle review,
|
|
137
|
-
configured implementation exit gate, pre-approval sequence, final HiLL
|
|
138
|
-
approval, post-approval sequence, then implementation completion and success
|
|
139
|
-
output. A `not_configured` resolution persists an explicit no-gate allowance
|
|
140
|
-
before the sequence starts; a null, missing, or unrecognized resolver result
|
|
141
|
-
fails closed as unresolved. A gate this project disabled persists an
|
|
142
|
-
`allowed/configured` result with `disposition: project_disabled` and never
|
|
143
|
-
launches the configured command.
|
|
144
|
-
|
|
145
|
-
Autonomy does not turn an ordinary independent review into configured-gate
|
|
146
|
-
provenance. A configured review must produce a gate-originated artifact with
|
|
147
|
-
the matching run ID, and eligible receive must be durably reconciled. Blocked,
|
|
148
|
-
ambiguous, malformed, or stale gate state is a boundary stop: the run remains
|
|
149
|
-
resumable through `oat-project-implement` and cannot continue to approval,
|
|
150
|
-
completion, or output.
|
|
151
|
-
|
|
152
|
-
The default autonomous tail is summary, documentation, and final PR when no
|
|
153
|
-
post-implementation sequence is configured; stored legacy or structured
|
|
154
|
-
sequences retain their documented meaning.
|
|
155
|
-
|
|
156
|
-
## Execution-learnings loop
|
|
157
|
-
|
|
158
|
-
Autonomous runs keep an append-only project-local
|
|
159
|
-
`oat-execution-learnings.md`. Dated entries record an observation, impact, and
|
|
160
|
-
recommendation under the source taxonomy: `gotcha`, `efficiency`,
|
|
161
|
-
`documentation-gap`, `candidate-skill-content`, `decision`, or
|
|
162
|
-
`environment-limited`.
|
|
163
|
-
|
|
164
|
-
When the file exists, `oat-project-summary` synthesizes actionable
|
|
165
|
-
recommendations into `## Autonomous Execution Learnings`, grouped as:
|
|
166
|
-
|
|
167
|
-
- agent-instruction updates;
|
|
168
|
-
- cloud-environment improvements;
|
|
169
|
-
- code follow-ups;
|
|
170
|
-
- workflow issues.
|
|
171
|
-
|
|
172
|
-
Each recommendation links back to its source entry. Projects without the
|
|
173
|
-
learnings file render normal summaries with no autonomous-learnings section.
|
|
174
|
-
The summary export keeps the synthesized recommendations after project
|
|
175
|
-
archival.
|
|
176
|
-
|
|
177
|
-
## Taking over interactively
|
|
178
|
-
|
|
179
|
-
After an autonomous session ends:
|
|
180
|
-
|
|
181
|
-
1. Start a normal session without the autonomy environment signals.
|
|
182
|
-
2. Open the same project from its repository-local `.oat` directory.
|
|
183
|
-
3. Resume the owning lifecycle skill.
|
|
184
|
-
|
|
185
|
-
Persisted review rows, task state, explicit HiLL checkpoints, and dispatch
|
|
186
|
-
provenance remain valid. Interactive prompts and checkpoint pauses return
|
|
187
|
-
normally because autonomy itself was never persisted.
|
|
188
|
-
|
|
189
|
-
## Related
|
|
190
|
-
|
|
191
|
-
- [HiLL Checkpoints](hill-checkpoints.md) — checkpoint field semantics and
|
|
192
|
-
interactive behavior.
|
|
193
|
-
- [Implementation Execution](implementation-execution.md) — phase execution,
|
|
194
|
-
review, fixes, and closeout.
|
|
195
|
-
- [Cursor Cloud](cursor-cloud.md) — project-home and environment-readiness
|
|
196
|
-
guidance for cloud runs.
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Human-in-the-Loop Lifecycle (HiLL) Checkpoints
|
|
3
|
-
description: 'Checkpoint configuration and behavior for pauseable, human-in-the-loop lifecycle execution.'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Human-in-the-Loop Lifecycle (HiLL) Checkpoints
|
|
7
|
-
|
|
8
|
-
OAT supports two checkpoint classes:
|
|
9
|
-
|
|
10
|
-
- Workflow phase checkpoints
|
|
11
|
-
- Plan phase checkpoints
|
|
12
|
-
|
|
13
|
-
The [Phase gate review](reviews.md#phase-review-gate) (`oat_phase_review_gate`) is a separate, non-pausing mechanism — it does not pause on a passing gate and never modifies the HiLL keys below (`oat_hill_completed`, `oat_plan_hill_phases`).
|
|
14
|
-
|
|
15
|
-
## Workflow checkpoints (`state.md`)
|
|
16
|
-
|
|
17
|
-
Frontmatter keys:
|
|
18
|
-
|
|
19
|
-
- `oat_hill_checkpoints`
|
|
20
|
-
- `oat_hill_completed`
|
|
21
|
-
|
|
22
|
-
Example:
|
|
23
|
-
|
|
24
|
-
```yaml
|
|
25
|
-
oat_hill_checkpoints: ['discovery', 'spec', 'design']
|
|
26
|
-
oat_hill_completed: ['discovery']
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Plan phase checkpoints (`plan.md`)
|
|
30
|
-
|
|
31
|
-
Frontmatter key written after implementation confirmation:
|
|
32
|
-
|
|
33
|
-
- `oat_plan_hill_phases`
|
|
34
|
-
|
|
35
|
-
Semantics:
|
|
36
|
-
|
|
37
|
-
- Field absent: valid before the first `oat-project-implement` run confirms checkpoint selection. Planning may intentionally leave the field unset until that first execution starts.
|
|
38
|
-
- Empty list: checkpoint after every phase boundary, but only after implementation has confirmed the choice and written `oat_plan_hill_phases: []` into `plan.md`.
|
|
39
|
-
- Explicit list: checkpoint only after completing the named phases (`p01`, `p04`, etc).
|
|
40
|
-
|
|
41
|
-
### Lite checkpoint bypass
|
|
42
|
-
|
|
43
|
-
Lite projects have no HiLL checkpoints. `oat-project-implement` resolves
|
|
44
|
-
`oat_workflow_mode` from project state before any checkpoint field read, and
|
|
45
|
-
when the mode is `lite` it resolves checkpoint state as `none` without reading
|
|
46
|
-
or interpreting `oat_plan_hill_phases`. An empty list cannot represent lite's
|
|
47
|
-
policy, because for every other mode an empty list means "checkpoint after every
|
|
48
|
-
phase". `oat-project-implement`'s Lite checkpoint bypass writes:
|
|
49
|
-
|
|
50
|
-
```yaml
|
|
51
|
-
oat_auto_review_at_hill_checkpoints: false # lite: no checkpoints
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
The workflow preference prompt, the standard checkpoint prompt, and the
|
|
55
|
-
auto-review preference prompt are all skipped in both interactive and autonomous
|
|
56
|
-
runs. Only HiLL approval pauses are absent — the root-owned per-phase review and
|
|
57
|
-
the final review remain required.
|
|
58
|
-
|
|
59
|
-
The rest of this section applies to `spec-driven`, `quick`, and `import`
|
|
60
|
-
projects.
|
|
61
|
-
|
|
62
|
-
On the first implementation run, `oat-project-implement` must summarize every plan phase, state the total phase count and final phase ID, and then ask an explicit three-option checkpoint question:
|
|
63
|
-
|
|
64
|
-
- Stop after each phase
|
|
65
|
-
- Stop after specific phases
|
|
66
|
-
- Stop only after the final phase is completed
|
|
67
|
-
|
|
68
|
-
It then writes the confirmed value into `plan.md`. If the field is later missing during a resumed implementation run, treat that as bookkeeping drift rather than as an implicit default.
|
|
69
|
-
|
|
70
|
-
Listed phases are where you stop **after completing them**, not before. `["p03"]` means "complete p03, then pause" — not "pause before starting p03." Setting the last phase ID (e.g., `["p03"]` when p03 is final) means "stop only at the end of implementation."
|
|
71
|
-
|
|
72
|
-
### Setting a default via `workflow.hillCheckpointDefault`
|
|
73
|
-
|
|
74
|
-
The first-run checkpoint prompt can be skipped entirely by setting the `workflow.hillCheckpointDefault` preference:
|
|
75
|
-
|
|
76
|
-
- `every` — automatically write `oat_plan_hill_phases: []` (pause after every phase) without prompting
|
|
77
|
-
- `final` — automatically write `oat_plan_hill_phases: ["<final-phase-id>"]` (pause only at the end) without prompting
|
|
78
|
-
|
|
79
|
-
When set, `oat-project-implement` reads the preference before the prompt and prints `HiLL checkpoints: <every|final> (from workflow.hillCheckpointDefault)`, skipping the interactive choice. When unset (default), the skill prompts as before.
|
|
80
|
-
|
|
81
|
-
This is a personal preference — typically set at user scope so it applies to every repo:
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
oat config set workflow.hillCheckpointDefault final --user
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
See [Workflow preferences in the Configuration guide](../../cli-utilities/configuration.md#workflow-preferences-workflow) for the full list of preference keys and surface guidance.
|
|
88
|
-
|
|
89
|
-
## Reference artifacts
|
|
90
|
-
|
|
91
|
-
- `.oat/templates/plan.md`
|
|
92
|
-
- `.oat/projects/<scope>/<project>/plan.md`
|
|
93
|
-
- `.oat/projects/<scope>/<project>/state.md`
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Picking Up Projects
|
|
3
|
-
description: Continue a synced OAT project on another machine or from another user through its dedicated Git ref.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Picking Up a Project on Another Machine or From Another User
|
|
7
|
-
|
|
8
|
-
Synced projects travel through ordinary Git refs on `origin`. Their artifact
|
|
9
|
-
history is independent from the implementation branch, so a teammate or a
|
|
10
|
-
second machine can continue the project even before the branch carrying its
|
|
11
|
-
record file merges.
|
|
12
|
-
|
|
13
|
-
## Discover and adopt
|
|
14
|
-
|
|
15
|
-
From any checkout with access to `origin`:
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
oat project list --remote
|
|
19
|
-
oat project pull <project>
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
`list --remote` discovers `refs/oat/projects/*` directly. `pull` can adopt a
|
|
23
|
-
remote project that has no local record yet: it writes the record and creates
|
|
24
|
-
the nested checkout. When the selected project is a coordination parent, pull
|
|
25
|
-
also discovers and pulls its child projects by default. Pass `--no-children`
|
|
26
|
-
only when you intentionally want the selected project alone.
|
|
27
|
-
|
|
28
|
-
Completed projects are not adoption candidates. Their authoritative ref is
|
|
29
|
-
`refs/oat/completed/<project>`; both `pull` and `open` return a terminal
|
|
30
|
-
diagnosis instead of recreating an archived checkout or record. A same-SHA
|
|
31
|
-
active ref may remain as an inert alias and is ignored. Differing active and
|
|
32
|
-
completed SHAs require repair before lifecycle work continues. The same guard
|
|
33
|
-
applies to coordination children: a terminal child discovered while pulling
|
|
34
|
-
its parent is reported and skipped rather than adopted.
|
|
35
|
-
|
|
36
|
-
After adoption, set or open the project through the normal lifecycle command
|
|
37
|
-
you are using. Arrival-aware project skills pull before reading its artifacts.
|
|
38
|
-
|
|
39
|
-
An adopted quick-workflow project whose `plan.md` is not implementation-ready
|
|
40
|
-
resumes through `oat-project-quick-start`, which continues it in place without
|
|
41
|
-
re-scaffolding, rather than through `oat-project-implement`. `oat-project-plan`,
|
|
42
|
-
`oat-project-progress`, and `oat-project-next` all route by the single **quick
|
|
43
|
-
plan readiness** predicate that `oat-project-quick-start` defines; readiness is
|
|
44
|
-
never inferred from the presence of tasks alone.
|
|
45
|
-
|
|
46
|
-
`oat project status` and `oat project list` apply the same predicate. For a
|
|
47
|
-
quick project at the `plan` phase they recommend `oat-project-quick-start`, with
|
|
48
|
-
the unmet clause in the reason, until the plan carries ready frontmatter, a
|
|
49
|
-
durable `## Reviews` disposition, and a substantive task; only then do they
|
|
50
|
-
recommend `oat-project-implement`. Recommendations for lite, spec-driven, and
|
|
51
|
-
import projects are unchanged, because the predicate is quick-workflow policy.
|
|
52
|
-
|
|
53
|
-
## What travels
|
|
54
|
-
|
|
55
|
-
- The project ref carries the complete active artifact tree and its history.
|
|
56
|
-
- The tracked JSON record travels once the branch containing it is shared or
|
|
57
|
-
merged.
|
|
58
|
-
- Coordination relationships travel in the artifacts and records pulled with
|
|
59
|
-
the project.
|
|
60
|
-
|
|
61
|
-
## What does not travel automatically
|
|
62
|
-
|
|
63
|
-
- `local` projects never leave their original machine.
|
|
64
|
-
- GitHub forks copy branches and tags, but not the `refs/oat/*` namespace. A
|
|
65
|
-
fork collaborator needs access to the upstream remote or an explicit ref
|
|
66
|
-
transfer.
|
|
67
|
-
- A normal `git clone` fetches branches and tags, not custom OAT refs. OAT
|
|
68
|
-
handles remote discovery with `ls-remote` and explicitly fetches the selected
|
|
69
|
-
project ref during sync operations such as `pull`; do not expect a generic
|
|
70
|
-
clone or `git fetch` to materialize the checkout.
|
|
71
|
-
|
|
72
|
-
## Why completed refs remain durable
|
|
73
|
-
|
|
74
|
-
`refs/oat/completed/<project>` is a real Git ref locally and on `origin`. The
|
|
75
|
-
objects reachable from it remain garbage-collection roots even when no nested
|
|
76
|
-
checkout exists. Branch pruning, remote-tracking-ref pruning, and
|
|
77
|
-
`git worktree prune` do not delete the completed ref. Completion deliberately
|
|
78
|
-
retains this terminal reachability root so pinned PR links remain valid.
|
|
79
|
-
|
|
80
|
-
Only the explicit destructive operation `oat project prune` removes the
|
|
81
|
-
completed ref and any matching active alias. Treat that as permanent Git
|
|
82
|
-
project-history reachability deletion and review its warnings before using
|
|
83
|
-
`--force`. Prune does not remove durable local or S3 archive snapshots, and it
|
|
84
|
-
refuses to delete either ref when their SHAs differ.
|
|
85
|
-
|
|
86
|
-
## Archive contents
|
|
87
|
-
|
|
88
|
-
When archive is selected, completion copies a synced project into
|
|
89
|
-
`.oat/projects/archived/<project>/` without the nested checkout's `.git`
|
|
90
|
-
pointer or `reviews/`. S3 snapshots also omit `pr/`, following the existing
|
|
91
|
-
archive policy. When archive is disabled or declined, the active synced
|
|
92
|
-
checkout remains in place. Successful archived closeout instead uploads the S3
|
|
93
|
-
snapshot first when configured, makes the completed ref authoritative, removes
|
|
94
|
-
the checkout, and deletes the tracked JSON record. The local archive metadata
|
|
95
|
-
retains the source-ref identity needed for recordless retries and later S3
|
|
96
|
-
restore without recreating active state.
|
|
97
|
-
|
|
98
|
-
If closeout is interrupted after terminal archive identity exists, rerun
|
|
99
|
-
completion so it can resume from the completed ref and archive metadata. Do not
|
|
100
|
-
use `pull` or `open` to recreate an active record or checkout.
|
|
101
|
-
|
|
102
|
-
For a `shared` project, archive moves the project into
|
|
103
|
-
`.oat/projects/archived/<project>/` and removes the source directory, while
|
|
104
|
-
completion keeps the `activeProject` pointer until the receipt validates.
|
|
105
|
-
Rerunning completion after an interruption between the archive and that clear
|
|
106
|
-
recognizes exactly this state — the pointer names a source directory that no
|
|
107
|
-
longer exists and the archive carries `oat_lifecycle: complete` plus the
|
|
108
|
-
`Lifecycle complete; archived locally` phase marker — so it validates the
|
|
109
|
-
discovered archive and clears the pointer without archiving a second time or
|
|
110
|
-
sealing the project log again. An interruption before the archive leaves the
|
|
111
|
-
source directory in place, so completion simply reruns from the start and skips
|
|
112
|
-
the work it already finished.
|
|
113
|
-
|
|
114
|
-
If the archive cannot be discovered — the source directory is gone and either
|
|
115
|
-
no archived project or several match the name — completion stops and leaves the
|
|
116
|
-
pointer untouched. Recover manually: locate the archive directory under
|
|
117
|
-
`.oat/projects/archived/`, confirm `oat_lifecycle: complete` in its `state.md`,
|
|
118
|
-
then clear the pointer with `oat config set activeProject ""`.
|
|
119
|
-
|
|
120
|
-
## Related
|
|
121
|
-
|
|
122
|
-
- [Reviewing OAT PRs](reviewing-oat-prs.md)
|
|
123
|
-
- [Project Artifacts](artifacts.md)
|
|
124
|
-
- [Implementation Execution](implementation-execution.md#synced-projects-in-worktrees)
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Review Flavors
|
|
3
|
-
description: 'The four OAT project review flavors, when each fires in the lifecycle, and who resolves its reviewer target.'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Review Flavors
|
|
7
|
-
|
|
8
|
-
OAT projects run reviews at several different lifecycle points, and those points
|
|
9
|
-
have different independence requirements. A self-review that checks a freshly
|
|
10
|
-
written plan does not need the same producer isolation as a lifecycle gate that
|
|
11
|
-
signs off on the final artifact. Rather than force one reviewer-selection rule
|
|
12
|
-
onto every point, OAT recognizes **four review flavors**, each with its own
|
|
13
|
-
target-resolution policy layered on the shared reviewer role class.
|
|
14
|
-
|
|
15
|
-
The distinguishing question is always _"who resolves this review's target, and
|
|
16
|
-
how independent must that target be from whatever produced the work?"_ The four
|
|
17
|
-
flavors answer it differently while preserving one invariant: the reviewer runs
|
|
18
|
-
**at or above the ceiling** (see [Dispatch Policy](dispatch-ceiling.md)). Gate
|
|
19
|
-
independence is project policy layered on the generic reviewer role class
|
|
20
|
-
described in the `oat-project-dispatch-subagents` lifecycle-role table; this page
|
|
21
|
-
covers _which_ flavor fires _when_ and _who_ resolves its target, and links out
|
|
22
|
-
for the deep review request/receive mechanics.
|
|
23
|
-
|
|
24
|
-
## Quick Look
|
|
25
|
-
|
|
26
|
-
- What it does: names the four review flavors and states who resolves each
|
|
27
|
-
one's reviewer target.
|
|
28
|
-
- When to use it: when you need to know which review fires at a lifecycle point
|
|
29
|
-
and whether it inherits, pins the ceiling, or requires an independent gate.
|
|
30
|
-
- Primary sources: `oat-project-implement` phase-execution mechanics, the
|
|
31
|
-
`oat-project-dispatch-subagents` lifecycle-role table, and project design
|
|
32
|
-
Decision #11.
|
|
33
|
-
|
|
34
|
-
## Flow map
|
|
35
|
-
|
|
36
|
-
```mermaid
|
|
37
|
-
flowchart TD
|
|
38
|
-
subgraph Planning
|
|
39
|
-
PL["Planning-phase\nartifact self-review"] --> PLR["Inherit planning parent"]
|
|
40
|
-
PLR --> PLT["Parent model\n(root already at/above ceiling)"]
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
subgraph Implementation
|
|
44
|
-
IM["Root-owned phase\nself-review"] --> IMR["Resolve dispatch ceiling"]
|
|
45
|
-
IMR --> IMPIN["At-ceiling pin\n(ceiling final candidate)"]
|
|
46
|
-
IMR --> IMINH["Inherit\n(only if dispatcher known at/above ceiling)"]
|
|
47
|
-
IMR --> IMCLI["Exact CLI reviewer\n(selected pre-launch)"]
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
subgraph Gates
|
|
51
|
-
PG["Phase review gate\n(external)"] --> PGR["Configured cross-family\nexec target (gates.execTargets)"]
|
|
52
|
-
PGR --> PGT["Independent CLI/exec target\n(host-avoidance; fail closed)"]
|
|
53
|
-
|
|
54
|
-
LG["Lifecycle / final gate"] --> LGR["Cross-runtime CLI\nexec target"]
|
|
55
|
-
LGR --> LGT["Producer-independent target\n(fail closed, no self-review substitute)"]
|
|
56
|
-
LGT -. may spawn .-> LGN["Nested managed\nreviewer child inside gate"]
|
|
57
|
-
end
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
The dotted branch marks the only flavor that may **spawn a nested managed
|
|
61
|
-
reviewer child** inside the gate exec target: the lifecycle/final gate.
|
|
62
|
-
|
|
63
|
-
## The four flavors
|
|
64
|
-
|
|
65
|
-
| Flavor | Lifecycle point | Target resolution |
|
|
66
|
-
| ----------------------------------- | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
67
|
-
| Planning-phase artifact self-review | Auto artifact-review loop for plan/spec/design | Inherit the planning parent by default (root is already at/above ceiling) |
|
|
68
|
-
| Implementation-phase self-review | Phase and final code reviews dispatched by `oat-project-implement` | Resolve the dispatch ceiling; pin the ceiling's final candidate (at-ceiling pin); inherit only when the review-owning dispatcher is known to be at/above ceiling; else select an exact CLI reviewer pre-launch |
|
|
69
|
-
| Phase review gate (external) | Optional non-pausing gate after a phase passes its self-review | Independent configured cross-family CLI/exec target (`gates.execTargets`), host-avoidance, unconstrained by native catalog; fail closed if unavailable |
|
|
70
|
-
| Lifecycle / final gate | End-of-lifecycle sign-off | Cross-runtime CLI exec target, independent of producer context; fails closed rather than substituting same-context self-review; may spawn a nested managed reviewer child inside the gate exec target |
|
|
71
|
-
|
|
72
|
-
The first two flavors are **self-reviews**. Planning review inherits its
|
|
73
|
-
producing parent by default; implementation phase review is dispatched by the
|
|
74
|
-
project root after the phase producer returns. The last two are **gates** — an
|
|
75
|
-
external, configured, producer-independent target. Phase implementation may run
|
|
76
|
-
_below_ the review ceiling for cost reasons, but review must never silently
|
|
77
|
-
inherit the below-ceiling phase agent.
|
|
78
|
-
|
|
79
|
-
Pre-plan inheritance has a narrow executable guard. When dispatch resolution
|
|
80
|
-
reports `unresolvedReason: policy`, an artifact review of `discovery`, `design`,
|
|
81
|
-
or `spec` deliberately inherits the current planning context and records
|
|
82
|
-
`selection_reason: inherit (pre-plan; no project policy)`. An explicit project
|
|
83
|
-
policy is still honored at those scopes. Missing or incomplete ladders
|
|
84
|
-
(`unresolvedReason: ladder | both`) fail closed, as do plan-scope artifact
|
|
85
|
-
reviews and every code review without a resolved policy. Gate exec-target
|
|
86
|
-
selection is separate and unaffected.
|
|
87
|
-
|
|
88
|
-
## Independence and fail-closed semantics
|
|
89
|
-
|
|
90
|
-
The invariant across all four flavors is that the reviewer runs **at or above
|
|
91
|
-
the ceiling**. What changes between flavors is the required _independence from
|
|
92
|
-
the producer_, and that independence is enforced by failing closed rather than
|
|
93
|
-
silently downgrading:
|
|
94
|
-
|
|
95
|
-
- **Planning self-review** needs the least independence. The planning root
|
|
96
|
-
already runs at or above the review ceiling, so inheriting the parent model
|
|
97
|
-
satisfies the invariant without managed re-pinning. Pinning is _possible_
|
|
98
|
-
once the ceiling is resolved during planning, but it is not the default.
|
|
99
|
-
- **Implementation self-review** needs ceiling-level capability but not
|
|
100
|
-
cross-family isolation. The root resolves the dispatch ceiling and pins the
|
|
101
|
-
tier's final candidate after the phase report. Inheritance is allowed only
|
|
102
|
-
when the root dispatcher is _known_ to be at or above the ceiling; otherwise
|
|
103
|
-
an exact provider CLI reviewer is selected before launch. Reviewer selection
|
|
104
|
-
is never delegated to the phase implementer.
|
|
105
|
-
- **Phase review gate** adds cross-family independence. It uses a configured
|
|
106
|
-
independent exec target from `gates.execTargets` with host-avoidance,
|
|
107
|
-
unconstrained by the harness's native subagent catalog. If the required
|
|
108
|
-
independent target cannot be enforced, the gate **fails closed** — it does
|
|
109
|
-
not downgrade to producer-context review.
|
|
110
|
-
- **Lifecycle / final gate** requires the strongest independence: a
|
|
111
|
-
cross-runtime CLI exec target chosen independently of the producer context.
|
|
112
|
-
It fails closed rather than substituting a same-context self-review, and it is
|
|
113
|
-
the one flavor permitted to spawn a nested managed reviewer child _inside_ the
|
|
114
|
-
gate exec target when the gate's own contract calls for it.
|
|
115
|
-
|
|
116
|
-
Gate independence is not a property of the generic reviewer class; it is project
|
|
117
|
-
policy layered on top of it. The dispatch adapter resolves the configured gate
|
|
118
|
-
target before launch and passes it as exact selection input. Fail-closed
|
|
119
|
-
behavior for both gate flavors is deliberate: an unavailable independent target
|
|
120
|
-
blocks the gate instead of quietly reusing whatever produced the work. For the
|
|
121
|
-
gate configuration keys and non-pausing behavior, see
|
|
122
|
-
[Workflow gates](../../cli-utilities/workflow-gates.md) and the
|
|
123
|
-
[phase review gate](reviews.md#phase-review-gate) section of the review doc.
|
|
124
|
-
|
|
125
|
-
## Related
|
|
126
|
-
|
|
127
|
-
- [Reviews](reviews.md) — the review request/receive flows and the deep review
|
|
128
|
-
contract these flavors plug into.
|
|
129
|
-
- [Dispatch Policy](dispatch-ceiling.md) — named ceilings, at-ceiling reviewer
|
|
130
|
-
selection, and the Dispatch Report V1 / producer-provenance record.
|
|
131
|
-
- [HiLL Checkpoints](hill-checkpoints.md) — how the non-pausing phase review gate
|
|
132
|
-
relates to pauseable lifecycle checkpoints.
|
|
133
|
-
- [Orchestration Model](orchestration-model.md) — the native-first dispatch
|
|
134
|
-
topology these reviewer roles run inside.
|
|
135
|
-
- [Workflow gates](../../cli-utilities/workflow-gates.md) — gate configuration
|
|
136
|
-
and exec-target selection.
|
|
137
|
-
- [Smoke testing](../../contributing/smoke-testing.md) — how the fixture makes
|
|
138
|
-
these flavors observable and assertable.
|