--- type: eval-results title: "os-orchestration WS1 session audit (IRL, 10 stratified sessions)" summary: "Audit of 10 real sessions against the 7-question orchestration rubric: delegation decisions, context hygiene, and grouping are healthy; the two HIGH failures were model-tier resolution — a user-set CLAUDE_CODE_SUBAGENT_MODEL=haiku env var silently overriding every spawn (root-caused post-audit, removed), and omitted model params inheriting the expensive main-loop model." tags: - type/eval-results - domain/llm-evaluation - domain/orchestration - tool/os-orchestration - tool/claude-code - project/cc-os scope: global last_updated: 2026-07-06 date: 2026-07-06 related: - eval-methodology-irl-feedback-loop - eval-methodology-ladder source: cc-os --- # os-orchestration WS1 session audit (IRL, 10 stratified sessions) Not a lab eval — an IRL audit of real session transcripts (the post-rollout feedback-loop rung from [[eval-methodology-irl-feedback-loop]]). Full findings: `cc-os/docs/orchestration-audit/2026-07-06-findings.md` (commit 7965f03). ## Results Grid/Threshold **Passing criterion:** per-question qualitative PASS across the sample; failures grouped into verified clusters ranked by severity. Every load-bearing auditor claim was re-verified against the primary transcript before being counted. | # | Rubric question (the hypotheses evaluated) | Verdict | |---|---|---| | 1 | Are subagents called when they should be? | Mostly PASS (8/10; S3/S7 gray-zone heavy in-session investigation) | | 2 | Correct model tier per subagent? | **FAIL — the dominant failure area** (clusters 1 & 2) | | 3 | Planning/grouping for context efficiency? | PASS (concurrent fan-out in 6/10; minor reactive late spawns) | | 4 | Avoiding unnecessary orchestrator reads? | Mostly PASS (S4: 0 bytes over 41 spawns; exceptions S7, S9) | | 5 | Avoiding over-sharing context with subagents? | PASS everywhere (prompts 0.4–6.7KB, no dumps) | | 6 | Following ORCHESTRATION.md? | Split: post-rollout cc-os 23/23 on explicit-model; pre-rollout/ops omit on 16/56 spawns | | 7 | Receiving only needed context back? | PASS everywhere (0.9–13KB summaries, no full-dump returns) | **Summary:** Delegation judgment and context hygiene are healthy; both HIGH failures are about model-tier *resolution*, not delegation decisions. Sample: 10 sessions stratified pre/post plugin rollout across 5 projects (cc-os sessions contaminated — they were building orchestration tooling). ## Verified failure clusters 1. **HIGH (environment):** all 23 spawns in recent sessions resolved to haiku regardless of the requested tier — including explicit judgment-grade sonnet/opus requests. **Root cause found post-audit:** `CLAUDE_CODE_SUBAGENT_MODEL=haiku` in `~/.claude/settings.json`'s `env` block, set by an earlier AI session as a "lowest cost first" measure. The var force-overrides the `model` param on every Agent spawn, silently. The audit's initial "Fable-5 harness bug" attribution was wrong — coincidental timing (var added between the pre-rollout opus/sonnet sessions and the Fable-5 sessions). **Removed 2026-07-06.** The exposed policy gap survives the fix: nothing tells the orchestrator to verify `resolvedModel`, so 23 downgrades went unnoticed. 2. **HIGH (orchestrator):** omitting `model` inherits the main-loop model — a mechanical file-edit ran at sonnet, a character-counting task at opus. Misses cluster pre-rollout and in ops projects; post-rollout cc-os had zero omissions. Now *unmasked* by the env-var removal: the clamp-to-haiku was hiding the cost of omissions. 3. **MEDIUM:** orchestrator self-investigates (up to 74KB of reads) then delegates the same ground; the "short orienting Read" boundary is undefined. 4. **LOW:** reactive late spawns instead of pre-planned batches (wall-clock only). ## Validity and Limitations **How to interpret:** the plugin wording works where present and salient (23/23 explicit-model compliance post-rollout in cc-os); misses cluster where the text wasn't in force. But only 2 truly post-rollout non-cc-os sessions (one violated) — the target population is thin in this sample. Single audit pass; several raw auditor claims did not survive verification (only the verified clusters should be cited). The missed-delegation heuristic (≥4 same-tool runs) produced only false positives — needs retuning before it can score an eval. **No rerun needed:** the audit measured real behavior and the measurements stand; only the Cluster 1 *attribution* changed. The E1–E4 backlog items are eval *scenarios*, not built evals — nothing exists to rerun. ## Orchestrator economics (clarifications worth keeping) The intuition "the expensive orchestrator should delegate all grunt work to cheap workers" is the right frame for the wrong unit of work: - **The expensive part of a frontier orchestrator isn't Edit calls — it's context.** A direct edit to an in-context file is a few hundred output tokens. Delegating the same edit costs a detailed prompt (orchestrator output) + the subagent re-reading the file and surrounding context in a fresh window + a result the orchestrator must read and verify. For sequential, coordinated edits the handoff exceeds the edit. - **Delegation pays when it absorbs context the orchestrator doesn't want to load:** parallelizable independent files, many-file sweeps, large isolated reads (log review, wide grep-and-synthesize). WS1 itself used this correctly — 10 parallel sonnet auditors each digested a full transcript the orchestrator never had to hold. - Mental model: *keep work you already hold the context for; delegate work whose context you don't want to pay for.* Sequential CRUD on an in-context file is the first kind — the audit's Q1 confirmed this (both "missed delegation" flags on in-session sequential work were false positives). ## Deployment and Evolution **Good-Enough Gate:** plugin stays deployed as-is; the env-var removal fixes Cluster 1's cause. Cluster 2 is the live risk now (omission = expensive inheritance under a Fable main loop). **Hardening path / next measurement:** 1. ORCHESTRATION.md wording fixes: (a) verify-`resolvedModel` rule (say so and adapt on mismatch for judgment-critical work); (b) mechanical trigger phrasing for the explicit-model rule ("before every Agent call → include `model:`" — the Eval B lesson from [[os-adr-eval-b-wording-experiment-hypotheses]]); (c) define the orienting-read budget. 2. Build E1–E3 scripted evals from the verified misses (per [[eval-methodology-ladder]]: paired positives/negatives, frozen reserve). E1 = detect the downgrade, E2 = explicit model per spawn, E3 = pre-spawn read budget. E4 deferred. 3. Re-audit IRL in ~2 weeks (post env-var removal, non-cc-os sessions) — that population was thin this pass. ## Related - [[eval-methodology-irl-feedback-loop]] — this audit is that loop's first iteration for os-orchestration - [[eval-methodology-ladder]] — design gate for the E1–E3 evals - [[os-adr-eval-b-wording-experiment-hypotheses]] — the trigger-phrasing lessons the wording fixes will reuse