@open-agent-toolkit/cli 0.3.7 → 0.3.9
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 +3 -3
- package/assets/agents/oat-codebase-mapper.md +3 -2
- package/assets/agents/oat-reviewer.md +5 -13
- package/assets/agents/skeptical-evaluator.md +6 -2
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/backlog-lifecycle.md +3 -2
- package/assets/docs/cli-utilities/bootstrap.md +5 -2
- package/assets/docs/cli-utilities/config-and-local-state.md +13 -6
- package/assets/docs/cli-utilities/configuration.md +25 -10
- package/assets/docs/cli-utilities/tool-packs.md +60 -10
- package/assets/docs/cli-utilities/workflow-gates.md +37 -0
- package/assets/docs/contributing/code.md +9 -5
- package/assets/docs/provider-sync/commands.md +17 -8
- package/assets/docs/provider-sync/instruction-sync.md +241 -39
- package/assets/docs/provider-sync/providers.md +20 -0
- package/assets/docs/provider-sync/scope-and-surface.md +3 -1
- package/assets/docs/reference/cli-reference.md +4 -1
- package/assets/docs/reference/oat-directory-structure.md +12 -11
- package/assets/docs/reference/troubleshooting.md +19 -4
- package/assets/docs/workflows/projects/evidence-layers.md +5 -1
- package/assets/docs/workflows/projects/implementation-execution.md +22 -8
- package/assets/docs/workflows/projects/lifecycle.md +4 -6
- package/assets/docs/workflows/projects/retro.md +7 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-agent-instructions-analyze/SKILL.md +4 -4
- package/assets/skills/oat-agent-instructions-analyze/references/analysis-artifact-template.md +5 -5
- package/assets/skills/oat-agent-instructions-analyze/references/docs/rules-files.md +14 -11
- package/assets/skills/oat-agent-instructions-analyze/references/quality-checklist.md +2 -2
- package/assets/skills/oat-agent-instructions-analyze/scripts/resolve-instruction-files.sh +4 -3
- package/assets/skills/oat-agent-instructions-analyze/scripts/resolve-providers.sh +17 -6
- package/assets/skills/oat-agent-instructions-apply/SKILL.md +3 -3
- package/assets/skills/oat-agent-instructions-apply/references/docs/rules-files.md +14 -11
- package/assets/skills/oat-dispatch-subagents/SKILL.md +1 -1
- package/assets/skills/oat-dispatch-subagents/references/managed-claude-example.json +387 -0
- package/assets/skills/oat-dispatch-subagents/references/record-schema.md +75 -0
- package/assets/skills/oat-doctor/SKILL.md +17 -13
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +1 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-implement/SKILL.md +2 -2
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +33 -11
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +24 -22
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-implement/references/phase-execution.md +109 -8
- package/assets/skills/oat-project-lite/SKILL.md +23 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-next/SKILL.md +3 -3
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-progress/SKILL.md +2 -2
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-retro/SKILL.md +70 -6
- package/assets/skills/oat-project-review-provide/SKILL.md +3 -1
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +3 -1
- package/assets/templates/docs-app-mkdocs/docs/contributing.md +1 -3
- package/assets/templates/pjm-agents.md +7 -3
- package/assets/templates/state.md +2 -2
- package/dist/agents/canonical/resolve.d.ts +6 -4
- package/dist/agents/canonical/resolve.d.ts.map +1 -1
- package/dist/agents/canonical/resolve.js +6 -4
- package/dist/commands/backlog/archive.d.ts +10 -2
- package/dist/commands/backlog/archive.d.ts.map +1 -1
- package/dist/commands/backlog/archive.js +22 -6
- package/dist/commands/backlog/index.d.ts.map +1 -1
- package/dist/commands/backlog/index.js +5 -1
- package/dist/commands/backlog/rewrite-references.d.ts +41 -0
- package/dist/commands/backlog/rewrite-references.d.ts.map +1 -0
- package/dist/commands/backlog/rewrite-references.js +516 -0
- package/dist/commands/config/index.d.ts +1 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +69 -34
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +51 -2
- package/dist/commands/gate/review-verdict.d.ts +22 -0
- package/dist/commands/gate/review-verdict.d.ts.map +1 -1
- package/dist/commands/gate/review-verdict.js +111 -0
- package/dist/commands/init/index.d.ts +6 -0
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +27 -4
- package/dist/commands/init/tools/index.d.ts +18 -1
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +84 -17
- package/dist/commands/init/tools/project-guidance.d.ts +19 -4
- package/dist/commands/init/tools/project-guidance.d.ts.map +1 -1
- package/dist/commands/init/tools/project-guidance.js +58 -15
- package/dist/commands/init/tools/workflows/index.d.ts.map +1 -1
- package/dist/commands/init/tools/workflows/index.js +5 -1
- package/dist/commands/instructions/instructions.types.d.ts +105 -4
- package/dist/commands/instructions/instructions.types.d.ts.map +1 -1
- package/dist/commands/instructions/instructions.types.js +4 -5
- package/dist/commands/instructions/instructions.utils.d.ts +161 -6
- package/dist/commands/instructions/instructions.utils.d.ts.map +1 -1
- package/dist/commands/instructions/instructions.utils.js +650 -12
- package/dist/commands/instructions/sync/sync.d.ts.map +1 -1
- package/dist/commands/instructions/sync/sync.js +256 -18
- package/dist/commands/instructions/validate/validate.d.ts.map +1 -1
- package/dist/commands/instructions/validate/validate.js +36 -8
- package/dist/commands/pjm/index.d.ts.map +1 -1
- package/dist/commands/pjm/index.js +19 -4
- package/dist/commands/pjm/init.d.ts +3 -0
- package/dist/commands/pjm/init.d.ts.map +1 -1
- package/dist/commands/pjm/init.js +23 -5
- package/dist/commands/project/dispatch/canonical-role.d.ts +33 -0
- package/dist/commands/project/dispatch/canonical-role.d.ts.map +1 -0
- package/dist/commands/project/dispatch/canonical-role.js +114 -0
- package/dist/commands/project/dispatch/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch/index.js +3 -1
- package/dist/commands/project/dispatch/record.d.ts.map +1 -1
- package/dist/commands/project/dispatch/record.js +146 -4
- package/dist/commands/shared/agents-md.d.ts +26 -5
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +182 -3
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +28 -21
- package/dist/commands/tools/guidance/index.d.ts +15 -0
- package/dist/commands/tools/guidance/index.d.ts.map +1 -0
- package/dist/commands/tools/guidance/index.js +81 -0
- package/dist/commands/tools/index.d.ts.map +1 -1
- package/dist/commands/tools/index.js +2 -0
- package/dist/commands/tools/shared/sync-evidence.d.ts.map +1 -1
- package/dist/commands/tools/shared/sync-evidence.js +32 -5
- package/dist/config/oat-config.d.ts +57 -3
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +223 -15
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +12 -2
- package/dist/engine/compute-plan.d.ts.map +1 -1
- package/dist/engine/compute-plan.js +31 -3
- package/dist/providers/claude/dispatch-envelope.d.ts +53 -0
- package/dist/providers/claude/dispatch-envelope.d.ts.map +1 -1
- package/dist/providers/claude/dispatch-envelope.js +324 -48
- package/dist/providers/claude/rule-transform.js +1 -1
- package/dist/providers/copilot/rule-transform.js +1 -1
- package/dist/providers/cursor/rule-transform.js +1 -1
- package/dist/providers/identity/absolute-paths.d.ts +13 -0
- package/dist/providers/identity/absolute-paths.d.ts.map +1 -1
- package/dist/providers/identity/absolute-paths.js +27 -14
- package/dist/providers/identity/generic-dispatch-record.d.ts +212 -0
- package/dist/providers/identity/generic-dispatch-record.d.ts.map +1 -1
- package/dist/providers/identity/generic-dispatch-record.js +78 -19
- package/dist/providers/identity/oat-dispatch-record.d.ts +5 -0
- package/dist/providers/identity/oat-dispatch-record.d.ts.map +1 -1
- package/dist/providers/identity/oat-dispatch-record.js +11 -2
- package/dist/providers/shared/registry.d.ts +6 -0
- package/dist/providers/shared/registry.d.ts.map +1 -1
- package/dist/providers/shared/registry.js +30 -0
- package/dist/rules/canonical/parse.d.ts.map +1 -1
- package/dist/rules/canonical/parse.js +38 -3
- package/package.json +2 -2
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Managed Claude validation-only inputs for `oat project dispatch record --event-file <file> --json` (no --project). Each role key is one complete input. claudeLaunch.resolution is `oat project dispatch-ceiling resolve --provider claude --role <role> --json` output verbatim; claudeLaunch.definition is the generated Claude agent file content; claudeLaunch.payload is the exact launch payload; event is `oat project dispatch canonical-role --json` output. Built from fixture agents, so the definition body, role version, and content digest are illustrative. See record-schema.md, Managed Claude Validation Input.",
|
|
3
|
+
"implementer": {
|
|
4
|
+
"claudeLaunch": {
|
|
5
|
+
"resolution": {
|
|
6
|
+
"status": "resolved",
|
|
7
|
+
"provider": "claude",
|
|
8
|
+
"value": "claude-opus-5-5",
|
|
9
|
+
"policyMode": "managed",
|
|
10
|
+
"policy": "high",
|
|
11
|
+
"source": "repo-config",
|
|
12
|
+
"preset": "high",
|
|
13
|
+
"unresolved": false,
|
|
14
|
+
"projectPath": null,
|
|
15
|
+
"providerDefaultEffort": "not-applicable",
|
|
16
|
+
"matrix": {
|
|
17
|
+
"claude": {
|
|
18
|
+
"economy": {
|
|
19
|
+
"candidates": [
|
|
20
|
+
{
|
|
21
|
+
"harness": "claude",
|
|
22
|
+
"model": "claude-sonnet-5",
|
|
23
|
+
"effort": "medium"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"balanced": {
|
|
28
|
+
"candidates": [
|
|
29
|
+
{
|
|
30
|
+
"harness": "claude",
|
|
31
|
+
"model": "claude-sonnet-5",
|
|
32
|
+
"effort": "high"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"high": {
|
|
37
|
+
"candidates": [
|
|
38
|
+
{
|
|
39
|
+
"harness": "claude",
|
|
40
|
+
"model": "claude-opus-5-5",
|
|
41
|
+
"effort": "high"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"frontier": {
|
|
46
|
+
"candidates": [
|
|
47
|
+
{
|
|
48
|
+
"harness": "claude",
|
|
49
|
+
"model": "claude-opus-5-5",
|
|
50
|
+
"effort": "xhigh"
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"ladderCompleteness": {
|
|
57
|
+
"complete": false,
|
|
58
|
+
"missingCells": [
|
|
59
|
+
"codex.economy",
|
|
60
|
+
"codex.balanced",
|
|
61
|
+
"codex.high",
|
|
62
|
+
"codex.frontier",
|
|
63
|
+
"cursor.economy",
|
|
64
|
+
"cursor.balanced",
|
|
65
|
+
"cursor.high",
|
|
66
|
+
"cursor.frontier"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
"providers": {
|
|
70
|
+
"claude": {
|
|
71
|
+
"value": "claude-opus-5-5",
|
|
72
|
+
"mode": "enforced",
|
|
73
|
+
"mechanism": "pinned-variant",
|
|
74
|
+
"dispatchArgs": {
|
|
75
|
+
"variant": "oat-phase-implementer-claude-claude-opus-5-5-high"
|
|
76
|
+
},
|
|
77
|
+
"modelAxis": "selected:claude-opus-5-5",
|
|
78
|
+
"effortAxis": "selected:high",
|
|
79
|
+
"verifyOnDispatch": false,
|
|
80
|
+
"cellSource": "repo-config",
|
|
81
|
+
"target": {
|
|
82
|
+
"harness": "claude",
|
|
83
|
+
"model": "claude-opus-5-5",
|
|
84
|
+
"effort": "high",
|
|
85
|
+
"crossHarness": false,
|
|
86
|
+
"routeIndex": 0,
|
|
87
|
+
"routeLength": 1,
|
|
88
|
+
"capabilityEvidence": {
|
|
89
|
+
"source": "explicit-model-id",
|
|
90
|
+
"modelReference": "claude-opus-5-5",
|
|
91
|
+
"exactModel": true,
|
|
92
|
+
"generation": "opus-5-5",
|
|
93
|
+
"capabilitiesSource": "dispatch-target-model",
|
|
94
|
+
"supportedEfforts": ["low", "medium", "high", "xhigh", "max"]
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"selection": {
|
|
98
|
+
"role": "implementer",
|
|
99
|
+
"policyMode": "managed",
|
|
100
|
+
"policy": "high",
|
|
101
|
+
"cellSource": "repo-config",
|
|
102
|
+
"target": {
|
|
103
|
+
"harness": "claude",
|
|
104
|
+
"model": "claude-opus-5-5",
|
|
105
|
+
"effort": "high",
|
|
106
|
+
"crossHarness": false,
|
|
107
|
+
"routeIndex": 0,
|
|
108
|
+
"routeLength": 1,
|
|
109
|
+
"capabilityEvidence": {
|
|
110
|
+
"source": "explicit-model-id",
|
|
111
|
+
"modelReference": "claude-opus-5-5",
|
|
112
|
+
"exactModel": true,
|
|
113
|
+
"generation": "opus-5-5",
|
|
114
|
+
"capabilitiesSource": "dispatch-target-model",
|
|
115
|
+
"supportedEfforts": ["low", "medium", "high", "xhigh", "max"]
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"requestedCandidate": null,
|
|
119
|
+
"candidateTier": null,
|
|
120
|
+
"candidateIndex": null,
|
|
121
|
+
"ceilingTier": "high",
|
|
122
|
+
"ceilingTarget": {
|
|
123
|
+
"harness": "claude",
|
|
124
|
+
"model": "claude-opus-5-5",
|
|
125
|
+
"effort": "high",
|
|
126
|
+
"crossHarness": false,
|
|
127
|
+
"routeIndex": 0,
|
|
128
|
+
"routeLength": 1,
|
|
129
|
+
"capabilityEvidence": {
|
|
130
|
+
"source": "explicit-model-id",
|
|
131
|
+
"modelReference": "claude-opus-5-5",
|
|
132
|
+
"exactModel": true,
|
|
133
|
+
"generation": "opus-5-5",
|
|
134
|
+
"capabilitiesSource": "dispatch-target-model",
|
|
135
|
+
"supportedEfforts": ["low", "medium", "high", "xhigh", "max"]
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"preferredValue": null,
|
|
139
|
+
"selectedValue": "claude-opus-5-5",
|
|
140
|
+
"capped": false,
|
|
141
|
+
"selectionMode": "capped",
|
|
142
|
+
"selectionBranch": "matrix-pinned",
|
|
143
|
+
"family": "claude"
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
"definition": "---\n# oat-managed: true\n# oat-role: oat-phase-implementer-claude-claude-opus-5-5-high\n# oat-owner: user-config\n# oat-provider: claude\n# oat-capability-evidence: {\"source\":\"explicit-model-id\",\"modelReference\":\"claude-opus-5-5\",\"exactModel\":true,\"generation\":\"opus-5-5\",\"capabilitiesSource\":\"dispatch-target-model\",\"supportedEfforts\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"]}\nname: oat-phase-implementer-claude-claude-opus-5-5-high\ndescription: Example fixture role for the managed Claude dispatch-record\n example. Claude-native claude-opus-5-5/high effort variant managed by OAT.\nmodel: claude-opus-5-5\neffort: high\n---\n\n## Role\n\nFixture body; `oat sync` generates the real definition.\n",
|
|
149
|
+
"payload": {
|
|
150
|
+
"variant": "oat-phase-implementer-claude-claude-opus-5-5-high"
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"recordBase": {
|
|
154
|
+
"request_id": "example-p01-implementation",
|
|
155
|
+
"caller": "oat-project-implement",
|
|
156
|
+
"scope": "p01",
|
|
157
|
+
"objective": "Implement phase p01",
|
|
158
|
+
"action": "implementation",
|
|
159
|
+
"role_class": "implementation",
|
|
160
|
+
"dispatch_context": "phase-dispatch",
|
|
161
|
+
"catalog_snapshot": {
|
|
162
|
+
"id": "claude-generated-role-catalog",
|
|
163
|
+
"source": "user-sync",
|
|
164
|
+
"observed_at": "2026-09-27T00:00:00.000Z"
|
|
165
|
+
},
|
|
166
|
+
"authority": "phase-files",
|
|
167
|
+
"reasoning_mode_selector": null,
|
|
168
|
+
"service_tier_selector": null,
|
|
169
|
+
"deadline_seconds": 7200,
|
|
170
|
+
"retry_limit": 0,
|
|
171
|
+
"launch_status": "planned",
|
|
172
|
+
"child_outcome": null,
|
|
173
|
+
"runtime_confirmation": "not-reported",
|
|
174
|
+
"diagnostics": [],
|
|
175
|
+
"continuation_events": []
|
|
176
|
+
},
|
|
177
|
+
"event": {
|
|
178
|
+
"kind": "canonical-role-resolution",
|
|
179
|
+
"requestId": "example-p01-implementation",
|
|
180
|
+
"source": "canonical-role-resolver",
|
|
181
|
+
"evidence": {
|
|
182
|
+
"status": "resolved",
|
|
183
|
+
"dependency": "workflows",
|
|
184
|
+
"canonicalRole": "oat-phase-implementer",
|
|
185
|
+
"tier": "loaded",
|
|
186
|
+
"validation": "direct-canonical",
|
|
187
|
+
"canonicalPath": "<user>/agents/oat-phase-implementer.md",
|
|
188
|
+
"selectedPath": "<loaded>/agents/oat-phase-implementer.md",
|
|
189
|
+
"roleVersion": "1.0.0",
|
|
190
|
+
"contentDigest": "sha256:9df1dbd23a835f2329a63bbf7f75b1db0c6a5d14ffd703ec47f4a199abe2c506",
|
|
191
|
+
"candidateMisses": []
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"reviewer": {
|
|
196
|
+
"claudeLaunch": {
|
|
197
|
+
"resolution": {
|
|
198
|
+
"status": "resolved",
|
|
199
|
+
"provider": "claude",
|
|
200
|
+
"value": "claude-opus-5-5",
|
|
201
|
+
"policyMode": "managed",
|
|
202
|
+
"policy": "high",
|
|
203
|
+
"source": "repo-config",
|
|
204
|
+
"preset": "high",
|
|
205
|
+
"unresolved": false,
|
|
206
|
+
"projectPath": null,
|
|
207
|
+
"providerDefaultEffort": "not-applicable",
|
|
208
|
+
"matrix": {
|
|
209
|
+
"claude": {
|
|
210
|
+
"economy": {
|
|
211
|
+
"candidates": [
|
|
212
|
+
{
|
|
213
|
+
"harness": "claude",
|
|
214
|
+
"model": "claude-sonnet-5",
|
|
215
|
+
"effort": "medium"
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
"balanced": {
|
|
220
|
+
"candidates": [
|
|
221
|
+
{
|
|
222
|
+
"harness": "claude",
|
|
223
|
+
"model": "claude-sonnet-5",
|
|
224
|
+
"effort": "high"
|
|
225
|
+
}
|
|
226
|
+
]
|
|
227
|
+
},
|
|
228
|
+
"high": {
|
|
229
|
+
"candidates": [
|
|
230
|
+
{
|
|
231
|
+
"harness": "claude",
|
|
232
|
+
"model": "claude-opus-5-5",
|
|
233
|
+
"effort": "high"
|
|
234
|
+
}
|
|
235
|
+
]
|
|
236
|
+
},
|
|
237
|
+
"frontier": {
|
|
238
|
+
"candidates": [
|
|
239
|
+
{
|
|
240
|
+
"harness": "claude",
|
|
241
|
+
"model": "claude-opus-5-5",
|
|
242
|
+
"effort": "xhigh"
|
|
243
|
+
}
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
"ladderCompleteness": {
|
|
249
|
+
"complete": false,
|
|
250
|
+
"missingCells": [
|
|
251
|
+
"codex.economy",
|
|
252
|
+
"codex.balanced",
|
|
253
|
+
"codex.high",
|
|
254
|
+
"codex.frontier",
|
|
255
|
+
"cursor.economy",
|
|
256
|
+
"cursor.balanced",
|
|
257
|
+
"cursor.high",
|
|
258
|
+
"cursor.frontier"
|
|
259
|
+
]
|
|
260
|
+
},
|
|
261
|
+
"providers": {
|
|
262
|
+
"claude": {
|
|
263
|
+
"value": "claude-opus-5-5",
|
|
264
|
+
"mode": "enforced",
|
|
265
|
+
"mechanism": "pinned-variant",
|
|
266
|
+
"dispatchArgs": {
|
|
267
|
+
"variant": "oat-reviewer-claude-claude-opus-5-5-high"
|
|
268
|
+
},
|
|
269
|
+
"modelAxis": "selected:claude-opus-5-5",
|
|
270
|
+
"effortAxis": "selected:high",
|
|
271
|
+
"verifyOnDispatch": false,
|
|
272
|
+
"cellSource": "repo-config",
|
|
273
|
+
"target": {
|
|
274
|
+
"harness": "claude",
|
|
275
|
+
"model": "claude-opus-5-5",
|
|
276
|
+
"effort": "high",
|
|
277
|
+
"crossHarness": false,
|
|
278
|
+
"routeIndex": 0,
|
|
279
|
+
"routeLength": 1,
|
|
280
|
+
"capabilityEvidence": {
|
|
281
|
+
"source": "explicit-model-id",
|
|
282
|
+
"modelReference": "claude-opus-5-5",
|
|
283
|
+
"exactModel": true,
|
|
284
|
+
"generation": "opus-5-5",
|
|
285
|
+
"capabilitiesSource": "dispatch-target-model",
|
|
286
|
+
"supportedEfforts": ["low", "medium", "high", "xhigh", "max"]
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
"selection": {
|
|
290
|
+
"role": "reviewer",
|
|
291
|
+
"policyMode": "managed",
|
|
292
|
+
"policy": "high",
|
|
293
|
+
"cellSource": "repo-config",
|
|
294
|
+
"target": {
|
|
295
|
+
"harness": "claude",
|
|
296
|
+
"model": "claude-opus-5-5",
|
|
297
|
+
"effort": "high",
|
|
298
|
+
"crossHarness": false,
|
|
299
|
+
"routeIndex": 0,
|
|
300
|
+
"routeLength": 1,
|
|
301
|
+
"capabilityEvidence": {
|
|
302
|
+
"source": "explicit-model-id",
|
|
303
|
+
"modelReference": "claude-opus-5-5",
|
|
304
|
+
"exactModel": true,
|
|
305
|
+
"generation": "opus-5-5",
|
|
306
|
+
"capabilitiesSource": "dispatch-target-model",
|
|
307
|
+
"supportedEfforts": ["low", "medium", "high", "xhigh", "max"]
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
"requestedCandidate": null,
|
|
311
|
+
"candidateTier": null,
|
|
312
|
+
"candidateIndex": null,
|
|
313
|
+
"ceilingTier": "high",
|
|
314
|
+
"ceilingTarget": {
|
|
315
|
+
"harness": "claude",
|
|
316
|
+
"model": "claude-opus-5-5",
|
|
317
|
+
"effort": "high",
|
|
318
|
+
"crossHarness": false,
|
|
319
|
+
"routeIndex": 0,
|
|
320
|
+
"routeLength": 1,
|
|
321
|
+
"capabilityEvidence": {
|
|
322
|
+
"source": "explicit-model-id",
|
|
323
|
+
"modelReference": "claude-opus-5-5",
|
|
324
|
+
"exactModel": true,
|
|
325
|
+
"generation": "opus-5-5",
|
|
326
|
+
"capabilitiesSource": "dispatch-target-model",
|
|
327
|
+
"supportedEfforts": ["low", "medium", "high", "xhigh", "max"]
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
"preferredValue": null,
|
|
331
|
+
"selectedValue": "claude-opus-5-5",
|
|
332
|
+
"capped": false,
|
|
333
|
+
"selectionMode": "review-target",
|
|
334
|
+
"selectionBranch": "matrix-pinned",
|
|
335
|
+
"family": "claude"
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
"definition": "---\n# oat-managed: true\n# oat-role: oat-reviewer-claude-claude-opus-5-5-high\n# oat-owner: user-config\n# oat-provider: claude\n# oat-capability-evidence: {\"source\":\"explicit-model-id\",\"modelReference\":\"claude-opus-5-5\",\"exactModel\":true,\"generation\":\"opus-5-5\",\"capabilitiesSource\":\"dispatch-target-model\",\"supportedEfforts\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"]}\nname: oat-reviewer-claude-claude-opus-5-5-high\ndescription: Example fixture role for the managed Claude dispatch-record\n example. Claude-native claude-opus-5-5/high effort variant managed by OAT.\nmodel: claude-opus-5-5\neffort: high\n---\n\n## Role\n\nFixture body; `oat sync` generates the real definition.\n",
|
|
341
|
+
"payload": {
|
|
342
|
+
"variant": "oat-reviewer-claude-claude-opus-5-5-high"
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
"recordBase": {
|
|
346
|
+
"request_id": "example-p01-review",
|
|
347
|
+
"caller": "oat-project-implement",
|
|
348
|
+
"scope": "p01",
|
|
349
|
+
"objective": "Review phase p01",
|
|
350
|
+
"action": "review",
|
|
351
|
+
"role_class": "review",
|
|
352
|
+
"dispatch_context": "phase-dispatch",
|
|
353
|
+
"catalog_snapshot": {
|
|
354
|
+
"id": "claude-generated-role-catalog",
|
|
355
|
+
"source": "user-sync",
|
|
356
|
+
"observed_at": "2026-09-27T00:00:00.000Z"
|
|
357
|
+
},
|
|
358
|
+
"authority": "review-artifact",
|
|
359
|
+
"reasoning_mode_selector": null,
|
|
360
|
+
"service_tier_selector": null,
|
|
361
|
+
"deadline_seconds": 7200,
|
|
362
|
+
"retry_limit": 0,
|
|
363
|
+
"launch_status": "planned",
|
|
364
|
+
"child_outcome": null,
|
|
365
|
+
"runtime_confirmation": "not-reported",
|
|
366
|
+
"diagnostics": [],
|
|
367
|
+
"continuation_events": []
|
|
368
|
+
},
|
|
369
|
+
"event": {
|
|
370
|
+
"kind": "canonical-role-resolution",
|
|
371
|
+
"requestId": "example-p01-review",
|
|
372
|
+
"source": "canonical-role-resolver",
|
|
373
|
+
"evidence": {
|
|
374
|
+
"status": "resolved",
|
|
375
|
+
"dependency": "workflows",
|
|
376
|
+
"canonicalRole": "oat-reviewer",
|
|
377
|
+
"tier": "loaded",
|
|
378
|
+
"validation": "direct-canonical",
|
|
379
|
+
"canonicalPath": "<user>/agents/oat-reviewer.md",
|
|
380
|
+
"selectedPath": "<loaded>/agents/oat-reviewer.md",
|
|
381
|
+
"roleVersion": "1.0.0",
|
|
382
|
+
"contentDigest": "sha256:0d33889c3fc61be27d6ce8c7516d74830f70d42c2eab89a627a5e649f51a2ec3",
|
|
383
|
+
"candidateMisses": []
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
@@ -208,6 +208,81 @@ otherwise agent-proposed alternate route approved for the current run. For
|
|
|
208
208
|
`configured_invocation_evidence`. CLI or SDK availability alone is never a
|
|
209
209
|
selection source.
|
|
210
210
|
|
|
211
|
+
## Managed Claude Validation Input
|
|
212
|
+
|
|
213
|
+
Before every managed, effort-pinned Claude implementer or reviewer launch,
|
|
214
|
+
`oat-project-implement` runs `oat project dispatch record --event-file <file>
|
|
215
|
+
--json` without `--project` and requires `status: validated-only`. That input
|
|
216
|
+
replaces `record` with three top-level keys:
|
|
217
|
+
|
|
218
|
+
- `claudeLaunch`, an object with three keys of its own:
|
|
219
|
+
- `resolution`: the output of
|
|
220
|
+
`oat project dispatch-ceiling resolve --provider claude --role <implementer|reviewer> --json`,
|
|
221
|
+
verbatim.
|
|
222
|
+
- `definition`: the full text of the generated Claude agent file for the
|
|
223
|
+
selected variant.
|
|
224
|
+
- `payload`: the exact launch payload, `{ "variant": "<variant>" }`,
|
|
225
|
+
optionally with `model` equal to the selected model.
|
|
226
|
+
- `recordBase`: the caller-authored generic fields below.
|
|
227
|
+
- `event`: the `canonical-role-resolution` event, produced rather than written
|
|
228
|
+
by hand.
|
|
229
|
+
|
|
230
|
+
The command derives these fields from the accepted launch, and `recordBase`
|
|
231
|
+
must omit them: `provider`, `dispatch_policy`, `dispatch_ceiling`,
|
|
232
|
+
`role_name`, `role_selector`, `model_selector`,
|
|
233
|
+
`model_selector_granularity`, `effort_selector`, `selection_source`,
|
|
234
|
+
`candidates_considered`, `selection_reason`, `selected_route`, `payload`, and
|
|
235
|
+
`configured_invocation_evidence`. `recordBase` supplies every other required
|
|
236
|
+
generic field: `request_id`, `caller`, `scope`, `objective`, `action`,
|
|
237
|
+
`role_class`, `dispatch_context`, `catalog_snapshot`, `authority`,
|
|
238
|
+
`deadline_seconds`, `retry_limit`, `launch_status`, `child_outcome`,
|
|
239
|
+
`runtime_confirmation`, `diagnostics`, and `continuation_events`. `action` is
|
|
240
|
+
`implementation` or `fix` for the implementer and `review` for the reviewer.
|
|
241
|
+
|
|
242
|
+
Produce the event with the resolver itself:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
oat project dispatch canonical-role --role <oat-phase-implementer|oat-reviewer> \
|
|
246
|
+
--request-id <recordBase.request_id> --skill-dir <loaded oat-project-implement dir> --json
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
`--skill-dir` is required because the loaded tier is derived from it; the user
|
|
250
|
+
tier is `$HOME/.agents` and the project tier is `<repo>/.agents`. The command
|
|
251
|
+
is read-only. Its event carries `kind: canonical-role-resolution`, `requestId`
|
|
252
|
+
equal to `recordBase.request_id`, `source: canonical-role-resolver`, and
|
|
253
|
+
`evidence`. Resolved evidence has `dependency`, `canonicalRole`, `tier`,
|
|
254
|
+
`validation` (`direct-canonical` or `exact-canonical-symlink`),
|
|
255
|
+
`canonicalPath`, `selectedPath`, `roleVersion`, `contentDigest`, and
|
|
256
|
+
`candidateMisses`. Paths use the redacted form
|
|
257
|
+
`<loaded|user|project>/agents/<name>.md`, never an absolute or `<repo>` path,
|
|
258
|
+
and `contentDigest` is `sha256:<64 lowercase hex>` of the canonical role file.
|
|
259
|
+
Missing evidence has `status: missing`, the tier misses, and `recovery`
|
|
260
|
+
commands; it validates, but a fallback claim requires resolved evidence.
|
|
261
|
+
|
|
262
|
+
One run reports every violation it can find, one `stage path: message` line
|
|
263
|
+
each, where `stage` is `claudeLaunch`, `recordBase`, or `event`. The
|
|
264
|
+
`recordBase` cross-field rules run even when a required field is missing. A
|
|
265
|
+
check that needs a value that failed to parse is skipped and named on a final
|
|
266
|
+
line: the launch consistency checks when the resolution is malformed, the
|
|
267
|
+
payload variant and model checks when the payload is malformed, and the
|
|
268
|
+
action/role check without a parsed resolution. Fix the reported violations and
|
|
269
|
+
run again. Secret-shaped values are scrubbed from the report as
|
|
270
|
+
`<redacted-secret>`, and absolute paths as `<redacted-path>`.
|
|
271
|
+
|
|
272
|
+
[`managed-claude-example.json`](managed-claude-example.json) holds one complete
|
|
273
|
+
input per role and validates as published. It is built from fixture agents
|
|
274
|
+
rather than the shipped roles, so its definition body, role version, and
|
|
275
|
+
content digest are illustrative. To regenerate it, run `dispatch-ceiling
|
|
276
|
+
resolve` for each role, materialize each definition from a fixture agent with
|
|
277
|
+
the Claude materializer that `oat sync` uses, and run `canonical-role` against
|
|
278
|
+
fixture role files; the CLI test that pins the example must still pass. The
|
|
279
|
+
published events come from a fixture home whose `.agents/agents/` holds both
|
|
280
|
+
roles and whose `.agents/skills/oat-project-implement/` is the `--skill-dir`,
|
|
281
|
+
so the loaded root is that home's `.agents`: expect `tier: loaded`,
|
|
282
|
+
`selectedPath: <loaded>/agents/<role>.md`, and
|
|
283
|
+
`canonicalPath: <user>/agents/<role>.md`. Another layout yields different but
|
|
284
|
+
equally valid tier labels.
|
|
285
|
+
|
|
211
286
|
## Recon Wave
|
|
212
287
|
|
|
213
288
|
```yaml
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Bash, Glob, Grep, AskUserQuestion
|
|
8
8
|
metadata:
|
|
9
|
-
version: 2.0.
|
|
9
|
+
version: 2.0.2
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# OAT Doctor
|
|
@@ -81,15 +81,15 @@ Run the seven commands below and the four file checks. Every command call is pro
|
|
|
81
81
|
|
|
82
82
|
A command has **failed** only when its stdout does not parse as JSON, or the process is killed or times out. A non-zero exit with parseable JSON is a findings result: `oat doctor` and `oat pjm doctor` both exit 1 whenever any check warns, which is the normal state of a healthy repository. A failed command becomes one `warning` finding for its area whose summary names the command and quotes the first line of stderr; the sweep continues.
|
|
83
83
|
|
|
84
|
-
| # | Command | Projection
|
|
85
|
-
| --- | --------------------------------------- |
|
|
86
|
-
| 1 | `oat doctor --json --scope all` | `.checks[] \| {name, status, message}` — drop `packEvidence` and `providerRefreshAdvice`
|
|
87
|
-
| 2 | `oat pjm doctor --json` | `.adoption` and `.checks[] \| {name, status, message}`
|
|
88
|
-
| 3 | `oat config dump --json` | `.shared`, `.local`, `.user` (the three surface objects)
|
|
89
|
-
| 4 | `oat config describe --json` | `.entries[] \| {key, group, file, scope, defaultValue, owningCommand, deprecated}`
|
|
90
|
-
| 5 | `oat instructions validate --json` | `.summary
|
|
91
|
-
| 6 | `oat tools list --json --scope all` | `.tools[] \| {name, pack, scope, status}`
|
|
92
|
-
| 7 | `oat tools outdated --json --scope all` | `.tools[] \| {name, version, bundledVersion, scope}`
|
|
84
|
+
| # | Command | Projection | Feeds |
|
|
85
|
+
| --- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
|
|
86
|
+
| 1 | `oat doctor --json --scope all` | `.checks[] \| {name, status, message}` — drop `packEvidence` and `providerRefreshAdvice` | config, tools, docs (by the check map below) |
|
|
87
|
+
| 2 | `oat pjm doctor --json` | `.adoption` and `.checks[] \| {name, status, message}` | PJM |
|
|
88
|
+
| 3 | `oat config dump --json` | `.shared`, `.local`, `.user` (the three surface objects) | config, docs |
|
|
89
|
+
| 4 | `oat config describe --json` | `.entries[] \| {key, group, file, scope, defaultValue, owningCommand, deprecated}` | config |
|
|
90
|
+
| 5 | `oat instructions validate --json` | `.strategy`, `.summary`, `.entries[] \| select(.status != "ok") \| {agentsPath, status, detail}`, and `.warnings[] \| {code, path, paths, wouldRemove, linkedBy, message}` (omitted when there are none) | agent instructions |
|
|
91
|
+
| 6 | `oat tools list --json --scope all` | `.tools[] \| {name, pack, scope, status}` | tools |
|
|
92
|
+
| 7 | `oat tools outdated --json --scope all` | `.tools[] \| {name, version, bundledVersion, scope}` | tools |
|
|
93
93
|
|
|
94
94
|
File checks (read-only):
|
|
95
95
|
|
|
@@ -123,9 +123,13 @@ Each finding is one line with an **area**, a **severity**, a one-line **summary*
|
|
|
123
123
|
|
|
124
124
|
**Agent instructions**
|
|
125
125
|
|
|
126
|
-
- An entry with status `
|
|
126
|
+
- An entry with status `content_mismatch` (the entry literal; the summary counter is spelled `contentMismatch`) → `error`; fix `oat instructions sync` (`--force` for a content mismatch the person confirms is stale).
|
|
127
|
+
- An entry with status `missing` → `error` only when a shim strategy is configured (`.strategy` is `pointer`, `symlink`, or `copy`); fix `oat instructions sync`. Under `none`, the default, an AGENTS.md without a CLAUDE.md is correct and the CLI never reports it as `missing`.
|
|
128
|
+
- An entry with status `managed_shim` (strategy `none` only: a CLAUDE.md in the exact shape OAT writes) → `warning`; fix `oat instructions sync`, which removes it, unless `.warnings[]` holds a `claude_md_blocks_shim_removal` item: then sync removes nothing, so report that item instead of sending the person to sync. An entry with status `unmanaged` (a hand-written or modified CLAUDE.md that sync keeps, or one an AGENTS.md links to) is not a finding of its own; the leftover warning below covers it, including the link caveat through `linkedBy`.
|
|
129
|
+
- Each `.warnings[]` item with code `claude_md_hides_agents_md` → `warning`; the summary names its `path`: while that `CLAUDE.md`, `.claude/CLAUDE.md`, or `CLAUDE.local.md` exists, Claude Code's default `agents-md` mode ignores every AGENTS.md in the project (for a file below the root: in sessions started in its directory or below). Offer exactly the two fixes the CLI names: the person removes the file (the doctor never deletes it), or `oat config set instructions.claude.shims pointer` (or `symlink` / `copy`) followed by `oat instructions sync` to add shims back. When the item's `linkedBy` is non-empty, the file holds the only copy of the instructions for those AGENTS.md links: the first fix becomes "the person replaces each linking AGENTS.md with the file's content first, then removes the file", naming the `linkedBy` paths, and never offer plain removal for it. Skip an item whose `path` is in a `claude_md_blocks_shim_removal` item's `wouldRemove`: that item already names the file, and removing one kept file by hand recreates the mix the block exists to prevent.
|
|
130
|
+
- A `.warnings[]` item with code `claude_md_blocks_shim_removal` → `warning`: removal under `none` is all or nothing, so while any file in its `paths` (a `CLAUDE.md`, `.claude/CLAUDE.md`, or `CLAUDE.local.md` with content that is not an OAT shim) exists, `oat instructions sync` removes none of the shims in its `wouldRemove`. The summary names both lists. Offer the fixes the CLI names: the person removes each file in `paths` or moves its content into an AGENTS.md, then reruns `oat instructions sync`; or `oat config set instructions.claude.shims` to `pointer`, `symlink`, or `copy` to keep CLAUDE.md files. Its `linkedBy` maps each file in `paths` to the AGENTS.md links that reach it: for a file with a non-empty list, the first fix becomes "the person replaces each linking AGENTS.md with the file's content first, then removes the file", naming those links, and never offer plain removal for it. While this item exists, offer no removal for any path in its `wouldRemove`. The doctor never deletes or edits the files.
|
|
127
131
|
- An entry with status `stray` → `warning`; fix `oat instructions sync` after the person decides whether the stray file should exist.
|
|
128
|
-
- A CLI-written heading absent while its capability is present → `warning`: no `## Tool Packs` while any pack is installed at project scope (fix `oat tools
|
|
132
|
+
- A CLI-written heading absent while its capability is present → `warning`: no `## Tool Packs` while any pack is installed at project scope (fix `oat tools guidance`, which prints the managed `OAT tools` block for the installed packs without installing, upgrading, or writing anything, for the person to add to `AGENTS.md`); no `### Project Management` or `### Decision Records` while PJM adoption is `declared` (fix `oat pjm init`, which appends the absent guidance blocks; a block that exists but differs gets a printed manual patch); no `## Documentation` while a docs surface exists (fix: `oat-docs-bootstrap`).
|
|
129
133
|
- Content quality beyond presence is not judged here; route to `oat-agent-instructions-analyze`.
|
|
130
134
|
|
|
131
135
|
**Docs**
|
|
@@ -221,7 +225,7 @@ State the adoption state (`declared`, `inferred-legacy`, `partial-initialization
|
|
|
221
225
|
|
|
222
226
|
#### Agent instructions dive
|
|
223
227
|
|
|
224
|
-
Explain the sync strategy in use (`oat instructions validate --json` `.
|
|
228
|
+
Explain the sync strategy in use (`oat instructions validate --json` `.strategy`: `none`, the default, keeps no CLAUDE.md because Claude Code reads AGENTS.md itself; `pointer`, `symlink`, and `copy` keep a shim beside each AGENTS.md) and each non-`ok` entry and leftover-CLAUDE.md warning with its path. Explain each missing heading: what the CLI writes there and why an agent needs it (`cli-utilities/bootstrap.md` for `## Tool Packs`; `cli-utilities/backlog-lifecycle.md` § Adoption comes first for the PJM sections). Offer `oat instructions sync`, `oat tools guidance` (read-only: prints the `OAT tools` block to add), or `oat pjm init` (appends absent PJM blocks) as the finding names; for wording and coverage beyond presence, hand off to `oat-agent-instructions-analyze` then `oat-agent-instructions-apply`.
|
|
225
229
|
|
|
226
230
|
#### Docs dive
|
|
227
231
|
|
|
@@ -274,7 +274,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
|
|
|
274
274
|
| `oat-dispatch-subagents/references/provider-claude.md` | `fbe3a21e9533 -> NG` |
|
|
275
275
|
| `oat-dispatch-subagents/references/provider-codex.md` | `95b0f82018c7 -> NG` |
|
|
276
276
|
| `oat-dispatch-subagents/references/provider-cursor.md` | `f781555295a9 -> NG`; `55ccfef14fd6 -> NG` |
|
|
277
|
-
| `oat-dispatch-subagents/references/record-schema.md` | `78f8069274a8 -> NG`; `1c9a84c4d1e0 -> NG`; `2a63da6e3a96 -> NG`; `30762d53b043 -> NG`
|
|
277
|
+
| `oat-dispatch-subagents/references/record-schema.md` | `78f8069274a8 -> NG`; `1c9a84c4d1e0 -> NG`; `2a63da6e3a96 -> NG`; `30762d53b043 -> NG`; `66bc2f0d4fda -> NG` |
|
|
278
278
|
| `oat-project-dispatch-subagents/SKILL.md` | `eca03ad1ca12 -> PDISPATCH-01`; `59fbcdc79cea -> PDISPATCH-01` |
|
|
279
279
|
| `oat-project-plan/SKILL.md` | `f99e44b39932 -> PLAN-12`; `7e6a9854504b -> NG` |
|
|
280
280
|
| `oat-project-complete/SKILL.md` | `0177956707aa -> NG`; `8305b5bb65ef -> 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` |
|