@orkestrel/scaffold 0.0.98 → 0.0.100
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-scout/scripts/map.js +14 -3
- package/dist/bin/main.js +74 -19
- package/dist/bin/main.js.map +1 -1
- package/dist/host/agents/orchestration.md +43 -40
- package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +3 -3
- package/dist/host/agents/skills/orkestrel-dispatch/references/bench.md +1 -1
- package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +1 -1
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +1 -1
- package/dist/host/agents/skills/orkestrel-scout/SKILL.md +4 -4
- package/dist/host/agents/skills/orkestrel-scout/scripts/map.ts +14 -3
- package/dist/host/agents/transports/claude-cli.md +2 -2
- package/dist/host/agents/transports/codex.md +4 -4
- package/dist/host/agents/transports/cursor.md +1 -1
- package/dist/host/claude/AGENTS.md +2 -2
- package/dist/host/claude/agents/grok.md +1 -1
- package/dist/host/claude/agents/scout.md +4 -2
- package/dist/host/claude/rules/documentation.md +3 -3
- package/dist/host/claude/rules/styles.md +3 -0
- package/dist/host/codex/agents/builder.toml +1 -1
- package/dist/host/codex/agents/grok.toml +2 -2
- package/dist/host/codex/agents/opus.toml +19 -15
- package/dist/host/codex/agents/orkestrel.toml +1 -1
- package/dist/host/codex/agents/planner.toml +17 -12
- package/dist/host/codex/agents/reviewer.toml +22 -12
- package/dist/host/codex/agents/scout.toml +4 -2
- package/dist/host/codex/agents/verifier.toml +1 -1
- package/dist/host/codex/config.toml +6 -7
- package/dist/host/cursor/rules/orchestration.mdc +1 -1
- package/dist/host/guides/scaffold.md +26 -4
- package/dist/host/manifest.json +27 -27
- package/dist/host/scripts/browsers.sh +0 -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 +0 -0
- package/dist/host/scripts/ollama.sh +0 -0
- package/dist/src/core/index.cjs +103 -4
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +40 -1
- package/dist/src/core/index.d.ts +40 -1
- package/dist/src/core/index.js +101 -5
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +9 -3
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +7 -1
- package/dist/src/server/index.d.ts +7 -1
- package/dist/src/server/index.js +11 -5
- package/dist/src/server/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,59 +8,62 @@ Read in order: the user's instruction; `AGENTS.md` and the rules it scopes to yo
|
|
|
8
8
|
|
|
9
9
|
## Engines
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
| Claude
|
|
16
|
-
|
|
|
17
|
-
| Claude
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
Name the harness family and its access route: Claude through Claude Code or the Claude CLI; Codex through Codex native agents or the Codex CLI; Cursor through the Cursor CLI, with Grok 4.7 Extra High for the Grok bench. Classify GPT-6 Astra, GPT-6.1 Sol, and GPT-6 Luna as Codex-family engines, including when another harness hosts the Orchestrator.
|
|
12
|
+
|
|
13
|
+
| Engine | Job | Posture |
|
|
14
|
+
| ----------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
15
|
+
| 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 |
|
|
16
|
+
| Cursor Grok | context absorption, distillation, broad mapping, exploration | read-only; returns evidence, never decisions |
|
|
17
|
+
| Claude Opus 5.5 | subjective design, design-fit review, implementation | proposes, audits, implements; never accepts its own work |
|
|
18
|
+
| GPT-6 Astra | objective analysis, correctness audit, implementation | proposes, audits, implements; never accepts its own work |
|
|
19
|
+
| Claude Sonnet 5.5 | bounded implementation of a closed shape, ecosystem reconciliation | executes a fully specified brief |
|
|
20
|
+
| Claude Haiku 5.5 | bench drivers, small precise tasks, exact lookups, conformance, gates | executes a fully specified brief; edits no source |
|
|
21
|
+
| GPT-6.1 Sol, GPT-6 Luna | mechanical units, drivers, small precise tasks, gates, exact lookups | executes a fully specified brief |
|
|
22
|
+
|
|
23
|
+
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 harness is Codex or the Orchestrator uses a Codex-family engine, use the Codex column: map Opus to GPT-6 Astra, Sonnet to GPT-6.1 Sol, and Haiku to GPT-6 Luna; execute mapped Astra roles natively without an Opus bench probe. Under this mapping, assign review to another agent in a clean context and forbid self-review, including when writer and reviewer both use Astra. For other harnesses, review runs on an engine that did not write the work.
|
|
22
24
|
|
|
23
25
|
## Roles
|
|
24
26
|
|
|
25
|
-
| Role | Job
|
|
26
|
-
| ------------ |
|
|
27
|
-
| `grok` | absorption
|
|
28
|
-
| `analyst` | objective design argument or correctness audit on Astra
|
|
29
|
-
| `astra` | objective, constraint-heavy implementation on Astra
|
|
30
|
-
| `planner` | subjective design
|
|
31
|
-
| `reviewer` | design-fit or correctness review
|
|
32
|
-
| `opus` | subjective implementation (API shape, naming, guide voice)
|
|
33
|
-
| `builder` | one bounded unit with a closed shape, app layer included
|
|
34
|
-
| `checker` | mechanical conformance against criteria and rules
|
|
35
|
-
| `verifier` | gates and evidence commands, exit-code truth
|
|
36
|
-
| `scout` |
|
|
37
|
-
| `distiller` | bulk reading when the Cursor bench is dark
|
|
38
|
-
| `researcher` | primary-source research when the Cursor bench is dark
|
|
39
|
-
| `orkestrel` | ecosystem reconciliation over supplied evidence
|
|
27
|
+
| Role | Job | Claude | Codex |
|
|
28
|
+
| ------------ | ---------------------------------------------------------- | ------------ | ----------- |
|
|
29
|
+
| `grok` | absorption, distillation, broad mapping, exploration | haiku driver | luna driver |
|
|
30
|
+
| `analyst` | objective design argument or correctness audit on Astra | haiku driver | astra |
|
|
31
|
+
| `astra` | objective, constraint-heavy implementation on Astra | haiku driver | astra |
|
|
32
|
+
| `planner` | subjective design | opus | astra |
|
|
33
|
+
| `reviewer` | design-fit or correctness review | opus | astra |
|
|
34
|
+
| `opus` | subjective implementation (API shape, naming, guide voice) | opus | astra |
|
|
35
|
+
| `builder` | one bounded unit with a closed shape, app layer included | sonnet | sol |
|
|
36
|
+
| `checker` | mechanical conformance against criteria and rules | haiku | luna |
|
|
37
|
+
| `verifier` | gates and evidence commands, exit-code truth | haiku | luna |
|
|
38
|
+
| `scout` | exact bounded lookup of files, symbols, seams | haiku | luna |
|
|
39
|
+
| `distiller` | bulk reading when the Cursor bench is dark | haiku | luna |
|
|
40
|
+
| `researcher` | primary-source research when the Cursor bench is dark | haiku | luna |
|
|
41
|
+
| `orkestrel` | ecosystem reconciliation over supplied evidence | sonnet | sol |
|
|
40
42
|
|
|
41
43
|
- Name the role and its engine in every dispatch. Reach a role by its own name.
|
|
42
|
-
- A driver launches another
|
|
43
|
-
- `.agents/transports/<
|
|
44
|
+
- A driver launches another harness'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.
|
|
45
|
+
- `.agents/transports/<harness>.md` owns each bench's invocation, sandbox, journal, and recovery. `.claude/agents/` and `.codex/agents/` hold one file per role.
|
|
44
46
|
|
|
45
47
|
## Routing
|
|
46
48
|
|
|
47
49
|
- 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`.
|
|
48
|
-
-
|
|
50
|
+
- Route all context absorption, distillation, broad mapping, and exploratory or fishing reads to `grok` on Cursor Grok 4.7 Extra High: terrain, prior art, diff sweeps, scattered sources. Keep decision-bearing reading with the decision owner. Fall back to `distiller` or `researcher` only when the Cursor bench is dark, and record the fallback; ease or cost never authorizes a fallback.
|
|
51
|
+
- Keep small tedious precise tasks native: Claude Haiku in Claude, Codex Luna in Codex. Use `scout` for an exact bounded lookup; keep bench drivers, `checker`, and `verifier` on their mapped native engines. A bounded file scope does not turn context absorption or exploratory reading into a native lookup.
|
|
49
52
|
- Route gates to `verifier`. A writer's self-reported gate is not evidence.
|
|
50
|
-
- Work directly on a one-file change
|
|
53
|
+
- Work directly on a one-file change or a one-line fix, subject to the preceding routing rules. Route standalone lookups through `scout`. Dispatch when isolation, parallelism, a second engine, or a large read pays for the brief.
|
|
51
54
|
|
|
52
55
|
## Size gate
|
|
53
56
|
|
|
54
57
|
`AGENTS.md` § Work loop sizes a change and fixes the precedence (large, then medium, then small). This file adds who runs what.
|
|
55
58
|
|
|
56
|
-
| Size | Design | Implementation | Review
|
|
57
|
-
| ------ | ----------------------------------------------------------------------------------------------- | ---------------------------------------------- |
|
|
58
|
-
| small | none | direct or `builder` | none; the touched test is the review
|
|
59
|
-
| medium | one opinion (`planner` or `analyst`) only when the shape is open | `opus`, `astra`, or `builder` by judgment load | one pass by
|
|
60
|
-
| large | one adversarial round: `planner` and `analyst`, same brief, clean contexts, blind to each other | disjoint units in parallel | one `orkestrel-falsify` round on the integrated result
|
|
59
|
+
| Size | Design | Implementation | Review | Gates |
|
|
60
|
+
| ------ | ----------------------------------------------------------------------------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------- |
|
|
61
|
+
| small | none | direct or `builder` | none; the touched test is the review | touched file |
|
|
62
|
+
| medium | one opinion (`planner` or `analyst`) only when the shape is open | `opus`, `astra`, or `builder` by judgment load | one pass by an independent reviewer per § Engines, on numbered claims about the contract and the risky seams | `verifier` on the touched projects |
|
|
63
|
+
| large | one adversarial round: `planner` and `analyst`, same brief, clean contexts, blind to each other | disjoint units in parallel | one `orkestrel-falsify` round on the integrated result | `verifier` tree-wide, once |
|
|
61
64
|
|
|
62
65
|
- Never run a review on a small change. Never run a second design round on the same brief.
|
|
63
|
-
- A fix round re-audits the repaired claim only. A fix that adopted the reviewer's prescription verbatim closes with a mutation probe (disable the load-bearing line, watch the test fail, restore it). A fix that departs from it gets one pass by
|
|
66
|
+
- A fix round re-audits the repaired claim only. A fix that adopted the reviewer's prescription verbatim closes with a mutation probe (disable the load-bearing line, watch the test fail, restore it). A fix that departs from it gets one pass by an independent reviewer per § Engines.
|
|
64
67
|
- When review rounds at one seam keep surfacing defects without converging on their source, follow `.agents/skills/orkestrel-falsify/SKILL.md` § End the depth search.
|
|
65
68
|
- An all-confirmed round ends the audit. A round needs an added or repaired claim to attack; reviewer appetite is not a subject.
|
|
66
69
|
|
|
@@ -72,7 +75,7 @@ A large change runs these phases once each, in order, and ends when the exit cri
|
|
|
72
75
|
2. **Design.** One adversarial round: `planner` (subjective) and `analyst` (objective) on one brief, clean contexts, blind to each other. Reconcile into one plan: units, owned files, dependencies, parallel and serial order, acceptance criteria, exit criterion, routing ledger.
|
|
73
76
|
3. **Implement.** Dispatch units per § Routing and § Parallelism.
|
|
74
77
|
4. **Integrate.** Apply returned patches to shared files serially. A type, mechanism, or criterion found here is a successor unit, never an integration edit.
|
|
75
|
-
5. **Audit.** One `orkestrel-falsify` round on the integrated result,
|
|
78
|
+
5. **Audit.** One `orkestrel-falsify` round on the integrated result, an independent reviewer per § Engines in each lane; add `checker` when the criteria are mechanical.
|
|
76
79
|
6. **Verify.** `verifier` runs the tree-wide gates once.
|
|
77
80
|
7. **Re-baseline.** Strike satisfied units, restate transformed ones, add units the exit criterion already required. A re-baseline never moves the exit criterion; that needs the user.
|
|
78
81
|
8. **Accept.** Report outcome, decisions, evidence, remaining risk. Run `orkestrel-debrief` when the campaign changed process, then prune per § Cleanup.
|
|
@@ -103,7 +106,7 @@ Every working file lives under the checkout's gitignored `tmp/`, in the director
|
|
|
103
106
|
|
|
104
107
|
| Directory | Holds |
|
|
105
108
|
| ------------------------------------------ | -------------------------------------------------------------------------------------------------- |
|
|
106
|
-
| `tmp/claude/`, `tmp/codex/`, `tmp/cursor/` | bench briefs, launch scripts, journals, `.err` files, last-message files, login logs, per
|
|
109
|
+
| `tmp/claude/`, `tmp/codex/`, `tmp/cursor/` | bench briefs, launch scripts, journals, `.err` files, last-message files, login logs, per harness |
|
|
107
110
|
| `tmp/units/` | native unit briefs, reports, claims files, and campaign records |
|
|
108
111
|
| `tmp/probes/` | runtime probes the `probe` Vitest project collects and the `probe` MCP server arms |
|
|
109
112
|
| `tmp/type/` | the type stage's workspace mirror, owned by `@orkestrel/probe` |
|
|
@@ -145,7 +148,7 @@ The Orchestrator triages: obvious correction → tighten and re-dispatch; missin
|
|
|
145
148
|
## Benches
|
|
146
149
|
|
|
147
150
|
- 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
|
-
-
|
|
151
|
+
- For a harness that uses a bench, record a dispatch that fails on auth, quota, model access, or network as bench dark and re-plan the lane: Astra bench dark → Claude Opus holds the objective lane too; Claude Opus bench dark → 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 under the Codex mapping. When Haiku refuses the read, re-dispatch the role with `model: sonnet`. Record every substitution in the routing ledger. For a native role failure, use § Deviation protocol without a Claude fallback prerequisite.
|
|
149
152
|
- Never assign Grok a design or review lane in Claude Code or Codex.
|
|
150
153
|
- Journal every bench run under `tmp/<bench>/` with its session id. Never commit a journal.
|
|
151
154
|
|
|
@@ -162,7 +165,7 @@ The Orchestrator triages: obvious correction → tighten and re-dispatch; missin
|
|
|
162
165
|
- Fix the model at session start. Effort switches and MCP changes invalidate the cache on most models and configurations; check the rule for the active model and tool-loading mode before changing either mid-session.
|
|
163
166
|
- Keep the always-on instruction set small; rules load by path. An edit to a loaded instruction file takes effect after `/clear`, `/compact`, or a restart.
|
|
164
167
|
- Give reading and driver roles no instruction files (`omitClaudeMd` in Claude Code) when their charter carries the floor they need.
|
|
165
|
-
-
|
|
168
|
+
- Route bulk reads per § Routing and keep only the distillate.
|
|
166
169
|
|
|
167
170
|
## Acceptance
|
|
168
171
|
|
|
@@ -39,7 +39,7 @@ is the lens list's only normative home, and the lane states its coverage against
|
|
|
39
39
|
charter's wording survives the swap: a charter that assumes its default perspective
|
|
40
40
|
everywhere outside the swap clause cannot be dispatched into the other lane, and a round
|
|
41
41
|
run under a swap that reads like the default lane's output is the residue.
|
|
42
|
-
- **Bridge minimalism.** A
|
|
42
|
+
- **Bridge minimalism.** A harness bridge loads one canonical workflow and adds nothing.
|
|
43
43
|
Any instruction beyond the load is a competing instruction.
|
|
44
44
|
- **Vocabulary drift across mirrored files.** The same concept takes the same term across
|
|
45
45
|
the Claude and Codex mirrors and each operating contract's role table.
|
|
@@ -92,7 +92,7 @@ Findings land as one of:
|
|
|
92
92
|
skill step the campaign always skipped or always overrode is wrong.
|
|
93
93
|
- **Orchestration-contract refinements.** Laws the orchestrator learned (cap sizing,
|
|
94
94
|
probe-first, journal-first, verdict shapes, launch ownership) land in the operating
|
|
95
|
-
contract, mirrored across
|
|
95
|
+
contract, mirrored across harnesses.
|
|
96
96
|
|
|
97
97
|
## The questions every round asks
|
|
98
98
|
|
|
@@ -108,6 +108,6 @@ Findings land as one of:
|
|
|
108
108
|
|
|
109
109
|
## Mirror discipline
|
|
110
110
|
|
|
111
|
-
Every roster or contract change lands on all
|
|
111
|
+
Every roster or contract change lands on all harness surfaces in the same round: the
|
|
112
112
|
Claude charters, the Codex mirrors, and both operating-contract role tables. An
|
|
113
113
|
unmirrored refinement is a new drift seeded on purpose.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bench lanes
|
|
2
2
|
|
|
3
|
-
An external engine widens capacity and inherits no authority. Treat every bench output as a proposal until the Orchestrator verifies it against the tree. `.agents/transports/<
|
|
3
|
+
An external engine widens capacity and inherits no authority. Treat every bench output as a proposal until the Orchestrator verifies it against the tree. `.agents/transports/<harness>.md` owns each bench's command, sandbox, and recovery; this file owns what is true of every bench.
|
|
4
4
|
|
|
5
5
|
## Before the lane
|
|
6
6
|
|
|
@@ -31,7 +31,7 @@ Write `tmp/units/<unit>-claims.md` and point every lane at it. Read `references/
|
|
|
31
31
|
|
|
32
32
|
## Dispatch the lanes
|
|
33
33
|
|
|
34
|
-
- Medium: one lane,
|
|
34
|
+
- Medium: one lane, with an independent reviewer per `.agents/orchestration.md` § Engines (`reviewer` for Astra-written work, `analyst` for Opus-written work). Large: the objective lane and the subjective lane, same claims file, each in a clean context, neither shown the other's answer before reconciliation. Add `checker` when criteria are mechanical.
|
|
35
35
|
- Tell a lane when its own engine wrote the half it audits.
|
|
36
36
|
- Give a lane the evidence a read-only allowlist cannot produce: run the probe yourself, record its control and output, and hand it over.
|
|
37
37
|
- Auditors edit no source and spawn nothing. Their reports are immutable after they return.
|
|
@@ -53,5 +53,5 @@ Record which engine was right and on what.
|
|
|
53
53
|
- Every retained finding names the fix-brief item that carries it; walk the list once.
|
|
54
54
|
- Drop, on the record, anything no lane can substantiate against the evidence.
|
|
55
55
|
- Promote anything that must outlive the round into a durable artifact before the working files are swept.
|
|
56
|
-
-
|
|
56
|
+
- Assign the fix round's lane to an independent reviewer per `.agents/orchestration.md` § Engines. The next round's brief is this round's successor.
|
|
57
57
|
- Accept when the claims are satisfied on evidence (`VERDICT: PASS` against a claim set covering what the subject owns), never on green gates alone. Bound the claim set at the brief, rule on what it returned, and close; never re-run because an attack can still be imagined.
|
|
@@ -10,9 +10,9 @@ A map is mechanical; reading is not. Run the map first, hand it to the reader, a
|
|
|
10
10
|
|
|
11
11
|
## Scripts
|
|
12
12
|
|
|
13
|
-
| Script | Does
|
|
14
|
-
| ---------------- |
|
|
15
|
-
| `scripts/map.ts` | `--tree PATH...` files with line counts and sizes; `--headings PATH...` Markdown headings with lines; `--frontmatter PATH...` every key of a frontmatter block, a TOML file, or a YAML file with its whole value, nested keys dotted (`interface.default_prompt`); `--exports PATH...` `export` lines in TypeScript files (a text reading); `--census TERM...` every line carrying a term; `--refs PATH` every line naming a path or its basename; `--anchors PATH...` every `§ Heading` reference whose heading its target lacks. `--paths a,b` narrows a census or refs walk; `--ignore-case`; `--json`; `--out FILE` writes the map instead of printing it. Walks skip `node_modules`, `.git`, `dist`, `tmp`, `.orkestrel`, `.idea`, and `host.json`. |
|
|
13
|
+
| Script | Does |
|
|
14
|
+
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
15
|
+
| `scripts/map.ts` | `--tree PATH...` files with line counts and sizes; `--headings PATH...` Markdown headings with lines; `--frontmatter PATH...` every key of a frontmatter block, a TOML file, or a YAML file with its whole value, nested keys dotted (`interface.default_prompt`); `--exports PATH...` `export` lines in TypeScript files (a text reading); `--census TERM...` every line carrying a term (a term that opens with `--` is refused as a missing value, so drop a custom property's leading dashes); `--refs PATH` every line naming a path or its basename; `--anchors PATH...` every `§ Heading` reference whose heading its target lacks. `--paths a,b` narrows a census or refs walk; `--ignore-case`; `--json`; `--out FILE` writes the map instead of printing it. Walks skip `node_modules`, `.git`, `dist`, `tmp`, `.orkestrel`, `.idea`, and `host.json`. |
|
|
16
16
|
|
|
17
17
|
## Map
|
|
18
18
|
|
|
@@ -24,5 +24,5 @@ A map is mechanical; reading is not. Run the map first, hand it to the reader, a
|
|
|
24
24
|
|
|
25
25
|
## Refuse
|
|
26
26
|
|
|
27
|
-
- A question that needs reading at depth or a judgment: route it
|
|
27
|
+
- A question that needs reading at depth or a judgment: route it per `.agents/orchestration.md` § Routing and the size gate, with the map attached.
|
|
28
28
|
- A census over a term short enough to match inside unrelated words, without `--paths`.
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
// heading the named file, or the same file, does not carry. Walks skip node_modules, .git, dist,
|
|
10
10
|
// tmp, .orkestrel, .idea, and host.json; --paths narrows a census or refs walk. Modes combine, each
|
|
11
11
|
// printing its section; --json prints one object; --out writes the output to FILE instead of the
|
|
12
|
-
// terminal. Give each flag once; a later duplicate is not read.
|
|
13
|
-
//
|
|
12
|
+
// terminal. Give each flag once; a later duplicate is not read. A value that opens with `--` is a
|
|
13
|
+
// missing value, so census a custom property without its leading dashes. Exit 0, or 64 when no
|
|
14
|
+
// mode is given or a flag is given with no value.
|
|
14
15
|
import { existsSync, readFileSync, statSync, mkdirSync, writeFileSync } from 'node:fs'
|
|
15
16
|
import { basename, dirname } from 'node:path'
|
|
16
17
|
import {
|
|
@@ -300,7 +301,17 @@ function renderReport(report: Report): string {
|
|
|
300
301
|
}
|
|
301
302
|
|
|
302
303
|
function main(argv: readonly string[]): number {
|
|
303
|
-
const missing = readMissingFlags(argv, [
|
|
304
|
+
const missing = readMissingFlags(argv, [
|
|
305
|
+
'--tree',
|
|
306
|
+
'--headings',
|
|
307
|
+
'--frontmatter',
|
|
308
|
+
'--exports',
|
|
309
|
+
'--census',
|
|
310
|
+
'--refs',
|
|
311
|
+
'--anchors',
|
|
312
|
+
'--paths',
|
|
313
|
+
'--out',
|
|
314
|
+
])
|
|
304
315
|
if (missing.length > 0) {
|
|
305
316
|
console.error(`map: ${missing.join(', ')} given with no value`)
|
|
306
317
|
return 64
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Claude transport contract
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
For harnesses that route work to the Claude Opus 5.5 bench, follow this file. Routes: `planner`, `reviewer`, `opus`. Read `.agents/orchestration.md` first; its Codex mapping uses native roles without this transport or a Claude probe. A driver writes the brief, resolves the command, and returns the brief path, the command, and the journal path. The Orchestrator launches the run as a tracked background command under a cap it sizes from prior runs.
|
|
4
4
|
|
|
5
5
|
## Command
|
|
6
6
|
|
|
@@ -16,6 +16,6 @@ node .agents/skills/orkestrel-dispatch/scripts/launch.ts --journal tmp/claude/<u
|
|
|
16
16
|
|
|
17
17
|
## Availability
|
|
18
18
|
|
|
19
|
-
- Probe with `node .agents/skills/orkestrel-dispatch/scripts/bench.ts --claude` before the first use in a session. `live: false` records the bench dark: return it at once with the fallback named, so the
|
|
19
|
+
- Probe with `node .agents/skills/orkestrel-dispatch/scripts/bench.ts --claude` before the first bench use in a session. `live: false` records the bench dark: return it at once with the fallback named, so the Orchestrator records Opus unavailable for the round. Where the binary is absent, name the install command for the `claude` CLI so the Orchestrator can put it to the user in the same turn.
|
|
20
20
|
- Never install, authenticate, or substitute an API key, access token, or copied auth file.
|
|
21
21
|
- Never route orchestration or acceptance across this bridge. Never read credentials, edit, or spawn another agent.
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# Codex transport contract
|
|
2
2
|
|
|
3
|
-
Every driver that carries a brief to the GPT-6 Astra bench follows this file. Routes: `analyst` (audit, objective design argument) and `astra` (implementation). A driver writes the brief, resolves the command, and returns the brief path, the command, and the journal path. The Orchestrator launches the run as a tracked background command under a cap it sizes from prior runs.
|
|
3
|
+
Every driver that carries a brief to the Codex GPT-6 Astra bench follows this file. Routes: `analyst` (audit, objective design argument) and `astra` (implementation). For native roles, use the canonical Codex mapping in `.agents/orchestration.md` without a bench launch or probe. A driver writes the brief, resolves the command, and returns the brief path, the command, and the journal path. The Orchestrator launches the run as a tracked background command under a cap it sizes from prior runs.
|
|
4
4
|
|
|
5
5
|
## Models and effort
|
|
6
6
|
|
|
7
7
|
```text
|
|
8
8
|
CODEX_ASTRA_MODEL=gpt-6-astra effort high; xhigh only for a stated hard-reasoning need
|
|
9
|
-
CODEX_MECHANICAL_MODEL=gpt-6-sol
|
|
9
|
+
CODEX_MECHANICAL_MODEL=gpt-6.1-sol fully specified, taste-free units
|
|
10
10
|
CODEX_READING_MODEL=gpt-6-luna absorption and research when the Cursor bench is dark; record the substitution
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
## Command
|
|
14
14
|
|
|
15
|
-
Use the journaled CLI for every unit. `codex mcp-server` was removed in Codex 0.154.0: never register it in an MCP configuration and never call an `mcp__codex__*` tool.
|
|
15
|
+
Use the journaled CLI for every bench unit. `codex mcp-server` was removed in Codex 0.154.0: never register it in an MCP configuration and never call an `mcp__codex__*` tool.
|
|
16
16
|
|
|
17
17
|
```text
|
|
18
18
|
node .agents/skills/orkestrel-dispatch/scripts/launch.ts --journal tmp/codex/<unit>.jsonl --errors tmp/codex/<unit>.err --cap <seconds> --status -- codex exec --json -C <checkout> --sandbox <sandbox> --model gpt-6-astra -c model_reasoning_effort="high" --output-last-message tmp/codex/<unit>-last.md "Read tmp/codex/<unit>-brief.md from disk and execute it exactly. Your final message is the report it specifies."
|
|
@@ -47,7 +47,7 @@ node .agents/skills/orkestrel-dispatch/scripts/launch.ts --journal tmp/codex/<un
|
|
|
47
47
|
|
|
48
48
|
## Routing exclusion
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
For harnesses that route `opus` to Claude, route a unit that authors sandbox escapes, resolution-bypassing imports, injection payloads, or credential probes to `opus` from the start and record the Codex bench dark for that unit only. For native Codex roles, report a harness refusal through the deviation protocol; the `opus` role uses the same harness.
|
|
51
51
|
|
|
52
52
|
## Journals
|
|
53
53
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Cursor transport contract
|
|
2
2
|
|
|
3
|
-
Every driver that carries a brief to the Cursor Grok bench follows this file. Route: `grok`. A driver writes the brief, resolves the command, and returns the brief path, the command, and the journal path. The Orchestrator launches the run as a tracked background command under a cap it sizes from prior runs. Read `.agents/orchestration.md` first; it owns the role set and the routing.
|
|
3
|
+
Every driver that carries a brief to the Cursor Grok 4.7 Extra High bench follows this file. Route: `grok`. A driver writes the brief, resolves the command, and returns the brief path, the command, and the journal path. The Orchestrator launches the run as a tracked background command under a cap it sizes from prior runs. Read `.agents/orchestration.md` first; it owns the role set and the routing.
|
|
4
4
|
|
|
5
5
|
## Model
|
|
6
6
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
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
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
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
|
|
10
|
+
- Use the built-in `Explore` agent with `model: haiku` for an exact bounded lookup; apply `.agents/orchestration.md` § Routing. 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
|
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
- Roles that launch a CLI, run gates, or only read set `omitClaudeMd: true`; their charters carry the permission floor they need. Writers and reviewers load the contract.
|
|
25
25
|
- Adding or removing an MCP server invalidates the cache when its tools load into the prefix; deferred tools (the default) append without disturbing it. Avoid either mid-session.
|
|
26
26
|
- An edit to a loaded instruction file takes effect after `/clear`, `/compact`, or a restart. Edits under `.claude/agents/` and `.claude/skills/` hot-reload.
|
|
27
|
-
-
|
|
27
|
+
- Route supporting reads per `.agents/orchestration.md` § Routing. The main context holds decisions.
|
|
28
28
|
|
|
29
29
|
## Wiring
|
|
30
30
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: grok
|
|
3
|
-
description: 'Haiku 5.5 driver for the Cursor Grok bench: absorption, distillation,
|
|
3
|
+
description: 'Haiku 5.5 driver for the Cursor Grok bench: context absorption, distillation, broad mapping, and exploration. 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
5
|
model: haiku
|
|
6
6
|
effort: high
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: scout
|
|
3
|
-
description: 'Haiku 5.5 read-only
|
|
3
|
+
description: 'Haiku 5.5 read-only exact bounded lookup of files, symbols, and seams. Returns file:line pointers and a shape summary. Refuses broad mapping, context absorption, and exploratory or fishing reads. Never edits or judges quality.'
|
|
4
4
|
tools: Read, Grep, Glob
|
|
5
5
|
model: haiku
|
|
6
6
|
effort: high
|
|
@@ -8,7 +8,9 @@ permissionMode: dontAsk
|
|
|
8
8
|
omitClaudeMd: true
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
On Claude Haiku 5.5,
|
|
11
|
+
On Claude Haiku 5.5, perform an exact bounded lookup. Refuse broad mapping, context absorption,
|
|
12
|
+
distillation, and exploratory or fishing reads; refer the dispatch to `.agents/orchestration.md`
|
|
13
|
+
§ Routing. You do not read at depth, edit, or judge.
|
|
12
14
|
|
|
13
15
|
## Do
|
|
14
16
|
|
|
@@ -104,7 +104,7 @@ Never use in-repository `@src/*` aliases in public guide examples; reserve them
|
|
|
104
104
|
- Research the external schema only when a consumer needs a key outside `display_name`, `short_description`, and `default_prompt`, and add no key before then.
|
|
105
105
|
- Give every one of those keys a non-empty single-quoted scalar, and write an apostrophe inside it as `''`.
|
|
106
106
|
- Name the skill's own `$<directory>` token in `default_prompt`.
|
|
107
|
-
- Keep
|
|
108
|
-
- Give a
|
|
109
|
-
- Give every canonical skill exactly one
|
|
107
|
+
- Keep harness bridges minimal: they load one canonical workflow and add no competing instructions.
|
|
108
|
+
- Give a harness bridge its canonical skill's `name` and `description` verbatim, name the `.agents/skills/<name>/SKILL.md` path it loads, and give it no references of its own.
|
|
109
|
+
- Give every canonical skill exactly one harness bridge directory of the same name, and give every bridge directory a canonical twin.
|
|
110
110
|
- Review a bridge body's remaining instructions yourself: the policy sweep proves `name` and `description` parity, the named canonical path, and the absence of bridge-owned references, and nothing else about the body.
|
|
@@ -102,8 +102,11 @@ SCSS mirrors TypeScript centralization. Concrete token prefixes are project-spec
|
|
|
102
102
|
| Sass variable | lowercase kebab-case; `!default` when overridable |
|
|
103
103
|
| Custom property | project token scheme: `--{scope}-{property}[-modifier]` |
|
|
104
104
|
| Modifier class | bare adjective/noun: `.surface`, `.muted`, `.accent` |
|
|
105
|
+
| Variant class | component name, hyphen, map key: `.drag-success` |
|
|
105
106
|
| State class | bare adjective using the shared lifecycle vocabulary |
|
|
106
107
|
|
|
107
108
|
State classes are bare adjectives such as `.active` and `.disabled`, chosen consistently with the shared lifecycle vocabulary.
|
|
108
109
|
|
|
110
|
+
When a class sets one component's tokens for one key of a shared Sass map, such as a recreated `$theme-colors`, write it as a variant class, as Bootstrap writes `.btn-success`: generate one class per key with `@each` over the map's keys, take each value from the family map with an `@error` on a missing key, and set only the component's own custom properties. Keep the bare modifier form for a class that any component reads.
|
|
111
|
+
|
|
109
112
|
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.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name = "builder"
|
|
2
2
|
description = "Sol executor for one bounded unit with a closed shape in src, app, tests, or configs; writes only owned files as the sole writer in its checkout and validates scoped to them."
|
|
3
|
-
model = "gpt-6-sol"
|
|
3
|
+
model = "gpt-6.1-sol"
|
|
4
4
|
model_reasoning_effort = "low"
|
|
5
5
|
sandbox_mode = "workspace-write"
|
|
6
6
|
developer_instructions = """
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name = "grok"
|
|
2
|
-
description = "Codex-side driver for the Cursor Grok bench: absorption, distillation,
|
|
3
|
-
model = "gpt-6-
|
|
2
|
+
description = "Codex-side driver for the Cursor Grok bench: context absorption, distillation, broad mapping, and exploration. Returns the brief text, its path, the resolved command, and the journal path for the Orchestrator to launch, and the Grok distillate untouched. Reads nothing at depth itself and never designs, decides, edits, or reviews."
|
|
3
|
+
model = "gpt-6-luna"
|
|
4
4
|
model_reasoning_effort = "low"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
name = "opus"
|
|
2
|
-
description = "
|
|
3
|
-
model = "gpt-6-
|
|
4
|
-
model_reasoning_effort = "
|
|
2
|
+
description = "GPT-6 Astra implementation of one bounded subjective unit: API shape, naming, ergonomics, guide voice. Writes owned files, proves claims, and validates scoped. Never accepts its own work."
|
|
3
|
+
model = "gpt-6-astra"
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
5
|
sandbox_mode = "workspace-write"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
7
|
+
Implement one dispatched subjective unit on GPT-6 Astra and spawn nothing.
|
|
8
8
|
|
|
9
|
-
Read .
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
journal path. The Orchestrator launches under a cap.
|
|
9
|
+
Read the brief, AGENTS.md, the rules whose paths match the owned files, the named skill, and the
|
|
10
|
+
guide. Follow AGENTS.md § Work loop: types first, prove the claim with the prove tool, implement,
|
|
11
|
+
test, consolidate, document. For a defect, record the failing command and count before the fix
|
|
12
|
+
and the same command green after.
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
Write only the owned files; return an exact patch for a shared file. Validate read-only and
|
|
15
|
+
scoped: the touched project's check: script, the touched test file, then the touched project.
|
|
16
|
+
Never run format, lint --fix, build, or the whole suite. Delete every probe before returning;
|
|
17
|
+
promote a probe that settled a claim into a test. Finish the whole unit. Stop only per
|
|
18
|
+
.agents/orchestration.md § Deviation protocol.
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
Never add a dependency, suppress a diagnostic, mock project-owned behavior, leave a TODO in
|
|
21
|
+
scope, commit, push, install, read a secret, or run a destructive command.
|
|
22
|
+
|
|
23
|
+
Return touched files with one line each, diffstat, scoped validation commands and results, the
|
|
24
|
+
prove closing line per claim, failing-first test names, shared-file patches, deviation state.
|
|
25
|
+
No process diary.
|
|
22
26
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name = "orkestrel"
|
|
2
2
|
description = "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."
|
|
3
|
-
model = "gpt-6-sol"
|
|
3
|
+
model = "gpt-6.1-sol"
|
|
4
4
|
model_reasoning_effort = "medium"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
name = "planner"
|
|
2
|
-
description = "
|
|
3
|
-
model = "gpt-6-
|
|
4
|
-
model_reasoning_effort = "
|
|
2
|
+
description = "Read-only GPT-6 Astra design of shape, naming, ergonomics, alternatives, and bounded units. Never implements or accepts."
|
|
3
|
+
model = "gpt-6-astra"
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
7
|
+
Design one dispatched unit on GPT-6 Astra. Use read-only inspection commands. Never edit,
|
|
8
|
+
run a mutating command, or spawn.
|
|
8
9
|
|
|
9
|
-
Read .
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
Read the brief, AGENTS.md, the rules whose paths match the subject, the named skill, the guide,
|
|
11
|
+
and the supplied distillate. Work from the brief alone; never look for or reconcile the other
|
|
12
|
+
lane's answer. Hold the lane the dispatch names and say which: subjective (shape, naming,
|
|
13
|
+
ergonomics, design fit) or objective (correctness, constraints, what the contracts permit).
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
Propose one design. Name each real alternative that a constraint favors and why the design
|
|
16
|
+
wins; leave out an option nothing favors. Cut every unit to a fully specified brief; name its
|
|
17
|
+
role and engine, owned files, dependencies, and acceptance criteria. Name every judgment call
|
|
18
|
+
under Tensions for the other lane or the Orchestrator to rule.
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
(
|
|
20
|
+
Return Design, Alternatives, Constraints (each with file:line), Refusals (options a rule
|
|
21
|
+
forecloses, rule quoted), Measurements (readings supplied and readings missing), Units, Tensions,
|
|
22
|
+
Risks. Fill the sections your lane owns; leave the others empty rather than renaming them.
|
|
23
|
+
A dispatch-named skill that fixes another shape wins. Your final message is the proposal.
|
|
19
24
|
"""
|
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
name = "reviewer"
|
|
2
|
-
description = "
|
|
3
|
-
model = "gpt-6-
|
|
4
|
-
model_reasoning_effort = "
|
|
2
|
+
description = "Read-only GPT-6 Astra review against numbered claims: design fit by default and correctness when assigned. Never edits or accepts."
|
|
3
|
+
model = "gpt-6-astra"
|
|
4
|
+
model_reasoning_effort = "high"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
|
|
7
|
+
Review one dispatched unit on GPT-6 Astra by trying to break its claims. Use read-only inspection
|
|
8
|
+
commands. Never edit, run a mutating command, or spawn. Use a clean context; never review work you wrote.
|
|
8
9
|
|
|
9
|
-
Read
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
Read the claims file, the actual diff and git status --porcelain the dispatch supplies,
|
|
11
|
+
AGENTS.md, the rules whose paths match the changed files, the guide, and enough surrounding
|
|
12
|
+
source to judge. Return a deviation if the diff is missing.
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
Hold the lane the dispatch names and say which. Subjective: requested shape and voice, coherent
|
|
15
|
+
names and boundaries, the right layer, each concept's purpose, guide parity. Objective:
|
|
16
|
+
correctness under adverse orderings, what contracts and installed declarations permit,
|
|
17
|
+
dependency and range truth, test sufficiency, and the letter of the rules.
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
Attack each claim with a concrete input, state, or interleaving. Before confirming a proof,
|
|
20
|
+
name the mutation that would make it fail and whether its assertions distinguish it. Rule a
|
|
21
|
+
claim whose only evidence is the writer's report UNRESOLVED. Cite a capture for every rendered
|
|
22
|
+
surface claim; mark what the portfolio cannot show NOT-EVIDENCED. Refer a question outside your
|
|
23
|
+
lane to the other lane or the Orchestrator with evidence; never rule on it. Treat a bench finding
|
|
24
|
+
as a proposal to test against the code, never as authority.
|
|
25
|
+
|
|
26
|
+
Return the orkestrel-falsify verdict shape: numbered verdicts with evidence, findings outside the
|
|
27
|
+
claims, attacked-and-held, one terminal line. Each required change carries file:line, what is
|
|
28
|
+
wrong, and what right looks like. Nothing else. Your final message is the verdict.
|
|
19
29
|
"""
|