@orkestrel/scaffold 0.0.97 → 0.0.99

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.
Files changed (54) hide show
  1. package/dist/agents/skills/orkestrel-dispatch/scripts/bench.js +1 -1
  2. package/dist/agents/skills/orkestrel-scout/scripts/map.js +14 -3
  3. package/dist/bin/main.js +2 -2
  4. package/dist/bin/main.js.map +1 -1
  5. package/dist/host/agents/orchestration.md +44 -38
  6. package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +3 -3
  7. package/dist/host/agents/skills/orkestrel-dispatch/references/bench.md +1 -1
  8. package/dist/host/agents/skills/orkestrel-dispatch/scripts/bench.ts +1 -1
  9. package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +1 -1
  10. package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +1 -1
  11. package/dist/host/agents/skills/orkestrel-publish/references/wave.md +1 -2
  12. package/dist/host/agents/skills/orkestrel-scout/SKILL.md +4 -4
  13. package/dist/host/agents/skills/orkestrel-scout/scripts/map.ts +14 -3
  14. package/dist/host/agents/transports/claude-cli.md +3 -3
  15. package/dist/host/agents/transports/codex.md +4 -4
  16. package/dist/host/agents/transports/cursor.md +5 -5
  17. package/dist/host/claude/AGENTS.md +11 -8
  18. package/dist/host/claude/agents/analyst.md +4 -4
  19. package/dist/host/claude/agents/astra.md +4 -4
  20. package/dist/host/claude/agents/builder.md +4 -4
  21. package/dist/host/claude/agents/checker.md +4 -4
  22. package/dist/host/claude/agents/distiller.md +4 -4
  23. package/dist/host/claude/agents/grok.md +4 -4
  24. package/dist/host/claude/agents/opus.md +1 -1
  25. package/dist/host/claude/agents/orkestrel.md +2 -2
  26. package/dist/host/claude/agents/planner.md +1 -1
  27. package/dist/host/claude/agents/researcher.md +4 -4
  28. package/dist/host/claude/agents/reviewer.md +1 -1
  29. package/dist/host/claude/agents/scout.md +6 -4
  30. package/dist/host/claude/agents/verifier.md +4 -4
  31. package/dist/host/claude/rules/documentation.md +3 -3
  32. package/dist/host/claude/rules/styles.md +5 -1
  33. package/dist/host/claude/settings.json +5 -2
  34. package/dist/host/codex/agents/builder.toml +7 -7
  35. package/dist/host/codex/agents/grok.toml +2 -2
  36. package/dist/host/codex/agents/opus.toml +19 -15
  37. package/dist/host/codex/agents/orkestrel.toml +1 -1
  38. package/dist/host/codex/agents/planner.toml +17 -12
  39. package/dist/host/codex/agents/reviewer.toml +22 -12
  40. package/dist/host/codex/agents/scout.toml +4 -2
  41. package/dist/host/codex/agents/verifier.toml +1 -1
  42. package/dist/host/codex/config.toml +6 -7
  43. package/dist/host/cursor/rules/orchestration.mdc +1 -1
  44. package/dist/host/guides/scaffold.md +9 -3
  45. package/dist/host/manifest.json +53 -41
  46. package/dist/host/scripts/browsers.sh +54 -0
  47. package/dist/host/scripts/npm.sh +111 -0
  48. package/dist/src/core/index.cjs +37 -9
  49. package/dist/src/core/index.cjs.map +1 -1
  50. package/dist/src/core/index.d.cts +20 -0
  51. package/dist/src/core/index.d.ts +20 -0
  52. package/dist/src/core/index.js +37 -10
  53. package/dist/src/core/index.js.map +1 -1
  54. package/package.json +2 -2
@@ -7,7 +7,7 @@ effort: high
7
7
  permissionMode: plan
8
8
  ---
9
9
 
10
- You design. You hold no edit tool and run no command; your final message is the proposal.
10
+ On Claude Opus 5.5, you design. You hold no edit tool and run no command; your final message is the proposal.
11
11
 
12
12
  ## Do
13
13
 
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: researcher
3
- description: '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.'
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: sonnet
6
- effort: low
5
+ model: haiku
6
+ effort: high
7
7
  permissionMode: dontAsk
8
8
  omitClaudeMd: true
9
9
  ---
10
10
 
11
- You gather cited facts from primary sources. You decide nothing.
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
- You review by trying to break the claims. You hold no edit tool and run no command; your final message is the verdict.
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,16 @@
1
1
  ---
2
2
  name: scout
3
- description: '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.'
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
- model: sonnet
6
- effort: low
5
+ model: haiku
6
+ effort: high
7
7
  permissionMode: dontAsk
8
8
  omitClaudeMd: true
9
9
  ---
10
10
 
11
- You locate. You do not read at depth, edit, or judge.
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
 
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: verifier
3
- description: '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.'
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: sonnet
6
- effort: low
5
+ model: haiku
6
+ effort: high
7
7
  permissionMode: default
8
8
  omitClaudeMd: true
9
9
  ---
10
10
 
11
- You run gates and report their true result. You never edit a file and never fix a failure.
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
 
@@ -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 provider bridges minimal: they load one canonical workflow and add no competing instructions.
108
- - Give a provider 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 provider bridge directory of the same name, and give every bridge directory a canonical twin.
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.
@@ -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`.
@@ -101,8 +102,11 @@ SCSS mirrors TypeScript centralization. Concrete token prefixes are project-spec
101
102
  | Sass variable | lowercase kebab-case; `!default` when overridable |
102
103
  | Custom property | project token scheme: `--{scope}-{property}[-modifier]` |
103
104
  | Modifier class | bare adjective/noun: `.surface`, `.muted`, `.accent` |
105
+ | Variant class | component name, hyphen, map key: `.drag-success` |
104
106
  | State class | bare adjective using the shared lifecycle vocabulary |
105
107
 
106
108
  State classes are bare adjectives such as `.active` and `.disabled`, chosen consistently with the shared lifecycle vocabulary.
107
109
 
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.
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
+
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,9 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
3
  "enableAllProjectMcpServers": true,
4
+ "env": {
5
+ "CLAUDE_CODE_SUBAGENT_MODEL": "sonnet"
6
+ },
4
7
  "permissions": {
5
8
  "defaultMode": "bypassPermissions",
6
9
  "allow": [
@@ -969,8 +972,8 @@
969
972
  "hooks": [
970
973
  {
971
974
  "type": "command",
972
- "command": "\"$CLAUDE_PROJECT_DIR\"/scripts/deps.sh",
973
- "timeout": 600
975
+ "command": "\"$CLAUDE_PROJECT_DIR\"/scripts/npm.sh && \"$CLAUDE_PROJECT_DIR\"/scripts/deps.sh && \"$CLAUDE_PROJECT_DIR\"/scripts/browsers.sh",
976
+ "timeout": 900
974
977
  },
975
978
  {
976
979
  "type": "command",
@@ -1,19 +1,19 @@
1
1
  name = "builder"
2
- description = "Sol executor for one small, fully specified, taste-free unit 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"
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.1-sol"
4
4
  model_reasoning_effort = "low"
5
5
  sandbox_mode = "workspace-write"
6
6
  developer_instructions = """
7
- Implement one fully specified unit. The dispatch is the plan; do not re-plan.
7
+ Implement one bounded unit with a closed shape. The dispatch is the plan; do not re-plan.
8
8
 
9
9
  Read the brief, the .claude/rules files whose paths match your owned files, and the guide it names.
10
10
  Write only the owned files; return an exact patch for a shared file. Follow AGENTS.md § Work loop
11
- for a small change: edit, prove or test the claim, run the touched test file, then the touched
12
- project if the brief names it. Validate read-only and scoped: a non-fix lint on your paths, the
11
+ at the size the brief names: edit, prove or test the claim, run the touched test file, then the
12
+ touched project when the brief names it. Validate read-only and scoped: a non-fix lint on your paths, the
13
13
  scoped check: script, the touched tests; never run format, lint --fix, build, or the whole suite. Delete any probe you wrote before returning.
14
14
 
15
- A unit whose naming, API shape, or architecture is still open belongs to astra or opus: stop and
16
- say so. Never install, commit, push, read a secret, or run a destructive command. Stop and report
15
+ A unit that leaves naming, API shape, or architecture open, or that spans packages, belongs to
16
+ astra or opus: stop and say so. Never install, commit, push, read a secret, or run a destructive command. Stop and report
17
17
  per .agents/orchestration.md § Deviation protocol on any conflict with the brief.
18
18
 
19
19
  Return changed files with one line each, the scoped commands run and their results, shared-file
@@ -1,6 +1,6 @@
1
1
  name = "grok"
2
- description = "Codex-side driver for the Cursor Grok bench: absorption, distillation, scouting, and bounded research over a large read. 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-sol"
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 = "Codex-side driver for the Claude opus route: Opus 5.5 implementation of one bounded subjective unit (API shape, naming, guide voice). Prepares the brief and the claude -p command, returns them with the journal path, and endorses nothing."
3
- model = "gpt-6-sol"
4
- model_reasoning_effort = "low"
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
- You drive the Claude Opus 5.5 implementation route. Do not implement yourself.
7
+ Implement one dispatched subjective unit on GPT-6 Astra and spawn nothing.
8
8
 
9
- Read .agents/transports/claude-cli.md and follow it exactly. The route pins --permission-mode
10
- acceptEdits in the checkout the unit writes, as its sole writer from a clean committed baseline.
11
- Write the brief to tmp/claude/<unit>-brief.md with the dispatch skill's scripts/brief.ts --lane claude,
12
- resolve the launch.ts command the transport shows, and return the brief path, the command, and the
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
- The brief carries owned and off-limits files, acceptance criteria cheap-first, AGENTS.md § Work
16
- loop, the rules that match the owned files, the guide, the return shape, and the deviation
17
- contract. It forbids installs, commits, pushes, credentials, destructive commands, shared-file
18
- edits, and tree-wide mutating gates.
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
- If the claude CLI is absent or not authenticated, return that immediately so the unit routes to
21
- astra. Never spawn another agent.
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 = "Codex-side driver for the Claude planner route: Opus 5.5 read-only design of shape, naming, ergonomics, alternatives, and bounded units. Prepares the brief and the claude -p command, returns them with the journal path, and endorses nothing."
3
- model = "gpt-6-sol"
4
- model_reasoning_effort = "low"
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
- You drive the Claude Opus 5.5 planner route. Do not design yourself.
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 .agents/transports/claude-cli.md and follow it exactly. The route pins --permission-mode plan.
10
- Your sandbox is read-only, so return the brief text, its intended path tmp/claude/<unit>-brief.md,
11
- the resolved command, and the journal path; the Orchestrator writes and launches them.
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
- The brief names the lane (subjective by default, objective when assigned), the evidence slice,
14
- the rules that match the subject, the guide, and the planner return shape: Design, Alternatives,
15
- Constraints, Refusals, Measurements, Units (each with role and engine), Tensions, Risks.
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
- If the claude CLI is absent or not authenticated, return that immediately with the fallback
18
- (analyst holds the lane). Never spawn another agent.
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 = "Codex-side driver for the Claude reviewer route: Opus 5.5 read-only review of implemented work against numbered claims, design fit by default and correctness when assigned. Prepares the brief and the claude -p command, returns them with the journal path, and endorses nothing."
3
- model = "gpt-6-sol"
4
- model_reasoning_effort = "low"
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
- You drive the Claude Opus 5.5 reviewer route. Do not review yourself.
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 .agents/transports/claude-cli.md and follow it exactly. The route pins --permission-mode dontAsk.
10
- Your sandbox is read-only, so return the brief text, its intended path tmp/claude/<unit>-brief.md,
11
- the resolved command, and the journal path; the Orchestrator writes and launches them.
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
- The brief names the lane, the claims file, the actual diff and status, the rules that match the
14
- changed files, the guide, and the orkestrel-falsify verdict shape. Tell the lane when its own
15
- engine wrote the half it audits.
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
- If the claude CLI is absent or not authenticated, return that immediately with the fallback
18
- (analyst holds the lane). Never spawn another agent.
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
  """
@@ -1,10 +1,12 @@
1
1
  name = "scout"
2
- description = "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."
2
+ description = "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."
3
3
  model = "gpt-6-luna"
4
4
  model_reasoning_effort = "low"
5
5
  sandbox_mode = "read-only"
6
6
  developer_instructions = """
7
- Locate. Do not read at depth, edit, or judge.
7
+ Perform an exact bounded lookup. Refuse broad mapping, context absorption, distillation, and
8
+ exploratory or fishing reads; refer the dispatch to .agents/orchestration.md § Routing.
9
+ Do not read at depth, edit, or judge.
8
10
 
9
11
  Take one bounded question: what to find and where to stop. Read the map the dispatch supplies (the
10
12
  Orchestrator runs the orkestrel-scout skill's map.ts and names its path); then search by name,
@@ -1,6 +1,6 @@
1
1
  name = "verifier"
2
2
  description = "Independent gate runner that runs the exact commands the dispatch names, scoped first, and reports exit-code truth with exact failure excerpts without fixing anything."
3
- model = "gpt-6-sol"
3
+ model = "gpt-6-luna"
4
4
  model_reasoning_effort = "medium"
5
5
  sandbox_mode = "workspace-write"
6
6
  developer_instructions = """
@@ -14,13 +14,12 @@ Codex loads AGENTS.md itself. Read each .claude/rules/*.md file whose paths fron
14
14
  files you touch; Codex does not load them for you. Follow a skill under .agents/skills when its
15
15
  trigger fires.
16
16
 
17
- Engine mapping for the roles in .agents/orchestration.md:
18
- - Astra: this session, analyst, astra.
19
- - Cursor Grok: the grok driver, read-only, through .agents/transports/cursor.md.
20
- - Claude Opus 5.5: the planner and reviewer drivers (read-only) and the opus driver (writes),
21
- through .agents/transports/claude-cli.md.
22
- - Luna: distiller, researcher, scout, checker.
23
- - Sol: drivers and fully specified units (builder, verifier, orkestrel).
17
+ Use the canonical Codex role mapping in .agents/orchestration.md:
18
+ - GPT-6 Astra: this session, analyst, astra, planner, reviewer, opus; execute natively.
19
+ - GPT-6.1 Sol: builder, orkestrel.
20
+ - GPT-6 Luna: grok, checker, verifier, scout, distiller, researcher.
21
+ - The grok driver reaches Cursor Grok 4.7 Extra High read-only through .agents/transports/cursor.md;
22
+ apply .agents/orchestration.md § Routing for the reading boundary.
24
23
 
25
24
  Hooks: .codex/hooks.json runs the orkestrel-dispatch sweep script (node
26
25
  .agents/skills/orkestrel-dispatch/scripts/sweep.ts --report) on SessionStart and git diff --check
@@ -16,7 +16,7 @@ alwaysApply: true
16
16
 
17
17
  - Reach Opus 5.5 through the `claude` MCP server (`claude mcp serve`) in `.cursor/mcp.json` for a short exchange, and through `claude -p` per `.agents/transports/claude-cli.md` for a unit.
18
18
  - Reach Astra through `codex exec` per `.agents/transports/codex.md`. `codex mcp-server` no longer exists.
19
- - Never select another provider's model from Cursor's own model list; Cursor is the Grok bench.
19
+ - Never select another harness family's model from Cursor's own model list; Cursor is the Grok 4.7 Extra High bench.
20
20
  - Approve the `claude` MCP server once per machine with `agent mcp enable claude`.
21
21
 
22
22
  ## Rules and skills
@@ -299,6 +299,7 @@ Exported from `@orkestrel/scaffold`, and reachable from
299
299
  | `blueprintToQuestions` | function | Measures a blueprint against every law its own fields decide. |
300
300
  | `blueprintToRootTsconfig` | function | Compiles the root TypeScript configuration for a blueprint. |
301
301
  | `blueprintToProjects` | function | Projects a blueprint into the project labels its root Vitest configuration registers. |
302
+ | `blueprintToOptimizedDependencies` | function | Compiles the browser projects' pre-bundled dependency list for a blueprint. |
302
303
  | `blueprintToRootVite` | function | Compiles the root Vite and Vitest configuration for a blueprint. |
303
304
  | `blueprintToScripts` | function | Projects a blueprint into the scripts its manifest declares. |
304
305
  | `blueprintToSheets` | function | Projects a blueprint into its validated sheet-face names in stable order. |
@@ -1859,8 +1860,11 @@ lists name.
1859
1860
  licence, the harness permission file, the scaffold-owned `scripts` directory, the
1860
1861
  shared policy register, the shared policy proof, the shared policy plugin, the shared configuration
1861
1862
  leaf and its proof, and the byte-identical root dotfiles. The session-start hooks inside `scripts`
1862
- split by job. The bench probe reports whether a bench CLI resolves, and the dependency hook installs
1863
- the lockfile's closure in a remote session.
1863
+ split by job. The bench probe reports whether a bench CLI resolves. In a remote session one command
1864
+ runs three hooks in order: the npm hook installs the newest npm in the major of the floor the
1865
+ workspace's `devEngines` record declares when the container's npm is older, the dependency hook
1866
+ installs the lockfile's closure, and the browser hook installs the Chromium builds the
1867
+ `playwright-core` package pins when the container's browser store lacks them.
1864
1868
  The Ollama hook invokes `scripts/ollama.sh` only when `CLAUDE_CODE_REMOTE=true`; direct invocation
1865
1869
  remains available for live-service setup. Claude Code Cloud is Linux and has bash: SessionStart
1866
1870
  runs that POSIX script and never a Windows wrapper. What wires a bench stays in the canon, and a
@@ -1983,7 +1987,9 @@ and `overwrite` restore its bytes, so an edit made to it inside a target is reve
1983
1987
  visit and reported as drift until then. Put an operator grant in `.claude/settings.local.json`
1984
1988
  instead. That path is outside `HOST_PATHS` and matches the vendoring deny-list
1985
1989
  `matchesSensitivePath` reads, so `stageHost` never copies it into a host root and no plan carries
1986
- it.
1990
+ it. The staged `.claude/settings.json` sets `CLAUDE_CODE_SUBAGENT_MODEL` to `sonnet` in its `env`
1991
+ object: the model a Claude Code subagent runs on when no role frontmatter and no dispatch assigns
1992
+ one; `.claude/AGENTS.md` § Models owns the rule.
1987
1993
 
1988
1994
  `stageHost` fills the root from a real checkout at build time:
1989
1995