@open-agent-toolkit/cli 0.1.52 → 0.1.54
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/docs/cli-utilities/tool-packs.md +23 -2
- package/assets/docs/contributing/skills.md +16 -0
- package/assets/docs/workflows/projects/implementation-execution.md +20 -0
- package/assets/docs/workflows/skills/index.md +3 -0
- package/assets/docs/workflows/skills/repo-improve.md +45 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-dispatch-subagents/SKILL.md +254 -0
- package/assets/skills/oat-dispatch-subagents/references/provider-claude.md +44 -0
- package/assets/skills/oat-dispatch-subagents/references/provider-codex.md +69 -0
- package/assets/skills/oat-dispatch-subagents/references/provider-cursor.md +61 -0
- package/assets/skills/oat-dispatch-subagents/references/record-schema.md +109 -0
- package/assets/skills/oat-pjm-add-backlog-item/SKILL.md +6 -3
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +22 -10
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +234 -0
- package/assets/skills/oat-repo-improve/SKILL.md +280 -0
- package/assets/skills/oat-repo-improve/references/audit-playbook.md +130 -0
- package/assets/skills/oat-repo-improve/references/plan-template.md +200 -0
- package/assets/skills/oat-repo-maintainability-review/SKILL.md +22 -7
- package/assets/templates/backlog-item.md +1 -0
- package/assets/templates/pjm-agents.md +8 -0
- package/assets/templates/reference-agents.md +3 -1
- package/dist/commands/init/tools/shared/skill-manifest.d.ts +2 -2
- package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.js +3 -0
- package/package.json +2 -2
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Dispatch Record Schema
|
|
2
|
+
|
|
3
|
+
Load this reference only when constructing or validating dispatch evidence.
|
|
4
|
+
Use neutral scope, action, role, and authority fields. Calling workflows may
|
|
5
|
+
add namespaced metadata without redefining these fields.
|
|
6
|
+
|
|
7
|
+
## Request
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
request_id: dispatch-unique-id
|
|
11
|
+
caller: oat-repo-improve
|
|
12
|
+
scope: repo:packages/cli
|
|
13
|
+
objective: Audit CLI correctness hotspots
|
|
14
|
+
action: analysis
|
|
15
|
+
role:
|
|
16
|
+
name: repo-audit-scout
|
|
17
|
+
class: recon
|
|
18
|
+
provider: codex
|
|
19
|
+
dispatch_context: root-native
|
|
20
|
+
dispatch_policy: economy
|
|
21
|
+
dispatch_ceiling: high
|
|
22
|
+
authority: read-only
|
|
23
|
+
expected_output: structured-findings
|
|
24
|
+
verification_evidence: file-line-references
|
|
25
|
+
deadline_seconds: 300
|
|
26
|
+
retry_limit: 1
|
|
27
|
+
authorization_scope: this-audit-run
|
|
28
|
+
selection_source: native-default
|
|
29
|
+
fallback:
|
|
30
|
+
mode: explicit-downgrade
|
|
31
|
+
target: reduced-quick-audit
|
|
32
|
+
escalate_when:
|
|
33
|
+
- evidence requires cross-package reconciliation
|
|
34
|
+
- security impact is consequential
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
`dispatch_policy` and `dispatch_ceiling` are optional resolved inputs. The
|
|
38
|
+
general engine does not resolve their source.
|
|
39
|
+
|
|
40
|
+
## Record
|
|
41
|
+
|
|
42
|
+
```yaml
|
|
43
|
+
request_id: dispatch-unique-id
|
|
44
|
+
caller: oat-repo-improve
|
|
45
|
+
scope: repo:packages/cli
|
|
46
|
+
objective: Audit CLI correctness hotspots
|
|
47
|
+
action: analysis
|
|
48
|
+
role_name: repo-audit-scout
|
|
49
|
+
role_class: recon
|
|
50
|
+
provider: codex
|
|
51
|
+
dispatch_context: root-native
|
|
52
|
+
dispatch_policy: economy
|
|
53
|
+
dispatch_ceiling: high
|
|
54
|
+
catalog_snapshot:
|
|
55
|
+
id: root-native-1
|
|
56
|
+
source: tool-schema
|
|
57
|
+
observed_at: 2026-07-12T00:00:00Z
|
|
58
|
+
authority: read-only
|
|
59
|
+
role_selector: oat-recon-worker
|
|
60
|
+
model_selector: opaque-provider-selector
|
|
61
|
+
model_selector_granularity: opaque
|
|
62
|
+
effort_selector: economical
|
|
63
|
+
selection_source: native-default
|
|
64
|
+
candidates_considered:
|
|
65
|
+
- opaque-provider-selector
|
|
66
|
+
selection_reason: native-catalog
|
|
67
|
+
selected_route: native
|
|
68
|
+
deadline_seconds: 300
|
|
69
|
+
retry_limit: 1
|
|
70
|
+
payload: {}
|
|
71
|
+
launch_status: accepted
|
|
72
|
+
child_outcome: completed
|
|
73
|
+
configured_invocation_evidence: []
|
|
74
|
+
runtime_confirmation: not-reported
|
|
75
|
+
diagnostics: []
|
|
76
|
+
continuation_events: []
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`role_selector` is the exact provider or harness agent-type selector, when that
|
|
80
|
+
surface exists. Preserve opaque selectors byte-for-byte.
|
|
81
|
+
|
|
82
|
+
Use `selection_source: native-default` for the preferred same-runtime native
|
|
83
|
+
route, `policy-resolved` for a CLI/programmatic or cross-runtime route selected
|
|
84
|
+
by configured project/workflow/gate policy, and `explicit-user` for an
|
|
85
|
+
otherwise agent-proposed alternate route approved for the current run. For
|
|
86
|
+
`policy-resolved`, include the owning configuration in
|
|
87
|
+
`configured_invocation_evidence`. CLI or SDK availability alone is never a
|
|
88
|
+
selection source.
|
|
89
|
+
|
|
90
|
+
## Recon Wave
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
wave_id: repo-audit-wave-1
|
|
94
|
+
scope: repo:packages/cli
|
|
95
|
+
shared_dispatch_record: dispatch-unique-id
|
|
96
|
+
lanes:
|
|
97
|
+
- lane_id: correctness
|
|
98
|
+
scope: packages/cli/src
|
|
99
|
+
launch_status: accepted
|
|
100
|
+
child_outcome: completed
|
|
101
|
+
- lane_id: security
|
|
102
|
+
scope: packages/cli/src
|
|
103
|
+
launch_status: accepted
|
|
104
|
+
child_outcome: completed
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
The wave scope is the aggregate boundary. Lane scope may narrow it. Use one
|
|
108
|
+
shared record only when every dispatch axis listed in the main skill is
|
|
109
|
+
identical.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-pjm-add-backlog-item
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.3.0
|
|
4
4
|
description: Use when the user requests or confirms adding a new repo backlog item — e.g. "add a backlog item for X", "capture that as backlog", "track that follow-up", "file a backlog ticket", or confirms a previously offered backlog capture. Do NOT auto-invoke when a follow-up is mentioned. Creates the item file in the file-per-item backlog structure, regenerates the index, and prompts for curated overview updates.
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
@@ -98,8 +98,10 @@ ITEM_PATH=".oat/repo/pjm/backlog/items/{id}.md"
|
|
|
98
98
|
- `labels`
|
|
99
99
|
- `assignee`
|
|
100
100
|
- `associated_issues`
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
- `external_plans` (initialize to `[]`; `oat-repo-improve` owns later reverse-link additions)
|
|
102
|
+
3. Keep `external_plans` as a YAML string array of repo-relative paths under `.oat/repo/reference/external-plans/`. Do not pre-populate it from discussion or anticipated work.
|
|
103
|
+
4. The agent should propose an initial `scope_estimate` based on the described work, then ask the user to confirm or adjust it.
|
|
104
|
+
5. Write the item body with:
|
|
103
105
|
- `## Description`
|
|
104
106
|
- `## Acceptance Criteria`
|
|
105
107
|
|
|
@@ -147,6 +149,7 @@ Report:
|
|
|
147
149
|
|
|
148
150
|
- New item file exists under `.oat/repo/pjm/backlog/items/` with a `BL-YYMMDD-slug` filename matching its `id`
|
|
149
151
|
- Item includes populated frontmatter and both required body sections
|
|
152
|
+
- Item initializes `external_plans: []` for future reverse links
|
|
150
153
|
- `scope_estimate` was proposed and confirmed
|
|
151
154
|
- `oat backlog regenerate-index` ran successfully
|
|
152
155
|
- `.oat/repo/pjm/backlog/index.md` remains valid, with managed section untouched except by regeneration
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-pjm-review-backlog
|
|
3
|
-
version: 1.
|
|
4
|
-
description: Use when prioritizing the file-backed repo backlog or evaluating roadmap alignment. Produces value-effort ratings, dependency mapping, and
|
|
3
|
+
version: 1.5.0
|
|
4
|
+
description: Use when prioritizing the file-backed repo backlog or evaluating roadmap alignment. Produces value-effort ratings, dependency mapping, execution recommendations, and an optional external-plan handoff.
|
|
5
5
|
argument-hint: '[backlog-root] [--roadmap=<path>] [--output=<path>]'
|
|
6
6
|
disable-model-invocation: true
|
|
7
7
|
allowed-tools: Read, Write, Glob, Grep, Bash(git:*), AskUserQuestion, Task
|
|
@@ -48,13 +48,14 @@ When executing this skill, provide lightweight progress feedback so the user can
|
|
|
48
48
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
49
49
|
|
|
50
50
|
- Before multi-step work, print short step indicators, e.g.:
|
|
51
|
-
- `[1/
|
|
52
|
-
- `[2/
|
|
53
|
-
- `[3/
|
|
54
|
-
- `[4/
|
|
55
|
-
- `[5/
|
|
56
|
-
- `[6/
|
|
57
|
-
- `[7/
|
|
51
|
+
- `[1/8] Resolving backlog inputs…`
|
|
52
|
+
- `[2/8] Cataloging backlog items…`
|
|
53
|
+
- `[3/8] Reading codebase context…`
|
|
54
|
+
- `[4/8] Writing review document…`
|
|
55
|
+
- `[5/8] Summarizing recommendations…`
|
|
56
|
+
- `[6/8] (Optional) Priority-alignment walkthrough…` — only print after the operator accepts the offer in Step 9
|
|
57
|
+
- `[7/8] (Optional) Refreshing project kickoff handoffs…` — only print after the operator agrees a kickoff stack in Step 10
|
|
58
|
+
- `[8/8] (Optional) Handing selected items to repo improve…` — only print after the operator accepts the offer in Step 11
|
|
58
59
|
|
|
59
60
|
## Arguments
|
|
60
61
|
|
|
@@ -207,7 +208,7 @@ After the summary, ask the operator:
|
|
|
207
208
|
|
|
208
209
|
If `.oat/repo/pjm/backlog/reviews/priority-alignment.md` already exists, frame it as an **update** to the existing document rather than a fresh create. Read the existing file first so the walkthrough builds on it.
|
|
209
210
|
|
|
210
|
-
If the operator declines,
|
|
211
|
+
If the operator declines, skip Steps 9–10 and continue to the Step 11 external-plan offer. Do not silently write or modify `priority-alignment.md`.
|
|
211
212
|
|
|
212
213
|
**If the operator accepts, run the walkthrough:**
|
|
213
214
|
|
|
@@ -246,6 +247,16 @@ This step mirrors the **Project Kickoff Handoffs** section of the pjm instructio
|
|
|
246
247
|
|
|
247
248
|
Every backlog item reference in a handoff — like every reference in review output and alignment docs — pairs the ID with its human-readable title per the **Reference Format Convention**. No bare IDs.
|
|
248
249
|
|
|
250
|
+
### Step 11: Offer External Plan Generation (Optional)
|
|
251
|
+
|
|
252
|
+
After the review flow concludes, offer:
|
|
253
|
+
|
|
254
|
+
> Want to turn selected items from this backlog review into self-contained external implementation plans with `oat-repo-improve`?
|
|
255
|
+
|
|
256
|
+
If the operator accepts, invoke `oat-repo-improve` in `backlog-review` mode with the living review path. Also pass `backlog/reviews/priority-alignment.md` when it exists and was confirmed or refreshed during this run. The improve skill owns candidate selection, bounded live verification, plan generation under `.oat/repo/reference/external-plans/`, and backlog-item reverse links.
|
|
257
|
+
|
|
258
|
+
Do not generate external plans inside this skill. Do not assume the kickoff stack must become plans; present it as the recommended selection and let the operator adjust it. A generated external plan remains optional input to `oat-project-import-plan`, not a canonical OAT project plan.
|
|
259
|
+
|
|
249
260
|
## Success Criteria
|
|
250
261
|
|
|
251
262
|
- Every active backlog item file has a value-effort rating with rationale
|
|
@@ -256,4 +267,5 @@ Every backlog item reference in a handoff — like every reference in review out
|
|
|
256
267
|
- Living review is written to `.oat/repo/pjm/backlog/reviews/backlog-and-roadmap-review.md` (unless `--output` is explicitly overridden); dated snapshots, when emitted, live in the same `backlog/reviews/` directory and never under `.oat/repo/reviews/`
|
|
257
268
|
- The operator is offered (but never forced into) a collaborative walkthrough that produces or updates `backlog/reviews/priority-alignment.md`; if the operator accepts, the file is written using the priority-alignment template and includes a Changelog entry for this pass; if the operator declines, no file is created or modified
|
|
258
269
|
- When a priority-alignment pass produces an agreed kickoff stack, one handoff per kickoff-stack item is written or refreshed under `.oat/repo/pjm/handoffs/` (with item reference, recommended mode, input pointers, repo conventions/gates, and a close-out requiring the Backlog Lifecycle executed and the handoff deleted in the same shipping PR); handoffs for reprioritized-out items are deleted in the same pass; kickoff-stack membership, lane count, and ordering remain human decisions the skill presents rather than chooses
|
|
270
|
+
- The operator is offered an optional `oat-repo-improve backlog-review <review>` handoff; this skill never writes external plans itself
|
|
259
271
|
- Every user-facing reference to a backlog item pairs the ID with a human-readable title (per the Reference Format Convention)
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oat-project-dispatch-subagents
|
|
3
|
+
version: 1.1.0
|
|
4
|
+
description: Use when an OAT project lifecycle skill needs to translate project state, phase or task scope, gates, and write authority into a provider-neutral subagent dispatch.
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
user-invocable: false
|
|
7
|
+
allowed-tools: Read, Bash
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Dispatching OAT Project Subagents
|
|
11
|
+
|
|
12
|
+
Use this internal adapter for OAT project lifecycle delegation. It resolves
|
|
13
|
+
project policy and lifecycle authority, then invokes `oat-dispatch-subagents`
|
|
14
|
+
for provider selection, launch, recovery, and generic evidence.
|
|
15
|
+
|
|
16
|
+
## Progress Indicators (User-Facing)
|
|
17
|
+
|
|
18
|
+
This skill is an internal dependency; the calling project lifecycle skill owns
|
|
19
|
+
progress indicators and decides whether a sub-banner is useful. When surfacing
|
|
20
|
+
a distinct project dispatch wave, use:
|
|
21
|
+
|
|
22
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
23
|
+
OAT ▸ PROJECT SUBAGENT DISPATCH
|
|
24
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
25
|
+
|
|
26
|
+
Do not repeat the banner for every task. Return a compact project-scope and
|
|
27
|
+
dispatch summary for the caller to incorporate.
|
|
28
|
+
|
|
29
|
+
## Required Loading
|
|
30
|
+
|
|
31
|
+
Resolve and read `oat-dispatch-subagents` from the active skill catalog before
|
|
32
|
+
every lifecycle dispatch. Follow its provider-reference loading rule and
|
|
33
|
+
request/record contract. Do not copy provider mechanics into this adapter.
|
|
34
|
+
|
|
35
|
+
If the engine skill is unavailable, stop before project mutation or child
|
|
36
|
+
launch and tell the user to install the utility pack at the matching scope:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
oat tools install utility --scope project
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Use `--scope user` when workflows are intentionally user-scoped. Do not fall
|
|
43
|
+
back to duplicated inline dispatch logic.
|
|
44
|
+
|
|
45
|
+
## Ownership Boundary
|
|
46
|
+
|
|
47
|
+
This adapter owns:
|
|
48
|
+
|
|
49
|
+
- active project, workflow mode, phase, and task scope resolution;
|
|
50
|
+
- project and phase dispatch policy and named ceiling resolution;
|
|
51
|
+
- lifecycle role policy, gates, task IDs, write roots, commits, and worktrees;
|
|
52
|
+
- translation into a generic dispatch request;
|
|
53
|
+
- project-specific outcome bookkeeping layered on the generic record.
|
|
54
|
+
|
|
55
|
+
The general dispatch skill owns capability, authorization, catalogs,
|
|
56
|
+
candidate intersection, route selection, launch acceptance, continuation, and
|
|
57
|
+
recovery. Calling lifecycle skills still own sequencing, plan mutation,
|
|
58
|
+
cross-task synthesis, user checkpoints, and final artifact writes.
|
|
59
|
+
|
|
60
|
+
## Resolve Project Context
|
|
61
|
+
|
|
62
|
+
Resolve a user-supplied project path first. Otherwise use the active project.
|
|
63
|
+
Read state through the OAT CLI source of truth rather than ad-hoc YAML parsing:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
oat project status --project-path "$PROJECT_PATH" --json
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Before dispatch, establish:
|
|
70
|
+
|
|
71
|
+
- project path, workflow mode, current phase, and phase status;
|
|
72
|
+
- lifecycle scope such as phase ID or `pNN-tNN` task ID;
|
|
73
|
+
- declared dependencies and parallel group, when applicable;
|
|
74
|
+
- task file boundary, required verification, and write authority;
|
|
75
|
+
- worktree and commit expectations;
|
|
76
|
+
- configured HiLL, phase-review, and lifecycle-gate requirements;
|
|
77
|
+
- effective dispatch policy and named ceiling.
|
|
78
|
+
|
|
79
|
+
If project state cannot be resolved or conflicts with the requested lifecycle
|
|
80
|
+
scope, block before invoking the general engine.
|
|
81
|
+
|
|
82
|
+
## Resolve Dispatch Policy
|
|
83
|
+
|
|
84
|
+
Use the current OAT CLI resolver contract for the active provider and
|
|
85
|
+
lifecycle role. Do not duplicate dispatch matrices or parse configuration
|
|
86
|
+
layers directly. Preserve the resolver's exact candidate selectors and
|
|
87
|
+
provider arguments.
|
|
88
|
+
|
|
89
|
+
Project policy may cap or select a target. Translate the resolved policy and
|
|
90
|
+
ceiling into the generic request; do not ask the general engine to read
|
|
91
|
+
`state.md` or infer project configuration.
|
|
92
|
+
|
|
93
|
+
Configured project policy is standing, scope-bound route authorization. When
|
|
94
|
+
the resolver selects a CLI/programmatic or cross-runtime route, pass it to the
|
|
95
|
+
general engine with `selection_source: policy-resolved` and evidence of the
|
|
96
|
+
owning project, phase/task, provider, lifecycle role, policy/ceiling, and exact
|
|
97
|
+
route. Do not ask the user to re-authorize that route for each task.
|
|
98
|
+
|
|
99
|
+
Prefer native dispatch when it satisfies the resolved contract, but do not
|
|
100
|
+
replace a required policy-resolved route merely because a weaker native surface
|
|
101
|
+
exists. Cursor task subagents are a representative case: project policy may
|
|
102
|
+
route through the Cursor CLI/programmatic surface when native model
|
|
103
|
+
availability cannot satisfy the selected target. Configured cross-family gates
|
|
104
|
+
use the same policy-resolved tier. Ambient CLI availability and stale
|
|
105
|
+
conversational approval are never project policy.
|
|
106
|
+
|
|
107
|
+
## Lifecycle Roles
|
|
108
|
+
|
|
109
|
+
Map each lifecycle role to a generic baseline class and add project policy:
|
|
110
|
+
|
|
111
|
+
| Lifecycle role | Generic class | Project-specific contract |
|
|
112
|
+
| -------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
113
|
+
| Phase coordinator | `coordinator` | Own one phase dossier. Prefer an explicit suitable native target; inherit only when the root/session target is deliberately suitable. |
|
|
114
|
+
| Task worker | `worker` | Own one task and bounded files. Use an explicit native or pre-selected alternate target; never silently inherit an expensive root model. |
|
|
115
|
+
| Fix worker | `worker` | Own listed findings and bounded files. Preserve retry/fix-loop limits and original task context. |
|
|
116
|
+
| Planning self-review | `reviewer` | Inherit the planning parent by default unless the plan-writing contract requires an exact independent reviewer. |
|
|
117
|
+
| Implementation self-review | `reviewer` | Target the resolved reviewer ceiling; inherit only when the review-owning dispatcher is known to satisfy it. |
|
|
118
|
+
| Phase gate | `reviewer` | Use the configured independent target and fail closed when unavailable. |
|
|
119
|
+
| Lifecycle gate | `reviewer` | Stay independent of producer context and fail closed rather than substituting same-context self-review. |
|
|
120
|
+
|
|
121
|
+
The calling lifecycle skill remains authoritative when its reviewed contract
|
|
122
|
+
is stricter than this table.
|
|
123
|
+
|
|
124
|
+
## Adapt the Request
|
|
125
|
+
|
|
126
|
+
For every lifecycle dispatch:
|
|
127
|
+
|
|
128
|
+
1. Validate project state and requested phase/task scope.
|
|
129
|
+
2. Resolve lifecycle role policy, provider, named ceiling, and exact
|
|
130
|
+
configuration through current CLI interfaces.
|
|
131
|
+
3. Define objective, bounded files or read scope, expected output,
|
|
132
|
+
verification evidence, escalation conditions, authority, deadline, retry
|
|
133
|
+
limit, and fallback.
|
|
134
|
+
4. Map the lifecycle role to a generic class.
|
|
135
|
+
5. Add project metadata without replacing neutral request fields.
|
|
136
|
+
6. Add `selection_source: policy-resolved` plus owning configuration evidence
|
|
137
|
+
for every configured non-native route.
|
|
138
|
+
7. Invoke `oat-dispatch-subagents` with the complete request.
|
|
139
|
+
8. Preserve its generic dispatch record unchanged.
|
|
140
|
+
9. Add lifecycle outcome metadata and let the calling workflow perform state,
|
|
141
|
+
plan, implementation-log, commit, or review-table writes.
|
|
142
|
+
|
|
143
|
+
Example adapter input:
|
|
144
|
+
|
|
145
|
+
```yaml
|
|
146
|
+
project_path: .oat/projects/shared/example
|
|
147
|
+
project_mode: quick
|
|
148
|
+
project_phase: implement
|
|
149
|
+
scope: p01-t02
|
|
150
|
+
lifecycle_role: task-worker
|
|
151
|
+
file_boundary:
|
|
152
|
+
- packages/cli/src/example.ts
|
|
153
|
+
verification:
|
|
154
|
+
- pnpm --filter @open-agent-toolkit/cli test
|
|
155
|
+
commit_policy: one-commit-per-task
|
|
156
|
+
worktree: root
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Example namespaced metadata added to the generic request:
|
|
160
|
+
|
|
161
|
+
```yaml
|
|
162
|
+
project:
|
|
163
|
+
path: .oat/projects/shared/example
|
|
164
|
+
mode: quick
|
|
165
|
+
phase: implement
|
|
166
|
+
phase_id: p01
|
|
167
|
+
task_id: p01-t02
|
|
168
|
+
file_boundary:
|
|
169
|
+
- packages/cli/src/example.ts
|
|
170
|
+
commit_policy: one-commit-per-task
|
|
171
|
+
worktree: root
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Coordinator and Worker Topology
|
|
175
|
+
|
|
176
|
+
Use a phase coordinator only when the lifecycle workflow declares that
|
|
177
|
+
topology. A coordinator may dispatch task workers when nesting and authority
|
|
178
|
+
permit it, but it must not widen task boundaries, alter plan sequencing, or
|
|
179
|
+
take over user checkpoints.
|
|
180
|
+
|
|
181
|
+
For parallel groups, preserve plan-declared isolation. Each worktree receives
|
|
182
|
+
only its assigned phase/task boundaries and must not mutate sibling worktrees.
|
|
183
|
+
The root lifecycle workflow retains merge ordering and conflict resolution.
|
|
184
|
+
|
|
185
|
+
## Gates and Independence
|
|
186
|
+
|
|
187
|
+
Gate independence is project policy layered on the generic reviewer class.
|
|
188
|
+
Resolve the configured gate target before launch and pass it as exact selection
|
|
189
|
+
input. If the required independent target cannot be enforced, block the gate;
|
|
190
|
+
do not silently downgrade to producer-context review.
|
|
191
|
+
|
|
192
|
+
Treat gate artifacts, receive eligibility, and lifecycle disposition as caller
|
|
193
|
+
concerns. The dispatch engine returns evidence and output but does not mutate
|
|
194
|
+
review tables or project state.
|
|
195
|
+
|
|
196
|
+
## Lifecycle Record Extension
|
|
197
|
+
|
|
198
|
+
Preserve the generic record and attach project metadata separately:
|
|
199
|
+
|
|
200
|
+
```yaml
|
|
201
|
+
project_dispatch:
|
|
202
|
+
project_path: .oat/projects/shared/example
|
|
203
|
+
workflow_mode: quick
|
|
204
|
+
phase: implement
|
|
205
|
+
phase_id: p01
|
|
206
|
+
task_id: p01-t02
|
|
207
|
+
lifecycle_role: task-worker
|
|
208
|
+
file_boundary:
|
|
209
|
+
- packages/cli/src/example.ts
|
|
210
|
+
worktree: root
|
|
211
|
+
commit_policy: one-commit-per-task
|
|
212
|
+
gate_requirement: none
|
|
213
|
+
generic_dispatch_record: dispatch-unique-id
|
|
214
|
+
lifecycle_outcome:
|
|
215
|
+
task_status: complete
|
|
216
|
+
verification_status: passed
|
|
217
|
+
commit: abc1234
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Do not rewrite generic route, selector, acceptance, outcome, or diagnostic
|
|
221
|
+
fields inside the lifecycle extension.
|
|
222
|
+
|
|
223
|
+
## Failure Boundaries
|
|
224
|
+
|
|
225
|
+
- Invalid or stale project state: block before generic dispatch.
|
|
226
|
+
- Scope outside the plan or assigned worktree: block and return to the caller.
|
|
227
|
+
- Incomplete resolver result: do not invent a target; surface the diagnostic.
|
|
228
|
+
- Generic pre-start rejection: apply caller retry policy through the general
|
|
229
|
+
engine.
|
|
230
|
+
- Accepted child failure: return the terminal outcome to the lifecycle caller;
|
|
231
|
+
do not select a replacement automatically.
|
|
232
|
+
- Required gate target unavailable: fail closed.
|
|
233
|
+
- Verification or commit failure after worker completion: lifecycle caller owns
|
|
234
|
+
repair and bookkeeping; do not falsify the child outcome.
|