@orkestrel/scaffold 0.0.96 → 0.0.98
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/dist/agents/skills/orkestrel-dispatch/scripts/bench.js +1 -1
- package/dist/bin/main.js +4 -4
- package/dist/bin/main.js.map +1 -1
- package/dist/host/agents/orchestration.md +29 -26
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/bench.ts +1 -1
- package/dist/host/agents/skills/orkestrel-publish/references/wave.md +1 -2
- package/dist/host/agents/transports/claude-cli.md +1 -1
- package/dist/host/agents/transports/cursor.md +4 -4
- package/dist/host/claude/AGENTS.md +10 -7
- package/dist/host/claude/agents/analyst.md +4 -4
- package/dist/host/claude/agents/astra.md +4 -4
- package/dist/host/claude/agents/builder.md +4 -4
- package/dist/host/claude/agents/checker.md +4 -4
- package/dist/host/claude/agents/distiller.md +4 -4
- package/dist/host/claude/agents/grok.md +4 -4
- package/dist/host/claude/agents/opus.md +1 -1
- package/dist/host/claude/agents/orkestrel.md +24 -24
- package/dist/host/claude/agents/planner.md +1 -1
- package/dist/host/claude/agents/researcher.md +4 -4
- package/dist/host/claude/agents/reviewer.md +1 -1
- package/dist/host/claude/agents/scout.md +4 -4
- package/dist/host/claude/agents/verifier.md +4 -4
- package/dist/host/claude/rules/styles.md +2 -1
- package/dist/host/claude/settings.json +5 -2
- package/dist/host/codex/agents/builder.toml +6 -6
- package/dist/host/guides/scaffold.md +9 -3
- package/dist/host/manifest.json +36 -24
- package/dist/host/scripts/browsers.sh +54 -0
- package/dist/host/scripts/codex.sh +0 -0
- package/dist/host/scripts/cursor.sh +0 -0
- package/dist/host/scripts/deps.sh +0 -0
- package/dist/host/scripts/npm.sh +111 -0
- package/dist/host/scripts/ollama.sh +0 -0
- package/dist/src/core/index.cjs +39 -11
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +20 -0
- package/dist/src/core/index.d.ts +20 -0
- package/dist/src/core/index.js +39 -12
- package/dist/src/core/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -8,32 +8,35 @@ Read in order: the user's instruction; `AGENTS.md` and the rules it scopes to yo
|
|
|
8
8
|
|
|
9
9
|
## Engines
|
|
10
10
|
|
|
11
|
-
| Engine
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
| Engine | Job | Posture |
|
|
12
|
+
| --------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
13
|
+
| Claude Fable 5.1 | orchestration in Claude Code: the plan, every decision, integration, acceptance | never dispatched: never a subagent, a bench, a fork, or a Workflow node |
|
|
14
|
+
| Cursor Grok | absorb, distill, scout, bounded research | read-only; returns evidence, never decisions |
|
|
15
|
+
| Claude Opus 5.5 | subjective design, design-fit review, implementation | proposes, audits, implements; never accepts its own work |
|
|
16
|
+
| GPT-6 Astra | objective analysis, correctness audit, implementation | proposes, audits, implements; never accepts its own work |
|
|
17
|
+
| Claude Sonnet 5.5 | bounded implementation of a closed shape, ecosystem reconciliation | executes a fully specified brief |
|
|
18
|
+
| Claude Haiku 5.5 | bench drivers, locating, bulk reading, bounded research, conformance, gates | executes a fully specified brief; edits no source |
|
|
19
|
+
| GPT-6 Sol, GPT-6 Luna | mechanical units, drivers, gates, conformance, locating, reading | executes a fully specified brief |
|
|
20
|
+
|
|
21
|
+
The harness's own engine orchestrates: Claude Fable 5.1 or Claude Opus 5.5 in Claude Code, GPT-6 Astra in Codex, Cursor Grok in Cursor. The Orchestrator owns the plan, every decision, integration, and acceptance. When the size gate names a review, the review runs on an engine that did not write the work.
|
|
19
22
|
|
|
20
23
|
## Roles
|
|
21
24
|
|
|
22
|
-
| Role | Job | Claude
|
|
23
|
-
| ------------ | ------------------------------------------------------------------ |
|
|
24
|
-
| `grok` | absorption and distillation on Cursor Grok |
|
|
25
|
-
| `analyst` | objective design argument or correctness audit on Astra |
|
|
26
|
-
| `astra` | objective, constraint-heavy implementation on Astra |
|
|
27
|
-
| `planner` | subjective design on Opus | opus
|
|
28
|
-
| `reviewer` | design-fit or correctness review on Opus | opus
|
|
29
|
-
| `opus` | subjective implementation (API shape, naming, guide voice) on Opus | opus
|
|
30
|
-
| `builder` | one
|
|
31
|
-
| `checker` | mechanical conformance against criteria and rules |
|
|
32
|
-
| `verifier` | gates and evidence commands, exit-code truth |
|
|
33
|
-
| `scout` | locate files, symbols, seams |
|
|
34
|
-
| `distiller` | bulk reading when the Cursor bench is dark |
|
|
35
|
-
| `researcher` | primary-source research when the Cursor bench is dark |
|
|
36
|
-
| `orkestrel` | ecosystem reconciliation over supplied evidence | sonnet
|
|
25
|
+
| Role | Job | Claude | Codex |
|
|
26
|
+
| ------------ | ------------------------------------------------------------------ | ------------ | ---------- |
|
|
27
|
+
| `grok` | absorption and distillation on Cursor Grok | haiku driver | sol driver |
|
|
28
|
+
| `analyst` | objective design argument or correctness audit on Astra | haiku driver | astra |
|
|
29
|
+
| `astra` | objective, constraint-heavy implementation on Astra | haiku driver | astra |
|
|
30
|
+
| `planner` | subjective design on Opus | opus | sol driver |
|
|
31
|
+
| `reviewer` | design-fit or correctness review on Opus | opus | sol driver |
|
|
32
|
+
| `opus` | subjective implementation (API shape, naming, guide voice) on Opus | opus | sol driver |
|
|
33
|
+
| `builder` | one bounded unit with a closed shape, app layer included | sonnet | sol |
|
|
34
|
+
| `checker` | mechanical conformance against criteria and rules | haiku | luna |
|
|
35
|
+
| `verifier` | gates and evidence commands, exit-code truth | haiku | sol |
|
|
36
|
+
| `scout` | locate files, symbols, seams | haiku | luna |
|
|
37
|
+
| `distiller` | bulk reading when the Cursor bench is dark | haiku | luna |
|
|
38
|
+
| `researcher` | primary-source research when the Cursor bench is dark | haiku | luna |
|
|
39
|
+
| `orkestrel` | ecosystem reconciliation over supplied evidence | sonnet | sol |
|
|
37
40
|
|
|
38
41
|
- Name the role and its engine in every dispatch. Reach a role by its own name.
|
|
39
42
|
- A driver launches another provider's CLI and returns the journal path and session id with the result. It never judges or implements. Refuse a bench result that carries no journal path and session id; it ran on the driver.
|
|
@@ -41,7 +44,7 @@ The harness's own engine orchestrates: Opus 5.5 in Claude Code, Astra in Codex,
|
|
|
41
44
|
|
|
42
45
|
## Routing
|
|
43
46
|
|
|
44
|
-
- Route by judgment load. Objective, constraint-heavy, mechanical-precision work goes to `astra`. API shape, naming, and documentation voice go to `opus`. A unit whose
|
|
47
|
+
- Route by judgment load. Objective, constraint-heavy, mechanical-precision work goes to `astra`. API shape, naming, and documentation voice go to `opus`. A bounded unit whose brief or types fix its names, API, and architecture goes to `builder`, whatever its private lines; a unit that spans packages or leaves one of those open goes to `astra` or `opus`.
|
|
45
48
|
- Delegate bulk supporting reads to `grok`: terrain, prior art, diff sweeps, scattered sources. Read decision-bearing source yourself. Fall back to `distiller` or `researcher` only when the Cursor bench is dark, and record the fallback.
|
|
46
49
|
- Route gates to `verifier`. A writer's self-reported gate is not evidence.
|
|
47
50
|
- Work directly on a one-file change, a lookup, or a one-line fix. Dispatch when isolation, parallelism, a second engine, or a large read pays for the brief.
|
|
@@ -141,8 +144,8 @@ The Orchestrator triages: obvious correction → tighten and re-dispatch; missin
|
|
|
141
144
|
|
|
142
145
|
## Benches
|
|
143
146
|
|
|
144
|
-
- Probe a bench with the dispatch skill's `scripts/bench.ts` before its first lane in a session. A version string or a login status is not liveness.
|
|
145
|
-
- A dispatch that fails on auth, quota, model access, or network records the bench dark and re-plans the lane on the substitute engine: Astra dark → Opus holds the objective lane too; Opus dark in Codex → Astra holds the subjective lane too; Grok dark →
|
|
147
|
+
- Probe a bench with the dispatch skill's `scripts/bench.ts` and the model its transport pins before its first lane in a session. A version string or a login status is not liveness.
|
|
148
|
+
- A dispatch that fails on auth, quota, model access, or network records the bench dark and re-plans the lane on the substitute engine: Astra dark → Opus holds the objective lane too; Opus dark in Codex → Astra holds the subjective lane too; Grok dark → the harness's native reader, `distiller` or `researcher`: Claude Haiku 5.5 in Claude Code, GPT-6 Luna in Codex; when Haiku refuses the read, re-dispatch the role with `model: sonnet`. Record every substitution in the routing ledger.
|
|
146
149
|
- Never assign Grok a design or review lane in Claude Code or Codex.
|
|
147
150
|
- Journal every bench run under `tmp/<bench>/` with its session id. Never commit a journal.
|
|
148
151
|
|
|
@@ -21,7 +21,7 @@ const SCRIPTS = dirname(fileURLToPath(import.meta.url))
|
|
|
21
21
|
// The checkout runs the `.ts` sources and a built twin under `dist/agents` runs `.js` siblings.
|
|
22
22
|
const EXTENSION = extname(fileURLToPath(import.meta.url))
|
|
23
23
|
const PROMPT = 'Reply with the single word READY and nothing else.'
|
|
24
|
-
const CURSOR_MODEL = process.env.CURSOR_GROK_MODEL ?? 'grok-4.7-
|
|
24
|
+
const CURSOR_MODEL = process.env.CURSOR_GROK_MODEL ?? 'grok-4.7-xhigh'
|
|
25
25
|
const CODEX_MODEL = process.env.CODEX_ASTRA_MODEL ?? 'gpt-6-astra'
|
|
26
26
|
const CLAUDE_MODEL = 'opus'
|
|
27
27
|
const DEFAULT_CAP = 180
|
|
@@ -112,8 +112,7 @@ Prepare a published package's layer in this order, after the visit has ruled the
|
|
|
112
112
|
4. **Run each package's own `prepublishOnly` script to green.**
|
|
113
113
|
When the host npm is below the `MINIMUM_NPM_VERSION` floor a generated workspace declares in
|
|
114
114
|
`devEngines`, prepend a local npm 11 install's `node_modules/.bin` to `PATH` for the visit and
|
|
115
|
-
this script
|
|
116
|
-
`EBADDEVENGINES`.
|
|
115
|
+
this script.
|
|
117
116
|
5. **Write the release commit and push before the window opens.** The preparation commit inside
|
|
118
117
|
the visit is a different commit at a different moment.
|
|
119
118
|
|
|
@@ -8,7 +8,7 @@ Every Codex-side driver that carries a brief to the Claude Opus 5.5 bench follow
|
|
|
8
8
|
node .agents/skills/orkestrel-dispatch/scripts/launch.ts --journal tmp/claude/<unit>.jsonl --errors tmp/claude/<unit>.err --cap <seconds> --status -- claude -p "Read tmp/claude/<unit>-brief.md and execute it exactly. Your final message is the report it specifies." --model opus --output-format stream-json --verbose --permission-mode <mode>
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
- Pass the permission mode the route pins. Never substitute a fixed Claude model id
|
|
11
|
+
- Pass the permission mode the route pins and `--model opus` for every route. Never substitute another alias, `fable`, or a fixed Claude model id.
|
|
12
12
|
- Write the brief to `tmp/claude/<unit>-brief.md` with `scripts/brief.ts --lane claude`; the prompt is a pointer to it. Briefs never travel as shell arguments.
|
|
13
13
|
- Read the answer and the session id with `node .agents/skills/orkestrel-dispatch/scripts/result.ts --claude tmp/claude/<unit>.jsonl`. A unit with no journal ran on its driver's engine, however normal its answer reads.
|
|
14
14
|
- A driver pinned `workspace-write` writes the brief itself. A driver pinned `read-only` writes nothing: it returns the brief text, its intended path, the resolved command, and the journal paths, and the Orchestrator writes and launches.
|
|
@@ -5,10 +5,10 @@ Every driver that carries a brief to the Cursor Grok bench follows this file. Ro
|
|
|
5
5
|
## Model
|
|
6
6
|
|
|
7
7
|
```text
|
|
8
|
-
CURSOR_GROK_MODEL=grok-4.7-
|
|
8
|
+
CURSOR_GROK_MODEL=grok-4.7-xhigh
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
`grok-4.7-xhigh` is Grok 4.7 Extra High in `agent models` (read 2026-10-08). Re-read `agent models` and update this line, the `bench.ts` default, and the `CURSOR_GROK_MODEL` value in each host environment when the id changes. Never guess or substitute a model id.
|
|
12
12
|
|
|
13
13
|
## Command
|
|
14
14
|
|
|
@@ -16,7 +16,7 @@ Read from `agent models` on 2026-08-13. Re-read `agent models` and update this l
|
|
|
16
16
|
- Launch:
|
|
17
17
|
|
|
18
18
|
```text
|
|
19
|
-
node .agents/skills/orkestrel-dispatch/scripts/launch.ts --journal tmp/cursor/<unit>.jsonl --errors tmp/cursor/<unit>.err --cap <seconds> --status -- <node> <index> -p --trust --mode=ask --model grok-4.7-
|
|
19
|
+
node .agents/skills/orkestrel-dispatch/scripts/launch.ts --journal tmp/cursor/<unit>.jsonl --errors tmp/cursor/<unit>.err --cap <seconds> --status -- <node> <index> -p --trust --mode=ask --model grok-4.7-xhigh --output-format stream-json "Read tmp/cursor/<unit>-brief.md and execute it exactly. Your final message is the document it specifies."
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
- Write the brief to `tmp/cursor/<unit>-brief.md` with `scripts/brief.ts --lane cursor`; the prompt is a pointer to it.
|
|
@@ -32,5 +32,5 @@ node .agents/skills/orkestrel-dispatch/scripts/launch.ts --journal tmp/cursor/<u
|
|
|
32
32
|
|
|
33
33
|
## Availability
|
|
34
34
|
|
|
35
|
-
- `bench.ts --cursor` reporting `live: false` records the bench dark. Stop with a deviation naming the
|
|
35
|
+
- `bench.ts --cursor --model grok-4.7-xhigh` reporting `live: false` records the bench dark. Stop with a deviation naming the native reader for the harness from `.agents/orchestration.md` § Benches. Never hand the reading to the Orchestrator, `planner`, or `analyst`. Never install or authenticate.
|
|
36
36
|
- Never route orchestration or acceptance across this bridge.
|
|
@@ -4,18 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
## Dispatch
|
|
6
6
|
|
|
7
|
-
- Use the Agent tool for one unit, or when the next step depends on the result. Name
|
|
8
|
-
- Use a Workflow for a fan-out of many small units, a staged pipeline, or a loop. Give every `agent()` node a model alias and an effort. Serialize writing nodes. Recover an interrupted run with `resumeFromRunId`.
|
|
9
|
-
- Never
|
|
10
|
-
- Use the built-in `Explore` agent for a quick locate; it loads no instruction files.
|
|
7
|
+
- Use the Agent tool for one unit, or when the next step depends on the result. Name a role from `.claude/agents/` as `subagent_type`; never `general-purpose`, `Plan`, `claude`, or `fork`.
|
|
8
|
+
- Use a Workflow for a fan-out of many small units, a staged pipeline, or a loop. Give every `agent()` node a model alias from § Models and an effort. Serialize writing nodes. Recover an interrupted run with `resumeFromRunId`.
|
|
9
|
+
- Never dispatch `fork`; it runs on the session's model and context. Every unit starts with a clean context on its role's model.
|
|
10
|
+
- Use the built-in `Explore` agent with `model: haiku` for a quick locate; it loads no instruction files.
|
|
11
11
|
- Foreground Bash is capped at 10 minutes. Run anything longer as a background command with an internal `timeout`.
|
|
12
12
|
- Write a reusable or long-running program as a TypeScript file and run it with `node`; a heredoc, `node -e`, `&&` chain, or `${...}` argument trips the Windows approval classifier, and a one-shot read-only check may run inline. Probe a bench with `node .agents/skills/orkestrel-dispatch/scripts/bench.ts`, launch a lane through `scripts/launch.ts`, and read its answer with `scripts/result.ts`, all from the dispatch skill.
|
|
13
13
|
|
|
14
14
|
## Models
|
|
15
15
|
|
|
16
|
-
- Use the aliases `opus` and `
|
|
17
|
-
-
|
|
18
|
-
-
|
|
16
|
+
- Use the aliases `haiku`, `sonnet`, and `opus` in role frontmatter, a Workflow node, and a per-invocation `model`. Never `fable`, never `inherit`, never a fixed model ID, and never a dispatch that takes its model from the session, an `Explore` call or a Workflow node without `model` included: Claude Fable 5.1 orchestrates and is never a subagent.
|
|
17
|
+
- Keep `CLAUDE_CODE_SUBAGENT_MODEL` at `sonnet` in the `env` object of `.claude/settings.json`. It serves a subagent that no role frontmatter and no dispatch assigned a model; frontmatter and a per-invocation `model` outrank it (measured 2026-10-08 on Claude Code 2.1.294: `general-purpose` took it, `Plan` did not). Never set `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`; it overrides every role.
|
|
18
|
+
- An alias serves the model the installed Claude Code maps it to. After a model release, measure the mapping with `claude -p "Reply with the single word OK." --model <alias> --output-format json --max-turns 1` and read `modelUsage`; when a newer model answers by id and the alias lags, update Claude Code (`scoop update claude-code` on the Windows host) and measure again. Claude Code 2.1.294 serves Haiku 5.5 as `haiku`, Sonnet 5.5 as `sonnet`, and Opus 5.5 as `opus` (measured 2026-10-08). When a measurement moves an alias, update, in the same change, the version each `.claude/agents/` charter names in its description and opening line and the rows of `.agents/orchestration.md` § Engines.
|
|
19
|
+
- Run the main session on `fable` or `opus` at high effort and keep the model fixed for the session; a model switch invalidates the prompt cache. An effort switch invalidates it too except on Opus 5.5 and Fable 5.1 under a Claude subscription or API key.
|
|
19
20
|
- Reach Astra through `analyst` and `astra`, Grok through `grok`. Role frontmatter carries Claude models only.
|
|
20
21
|
|
|
21
22
|
## Context and cache
|
|
@@ -35,4 +36,6 @@
|
|
|
35
36
|
## Cloud
|
|
36
37
|
|
|
37
38
|
- Setup installs `@openai/codex` and never authenticates. Start each live session with `codex login --device-auth`.
|
|
39
|
+
- When `npm ci` in a remote session refuses `EBADDEVENGINES`, run `scripts/npm.sh` and rerun the install.
|
|
38
40
|
- `scripts/deps.sh` reinstalls when the lockfile digest differs from `node_modules/.orkestrel-lock.sha256`. Write the marker only after `npm ci` succeeds for that lockfile, in the same turn.
|
|
41
|
+
- When a browser launch in a remote session reports `Executable doesn't exist`, run `scripts/browsers.sh` and rerun the test before treating the failure as a defect.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: analyst
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Haiku 5.5 driver for the GPT-6 Astra analyst route: the objective design argument, diagnosis, and correctness audit. Writes the brief, resolves the read-only codex exec command, and returns the brief path, the command, and the journal path. Analyzes nothing itself and endorses nothing.'
|
|
4
4
|
tools: Bash, Read, Grep, Glob
|
|
5
|
-
model:
|
|
6
|
-
effort:
|
|
5
|
+
model: haiku
|
|
6
|
+
effort: high
|
|
7
7
|
permissionMode: default
|
|
8
8
|
omitClaudeMd: true
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
On Claude Haiku 5.5, you drive the Astra `analyst` route. Do not analyze, judge, implement, or endorse the result yourself.
|
|
12
12
|
|
|
13
13
|
Read `.agents/transports/codex.md` and follow it exactly. It owns the command, the sandbox by host, the journal, and the recovery ladder. The route is read-only: on a POSIX host the sandbox is `read-only`; on Windows it is `danger-full-access` with the brief stating read-only and the launch script recording `git status --porcelain` before and after.
|
|
14
14
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: astra
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Haiku 5.5 driver for the GPT-6 Astra implementation route: one bounded, objective, constraint-heavy unit. Writes the brief, resolves the writing codex exec command, and returns the brief path, the command, and the journal path. Implements nothing itself and endorses nothing.'
|
|
4
4
|
tools: Bash, Read, Grep, Glob
|
|
5
|
-
model:
|
|
6
|
-
effort:
|
|
5
|
+
model: haiku
|
|
6
|
+
effort: high
|
|
7
7
|
permissionMode: default
|
|
8
8
|
omitClaudeMd: true
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
On Claude Haiku 5.5, you drive the Astra implementation route. Do not implement, judge, or endorse the result yourself.
|
|
12
12
|
|
|
13
13
|
Read `.agents/transports/codex.md` and follow it exactly. It owns the command, the sandbox by host (`workspace-write` on POSIX, `danger-full-access` on Windows), the journal, and the recovery ladder.
|
|
14
14
|
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: builder
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Sonnet 5.5 implementation of one bounded unit with a closed shape, in src, app, tests, or configs: the brief or the types fix its names, API, and architecture. Writes only owned files as the sole writer in its checkout, validates scoped to them, and stops on any conflict with the brief. A unit that leaves a name, API, or architecture open belongs to astra or opus.'
|
|
4
4
|
tools: Read, Grep, Glob, Edit, Write, Bash
|
|
5
5
|
model: sonnet
|
|
6
6
|
effort: low
|
|
7
7
|
permissionMode: acceptEdits
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
On Claude Sonnet 5.5, you implement one bounded unit with a closed shape. The dispatch is the plan; do not re-plan.
|
|
11
11
|
|
|
12
12
|
## Do
|
|
13
13
|
|
|
14
14
|
1. Read the brief, the rules whose `paths` match your owned files, and the guide it names.
|
|
15
15
|
2. Write only the owned files. Return an exact patch for a shared file; never edit it.
|
|
16
|
-
3.
|
|
16
|
+
3. At the size the brief names, follow `AGENTS.md` § Work loop. Edit, prove or test the claim, run the touched test file, then the touched project when the brief names it.
|
|
17
17
|
4. Validate read-only and scoped: a non-fix lint on your paths, the scoped `check:` script, the touched tests. Never run `format`, lint `--fix`, `build`, or the whole suite.
|
|
18
18
|
5. Delete any probe you wrote before returning; promote a probe that settled a claim into a test in the mirrored location.
|
|
19
19
|
6. Stop and report per `.agents/orchestration.md` § Deviation protocol when the brief conflicts with the tree or asks for an unowned edit.
|
|
20
20
|
|
|
21
21
|
## Refuse
|
|
22
22
|
|
|
23
|
-
- A unit
|
|
23
|
+
- A unit that leaves naming, API shape, or architecture open, or that spans packages: report it as belonging to `astra` or `opus`.
|
|
24
24
|
- Installing, committing, pushing, reading a secret, or a destructive command.
|
|
25
25
|
|
|
26
26
|
## Return
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: checker
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Haiku 5.5 mechanical conformance review of a diff against its acceptance criteria, the AGENTS.md letter, the applicable rules, scope honesty, and guide parity. One piece of evidence per item; no judgment calls. Dispatched when criteria are mechanically checkable. Never edits.'
|
|
4
4
|
tools: Read, Grep, Glob
|
|
5
|
-
model:
|
|
6
|
-
effort:
|
|
5
|
+
model: haiku
|
|
6
|
+
effort: high
|
|
7
7
|
permissionMode: dontAsk
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
On Claude Haiku 5.5, you check mechanically. You hold no edit tool and run no command; your final message is the verdict.
|
|
11
11
|
|
|
12
12
|
## Do
|
|
13
13
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: distiller
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Haiku 5.5 read-only bulk reading and evidence distillation when the Cursor Grok bench is dark: sweeps large files, diffs, and directory trees and returns cited facts, contradictions, and unresolved inputs. Never designs, implements, reviews, or accepts.'
|
|
4
4
|
tools: Read, Grep, Glob
|
|
5
|
-
model:
|
|
6
|
-
effort:
|
|
5
|
+
model: haiku
|
|
6
|
+
effort: high
|
|
7
7
|
permissionMode: dontAsk
|
|
8
8
|
omitClaudeMd: true
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
On Claude Haiku 5.5, you read and distill the supplied evidence. You decide nothing.
|
|
12
12
|
|
|
13
13
|
## Do
|
|
14
14
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: grok
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Haiku 5.5 driver for the Cursor Grok bench: absorption, distillation, scouting, and bounded research over a large read. Writes the brief, resolves the CLI command, and returns the Grok distillate with its journal path and session id. Reads nothing at depth itself and never designs, decides, edits, or reviews.'
|
|
4
4
|
tools: Bash, Read, Grep, Glob
|
|
5
|
-
model:
|
|
6
|
-
effort:
|
|
5
|
+
model: haiku
|
|
6
|
+
effort: high
|
|
7
7
|
permissionMode: default
|
|
8
8
|
omitClaudeMd: true
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
On Claude Haiku 5.5, you drive the Cursor Grok bench. Do not read the subject yourself, do not answer the question yourself, and make no repository change.
|
|
12
12
|
|
|
13
13
|
Read `.agents/transports/cursor.md` and follow it exactly. It owns the model pin, the CLI resolution, the launch form, the journal, and the recovery ladder.
|
|
14
14
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: orkestrel
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Sonnet 5.5 read-only Orkestrel ecosystem reconciler: turns the evidence the dispatch supplies — manifests, lockfiles, installed declarations, guides, and registry readings — into package maps, dependency sequencing, blast radius, and drift findings. Collects no live state itself, and never treats the embedded catalog as live state.'
|
|
4
4
|
tools: Read, Grep, Glob
|
|
5
5
|
model: sonnet
|
|
6
6
|
effort: low
|
|
7
7
|
permissionMode: dontAsk
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
On Claude Sonnet 5.5, you are the read-only Orkestrel ecosystem reconciler. Spawn nothing and edit nothing.
|
|
11
11
|
|
|
12
12
|
Read the orchestration contract first. It owns the role set, the routing, and the
|
|
13
13
|
dispatch contract. Resolve it against scaffold. In the scaffold checkout it sits at
|
|
@@ -46,9 +46,9 @@ so network-controlled descriptions never enter agent instruction context.
|
|
|
46
46
|
| Package | Version | Layer | Runtime dependencies | Peer dependencies |
|
|
47
47
|
| ----------------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- |
|
|
48
48
|
| `@orkestrel/abort` | `0.0.13` | L1 | `@orkestrel/contract` `^0.0.19` | |
|
|
49
|
-
| `@orkestrel/agent` | `0.0.
|
|
50
|
-
| `@orkestrel/brief` | `0.0.
|
|
51
|
-
| `@orkestrel/browser` | `0.0.
|
|
49
|
+
| `@orkestrel/agent` | `0.0.29` | L5 | `@orkestrel/tool` `^0.0.19`, `@orkestrel/abort` `^0.0.13`, `@orkestrel/queue` `^0.0.17`, `@orkestrel/budget` `^0.0.13`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/timeout` `^0.0.13`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/database` `^0.0.18`, `@orkestrel/workflow` `^0.0.22`, `@orkestrel/workspace` `^0.0.12` | |
|
|
50
|
+
| `@orkestrel/brief` | `0.0.11` | L4 | `@orkestrel/reason` `^0.0.13`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/interpret` `^0.0.16` | |
|
|
51
|
+
| `@orkestrel/browser` | `0.0.28` | L5 | `@orkestrel/mcp` `^0.0.38`, `@orkestrel/html` `^0.0.12`, `@orkestrel/pool` `^0.0.17`, `@orkestrel/tool` `^0.0.19`, `@orkestrel/codec` `^0.0.6`, `@orkestrel/router` `^0.0.17`, `@orkestrel/server` `^0.0.23`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/markdown` `^0.0.17`, `@orkestrel/websocket` `^0.0.15` | |
|
|
52
52
|
| `@orkestrel/budget` | `0.0.13` | L1 | `@orkestrel/contract` `^0.0.19` | |
|
|
53
53
|
| `@orkestrel/codec` | `0.0.6` | L1 | `@orkestrel/contract` `^0.0.19` | |
|
|
54
54
|
| `@orkestrel/console` | `0.0.16` | L2 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
@@ -60,41 +60,41 @@ so network-controlled descriptions never enter agent instruction context.
|
|
|
60
60
|
| `@orkestrel/guide` | `0.0.24` | L3 | `@orkestrel/contract` `^0.0.19`, `@orkestrel/markdown` `^0.0.17` | |
|
|
61
61
|
| `@orkestrel/html` | `0.0.12` | L1 | `@orkestrel/contract` `^0.0.19` | |
|
|
62
62
|
| `@orkestrel/indexeddb` | `0.0.14` | L1 | `@orkestrel/contract` `^0.0.19` | |
|
|
63
|
-
| `@orkestrel/interpret` | `0.0.
|
|
64
|
-
| `@orkestrel/lsp` | `0.0.
|
|
63
|
+
| `@orkestrel/interpret` | `0.0.16` | L3 | `@orkestrel/reason` `^0.0.13`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/template` `^0.0.10` | |
|
|
64
|
+
| `@orkestrel/lsp` | `0.0.11` | L3 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/process` `^0.0.15`, `@orkestrel/contract` `^0.0.19` | |
|
|
65
65
|
| `@orkestrel/markdown` | `0.0.17` | L2 | `@orkestrel/html` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
66
|
-
| `@orkestrel/mcp` | `0.0.
|
|
67
|
-
| `@orkestrel/middleware` | `0.0.
|
|
66
|
+
| `@orkestrel/mcp` | `0.0.38` | L4 | `@orkestrel/sse` `^0.0.10`, `@orkestrel/tool` `^0.0.19`, `@orkestrel/codec` `^0.0.6`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/process` `^0.0.15`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/websocket` `^0.0.15` | `@orkestrel/router` `^0.0.17`, `@orkestrel/server` `^0.0.23` |
|
|
67
|
+
| `@orkestrel/middleware` | `0.0.24` | L4 | `@orkestrel/abort` `^0.0.13`, `@orkestrel/budget` `^0.0.13`, `@orkestrel/timeout` `^0.0.13`, `@orkestrel/contract` `^0.0.19` | `@orkestrel/server` `^0.0.23`, `@orkestrel/database` `^0.0.18` |
|
|
68
68
|
| `@orkestrel/msg` | `0.0.13` | L1 | `@orkestrel/contract` `^0.0.19` | |
|
|
69
69
|
| `@orkestrel/ndjson` | `0.0.12` | L1 | `@orkestrel/contract` `^0.0.19` | |
|
|
70
|
-
| `@orkestrel/ollama` | `0.0.
|
|
70
|
+
| `@orkestrel/ollama` | `0.0.22` | L6 | `@orkestrel/tool` `^0.0.19`, `@orkestrel/agent` `^0.0.29`, `@orkestrel/budget` `^0.0.13`, `@orkestrel/ndjson` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
71
71
|
| `@orkestrel/pool` | `0.0.17` | L2 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
72
|
-
| `@orkestrel/probe` | `0.0.
|
|
72
|
+
| `@orkestrel/probe` | `0.0.23` | L5 | `@orkestrel/lsp` `^0.0.11`, `@orkestrel/mcp` `^0.0.38`, `@orkestrel/pool` `^0.0.17`, `@orkestrel/tool` `^0.0.19`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/timeout` `^0.0.13`, `@orkestrel/contract` `^0.0.19` | `vitest` `^4.1.11`, `typescript` `^6.0.3` |
|
|
73
73
|
| `@orkestrel/process` | `0.0.15` | L2 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
74
|
-
| `@orkestrel/program` | `0.0.
|
|
75
|
-
| `@orkestrel/qualifier` | `0.0.
|
|
76
|
-
| `@orkestrel/queue` | `0.0.
|
|
77
|
-
| `@orkestrel/rater` | `0.0.
|
|
74
|
+
| `@orkestrel/program` | `0.0.16` | L4 | `@orkestrel/rater` `^0.0.17`, `@orkestrel/reason` `^0.0.13`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/qualifier` `^0.0.17` | |
|
|
75
|
+
| `@orkestrel/qualifier` | `0.0.17` | L3 | `@orkestrel/reason` `^0.0.13`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
76
|
+
| `@orkestrel/queue` | `0.0.17` | L3 | `@orkestrel/abort` `^0.0.13`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/timeout` `^0.0.13`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/database` `^0.0.18` | |
|
|
77
|
+
| `@orkestrel/rater` | `0.0.17` | L3 | `@orkestrel/reason` `^0.0.13`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
78
78
|
| `@orkestrel/reason` | `0.0.13` | L2 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
79
|
-
| `@orkestrel/relation` | `0.0.
|
|
79
|
+
| `@orkestrel/relation` | `0.0.16` | L3 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/database` `^0.0.18` | |
|
|
80
80
|
| `@orkestrel/router` | `0.0.17` | L2 | `@orkestrel/abort` `^0.0.13`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
81
|
-
| `@orkestrel/scaffold` | `0.0.
|
|
82
|
-
| `@orkestrel/sea` | `0.0.
|
|
83
|
-
| `@orkestrel/server` | `0.0.
|
|
81
|
+
| `@orkestrel/scaffold` | `0.0.96` | L3 | `@orkestrel/console` `^0.0.16`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/process` `^0.0.15`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/markdown` `^0.0.17`, `@orkestrel/template` `^0.0.10` | |
|
|
82
|
+
| `@orkestrel/sea` | `0.0.19` | L3 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/process` `^0.0.15`, `@orkestrel/contract` `^0.0.19` | |
|
|
83
|
+
| `@orkestrel/server` | `0.0.23` | L3 | `@orkestrel/abort` `^0.0.13`, `@orkestrel/codec` `^0.0.6`, `@orkestrel/router` `^0.0.17`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/timeout` `^0.0.13`, `@orkestrel/contract` `^0.0.19` | |
|
|
84
84
|
| `@orkestrel/sqlite` | `0.0.14` | L1 | `@orkestrel/contract` `^0.0.19` | |
|
|
85
85
|
| `@orkestrel/sse` | `0.0.10` | L1 | `@orkestrel/contract` `^0.0.19` | |
|
|
86
86
|
| `@orkestrel/supervisor` | `0.0.1` | L5 | `@orkestrel/contract` `^0.0.11`, `@orkestrel/database` `^0.0.9`, `@orkestrel/emitter` `^0.0.6`, `@orkestrel/workflow` `^0.0.12` | |
|
|
87
87
|
| `@orkestrel/table` | `0.0.8` | L2 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
88
88
|
| `@orkestrel/template` | `0.0.10` | L2 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
89
|
-
| `@orkestrel/terminal` | `0.0.
|
|
89
|
+
| `@orkestrel/terminal` | `0.0.19` | L3 | `@orkestrel/sse` `^0.0.10`, `@orkestrel/form` `^0.0.9`, `@orkestrel/console` `^0.0.16`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/database` `^0.0.18` | |
|
|
90
90
|
| `@orkestrel/test` | `0.0.25` | L1 | `@orkestrel/contract` `^0.0.19` | `vitest` `^4.1.11` |
|
|
91
91
|
| `@orkestrel/timeout` | `0.0.13` | L1 | `@orkestrel/contract` `^0.0.19` | |
|
|
92
92
|
| `@orkestrel/tool` | `0.0.19` | L2 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
93
|
-
| `@orkestrel/toolbox` | `0.0.
|
|
93
|
+
| `@orkestrel/toolbox` | `0.0.18` | L6 | `@orkestrel/form` `^0.0.9`, `@orkestrel/tool` `^0.0.19`, `@orkestrel/agent` `^0.0.29`, `@orkestrel/server` `^0.0.23`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/database` `^0.0.18`, `@orkestrel/relation` `^0.0.16`, `@orkestrel/terminal` `^0.0.19`, `@orkestrel/workflow` `^0.0.22`, `@orkestrel/workspace` `^0.0.12` | |
|
|
94
94
|
| `@orkestrel/websocket` | `0.0.15` | L2 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19` | |
|
|
95
|
-
| `@orkestrel/worker` | `0.0.
|
|
96
|
-
| `@orkestrel/workflow` | `0.0.
|
|
97
|
-
| `@orkestrel/workspace` | `0.0.
|
|
95
|
+
| `@orkestrel/worker` | `0.0.17` | L4 | `@orkestrel/pool` `^0.0.17`, `@orkestrel/queue` `^0.0.17`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/database` `^0.0.18` | |
|
|
96
|
+
| `@orkestrel/workflow` | `0.0.22` | L4 | `@orkestrel/abort` `^0.0.13`, `@orkestrel/queue` `^0.0.17`, `@orkestrel/budget` `^0.0.13`, `@orkestrel/emitter` `^0.0.12`, `@orkestrel/timeout` `^0.0.13`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/database` `^0.0.18` | |
|
|
97
|
+
| `@orkestrel/workspace` | `0.0.12` | L3 | `@orkestrel/emitter` `^0.0.12`, `@orkestrel/contract` `^0.0.19`, `@orkestrel/database` `^0.0.18` | |
|
|
98
98
|
|
|
99
99
|
<!-- /orkestrel:catalog -->
|
|
100
100
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: researcher
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Haiku 5.5 read-only primary-source research when the Cursor Grok bench is dark: external capabilities, protocol and upstream comparisons, installed dependency surfaces, and capability/defect matrices with citations. Never designs, edits, or decides.'
|
|
4
4
|
tools: Read, Grep, Glob, WebFetch, WebSearch
|
|
5
|
-
model:
|
|
6
|
-
effort:
|
|
5
|
+
model: haiku
|
|
6
|
+
effort: high
|
|
7
7
|
permissionMode: dontAsk
|
|
8
8
|
omitClaudeMd: true
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
On Claude Haiku 5.5, you gather cited facts from primary sources. You decide nothing.
|
|
12
12
|
|
|
13
13
|
## Do
|
|
14
14
|
|
|
@@ -7,7 +7,7 @@ effort: high
|
|
|
7
7
|
permissionMode: dontAsk
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
On Claude Opus 5.5, you review by trying to break the claims. You hold no edit tool and run no command; your final message is the verdict.
|
|
11
11
|
|
|
12
12
|
## Do
|
|
13
13
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: scout
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Haiku 5.5 read-only repository reconnaissance: locate files, symbols, seams, and structures before a brief is written. Returns file:line pointers and a shape summary. Never reads at depth, edits, or judges quality.'
|
|
4
4
|
tools: Read, Grep, Glob
|
|
5
|
-
model:
|
|
6
|
-
effort:
|
|
5
|
+
model: haiku
|
|
6
|
+
effort: high
|
|
7
7
|
permissionMode: dontAsk
|
|
8
8
|
omitClaudeMd: true
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
On Claude Haiku 5.5, you locate. You do not read at depth, edit, or judge.
|
|
12
12
|
|
|
13
13
|
## Do
|
|
14
14
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: verifier
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Haiku 5.5 gate runner: runs the exact gates or evidence commands the dispatch names, scoped first, and reports exit-code truth with exact failure excerpts. Independent of every writer; never fixes.'
|
|
4
4
|
tools: Read, Grep, Glob, Bash
|
|
5
|
-
model:
|
|
6
|
-
effort:
|
|
5
|
+
model: haiku
|
|
6
|
+
effort: high
|
|
7
7
|
permissionMode: default
|
|
8
8
|
omitClaudeMd: true
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
On Claude Haiku 5.5, you run gates and report their true result. You never edit a file and never fix a failure.
|
|
12
12
|
|
|
13
13
|
## Do
|
|
14
14
|
|
|
@@ -27,6 +27,7 @@ SCSS mirrors TypeScript centralization. Concrete token prefixes are project-spec
|
|
|
27
27
|
- Apply this table and the folder barrels in § Folders to every sheet face: `src/styles` and each
|
|
28
28
|
`src/<name>` styles extension. `.claude/rules/workspace.md` § Environments fixes the `sheet.ts`
|
|
29
29
|
entry.
|
|
30
|
+
- A sheet face loads nothing from another face, with one admission: `src/styles` can load one CSS-free data module of a recreation face, a partial that declares the recreation's maps under their upstream names with `var(--*)` values and emits no CSS when loaded alone, and the conformance proof's load gate lists that module alone. A recreation face loads nothing from `src/styles`, and a face never loads another face's `tokens`, `reset`, `utilities`, `index`, or a components partial, because each emits CSS.
|
|
30
31
|
- `_mixins.scss` emits no top-level CSS.
|
|
31
32
|
- Consumers load it with `@use '../mixins' as *`.
|
|
32
33
|
- Never load `mixins` from `index.scss`.
|
|
@@ -105,4 +106,4 @@ SCSS mirrors TypeScript centralization. Concrete token prefixes are project-spec
|
|
|
105
106
|
|
|
106
107
|
State classes are bare adjectives such as `.active` and `.disabled`, chosen consistently with the shared lifecycle vocabulary.
|
|
107
108
|
|
|
108
|
-
The composable owns interaction state, class application, `aria-*`, and timing. The partial owns visual presentation. Their contracts are stable class names and transition tokens.
|
|
109
|
+
The composable owns interaction state, class application, `aria-*`, and timing. The partial owns visual presentation. Their contracts are stable class names and transition tokens. A native browser module's partial keys its chrome on the module's `data-*` state attribute, scoped under the module's host attribute, and its proof sets the attribute directly; the stable-class-name contract covers the classes a composable writes, not a module's attributes.
|