@open-agent-toolkit/cli 0.3.9 → 0.3.11
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 +2 -1
- package/assets/bundle-metadata.json +1 -1
- package/assets/config/dispatch-matrix-recommendation.json +6 -6
- package/assets/docs/cli-utilities/configuration.md +12 -8
- package/assets/docs/cli-utilities/meta.json +13 -0
- package/assets/docs/cli-utilities/tool-packs.md +8 -2
- package/assets/docs/cli-utilities/workflow-gates.md +14 -1
- package/assets/docs/contributing/code.md +8 -2
- package/assets/docs/contributing/documentation.md +7 -1
- package/assets/docs/contributing/meta.json +15 -0
- package/assets/docs/contributing/updating-model-guidance.md +34 -6
- package/assets/docs/contributing/verifying-cursor-pins.md +38 -9
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +14 -5
- package/assets/docs/docs-tooling/commands.md +26 -8
- package/assets/docs/docs-tooling/meta.json +4 -0
- package/assets/docs/docs-tooling/workflows.md +2 -2
- package/assets/docs/guide/meta.json +4 -0
- package/assets/docs/meta.json +14 -0
- package/assets/docs/provider-sync/instruction-sync.md +8 -0
- package/assets/docs/provider-sync/meta.json +11 -0
- package/assets/docs/provider-sync/providers.md +4 -4
- package/assets/docs/provider-sync/scope-and-surface.md +3 -4
- package/assets/docs/reference/cli-reference.md +5 -2
- package/assets/docs/reference/docs-index-contract.md +22 -6
- package/assets/docs/reference/file-locations.md +7 -2
- package/assets/docs/reference/index.md +1 -1
- package/assets/docs/reference/meta.json +10 -0
- package/assets/docs/reference/troubleshooting.md +41 -6
- package/assets/docs/workflows/ideas/meta.json +4 -0
- package/assets/docs/workflows/meta.json +4 -0
- package/assets/docs/workflows/projects/cursor-cloud.md +8 -3
- package/assets/docs/workflows/projects/dispatch-ceiling.md +21 -14
- package/assets/docs/workflows/projects/evidence-layers.md +6 -8
- package/assets/docs/workflows/projects/implementation-execution.md +34 -5
- package/assets/docs/workflows/projects/lifecycle.md +7 -1
- package/assets/docs/workflows/projects/meta.json +25 -0
- package/assets/docs/workflows/projects/orchestration-model.md +5 -6
- package/assets/docs/workflows/skills/meta.json +10 -0
- package/assets/docs/workflows/skills/recon.md +28 -3
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-cursor-cloud-projects/SKILL.md +30 -16
- package/assets/skills/oat-dispatch-subagents/SKILL.md +4 -12
- package/assets/skills/oat-dispatch-subagents/references/managed-claude-example.json +1 -1
- package/assets/skills/oat-dispatch-subagents/references/provider-codex.md +51 -0
- package/assets/skills/oat-dispatch-subagents/references/provider-cursor.md +5 -2
- package/assets/skills/oat-dispatch-subagents/references/record-schema.md +8 -7
- package/assets/skills/oat-docs-analyze/SKILL.md +28 -3
- package/assets/skills/oat-docs-apply/SKILL.md +3 -3
- package/assets/skills/oat-docs-authoring/SKILL.md +1 -1
- package/assets/skills/oat-docs-authoring/references/oat-fumadocs-contract.md +5 -2
- package/assets/skills/oat-docs-bootstrap/SKILL.md +4 -3
- package/assets/skills/oat-docs-bootstrap/assets/AGENTS.md.template +3 -3
- package/assets/skills/oat-pjm-decision/SKILL.md +3 -2
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +4 -4
- package/assets/skills/oat-project-complete/SKILL.md +47 -2
- package/assets/skills/oat-project-design/SKILL.md +10 -6
- package/assets/skills/oat-project-discover/SKILL.md +3 -3
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +3 -10
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +135 -3
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +8 -10
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +4 -4
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +1 -1
- package/assets/skills/oat-project-import-plan/SKILL.md +3 -3
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +4 -4
- package/assets/skills/oat-project-new/SKILL.md +3 -3
- package/assets/skills/oat-project-next/SKILL.md +50 -7
- package/assets/skills/oat-project-plan/SKILL.md +4 -4
- package/assets/skills/oat-project-plan-writing/SKILL.md +4 -4
- package/assets/skills/oat-project-pr-final/SKILL.md +11 -1
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +4 -4
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
- package/assets/skills/oat-project-quick-start/SKILL.md +12 -8
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +4 -4
- package/assets/skills/oat-project-retro/SKILL.md +6 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +2 -2
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +2 -2
- package/assets/skills/oat-project-spec/SKILL.md +3 -3
- package/assets/skills/oat-project-summary/SKILL.md +22 -3
- package/assets/skills/oat-repo-improve/SKILL.md +2 -2
- package/assets/skills/recon/SKILL.md +24 -3
- package/assets/skills/recon/references/packet-contract.md +36 -6
- package/assets/skills/recon/references/profiles.md +3 -0
- package/assets/skills/recon/references/worker-contract.md +16 -3
- package/assets/skills/recon/scripts/create-review-brief.mjs +17 -86
- package/assets/skills/recon/scripts/lib/contracts.mjs +158 -41
- package/assets/skills/recon/scripts/lib/review-binding.mjs +123 -0
- package/assets/skills/recon/scripts/lib/routing.mjs +5 -2
- package/assets/skills/recon/scripts/reconcile-ledger.mjs +18 -7
- package/assets/skills/recon/scripts/render-packet.mjs +93 -1
- package/assets/skills/recon/scripts/validate-packet.mjs +119 -88
- package/assets/skills/subagent-orchestration/SKILL.md +1 -1
- package/assets/skills/subagent-orchestration/references/evidence-and-refresh.md +20 -8
- package/assets/skills/subagent-orchestration/references/provider-claude.md +25 -12
- package/assets/skills/subagent-orchestration/references/provider-codex.md +27 -18
- package/assets/skills/subagent-orchestration/references/provider-cursor.md +40 -10
- package/assets/templates/state.md +1 -0
- package/dist/commands/backlog/new.d.ts +2 -2
- package/dist/commands/backlog/new.d.ts.map +1 -1
- package/dist/commands/backlog/new.js +2 -2
- package/dist/commands/decision/new.d.ts +2 -2
- package/dist/commands/decision/new.d.ts.map +1 -1
- package/dist/commands/decision/new.js +2 -2
- package/dist/commands/docs/nav/contents.d.ts +9 -0
- package/dist/commands/docs/nav/contents.d.ts.map +1 -1
- package/dist/commands/docs/nav/contents.js +7 -2
- package/dist/commands/docs/nav/fumadocs.d.ts +51 -0
- package/dist/commands/docs/nav/fumadocs.d.ts.map +1 -0
- package/dist/commands/docs/nav/fumadocs.js +301 -0
- package/dist/commands/docs/nav/sync.d.ts +31 -1
- package/dist/commands/docs/nav/sync.d.ts.map +1 -1
- package/dist/commands/docs/nav/sync.js +163 -6
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/instructions/instructions.utils.d.ts +19 -0
- package/dist/commands/instructions/instructions.utils.d.ts.map +1 -1
- package/dist/commands/instructions/instructions.utils.js +89 -17
- package/dist/commands/instructions/sync/sync.d.ts.map +1 -1
- package/dist/commands/instructions/sync/sync.js +49 -2
- package/dist/commands/pjm/init.d.ts.map +1 -1
- package/dist/commands/pjm/init.js +2 -2
- package/dist/commands/project/closeout-check/closeout-invariant.d.ts +97 -0
- package/dist/commands/project/closeout-check/closeout-invariant.d.ts.map +1 -0
- package/dist/commands/project/closeout-check/closeout-invariant.js +301 -0
- package/dist/commands/project/closeout-check/index.d.ts +38 -0
- package/dist/commands/project/closeout-check/index.d.ts.map +1 -0
- package/dist/commands/project/closeout-check/index.js +117 -0
- package/dist/commands/project/complete-state/index.d.ts +4 -0
- package/dist/commands/project/complete-state/index.d.ts.map +1 -1
- package/dist/commands/project/complete-state/index.js +11 -13
- package/dist/commands/project/dispatch/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch/index.js +6 -30
- package/dist/commands/project/dispatch/record.d.ts +9 -18
- package/dist/commands/project/dispatch/record.d.ts.map +1 -1
- package/dist/commands/project/dispatch/record.js +15 -212
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/new/scaffold.d.ts +0 -1
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +19 -20
- package/dist/commands/project/promote/promote.d.ts +2 -2
- package/dist/commands/project/promote/promote.d.ts.map +1 -1
- package/dist/commands/project/promote/promote.js +13 -11
- package/dist/commands/shared/frontmatter.d.ts +21 -0
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +70 -4
- package/dist/commands/shared/template-source.d.ts +29 -0
- package/dist/commands/shared/template-source.d.ts.map +1 -0
- package/dist/commands/{pjm → shared}/template-source.js +24 -7
- package/dist/commands/state/generate.js +2 -2
- package/dist/commands/template/index.d.ts +10 -0
- package/dist/commands/template/index.d.ts.map +1 -0
- package/dist/commands/template/index.js +87 -0
- package/dist/commands/template/resolve.d.ts +31 -0
- package/dist/commands/template/resolve.d.ts.map +1 -0
- package/dist/commands/template/resolve.js +86 -0
- package/dist/fs/io.d.ts +0 -41
- package/dist/fs/io.d.ts.map +1 -1
- package/dist/fs/io.js +2 -414
- package/dist/providers/claude/dispatch-envelope.d.ts.map +1 -1
- package/dist/providers/claude/dispatch-envelope.js +1 -0
- package/dist/providers/claude/targets.d.ts +1 -0
- package/dist/providers/claude/targets.d.ts.map +1 -1
- package/dist/providers/claude/targets.js +3 -1
- package/dist/providers/codex/codec/shared.d.ts +3 -0
- package/dist/providers/codex/codec/shared.d.ts.map +1 -1
- package/dist/providers/codex/codec/shared.js +4 -0
- package/dist/providers/cursor/codec/catalog.d.ts +2 -2
- package/dist/providers/cursor/codec/catalog.d.ts.map +1 -1
- package/dist/providers/cursor/codec/catalog.js +45 -0
- package/dist/providers/cursor/codec/mapping-validation.d.ts +4 -0
- package/dist/providers/cursor/codec/mapping-validation.d.ts.map +1 -0
- package/dist/providers/cursor/codec/mapping-validation.js +25 -0
- package/dist/providers/cursor/codec/materialize.d.ts.map +1 -1
- package/dist/providers/cursor/codec/materialize.js +2 -11
- package/dist/providers/cursor/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/cursor/codec/sync-extension.js +2 -11
- package/dist/providers/identity/absolute-paths.d.ts +4 -13
- package/dist/providers/identity/absolute-paths.d.ts.map +1 -1
- package/dist/providers/identity/absolute-paths.js +4 -17
- package/dist/providers/identity/generic-dispatch-record.d.ts +1 -1
- package/dist/providers/identity/generic-dispatch-record.js +2 -2
- package/dist/providers/identity/oat-dispatch-record.d.ts +4 -357
- package/dist/providers/identity/oat-dispatch-record.d.ts.map +1 -1
- package/dist/providers/identity/oat-dispatch-record.js +4 -236
- package/dist/release/public-package-contract.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +12 -4
- package/dist/validation/skills.d.ts.map +1 -1
- package/dist/validation/skills.js +32 -6
- package/package.json +2 -2
- package/dist/commands/pjm/template-source.d.ts +0 -14
- package/dist/commands/pjm/template-source.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -62,7 +62,8 @@ Use these commands when you want structured runtime/project state out of the CLI
|
|
|
62
62
|
- `oat config dump --json` - emit merged OAT config with per-key source attribution
|
|
63
63
|
- `oat project status --json` - emit the active project's full parsed control-plane state
|
|
64
64
|
- `oat project list --json` - emit summary state for tracked projects under the configured projects root
|
|
65
|
-
- `oat project
|
|
65
|
+
- `oat project closeout-check <project-path> --json` - report whether a configured, autonomous, or lite closeout's `oat_post_implement_sequence` snapshot permits terminal completion, and which step or approval owns it next (read-only)
|
|
66
|
+
- `oat project complete-state <project-path>` - emit the canonical completed lifecycle shape into a tracked project's `state.md`; refuses the same incomplete closeout `closeout-check` reports
|
|
66
67
|
|
|
67
68
|
## Requirements
|
|
68
69
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2026-
|
|
2
|
+
"version": "2026-10-01.1",
|
|
3
3
|
"providers": {
|
|
4
4
|
"codex": {
|
|
5
5
|
"economy": {
|
|
@@ -39,17 +39,17 @@
|
|
|
39
39
|
"candidates": [
|
|
40
40
|
{
|
|
41
41
|
"harness": "codex",
|
|
42
|
-
"model": "gpt-6-sol",
|
|
42
|
+
"model": "gpt-6.1-sol",
|
|
43
43
|
"effort": "low"
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"harness": "codex",
|
|
47
|
-
"model": "gpt-6-sol",
|
|
47
|
+
"model": "gpt-6.1-sol",
|
|
48
48
|
"effort": "medium"
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"harness": "codex",
|
|
52
|
-
"model": "gpt-6-sol",
|
|
52
|
+
"model": "gpt-6.1-sol",
|
|
53
53
|
"effort": "high"
|
|
54
54
|
}
|
|
55
55
|
]
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"candidates": [
|
|
59
59
|
{
|
|
60
60
|
"harness": "codex",
|
|
61
|
-
"model": "gpt-6-sol",
|
|
61
|
+
"model": "gpt-6.1-sol",
|
|
62
62
|
"effort": "xhigh"
|
|
63
63
|
},
|
|
64
64
|
{
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"haiku",
|
|
81
81
|
{
|
|
82
82
|
"harness": "claude",
|
|
83
|
-
"model": "claude-sonnet-5",
|
|
83
|
+
"model": "claude-sonnet-5-5",
|
|
84
84
|
"effort": "medium"
|
|
85
85
|
}
|
|
86
86
|
]
|
|
@@ -497,11 +497,11 @@ The example above is illustrative rather than a copy of the bundled ladder; its
|
|
|
497
497
|
tiers are trimmed for readability.
|
|
498
498
|
|
|
499
499
|
The bundled recommendation covers 11 Codex model/effort combinations: GPT-6
|
|
500
|
-
Luna at `low` through `max`, GPT-6 Sol at `low` through `high` plus `xhigh`,
|
|
500
|
+
Luna at `low` through `max`, GPT-6.1 Sol at `low` through `high` plus `xhigh`,
|
|
501
501
|
and GPT-6 Astra at `high` and `xhigh`.
|
|
502
502
|
Claude covers `haiku`, plus explicit Sonnet, Opus, and Fable
|
|
503
503
|
model/effort pairs. Effort-pinned Claude cells require a recognized versioned
|
|
504
|
-
model ID (`fable-5-1`, `fable-5`, `opus-5-5`, `sonnet-5`,
|
|
504
|
+
model ID (`fable-5-1`, `fable-5`, `opus-5-5`, `sonnet-5-5`, `sonnet-5`,
|
|
505
505
|
`opus-4-7`, `opus-4-6`, or `sonnet-4-6`) or a matching
|
|
506
506
|
`ANTHROPIC_DEFAULT_<FAMILY>_MODEL` pin. A custom provider pin must declare
|
|
507
507
|
matching capability through `<PIN>_SUPPORTED_CAPABILITIES`: `effort` enables
|
|
@@ -513,14 +513,17 @@ Model-only Claude aliases remain compatible through the per-call model argument
|
|
|
513
513
|
and report `effortAxis: not-applicable` because the Agent API exposes no
|
|
514
514
|
per-call effort argument. The recommendation carries 16 Cursor candidates
|
|
515
515
|
across four tiers, drawn from a materialization
|
|
516
|
-
catalogue with
|
|
517
|
-
(Sonnet, Opus 5.5, Fable 5, and Fable 5.1), GPT, and Grok 4.5 and 4.6; the two figures differ because some
|
|
516
|
+
catalogue with 31 catalogued multi-family flat IDs spanning Composer, Claude
|
|
517
|
+
(Sonnet 5, Sonnet 5.5, Opus 5.5, Fable 5, and Fable 5.1), GPT, and Grok 4.5 and 4.6; the two figures differ because some
|
|
518
518
|
approved mappings stay materializable without being recommended. An explicit
|
|
519
|
-
mapping connects each flat ladder ID to
|
|
520
|
-
|
|
519
|
+
mapping connects each flat ladder ID to its verified frontmatter model.
|
|
520
|
+
Existing mappings keep their bracket selectors; Sonnet 5.5 uses per-pin
|
|
521
|
+
verified exact IDs. The 31 mappings produce 62 pinned role variants.
|
|
522
|
+
Configuration and skills never derive selectors or admit arbitrary flat IDs.
|
|
521
523
|
|
|
522
524
|
The corresponding pinned Codex variant catalogue includes
|
|
523
|
-
`gpt-
|
|
525
|
+
`gpt-6-1-sol-high` and `gpt-6-1-sol-max`, alongside compatible older targets
|
|
526
|
+
such as `gpt-5.6-luna-high`, `gpt-5.6-terra-xhigh`, `gpt-5.6-sol-high`, and
|
|
524
527
|
`gpt-5.6-sol-max`. Configuration selects from that materialized catalogue; it
|
|
525
528
|
does not construct an unregistered role during dispatch.
|
|
526
529
|
|
|
@@ -664,7 +667,8 @@ the exact registered role, pinned child, or resolver-returned model argument.
|
|
|
664
667
|
|
|
665
668
|
`oat doctor` compares configured Cursor flat IDs with the current Cursor
|
|
666
669
|
catalogue and reports availability drift. This check is diagnostic: catalogue
|
|
667
|
-
presence does not prove that a
|
|
670
|
+
presence does not prove that a definition pin was honored, whether its
|
|
671
|
+
selector is bracket-form or an approved exact ID.
|
|
668
672
|
|
|
669
673
|
Each shipped mapping has mapping-specific native-launch evidence, but Cursor
|
|
670
674
|
can silently fallback when account, plan, or administration constraints prevent
|
|
@@ -528,14 +528,20 @@ repository that adopted PJM with a user-scope pack is diagnosed correctly.
|
|
|
528
528
|
|
|
529
529
|
### Template precedence
|
|
530
530
|
|
|
531
|
-
PJM templates resolve through three tiers, first match
|
|
531
|
+
Project lifecycle and PJM templates resolve through three tiers, first match
|
|
532
|
+
wins (idea templates instead follow the ideas scope the ideas skills select):
|
|
532
533
|
|
|
533
534
|
1. **Repository** — `.oat/templates/<name>` in this repo. An existing repository
|
|
534
535
|
template is an owner override and is never rewritten by pack updates.
|
|
535
536
|
2. **User** — `~/.oat/templates/<name>`, the managed default that
|
|
536
|
-
`oat tools update --pack
|
|
537
|
+
`oat tools update --pack <pack> --scope user` keeps current (`workflows`
|
|
538
|
+
for project lifecycle templates, `project-management` for PJM templates).
|
|
537
539
|
3. **Bundle** — the templates shipped inside the installed CLI.
|
|
538
540
|
|
|
541
|
+
`oat template resolve <name>` reports which tier wins, and lifecycle skills
|
|
542
|
+
copy their templates with `oat template resolve <name> --output <path>`, so a
|
|
543
|
+
user-scope-only install needs no repository `.oat/templates/` directory.
|
|
544
|
+
|
|
539
545
|
Delete a repository template to fall back to the managed user default. If a
|
|
540
546
|
template is missing from all three tiers, the command errors rather than
|
|
541
547
|
inventing content.
|
|
@@ -194,6 +194,19 @@ bookkeeping. Implementation, test, skill, template, workflow configuration, or
|
|
|
194
194
|
unknown changed paths make the result stale and require a current final review
|
|
195
195
|
and a new gate generation.
|
|
196
196
|
|
|
197
|
+
An operator can waive specific stale-making descendants, such as a test-only
|
|
198
|
+
fix, instead of rerunning the gate. The waiver is an append-only entry in
|
|
199
|
+
`oat_implement_exit_gate.waivers` recording who waived, the reason, the covered
|
|
200
|
+
commit range, the effective-delta fingerprint at the range end, and a UTC
|
|
201
|
+
timestamp; it never rewrites earlier provenance. Waivers are operator-only:
|
|
202
|
+
agents never infer or self-issue one, and an `OAT_AUTONOMOUS=1` run refuses to
|
|
203
|
+
write one. A later substantive change after the covered range makes the
|
|
204
|
+
generation stale again, and a malformed waiver fails closed. An interactive
|
|
205
|
+
implement run offers the waiver before it persists `stale`; an operator can
|
|
206
|
+
also give it when resuming implementation after `oat-project-next` reports
|
|
207
|
+
stale state. See
|
|
208
|
+
[Implementation Execution](../workflows/projects/implementation-execution.md).
|
|
209
|
+
|
|
197
210
|
Only an artifact with `oat_review_invocation: gate` and the matching
|
|
198
211
|
`oat_gate_run_id` can satisfy configured-gate provenance. A normal final
|
|
199
212
|
review, phase review, or manually produced independent review cannot substitute
|
|
@@ -241,7 +254,7 @@ line. The reviewer's resolver stamp describes the project reviewer policy, so
|
|
|
241
254
|
gate-originated artifacts label it as the policy view:
|
|
242
255
|
|
|
243
256
|
```markdown
|
|
244
|
-
**Dispatch audit (policy view):** `Dispatch: scope=p01 action=review role=reviewer ... target=oat-reviewer-gpt-6-sol-high`
|
|
257
|
+
**Dispatch audit (policy view):** `Dispatch: scope=p01 action=review role=reviewer ... target=oat-reviewer-gpt-6-1-sol-high`
|
|
245
258
|
```
|
|
246
259
|
|
|
247
260
|
The gate reads reviewer stamps (`action=review role=reviewer`) from audit lines
|
|
@@ -70,8 +70,14 @@ local `origin/main` tracking ref (falling back to a local `main` branch when no
|
|
|
70
70
|
release fails locally the same way it fails in CI. Fetch first (`git fetch
|
|
71
71
|
origin`) so that ref is current; a
|
|
72
72
|
checkout with neither `origin/main` nor `main` skips the whole gate (CI uses
|
|
73
|
-
`fetch-depth: 0`). Test
|
|
74
|
-
|
|
73
|
+
`fetch-depth: 0`). Test-only changes do not require the bump
|
|
74
|
+
(`DR-260927-test-only-paths-skip`): each public package's
|
|
75
|
+
`versionPolicyIgnorePatterns` in
|
|
76
|
+
`packages/cli/src/release/public-package-contract.ts` lists exactly the test
|
|
77
|
+
paths its `tsconfig.json` leaves out of `dist` (for `packages/cli`,
|
|
78
|
+
`src/**/*.test.ts` and `src/**/__tests__/**`), and a contract test fails if
|
|
79
|
+
the two diverge. A test helper or fixture that compiles into `dist` still
|
|
80
|
+
counts as a publishable change.
|
|
75
81
|
|
|
76
82
|
CI runs neither `pnpm lint` nor `pnpm format`. `pnpm check` covers the
|
|
77
83
|
formatting of `.agents/skills/**`, `apps/oat-docs/docs`, and `tools/smoke`
|
|
@@ -62,7 +62,13 @@ Documentation should ship with the code it explains. This page covers the core d
|
|
|
62
62
|
pnpm -w run cli:source -- docs generate-index --docs-dir apps/oat-docs/docs --output apps/oat-docs/index.md
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
-
|
|
65
|
+
- Then refresh the sidebar navigation. `oat docs nav sync` rewrites the committed `meta.json` files from the `## Contents` maps and reports any page no map lists; list the page in its directory's `## Contents` rather than editing `meta.json`. The build runs the read-only `--check` form and fails while the navigation is stale or a page is unlisted:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pnpm -w run cli:source -- docs nav sync --target-dir apps/oat-docs
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- In MkDocs apps, the same `oat docs nav sync` command refreshes the `nav:` block in `mkdocs.yml` instead.
|
|
66
72
|
- Use [Markdown Features](markdown-features.md) for supported syntax and examples.
|
|
67
73
|
|
|
68
74
|
## Agent guidance
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Contributing",
|
|
3
|
+
"pages": [
|
|
4
|
+
"code",
|
|
5
|
+
"documentation",
|
|
6
|
+
"markdown-features",
|
|
7
|
+
"skills",
|
|
8
|
+
"design-principles",
|
|
9
|
+
"commit-conventions",
|
|
10
|
+
"hooks-and-safety",
|
|
11
|
+
"smoke-testing",
|
|
12
|
+
"updating-model-guidance",
|
|
13
|
+
"verifying-cursor-pins"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -26,7 +26,9 @@ they choose to adopt a newer recommendation.
|
|
|
26
26
|
|
|
27
27
|
A model can remain supported for a user's explicit configuration without being
|
|
28
28
|
recommended by the new ladder. For example, this refresh keeps GPT-5.6 Codex
|
|
29
|
-
and Cursor targets available while preferring GPT-6
|
|
29
|
+
and Cursor targets available while preferring GPT-6.1 Sol and GPT-6 Luna in
|
|
30
|
+
Codex. GPT-6 Sol remains supported for explicit compatibility configurations.
|
|
31
|
+
Claude Opus 4.8
|
|
30
32
|
and 5.0 have left current supported generations and recommendations; historical
|
|
31
33
|
probe records can still describe past behavior, clearly labeled as historical.
|
|
32
34
|
|
|
@@ -34,7 +36,11 @@ probe records can still describe past behavior, clearly labeled as historical.
|
|
|
34
36
|
|
|
35
37
|
Check the provider's official model documentation and the local runtime before
|
|
36
38
|
editing an ID or effort range. The [OpenAI model catalog](https://developers.openai.com/api/docs/models)
|
|
37
|
-
lists GPT-6 Astra, Sol, and Luna. The
|
|
39
|
+
lists GPT-6.1 Sol and GPT-6 Astra, Sol, and Luna. The
|
|
40
|
+
[GPT-6.1 Sol model page](https://developers.openai.com/api/docs/models/gpt-6.1-sol)
|
|
41
|
+
identifies `gpt-6.1-sol` and supports `low`, `medium`, `high`, `xhigh`, and
|
|
42
|
+
`max`; `none` and `minimal` are not supported efforts for this family. Direct
|
|
43
|
+
API tool calls require the Responses API. The
|
|
38
44
|
[Astra model page](https://developers.openai.com/api/docs/models/gpt-6-astra)
|
|
39
45
|
names `gpt-6-astra` and documents `low`, `medium`, `high`, `xhigh`, and `max`;
|
|
40
46
|
compare it with the installed Codex runtime model cache for the exact names and
|
|
@@ -42,7 +48,11 @@ local effort set. Catalog presence establishes support, not relative task
|
|
|
42
48
|
quality. The
|
|
43
49
|
[Anthropic Opus 5.5 documentation](https://www.anthropic.com/claude-opus-5-5)
|
|
44
50
|
names `claude-opus-5-5`; confirm a Claude Code invocation reports that exact
|
|
45
|
-
assistant model before admitting it to the Claude catalog.
|
|
51
|
+
assistant model before admitting it to the Claude catalog. The
|
|
52
|
+
[Sonnet 5.5 overview](https://platform.claude.com/docs/en/models/sonnet-5-5/overview)
|
|
53
|
+
and [effort reference](https://platform.claude.com/docs/en/build-with-claude/effort)
|
|
54
|
+
identify `claude-sonnet-5-5` and its five low-through-max efforts. Verify
|
|
55
|
+
Claude Code identity separately. Claude subagent
|
|
46
56
|
`model` and `effort` frontmatter select a per-agent route; see the
|
|
47
57
|
[Claude Code subagent fields](https://code.claude.com/docs/en/sub-agents).
|
|
48
58
|
An API model announcement alone does not prove a third-party harness supports
|
|
@@ -66,14 +76,32 @@ The positive Sonnet control resolved, while invalid family and effort controls
|
|
|
66
76
|
fell back to defaults. Five Opus 5.5 mappings are now approved for desktop
|
|
67
77
|
subagents; the CLI result alone does not establish that the same bracket syntax
|
|
68
78
|
works as a CLI top-level `--model` argument. Likewise, do not add GPT-6
|
|
69
|
-
Cursor targets until that runtime lists and verifies them.
|
|
79
|
+
or GPT-6.1 Cursor targets until that runtime lists and verifies them.
|
|
70
80
|
|
|
71
81
|
A 2026-09-25 desktop 3.21.18 probe added Grok 4.6 and Fable 5.1 mappings
|
|
72
82
|
and moved the bundled Cursor ladder to them. The same probe showed Grok 4.7
|
|
73
|
-
resolves only bare flat IDs, never bracket selectors
|
|
74
|
-
|
|
83
|
+
resolves only bare flat IDs, never bracket selectors. It still needs its own
|
|
84
|
+
approved registry entry and complete per-pin evidence before admission; see [Verifying Cursor Pins](verifying-cursor-pins.md). See [Dispatch Policy](../workflows/projects/dispatch-ceiling.md#cursor-evidence-authority)
|
|
75
85
|
for the distinction between catalog, configured mapping, and runtime identity.
|
|
76
86
|
|
|
87
|
+
The October 1 refresh migrates Codex Sol defaults and examples to
|
|
88
|
+
`gpt-6.1-sol` while preserving existing effort choices, including medium for
|
|
89
|
+
intelligent recon. Claude Economy moves to `claude-sonnet-5-5` medium by user
|
|
90
|
+
direction. GPT-6 Sol and Sonnet 5 remain explicitly supported. Cursor lists
|
|
91
|
+
Sonnet 5.5 flat IDs at low through max. Cursor 3.22.12 native probes matched
|
|
92
|
+
those exact IDs at start, Shell execution, and stop while every Sonnet 5.5
|
|
93
|
+
bracket pin fell back to the account default. The existing Opus low control
|
|
94
|
+
matched; unknown-family and Sonnet `ultra` exact-ID controls fell back. The
|
|
95
|
+
fixture summary and event records at
|
|
96
|
+
`packages/cli/src/providers/cursor/codec/__fixtures__/cursor-pin-probe-2026-10-01{,-events}.jsonl`
|
|
97
|
+
retain both rounds. Ship explicit, evidence-backed exact-ID mappings for that family;
|
|
98
|
+
keep existing bracket mappings. An exact-ID mapping requires the same per-pin
|
|
99
|
+
native evidence and controls as a bracket mapping. Do not enable generic
|
|
100
|
+
pass-through of CLI IDs. Cursor does not list GPT-6 Sol or
|
|
101
|
+
GPT-6.1 Sol in the observed catalog. Do not carry Codex model IDs into Cursor
|
|
102
|
+
configurations. These selector changes do not import a separate vault policy
|
|
103
|
+
refresh or claim newly measured task-performance gains.
|
|
104
|
+
|
|
77
105
|
## Change and Validate
|
|
78
106
|
|
|
79
107
|
1. Update the supported catalog for each verified runtime and its tests. Preserve
|
|
@@ -7,7 +7,8 @@ description: 'Runbook for probe-verifying a Cursor model pin before shipping it:
|
|
|
7
7
|
|
|
8
8
|
A Cursor model pin maps an OAT ladder model ID to the frontmatter selector that
|
|
9
9
|
materialized role files carry, for example `gpt-5.6-sol-medium` to
|
|
10
|
-
`gpt-5.6-sol[reasoning=medium]
|
|
10
|
+
`gpt-5.6-sol[reasoning=medium]`, or the verified exact ID
|
|
11
|
+
`claude-sonnet-5-5-medium`. Adding one to
|
|
11
12
|
`packages/cli/src/providers/cursor/codec/catalog.ts` requires evidence that
|
|
12
13
|
Cursor actually resolves that selector to the intended model.
|
|
13
14
|
|
|
@@ -81,10 +82,22 @@ flat IDs such as `grok-4.7-medium` resolved exactly. Two lessons follow:
|
|
|
81
82
|
control and probe non-default rungs. Here even `effort=low,fast=false`
|
|
82
83
|
landed on the high-fast default.
|
|
83
84
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
directory.
|
|
85
|
+
The 2026-10-01 revision of `DR-260718-explicit-cursor-pin-mapping` permits
|
|
86
|
+
verified exact-ID entries as well as bracket selectors. Grok 4.7 remains
|
|
87
|
+
outside the shipped catalog until its own entry is added and approved. The
|
|
88
|
+
redacted evidence is in the same fixtures directory.
|
|
89
|
+
|
|
90
|
+
The 2026-10-01 Sonnet 5.5 probe on Cursor 3.22.12 confirmed the same syntax
|
|
91
|
+
distinction: every `claude-sonnet-5-5[effort=...]` selector fell back to
|
|
92
|
+
`grok-4.7-high-fast`, but all five exact IDs
|
|
93
|
+
`claude-sonnet-5-5-low|medium|high|xhigh|max` resolved correctly. Both rounds
|
|
94
|
+
included a working Opus 5.5 low control and unknown-family and unsupported-effort
|
|
95
|
+
controls that fell back. The summary and 64 correlated native events are
|
|
96
|
+
retained beside the earlier fixtures.
|
|
97
|
+
|
|
98
|
+
[Cursor documents specific model IDs and bracket parameters](https://cursor.com/docs/subagents#model-configuration).
|
|
99
|
+
Choose a candidate from the live catalog, then probe its exact frontmatter
|
|
100
|
+
spelling. Documentation and catalog presence do not replace native evidence.
|
|
88
101
|
|
|
89
102
|
## Prerequisites
|
|
90
103
|
|
|
@@ -272,10 +285,19 @@ approved it:
|
|
|
272
285
|
|
|
273
286
|
```ts
|
|
274
287
|
approvedMapping(
|
|
275
|
-
'
|
|
276
|
-
'
|
|
277
|
-
'
|
|
278
|
-
{
|
|
288
|
+
'claude-sonnet-5-5-medium',
|
|
289
|
+
'claude-sonnet-5-5-medium',
|
|
290
|
+
'explicit-model-id',
|
|
291
|
+
{
|
|
292
|
+
probeName: 'zz-pin-probe-sonnet55-flat-medium',
|
|
293
|
+
probeRecord: {
|
|
294
|
+
submittedSelector: 'claude-sonnet-5-5-medium',
|
|
295
|
+
resolvedModel: 'claude-sonnet-5-5-medium',
|
|
296
|
+
verifiedAt: '2026-10-01',
|
|
297
|
+
evidencePath:
|
|
298
|
+
'packages/cli/src/providers/cursor/codec/__fixtures__/cursor-pin-probe-2026-10-01.jsonl',
|
|
299
|
+
},
|
|
300
|
+
},
|
|
279
301
|
),
|
|
280
302
|
```
|
|
281
303
|
|
|
@@ -287,6 +309,13 @@ than inheriting an approval that never covered the new selector.
|
|
|
287
309
|
Retain the raw payloads alongside the summary. They are the primary evidence;
|
|
288
310
|
the summary is an interpretation of them.
|
|
289
311
|
|
|
312
|
+
For an exact-ID mapping, use the `explicit-model-id` syntax family and a
|
|
313
|
+
mapping-specific probe record. The frontmatter selector must equal the ladder
|
|
314
|
+
ID, and the independently captured submitted selector and resolved model must
|
|
315
|
+
agree with both. Missing or mismatched evidence must fail materialization;
|
|
316
|
+
there is no generic model-ID pass-through. Preserve rejected selector results
|
|
317
|
+
and control observations alongside the successful rungs.
|
|
318
|
+
|
|
290
319
|
## Cleanup
|
|
291
320
|
|
|
292
321
|
Delete every temporary artifact:
|
|
@@ -143,15 +143,24 @@ Core rules:
|
|
|
143
143
|
- the `## Contents` section should map sibling pages and immediate child directories
|
|
144
144
|
- `## Contents` links should use `.md`-suffixed relative targets, including `subdir/index.md` for child directories
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
Regenerate navigation after adding or moving pages. In **MkDocs** apps this
|
|
147
|
+
rewrites the `nav:` block in `mkdocs.yml`; in **Fumadocs** apps it writes the
|
|
148
|
+
committed `meta.json` files and reports any page no `## Contents` map lists:
|
|
147
149
|
|
|
148
150
|
```bash
|
|
149
151
|
oat docs nav sync --target-dir apps/my-docs
|
|
150
152
|
```
|
|
151
153
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
run
|
|
154
|
+
Generated Fumadocs `meta.json` is strict: a page no `## Contents` map lists
|
|
155
|
+
stays out of the sidebar. The `prebuild` script that `oat docs init` scaffolds
|
|
156
|
+
for Fumadocs does not run the read-only check. To make builds fail on stale
|
|
157
|
+
navigation or an unlisted page, as `apps/oat-docs` does, append
|
|
158
|
+
`&& oat docs nav sync --check` to it; the script runs from the app directory,
|
|
159
|
+
which `--target-dir` defaults to.
|
|
160
|
+
|
|
161
|
+
**Fumadocs** apps also have an app-root docs index manifest, generated from
|
|
162
|
+
the Markdown file tree automatically via `predev`/`prebuild` hooks. You can
|
|
163
|
+
also run it manually:
|
|
155
164
|
|
|
156
165
|
```bash
|
|
157
166
|
oat docs generate-index --docs-dir docs
|
|
@@ -205,7 +214,7 @@ Important:
|
|
|
205
214
|
3. `oat docs init --app-name my-docs`
|
|
206
215
|
4. (optional) handle MkDocs migration as a separate workstream; use `oat docs migrate --docs-dir docs --config mkdocs.yml --apply` only for the syntax/frontmatter helper
|
|
207
216
|
5. Author docs with `index.md` + `## Contents`
|
|
208
|
-
6. `oat docs nav sync --target-dir apps/my-docs` (
|
|
217
|
+
6. `oat docs nav sync --target-dir apps/my-docs` (both frameworks), plus `oat docs generate-index` (Fumadocs)
|
|
209
218
|
7. `/oat-docs-analyze`
|
|
210
219
|
8. `/oat-docs-apply`
|
|
211
220
|
9. Repeat as the codebase changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Docs App Commands
|
|
3
|
-
description: 'Docs scaffolding CLI surface for Fumadocs/MkDocs, migration helpers, Fumadocs index generation, and
|
|
3
|
+
description: 'Docs scaffolding CLI surface for Fumadocs/MkDocs, migration helpers, Fumadocs index generation, and nav sync for both frameworks.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Docs App Commands
|
|
@@ -11,7 +11,7 @@ and **MkDocs Material**.
|
|
|
11
11
|
|
|
12
12
|
## Quick Look
|
|
13
13
|
|
|
14
|
-
- What it does: documents the docs-specific CLI surface for scaffolding apps, migrating markdown, generating Fumadocs app-root index manifests, and syncing MkDocs navigation.
|
|
14
|
+
- What it does: documents the docs-specific CLI surface for scaffolding apps, migrating markdown, generating Fumadocs app-root index manifests, and syncing MkDocs or Fumadocs navigation.
|
|
15
15
|
- When to use it: when you already know you are working on a docs surface and need the exact command-level behavior.
|
|
16
16
|
- Primary commands: `oat docs init`, `oat docs migrate`, `oat docs generate-index`, `oat docs nav sync`
|
|
17
17
|
|
|
@@ -22,7 +22,7 @@ and **MkDocs Material**.
|
|
|
22
22
|
| `oat docs init` | Scaffold a new docs app (Fumadocs or MkDocs). |
|
|
23
23
|
| `oat docs migrate` | Convert MkDocs admonitions to GFM callouts and inject frontmatter. |
|
|
24
24
|
| `oat docs generate-index` | Generate a Fumadocs app-root docs index manifest from the Markdown file tree. |
|
|
25
|
-
| `oat docs nav sync` | Regenerate
|
|
25
|
+
| `oat docs nav sync` | Regenerate `mkdocs.yml` nav or Fumadocs `meta.json` from `index.md` maps. |
|
|
26
26
|
| `oat docs analyze` | CLI entrypoint that points users to the `oat-docs-analyze` skill. |
|
|
27
27
|
| `oat docs apply` | CLI entrypoint that points users to the `oat-docs-apply` skill. |
|
|
28
28
|
|
|
@@ -30,7 +30,7 @@ and **MkDocs Material**.
|
|
|
30
30
|
|
|
31
31
|
Use the framework-specific generated-artifact command:
|
|
32
32
|
|
|
33
|
-
- Fumadocs apps run `fumadocs-mdx` and `oat docs generate-index`. In this repo, `predev` and `prebuild` regenerate `apps/oat-docs/index.md` from `apps/oat-docs/docs`.
|
|
33
|
+
- Fumadocs apps run `fumadocs-mdx` and `oat docs generate-index`. In this repo, `predev` and `prebuild` regenerate `apps/oat-docs/index.md` from `apps/oat-docs/docs`. Run `oat docs nav sync` yourself after structural changes to rewrite the committed `meta.json` sidebar files from authored directory `index.md` `## Contents` sections; the hooks never write them. `prebuild` runs `oat docs nav sync --check`, so a build fails when those files are stale or a page is unlisted.
|
|
34
34
|
- MkDocs apps use `oat docs nav sync` to regenerate the `nav:` block in `mkdocs.yml` from authored directory `index.md` `## Contents` sections.
|
|
35
35
|
|
|
36
36
|
Both frameworks keep authored `## Contents` sections as the source of local discovery. The generated artifact differs by framework.
|
|
@@ -183,17 +183,35 @@ script hooks.
|
|
|
183
183
|
|
|
184
184
|
## `oat docs nav sync`
|
|
185
185
|
|
|
186
|
-
Use nav sync
|
|
186
|
+
Use nav sync after adding, removing, renaming, or reordering docs pages.
|
|
187
187
|
|
|
188
188
|
The command reads only the reserved `## Contents` section from each directory
|
|
189
|
-
`index.md
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
`index.md`. It detects the framework from the app directory:
|
|
190
|
+
|
|
191
|
+
- **MkDocs** (`mkdocs.yml`): regenerates the `nav:` block in `mkdocs.yml`.
|
|
192
|
+
- **Fumadocs** (`source.config.ts`): writes one `meta.json` per docs directory
|
|
193
|
+
that has an `index.md`. `pages` follows the `## Contents` order with no
|
|
194
|
+
`"..."` rest entry, so a page no map lists stays out of the sidebar and is
|
|
195
|
+
reported by path (`unlisted` in `--json`). A link to a page in another
|
|
196
|
+
directory becomes a Fumadocs link entry, and the folder `title` comes from
|
|
197
|
+
the `index.md` frontmatter `title` or first heading. Files are compared by
|
|
198
|
+
meaning, so a rerun with no docs changes writes nothing. Commit the
|
|
199
|
+
generated `meta.json` files.
|
|
200
|
+
|
|
201
|
+
Use `--check` in builds and CI. It computes the same navigation, writes
|
|
202
|
+
nothing, and exits 1 when any generated file would change or, for Fumadocs,
|
|
203
|
+
any page or folder is unlisted, naming each one (`stale` and `unlisted` in
|
|
204
|
+
`--json`). This repository's `apps/oat-docs` `prebuild` runs it, so
|
|
205
|
+
`pnpm build:docs` fails on stale navigation.
|
|
206
|
+
|
|
207
|
+
Fumadocs apps also regenerate the root markdown manifest with
|
|
208
|
+
`oat docs generate-index`; the two commands write different artifacts.
|
|
192
209
|
|
|
193
210
|
Example:
|
|
194
211
|
|
|
195
212
|
```bash
|
|
196
213
|
oat docs nav sync --target-dir apps/oat-docs
|
|
214
|
+
oat docs nav sync --target-dir apps/oat-docs --check
|
|
197
215
|
```
|
|
198
216
|
|
|
199
217
|
Related reference:
|
|
@@ -18,7 +18,7 @@ Install the workflow skills with `oat tools install docs` (preferred) or
|
|
|
18
18
|
- `oat docs init` scaffolds a docs app (Fumadocs or MkDocs)
|
|
19
19
|
- `oat docs migrate` converts MkDocs admonitions to GFM callouts and injects frontmatter
|
|
20
20
|
- `oat docs generate-index` generates a Fumadocs app-root docs index manifest from the Markdown file tree
|
|
21
|
-
- `oat docs nav sync` regenerates MkDocs `mkdocs.yml` nav from `index.md` `## Contents` sections
|
|
21
|
+
- `oat docs nav sync` regenerates MkDocs `mkdocs.yml` nav, or strict Fumadocs `meta.json` files, from `index.md` `## Contents` sections
|
|
22
22
|
- `oat docs analyze` and `oat docs apply` expose the workflow surface in CLI help
|
|
23
23
|
|
|
24
24
|
### Skills
|
|
@@ -67,7 +67,7 @@ skills.
|
|
|
67
67
|
5. Keep local `## Contents` sections current
|
|
68
68
|
6. Refresh generated artifacts:
|
|
69
69
|
- **MkDocs:** `oat docs nav sync`
|
|
70
|
-
- **Fumadocs:** `oat docs generate-index` (runs automatically via `predev`/`prebuild` hooks)
|
|
70
|
+
- **Fumadocs:** `oat docs nav sync` for the committed `meta.json` sidebar files (it reports pages no `## Contents` map lists), and `oat docs generate-index` for the root manifest (runs automatically via `predev`/`prebuild` hooks)
|
|
71
71
|
7. Run `oat-docs-analyze`; by default it verifies the generated analysis artifact
|
|
72
72
|
through `workflow.autoArtifactReview.analysis`
|
|
73
73
|
8. Review the artifact and run `oat-docs-apply`
|
|
@@ -401,6 +401,14 @@ oat instructions validate --strategy symlink
|
|
|
401
401
|
|
|
402
402
|
This keeps validation, preview, and repair aligned to the same expected file shape.
|
|
403
403
|
|
|
404
|
+
`--force` never overwrites a `CLAUDE.md` that an `AGENTS.md` resolves to,
|
|
405
|
+
whether through a symlink, a symlink chain, or a hard link, because that
|
|
406
|
+
`CLAUDE.md` holds the only copy of the instructions behind the link. Sync plans
|
|
407
|
+
a `skip` for it instead, with a reason such as
|
|
408
|
+
`AGENTS.md resolves to this CLAUDE.md, so it holds the instructions; kept`, and
|
|
409
|
+
leaves the file unchanged under every shim strategy, including in
|
|
410
|
+
`--dry-run` previews. Resolve that link by hand before repairing the pair.
|
|
411
|
+
|
|
404
412
|
## Manual-Repair Cases
|
|
405
413
|
|
|
406
414
|
Some states are intentionally surfaced as drift but not auto-repaired.
|
|
@@ -26,11 +26,11 @@ description: 'Provider-specific path mappings for Claude, Cursor, Copilot, Gemin
|
|
|
26
26
|
- Interactive `oat init` and `oat status` ask for an individual disposition for each unresolved Cursor-local skill: adopt it into `.agents/skills` or keep it Cursor-only and remember the exact path in sync config
|
|
27
27
|
- Keep-local is blocked when a canonical skill has the same name because Cursor does not document a safe duplicate-resolution order
|
|
28
28
|
- During upgrades, OAT removes only verified clean legacy managed skill views. Changed or replaced views are preserved, detached from manifest ownership, and offered for migration.
|
|
29
|
-
- Sync materializes pinned Markdown definitions for both `oat-phase-implementer` and `oat-reviewer` in addition to the base roles, which sync like any other canonical agent at both scopes. Each generated name keeps the configured flat ladder ID, while an explicit verified mapping writes
|
|
29
|
+
- Sync materializes pinned Markdown definitions for both `oat-phase-implementer` and `oat-reviewer` in addition to the base roles, which sync like any other canonical agent at both scopes. Each generated name keeps the configured flat ladder ID, while an explicit verified mapping writes its frontmatter model: a bracket-form selector for existing families or an exact ID for Sonnet 5.5. The supported catalogue contains 31 pins and 62 pinned role variants. OAT never derives a selector from the ladder ID or passes through an unregistered ID.
|
|
30
30
|
- Generated definitions carry `supported-catalogue`, `project-config`, or `user-config` ownership. Project and supported output lives in the tracked `.cursor/agents` view; user-owned output lives under `~/.cursor/agents`. Cleanup reconciles only the applicable owner.
|
|
31
31
|
- Managed dispatch requires `providers.cursor.dispatchArgs.variant` and launches that exact resolver-selected native agent type first. Skills do not pass a Task-level model argument or normalize Cursor model strings.
|
|
32
32
|
- Cursor may silently fallback when a definition pin cannot be honored. Variant acceptance therefore establishes launcher-owned `configured` provenance only; runtime identity remains `not-reported` unless independently observed.
|
|
33
|
-
- `oat doctor` checks whether each flat ID is still present in the current Cursor catalogue and reports availability drift. Catalogue availability is diagnostic and does not prove that a definition-level
|
|
33
|
+
- `oat doctor` checks whether each flat ID is still present in the current Cursor catalogue and reports availability drift. Catalogue availability is diagnostic and does not prove that a definition-level pin ran as configured.
|
|
34
34
|
- Rule files render as `.cursor/rules/*.mdc`
|
|
35
35
|
|
|
36
36
|
=== "Copilot"
|
|
@@ -59,7 +59,7 @@ description: 'Provider-specific path mappings for Claude, Cursor, Copilot, Gemin
|
|
|
59
59
|
- `.codex/agents/<role>.toml`
|
|
60
60
|
- `.codex/config.toml` (`[features] multi_agent = true`, `[agents.<role>]` upserts)
|
|
61
61
|
- Codex role files include OAT managed provenance headers and are regenerated by `oat sync --scope project|user|all`
|
|
62
|
-
- Project sync writes and maintains the version-controlled supported catalogue: GPT-6 Luna, Sol, and Astra at `low`, `medium`, `high`, `xhigh`, and `max`; GPT-5.6 Luna and Terra through `xhigh`; and GPT-5.6 Sol through `max`. Both `oat-phase-implementer` and `oat-reviewer` receive each supported pair (
|
|
62
|
+
- Project sync writes and maintains the version-controlled supported catalogue: GPT-6.1 Sol and GPT-6 Luna, Sol, and Astra at `low`, `medium`, `high`, `xhigh`, and `max`; GPT-5.6 Luna and Terra through `xhigh`; and GPT-5.6 Sol through `max`. Both `oat-phase-implementer` and `oat-reviewer` receive each supported pair (66 pinned variants). Sync writes files; it does not create a Git commit.
|
|
63
63
|
- Custom targets follow configuration provenance: user-config targets write only under `~/.codex`; shared, repo-local, and active-project targets write under the project's tracked `.codex` view.
|
|
64
64
|
- User sync loads only the bundled canonical `oat-phase-implementer` and `oat-reviewer` definitions needed to expand user-config targets. It does not enable general user-agent mirroring, and it refuses stale user-role cleanup if either managed definition is unavailable.
|
|
65
65
|
- Generated variants carry `supported-catalogue`, `user-config`, or `project-config` ownership. Cleanup removes stale entries only for the owner being reconciled and preserves other scopes plus unrelated Codex entries.
|
|
@@ -67,7 +67,7 @@ description: 'Provider-specific path mappings for Claude, Cursor, Copilot, Gemin
|
|
|
67
67
|
- A single role can be materialized directly with `oat providers codex materialize <agent-name> --model <model-id> --effort <reasoning-effort>`; `--agent-path` selects a specific canonical markdown agent, `--role-name` overrides the generated role name, and `--scope user` writes a user-config-owned role.
|
|
68
68
|
- Aggregate Codex config drift metadata (`aggregateConfigHash`) is emitted in sync/status codex extension output and intentionally not stored as a separate manifest row
|
|
69
69
|
- Sync-time materialization is best effort; managed workflow correctness uses exact registered roles or a fresh child pinned to the resolved model plus reasoning effort with canonical role instructions. After a successful provider-visible file change, OAT conservatively advises starting a new Codex session so it has an opportunity to load the role. This repository policy is not a Codex hot-reload contract, an application-process restart requirement, or proof that the new session exposed the role.
|
|
70
|
-
- Codex `max` is a first-class dispatch effort. It is supported for GPT-6 Luna, Sol, and Astra, plus GPT-5.6 Sol, for both implementer and reviewer roles.
|
|
70
|
+
- Codex `max` is a first-class dispatch effort. It is supported for GPT-6.1 Sol, GPT-6 Luna, Sol, and Astra, plus GPT-5.6 Sol, for both implementer and reviewer roles.
|
|
71
71
|
- Codex multi-agent dispatch uses config-defined roles (`[agents.<name>]`) and `agent_type`
|
|
72
72
|
- Codex subagent workflows require `[features] multi_agent = true` in active Codex config layers
|
|
73
73
|
- Default managed Codex execution requires root (depth 0) → phase implementer (depth 1). `agents.max_depth >= 2` enables optional nested phase-agent work; sync and direct materialization still merge that capability floor without lowering a higher target value.
|
|
@@ -43,8 +43,8 @@ Rules are currently project-scoped canonical content. Unlike skills and agents,
|
|
|
43
43
|
- `oat providers inspect`
|
|
44
44
|
- `oat providers set`
|
|
45
45
|
- `oat providers codex materialize`
|
|
46
|
-
- `oat project dispatch record` (project-aware dispatch evidence
|
|
47
|
-
provider launcher)
|
|
46
|
+
- `oat project dispatch record` (validates project-aware dispatch evidence and
|
|
47
|
+
writes nothing; never a provider launcher)
|
|
48
48
|
- `oat project dispatch canonical-role` (read-only; prints the
|
|
49
49
|
canonical-role-resolution event that `oat project dispatch record` accepts)
|
|
50
50
|
|
|
@@ -112,8 +112,7 @@ role-selection rejection and do not permit fallback.
|
|
|
112
112
|
|
|
113
113
|
Project workflows construct and redact the complete dispatch payload before
|
|
114
114
|
the native call, then record its accepted or `blocked-before-start` result in
|
|
115
|
-
the project's run record
|
|
116
|
-
directory is optional and off by default. The generic
|
|
115
|
+
the project's run record, which is the only launch record. The generic
|
|
117
116
|
record remains provider-neutral. OAT-specific canonical role, rejection,
|
|
118
117
|
fallback, and runtime facts live only under its `oat` namespace. A qualifying
|
|
119
118
|
fallback is a fresh request that preserves exact target and controls and is
|