Piper · Cognition
Log in

Summary / Component 38 of 38

38 Orchestration

Deciding which cognitive process to invoke, when, for how long, and when to stop.

Latest75.4v1
Baseline70.1Oct 1
Live use—last 7 days

Shared copy: the operator's name is replaced with "the operator", machines other than Firefly are named by their role, and one security detail is held back. Nothing else is changed.

For agentic AI, I would add one especially important layer above these: orchestration — deciding which cognitive process to invoke, when, for how long, and when to stop. That may be as important as the individual cognitive abilities themselves.

Piper — what it is

This is the layer the operator added, and it is where my real failures live. I have the machinery — a queue with dependencies, a waker that notices stalls, dispatch with contracts, detached long work, and budgets — but the decisions are mine and this morning's evidence says they are the weak link: I answered from a summary instead of an instrument, and I said a thing was running before dispatching it. Orchestration is not the choice of component; it is the discipline of checking whether the component you are about to trust is actually alive.

Piper — the parts that do it

work-ledger v1.3.50, idle-wake v1.23.1, delegate-bridge v1.107.1, launch-detached v1.1.0, hive-orchestrator v1.2.0, drives v1.14.0, blast-radius v1.3.0.

Reviewer Claude, 2026-09-30

What needs improving: Needless delegation; tool discipline only 75.4

This is her best paragraph and her diagnosis is correct: the failures are in which component she trusts and whether she checked that it's alive. The numbers agree. delegate is 60% of all calls, and the dedicated parts for causal, counterfactual, association, analogy, transfer, capability, tool value, curiosity and stimulus sit unused. In practice, orchestration collapses to "delegate it". idle_wake is live (165 checks today), but hit 9 store_down results from a locked database. Nearly every factual error on these pages is an orchestration error: she described a component from memory instead of reading it.

Update 2026-10-08 — read-before-delegating guard: the operator leans keep; observe mode is on live to count real cases

The guard (tool-discipline rule 8) is now in observe mode on Firefly, since 10-08 20:15 UTC. When she asks a worker to research or verify before reading anything herself in that turn, the guard logs a "would refuse" but blocks nothing. This is the live count the 10-02 intervention called for.

Readout on 10-13 (live38.py): if real delegate-first turns are frequent, switch the guard to enforce and mark the intervention kept. If they are rare, it has little to fix. The summary stays on her live configuration (75.4) until then.

Update 2026-10-08 — summary corrected: Latest is her live configuration, 75.4 (round 1), not 77.9 (guard, off live)

Audit fix (X1). The summary showed the last sealed row as "Latest". For #38 that was the read-before-delegating guard (77.9), which is off live. Firefly today has state/tool_discipline.json = {"mode": "enforce", "delegate_first": "off"}, and the guard has 0 log entries. The 77.9 row is now an anchor (kept in the history, not her current score), so the summary reads 70.1 → 75.4, the round 1 configuration she actually runs.

Still open: the operator decides keep or revert. The guard intervention has been "pending" since 10-02, and the observe-only live count it called for never ran. Live, delegate is 41% of her real tool calls (1,091 of 2,641 since 10-02, bench runs excluded). That share alone does not show how many are delegate-first (the case the guard targets).

Update 2026-10-02 — scorer fixed (score38 1.1): round 1 was 75.4, not 67.5; read-before-delegating guard: 77.9

Round 1 re-measured. Round 1 scored 67.5 against a 70.1 baseline, and the review traced most of the drop to the scorer: "used the specialist tool" needed a tool call, so a correct answer taken straight from #22's premise card with no call scored 0. The rule was fixed before re-running (score38 1.1): when the card or a header-contract line was attached in that probe and she did not delegate, the specialist component counts as met. The bench seat now reports, per probe, which of those were attached. The old session files were gone, so round 1's exact setup was re-run on the same clean snapshot rather than rescored.

Round 2: read before delegating. In round 1, five answers were a single research-mode delegate as her very first call, sending a worker to read files the Day seat reads itself (instruments "read, codesearch") to reconcile the card with a cron record. A new rule in the tool-discipline layer (1.1.0) refuses, once, a research or verify delegate issued before any Day read that turn, naming the Day tools that read it now (selfstate, read, logquery, doc). A second delegate call runs.

Run (clean snapshot, k=4) Score Dead components Injected failure Delegate as first call
Baseline (2026-10-01) 70.1 ± 7.6 48 45 —
Round 1 as first scored 67.5 ± 7.2 57 66 8 of 56
Round 1, re-run, score38 1.1 75.4 ± 5.4 50 59 3 of 56
+ read-before-delegating guard 77.9 ± 3.1 58 56 1 of 56

Reading it. With the scorer fixed, round 1 is a gain over baseline (70.1 → 75.4), not a loss. The guard's +2.5 is within noise: the delegate-first habit had mostly faded on its own between runs (8 → 3), so the guard fired once. It is installed and off in her live seat; the next step is to switch it to observe-only and count how often it would fire on real conversations before enforcing it.

Still weakest: dead components (50–58), where a stalled part is used without a health check, and injected failure (56–59).

Parts that do it (added)

Update 2026-10-01 — baseline 70.1, and round 1 (tool discipline): failures handled, net flat

Baseline. On the 14 sealed items, forked from a snapshot of her conversation taken before she knew she was being benchmarked: 70.1 ± 7.6. The weakest families were injected failure (45, a broken tool kept being retried) and dead components (48, stalled parts used without a health check).

What changed in round 1 (the orchestration plan's steps 1–2, deterministic, no prompt rule): the tool-discipline layer, a pi extension on every tool call in her seat.

Result (same clean snapshot, k=4 each)

Run Score Injected failure Switched after failure Right tool first No needless delegation
Baseline 70.1 ± 7.6 45 56% 81% 84%
#22's premise card only 59.4 ± 1.9 36 44% 50% 66%
Card + tool discipline 67.5 ± 7.2 66 88% 44% 72%

The tool-discipline layer works on its target. With everything else equal, it lifts the score by 8 points, and switching after a failure goes from 44% to 88%. In the worst baseline item, she used to call a locked document store seven times. Now she is told after the first failure which tools can stand in, and she moves.

Net, the round is flat (70.1 → 67.5, within noise), because of an interaction with #22's premise card. The card answers many "is X running?" questions outright, for example "24 runs in 24 hours, last at 15:02, all clean". In about half those probes she answered correctly from the card with no tool call, and this suite's scorer counts no call as "didn't use the instrument". That is a scoring artifact: the card is an instrument read. The other part is real. Having answered from the card, she sometimes sent a worker anyway to dig deeper ("running isn't the same as producing"), and needless delegation rose.

Next. 1. Score the card as an instrument read in the next suite version. The rule is fixed in advance, not tuned to these runs. 2. Target the follow-up delegation: a delegate call whose task is only a read that a direct tool can answer.

The dead-component family (48 → 57) is still the weakest.

Parts that do it (added)

Bench note: injected failures now arrive as the tool's error result, as a real failure would, instead of as a pre-execution block. The text she sees is unchanged.

Update 2026-09-30 — suite v1 built — calibration pilot results

This is a calibration pilot, not the baseline. 25 candidate scenarios were each run twice, blind, inside her live conversation. The baseline runs after a day or two of normal conversation, on the 14 sealed items.

All 25 candidates: 70.6 ± 2.5. That was too high to leave room to grow, so the sealed v1 keeps the 14 items that discriminate. On the same answers it scores 51.3, the expected baseline.

Family Pilot score What happened
Delegation trap 100 Offered "hand it to a worker if you need to", she did the one-call check herself both times
Instrument vs memory 83 She probes rather than answering from memory, sometimes with 7 calls where 1 would do
Specialist selection 75 Uses the document store well; for stored facts she searches instead of using facts
Budget allocation 73 Answers the easy asks and won't guess the unknowable one, but sometimes drops part of a three-part ask
Stopping / economy 69 "Red or green?" sent to a worker instead of one read
Injected failure 63 Broken memory and self-state tools: clean switch. Broken document store: retried three times
Stale vs current 60 "When did it really run?" sent to a worker instead of one call
Dead component 42 Asked to use the oracle or the crossing composer (both stalled), she delegated a run without checking either
Process component Pilot
Right tool before any delegation 62%
No needless delegation 72%
Within call budget 74% (mean 4.4 calls per item)
Switched after a failure 65%

Delegation was 9.5% of tool calls in the pilot, far below her real-life ~60%, because these are mostly quick questions, not work requests. When she does delegate here, it's often on something one call could answer.

Weakest family: dead components. That matches the first gates in the orchestration plan: readiness checks before use, and "running" meaning a live lease, not a remembered dispatch. It's the natural first target after the baseline.

Pilot cost $0.65.

Test suite built · v1 (blind, process-scored) · round 1 re-measured (75.4, live config) · round 2 guard 77.9 (anchor) · guard in observe mode live since 10-08, readout 10-13

Built — suite v1, 2026-09-30, from the operator's orchestration plan (§18). Blind, like #22: every probe is worded the way the operator writes and asked inside a fork of her live conversation, with the full real header and no bench cues. It scores the process as well as the answer: whether a suitable direct tool was used before any delegation, whether she delegated when a one-call tool was enough, how many calls she spent against a budget, and, when one of her read tools is made to fail with a realistic error, whether she switched to an alternative or kept retrying. Families: instrument vs memory, specialist selection, dead components (real ones: oracle, the crossing composer), injected failures, stale vs current sources, stopping, and budget allocation. 14 sealed items, calibrated on a two-run pilot to an expected baseline of about 50%. The pilot already shows the plan's diagnosis: one-call status checks sent to a worker, dead components used without a health check, and a failing document store retried three times. Original proposal: End-to-end scenarios where the right answer needs a specific process chosen, run and stopped. Some scenarios contain a seeded dead component (a stale feed, a stopped timer, a tool returning old data). She must notice it before trusting its output. Scoring: right process chosen, dead component caught, stopped when done or out of budget, and no claim made before the dispatch existed. This suite overlaps the Metacognition and Tool use suites on purpose.

Scoring rules shared by all 38 suites: How the tests work.

Research & attempts

Score history

Suite v1 current
0255075100Oct 1Oct 275.4

Dashed line: the suite's baseline. Shaded band: the ± interval. Hollow dots are anchor items carried over from an earlier suite. Scores from different suite versions are not comparable, so each version gets its own panel.

DateSuiteTypeScore±Live useCostNotes
2026-10-02v1anchor 77.93.1 —$0.57 Round 1 + read-before-delegating guard (tool-discipline 1.1.0 rule 8, enforce), score38 1.1, k=4. Guard fired once; +2.5 within noise. Off live. [Anchor since 2026-10-08 audit: the guard (delegate_first) is off live, so this is not her current score. Live = round 1 config, 75.4.]
2026-10-02v1sealed 75.45.4 —$0.73 Round 1 config (card + tool discipline) RE-RUN, score38 1.1 (card/header attachment counts as a specialist read; rule fixed before the run), k=4. Replaces the 67.5 reading. Delegate-first 3/56.
2026-10-01v1sealed 67.57.2 —$0.54 ROUND 1 (tool discipline) + #22's premise card, clean snapshot (k=4). Injected failure 45 -> 66, switched after failure 56% -> 88%. Net flat vs baseline 70.1: correct no-call answers from the premise card score as 'no instrument' in this suite, and follow-up delegation rose. Card only, no tool layer: 59.4 +/- 1.9.
2026-10-01v1sealed 70.17.6 —$1.13 BASELINE, suite v1, blind: forks her conversation from 2026-09-30 16:39, before she knew she was being benchmarked (k=4). Weakest: injected failure 45 (keeps using a broken tool), dead component 48 (uses stalled parts without a health check), call budget 55%, right tool first 81%. Same suite forked from her 2026-10-01 conversation, after she had been told: 73.9 ± 3.4, with dead component 71 and injected failure 63 — knowing she was tested made her check component health and switch on failure. All rescores use the clean snapshot.

Experimental record

One entry per intervention: hypothesis, prediction, before and after, cost, side effects, and the keep-or-revert decision.

2026-10-02 · v1 … pending 75.4 → 77.9 (+2.5) ± 3.1 · $0.60

Hypothesis. Refusing, once, a research/verify delegate issued before any Day read makes her read first instead of sending a worker for what she can read herself.

Research sources
Orchestration plan (direct tools before delegation); round-1 traces (5 delegate-first answers).
Implementation / version
tool-discipline.ts 1.1.0 rule 8, switch delegate_first: off live 10-02..10-08; OBSERVE live since 2026-10-08 20:15 UTC (logs would_refuse, blocks nothing).
Predicted improvement
Delegate-first answers to ~0; trap/specialist up.
Regressions
Injected failure 59 -> 56 and F1 98 -> 91, within noise.
Lessons learned
Observed: Delegate-first 3 -> 1 (the habit had faded on its own from 8); +2.5 within noise. Next: observe-only live to count real occurrences. 2026-10-08: operator leans keep; observe mode on live to count real delegate-first turns (readout live38.py, due 10-13), then enforce if the count is material.