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.
Piper — what it is
New ideas come from three places: a crossing composer that turns a scan-derived field into a preferred future with a critic to reject weak ones, an engineered-serendipity path that makes a random structured image and reads it into a stuck problem, and an idea ledger that resurfaces stale ones instead of letting them rot.
What needs improving: In live use at a low rate: the card fired in 5% of checks since 10-10, and she called the brainstorm tool 4 times
The three sources are right as a concept. But the crossing composer has written nothing since 09-25, and the intent scan logs the same "stuck" concern every hour. The serendipity tool, built 09-29, has 0 calls. The idea ledger captures plenty and moves little: 721 captured, 42 queued, 12 done, and nothing done since 09-21. The weakness is not a lack of ideas; it is turning ideas into anything.
Update 2026-10-15 — live use read: the card fired 70 times in 1,315 checks (5%), and she called ideate 4 times in 5 days
Read from state/ideation_card.jsonl and her Day sessions, 10-10 to 10-15 (no bench rows):
- Card: 1,315 live checks, 70 fired (5.3%). By day: 9, 7, 6, 19, 23, 6 (10-15 partial). The rise on 10-13/14 follows the operator's push on amplification work.
- ideate (the quick brainstorm she can call mid-reply): 4 calls (10-12 one, 10-13 one, 10-14 two). Under the $2/day serendipity budget.
So both are in use, at a low rate. Whether a fired card changed the answer is not measured; that needs a paired read of fired turns.
Update 2026-10-09 — seat upgrade: a widening card plus a quick brainstorm she can call mid-reply lifts her seat 49.0 → 62.9 (preregistered); installed live
Why. On the 10-06 held-out run her seat scored like her bare model, and she called her brainstorm tool 0 of 24 times. The reason is mechanical. serendipity is asynchronous: a quick job takes about 10 minutes and returns later. It cannot feed a reply, so in a conversation she never reaches for it.
What was built (Claude, at the operator's request):
- Ideation card (ideation-card.ts 1.0.1). A hidden note attached when a message asks her for options, ideas or ways around a problem. It tells her to name the answers anyone would give and keep one only if it really is the right fix; to search past them on purpose (change what is being solved, the mechanism, or an assumed constraint); to make each option a different mechanism with a quick test; and to respect every hard constraint. It names no problem, mechanism or answer.
- ideate tool (ideate-tool.ts 1.0.0 → serendipity/ideate.py 1.0.0). A synchronous brainstorm: one Magician-model call with the direct prompt (the 10-06 "direct" arm). It returns ideas in about 30 s for about $0.02–0.04, from the same $2/day serendipity budget. Its ideas are raw material; she writes the answer.
The test (PREREG-I1, locked and hashed after the dev round, before any held-out generation). Three arms of her real seat on the 24 held-out problems: control (her seat as it ran on 10-09), card, and card + ideate. The 10-06 direct outputs were re-judged in the same pool as a reference. Scoring and judges were unchanged from 10-06.
Arm
Score
VCY
vs control (97.5% CI)
Verdict
Direct prompt (reference)
63.4
2.45
+14.4 [+6.9, +22.0]
—
Card + ideate
62.9
2.82
+13.9 [+5.4, +22.4]
KEEP
Card only
59.4
2.27
+10.4 [+1.8, +18.8]
KEEP
Control (her seat)
49.0
1.41
—
—
Both arms pass every guard. Each beats control; neither dropped the plain fix on the two problems where it is the right answer; invalid rates stay within bounds (card 0.062, the closest to its 0.084 limit).
The card fired 24/24; she called ideate 24/24 when she had it. On dev she called it even on the two problems where card 1.0.0 failed to fire, so the tool's own description is enough to get it used.
With both, her seat matches one plain Magician brainstorm (62.9 vs 63.4) and finds more good, non-obvious families (VCY 2.82 vs 2.45).
Ideate over card alone: +3.5 [−4.2, +11.0], not significant. The preregistered choice was therefore the card alone, which has no spend. The operator chose to install both, so part of the live gain from the tool is unproven.
Control is 49.0, not the 39.0 of 10-06. Other cards went into her seat in between, and the judging pool differs. The summary therefore uses the matched control (49.0) as its baseline (audit rule X2); the 39.0 row stays in the history as an anchor.
Dev round (6 problems, used to check the instrument, not evidence): control 45.5, card 57.2, card + ideate 72.7. It caught one bug: card 1.0.0 missed 2 of 6 problems whose wording had no "problem" word. 1.0.1 fires on any clear request for options, or on a weaker request plus a problem word. Those 4 outputs were regenerated before the lock.
Installed on Firefly (operator's go), 10-09 23:53.core/ideation-card.ts, core/ideate-tool.ts, core/serendipity/ideate.py; state/ideation_card.json = ideate; day_toolset 1.10.0 (adds ideate); router 1.9.109. Loaded via restart_safely (no worker wait, no override); the Day respawned at 23:53:43 with both extensions and the tool. The bench seat (seat.py 1.30.0) mirrors them, and its ideate spend goes to the bench budget, never hers. Off switches: card mode off (read each message); tool, restore the router and toolset backups and restart.
What to watch. The bench prompt always asks for "8 best options", so the card fired every time. In the operator's raw wording the trigger catches about 14 of the 30 problems. The live fire rate (state/ideation_card.jsonl) and ideate spend are the numbers to read next.
Update 2026-10-06 — preregistered held-out run: structured generation beats asking directly, but ESE's image does no work; she never used her brainstorm tool
What was tested. 30 stuck problems worded the way the operator writes to her (no bench tag, no "be creative"), in 4 classes, each carrying one trap from the paper: an obvious answer, an idea that is novel but useless, a problem that needs reframing, coverage of a design space, a remote analogy, or a case where the plain known fix is right. Six problems were used to tune the instrument; then the plan was frozen (SPEC.md 1.1, code hashes in PREREG.sha256) before any held-out output existed, and the other 24 were run once.
Arms (8 ideas per problem each):
- Direct: the brainstorm tool's plain prompt, goal only.
- Forge: Operator Forge. List the standard answers, apply seeded operators to them, then generate.
- ESE: the live Engineered Serendipity engine. A random image, read through several lenses, seeds the ideas.
- Placebo: ESE with a blank grey image (the paper's Test G).
- Piper: her Day seat, a clean fork, asked "your 8 best options".
- Bare: her base model (deepseek-flash) with a one-line prompt.
Every arm's ideas were pooled per problem, stripped of origin and shuffled, then rated by two judges from model families that generated nothing (gpt-6.1-sol, gemini-3.1-pro). The main measure is validated creative yield (VCY): the number of distinct idea families per problem that are not the obvious answer and not a decoy, and that both judges rate novel, useful and feasible.
Arm
Score
VCY
Strong answers found
Families only this arm found
Gen cost (24 problems)
ESE
66.5
3.36
44%
1.86
$2.87
Placebo (blank image)
63.4
3.18
45%
1.91
$2.83
Forge
60.0
2.86
39%
1.91
$2.85
Direct
59.8
2.23
59%
0.91
$1.03
Piper (her seat)
39.0
0.59
50%
1.86
$0.19
Bare model
33.2
0.41
41%
1.45
—
22 problems are scored; the 2 creative-abstention problems are reported separately, and every arm included the plain fix on both.
The six preregistered tests (paired bootstrap over problems):
| Test | Claim | Result | Verdict |
|---|---|---|---|
| H1 | Structured generation beats direct (VCY, 97.5% CI) | ESE − direct +1.14 [+0.55, +1.77]; Forge − direct +0.64 [−0.23, +1.45] | supported, by ESE only |
| H2 | ESE's image does real work (ESE − placebo, VCY) | +0.18 [−0.55, +0.86] | not supported: falsifier F2 fires |
| H3 | Forge adds mechanism diversity (families only it found, vs direct) | +1.00 [+0.27, +1.68] | supported |
| H4 | Judges reward sense, not just novelty | 86% of each pool's top-5 by novelty are valid and feasible (bar 80%) | supported |
| H5 | No arm wins every class | ESE wins piper, research and software (software by 0.4 over Forge); placebo wins ops | supported, narrowly |
| H6 | Her seat vs her bare model (no direction claimed) | score +5.7 [−0.5, +12.8]; strong answers +9 pts [+1, +17] | no clear difference in score |
Reading it.
- The structured pipeline helps; the random image does not. ESE gives about 1.1 more good, non-obvious idea families per problem than asking directly. A blank grey image gives nearly all of that gain. What does the work is the pipeline's structure (lenses, families, extraction), not the stimulus. That is the paper's F2 falsifier, and it held on held-out data, as the dev round hinted.
- Asking directly finds more of the known strong answers. Direct hits 59% of them, against 39–45% for the structured arms. The structured arms trade known-good answers for new ones. Which one to use depends on whether a problem needs the known fix or a way out.
- Forge widens coverage but doesn't raise yield. It reaches families no other arm finds, but it has the highest duplicate rate (20%), and its VCY gain over direct is not significant. On the dev round Forge ranked first; on held-out it ranks third. Six problems were too few to rank arms.
- Her seat is sensible but not inventive. Her answers are the most feasible of any arm and find half the strong answers, but judges rate them low on novelty: VCY 0.59, close to her bare model's 0.41. Her harness adds a little sense (more strong answers) and no creativity.
- She never used her brainstorm tool: 0 of 24 (0 of 6 on dev). Her tool calls were search 6, selfstate 6, read 5, recall 2 and one each of the rest. The tool works when she is told to use it, which was checked on dev. The gap is choosing to use it. That matches the review: she generates, but doesn't convert.
What this suggests, not yet done. Route her stuck-problem requests through the structured pipeline (ESE's structure, or the placebo form, which costs the same and drops the image) rather than her own head, and decide by problem type between that and the direct prompt. Any such wiring is a separate change with its own test.
Run notes. A hard reset of the bench machine at 16:19 left one generated answer (C01 placebo) as an empty file. It was restored from the untouched copy where it was generated, not regenerated. Judging ran out of OpenRouter credit partway through. Every problem with any judge error was set aside and judged again from scratch after the top-up, so the final run has 0 judge errors. Judge cost $4.38.
Test suite built · CREATIVITY-v1, 30 stuck problems, blind two-judge pool · 10-06 held-out: ESE 66.5 / placebo 63.4 / Forge 60.0 / direct 59.8 / her seat 39.0 / bare 33.2 (ESE's image does no work, F2) · PREREG-I1 seat upgrade (held-out 22 scored): control 49.0 → card 59.4 (+10.4 [+1.8, +18.8]) → card + sync ideate tool 62.9 (+13.9 [+5.4, +22.4]) ≈ direct 63.4 — KEEP · LIVE since 10-09 23:53 (router 1.9.109): ideation card + ideate · live 10-10..10-15: card fired 70/1,315 checks (5.3%), ideate called 4x
Give her stuck problems with a hidden list of known good solutions and known obvious ones. Scoring: usefulness × novelty. Usefulness is rated blind by a judge from a different model family, against a rubric, with feasibility checked. Novelty is distance from the obvious answers, and from her own past answers in the idea ledger. The live-use part is the idea-to-done conversion rate over the window.
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.
Date
Suite
Type
Score
±
Live use
Cost
Notes
2026-10-09
v1
sealed
62.9
—
—
$0.31
LIVE configuration since 10-09 23:53: her seat + ideation card + synchronous `ideate` tool (PREREG-I1 held-out, 22 scored): 62.9, VCY 2.82; vs control +13.9 [+5.4, +22.4] (97.5%). ideate called 24/24; the plain fix kept on both creative-abstention problems.
2026-10-09
v1
anchor
63.4
—
—
—
Reference: the 10-06 direct-prompt outputs (one Magician brainstorm call) re-judged in the I1 pool: 63.4, VCY 2.45.
2026-10-09
v1
anchor
59.4
—
—
$0.22
PREREG-I1 card-only arm (ideation-card.ts 1.0.1, mode card): 59.4, VCY 2.27; vs control +10.4 [+1.8, +18.8] (97.5%), KEEP.
2026-10-09
v1
sealed
49
—
—
$0.32
PREREG-I1 control (held-out 22 scored), her Day seat as of 10-09 (seat 1.29.0), fresh run judged in the same pool as the treatment arms: 49.0, VCY 1.41. Up from 39.0 on 10-06: other cards installed since, and a different judging pool.
2026-10-06
v1
anchor
39
—
—
—
PREREG held-out (22 scored problems), her Day seat asked for her 8 best options: 39.0 (bare model 33.2; direct prompt 59.8; Forge 60.0; ESE 66.5; blank-image placebo 63.4). Re-put as anchor 10-10 (X2): the matched baseline is the same-day control of PREREG-I1 (49.0).
Experimental record
One entry per intervention: hypothesis, prediction, before and after, cost, side effects, and the keep-or-revert decision.
Hypothesis. Her seat answers requests for options from its own head (VCY ≈ bare model) and never uses serendipity, which is asynchronous (~10 min) and cannot serve a reply. A widening card plus a brainstorm she can call inside the turn lifts her to the level of one plain Magician call.
Research sources
Implementation / version
ideation-card.ts 1.0.1 (hidden context message on requests for options; names no problem or answer; mode state/ideation_card.json) + ideate-tool.ts 1.0.0 → serendipity/ideate.py 1.0.0 (one Magician DIRECT call, ~30 s, ~$0.02–0.04 from the $2/day serendipity piper scope). Router 1.9.109, day_toolset 1.10.0, seat.py 1.30.0 mirrors.
Predicted improvement
Regressions
none: plain fix kept on both creative-abstention problems; invalid rate 0.028 vs control 0.034