@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.
Files changed (49) hide show
  1. package/dist/agents/skills/orkestrel-scout/scripts/map.js +14 -3
  2. package/dist/bin/main.js +74 -19
  3. package/dist/bin/main.js.map +1 -1
  4. package/dist/host/agents/orchestration.md +43 -40
  5. package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +3 -3
  6. package/dist/host/agents/skills/orkestrel-dispatch/references/bench.md +1 -1
  7. package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +1 -1
  8. package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +1 -1
  9. package/dist/host/agents/skills/orkestrel-scout/SKILL.md +4 -4
  10. package/dist/host/agents/skills/orkestrel-scout/scripts/map.ts +14 -3
  11. package/dist/host/agents/transports/claude-cli.md +2 -2
  12. package/dist/host/agents/transports/codex.md +4 -4
  13. package/dist/host/agents/transports/cursor.md +1 -1
  14. package/dist/host/claude/AGENTS.md +2 -2
  15. package/dist/host/claude/agents/grok.md +1 -1
  16. package/dist/host/claude/agents/scout.md +4 -2
  17. package/dist/host/claude/rules/documentation.md +3 -3
  18. package/dist/host/claude/rules/styles.md +3 -0
  19. package/dist/host/codex/agents/builder.toml +1 -1
  20. package/dist/host/codex/agents/grok.toml +2 -2
  21. package/dist/host/codex/agents/opus.toml +19 -15
  22. package/dist/host/codex/agents/orkestrel.toml +1 -1
  23. package/dist/host/codex/agents/planner.toml +17 -12
  24. package/dist/host/codex/agents/reviewer.toml +22 -12
  25. package/dist/host/codex/agents/scout.toml +4 -2
  26. package/dist/host/codex/agents/verifier.toml +1 -1
  27. package/dist/host/codex/config.toml +6 -7
  28. package/dist/host/cursor/rules/orchestration.mdc +1 -1
  29. package/dist/host/guides/scaffold.md +26 -4
  30. package/dist/host/manifest.json +27 -27
  31. package/dist/host/scripts/browsers.sh +0 -0
  32. package/dist/host/scripts/codex.sh +0 -0
  33. package/dist/host/scripts/cursor.sh +0 -0
  34. package/dist/host/scripts/deps.sh +0 -0
  35. package/dist/host/scripts/npm.sh +0 -0
  36. package/dist/host/scripts/ollama.sh +0 -0
  37. package/dist/src/core/index.cjs +103 -4
  38. package/dist/src/core/index.cjs.map +1 -1
  39. package/dist/src/core/index.d.cts +40 -1
  40. package/dist/src/core/index.d.ts +40 -1
  41. package/dist/src/core/index.js +101 -5
  42. package/dist/src/core/index.js.map +1 -1
  43. package/dist/src/server/index.cjs +9 -3
  44. package/dist/src/server/index.cjs.map +1 -1
  45. package/dist/src/server/index.d.cts +7 -1
  46. package/dist/src/server/index.d.ts +7 -1
  47. package/dist/src/server/index.js +11 -5
  48. package/dist/src/server/index.js.map +1 -1
  49. 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
- | 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.
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 | 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 |
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 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.
43
- - `.agents/transports/<provider>.md` owns each bench's invocation, sandbox, journal, and recovery. `.claude/agents/` and `.codex/agents/` hold one file per role.
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
- - 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.
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, a lookup, or a one-line fix. Dispatch when isolation, parallelism, a second engine, or a large read pays for the brief.
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 | Gates |
57
- | ------ | ----------------------------------------------------------------------------------------------- | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
58
- | small | none | direct or `builder` | none; the touched test is the review | touched file |
59
- | medium | one opinion (`planner` or `analyst`) only when the shape is open | `opus`, `astra`, or `builder` by judgment load | one pass by a reviewer engine that did not write it, on numbered claims about the contract and the risky seams | `verifier` on the touched projects |
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 | `verifier` tree-wide, once |
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 the other engine.
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, one engine that did not write it per lane; add `checker` when the criteria are mechanical.
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 provider |
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
- - 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.
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
- - Send bulk reads to a subagent and keep only the distillate.
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 provider bridge loads one canonical workflow and adds nothing.
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 providers.
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 provider surfaces in the same round: the
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/<provider>.md` owns each bench's command, sandbox, and recovery; this file owns what is true of every bench.
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, on an engine that did not write the work (`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.
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
- - The fix round's lane is an engine that did not write the fix. The next round's brief is this round's successor.
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 to `grok`, `distiller`, or the reviewer the size gate names, with the map attached.
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. Exit 0, or 64 when no mode is
13
- // given or --refs names no path.
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, ['--refs', '--paths', '--out'])
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
- Every Codex-side driver that carries a brief to the Claude Opus 5.5 bench follows this file. Routes: `planner`, `reviewer`, `opus`. 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
+ 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 Astra main session 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.
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 fully specified, taste-free units and drivers
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
- The provider's content filter has ended turns that authored a violation construct, even as a negative test: sandbox escapes, resolution-bypassing imports, injection payloads, credential probes. Route such a unit to `opus` from the start and record the bench dark for that unit only.
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 a quick locate; it loads no instruction files.
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
- - Keep large reads in subagents. The main context holds decisions.
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, 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.'
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 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
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, 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
 
@@ -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.
@@ -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, 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
  """