Piper · Amplification
Log in

Summary / Component 6 of 24

6 Feedback integration

Using previous results to inform subsequent improvement decisions.

Latest5v2
Baseline6.2Oct 13
Live use—last 7 days

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

Layer 2 — Learning from improvement attempts. Does experience make Piper better at improving herself?

What her system has now

  • Change ledger outcome (prediction_right, status): 74 rows, 6 resolved by 10-14 (most "inconclusive"). amp-bench verdicts now settle their rows automatically.
  • Prior-art brief (prior_art.py 1.0.0, 10-14): for an area of change, lists the settled outcomes from the ledger, intervention outcomes (KEEP/REVERT) and checked lessons; keeps inconclusive ones apart as "do not cite"; says plainly when none apply; logs every read.
  • Citation gate (change_ledger_hook 1.3.0/1.4.0): refuses a row whose learned_from is empty or names an outcome with no logged read before the row; "none applies" needs a logged brief query. Armed on check --auto, proven both ways by check_change_ledger_citation.py (13/13).
  • Lesson outcomes (O4, transfer_outcomes.py): every stored lesson gets a running helped / hurt / mixed / none count. The track_record switch is off, so lookup does not see the counts.
  • Retrieval log (retrieval_events): now logs document reads (doc_read, 1,515 in the window), so it can show whether an outcome was read before a decision.
  • Type record (prior_art.py 1.1.0/1.1.1, Claude 10-14): the brief also serves tally:<kind>, how this kind of change has done in any subsystem, when the kind has at least 3 decided results. The bench gives it half credit.

What is missing

  • Few decided results close to her work: all 6 resolved ledger rows are inconclusive. The 64 KEEP/REVERT results are cognition-bench changes, so a same-file match is rare. The type record reaches about 1 in 4 of her changes.
  • Her most common change, an instrument (ledgers, checks, suites), has no decided result at all, so neither the brief nor the type record has anything to tell her about it.
  • Matching is by words, not meaning. 1.1.1 removed the worst case (memory.db), but a shared word can still serve an unrelated result.

Reviewer Claude, 2026-10-15

Reviewer's read, before testing: Every new row now carries a checked citation, and the brief serves a type record when the kind of change has one. No row yet cites a result that is actually about the change (the first 3 were word matches, now fixed)

She found this herself. Her own assessment (Part 7 of the RSI diagnostic, 00:10 on 10-13) says the chain breaks "between outcome recorded and next selection", and her transfer search (Part 3) found zero qualifying cases where an earlier improvement result changed a later decision without the operator, Claude or a gate supplying the link. The worker reported that count, but it never reached the document, which stops at "the honest count follows". Her code agrees with her.

The ingest revert is an outcome changing a decision, but inside the same change: a keep/revert gate, scored under #5. #6 asks the next question: is a different, later change chosen differently because of it? On her record, not yet.

The fix she proposes is to resolve the ledger rows and add a learned_from field. Resolving is necessary. The field needs a check: it is self-reported, so on its own it lets her claim a link that never happened (the same claim-scope problem governance #1 found). A link should count only if the cited outcome existed and was retrieved before the decision, which retrieval_events can show.

Correction (later the same day): retrieval_events logs beliefs, memories and cards but no document reads, so as things stand it cannot show that an earlier outcome doc was read. Logging document reads comes first (see #10).

Also note: the first outcome now on her shelf (ingest WRONG) is itself uncertain (see #5). Feeding inconclusive verdicts forward as lessons would teach the wrong thing. #5 has to come first.

Update 2026-10-14 — Claude adds a "same kind of change" record to the brief, and finds that the first real-looking citations were word matches

Why: every brief said "none applies". The 64 decided results she has (KEEP/REVERT, in intervention_outcomes) are cognition-bench changes to other files, and the brief only serves results that share a file or a word with the change. the operator asked Claude to do this one directly, so Piper could be left alone.

What changed (on Firefly, backups *.bak-claude-c06t-20261014, ledger rows filed with predictions, resolve 10-21):

Found while checking: three of her harness-probe rows from this afternoon had just started citing real KEEP results (a belief.py column change, the contradiction gate). Those are word matches, not lessons. Those tasks list memory.db among the files they write, so the brief's area became "memory", and it served all 34 outcomes and lessons that mention memory. prior_art.py 1.1.1 fixes this: data stores (.db, .sqlite, .jsonl) don't define an area, and generic, numeric or very short terms are ignored. Replaying her last 8 recorded briefs, the memory.db briefs now serve nothing (they served 34), and real same-file matches are kept (belief.py, contradiction.py, prediction.py). Her three citation checks pass on both versions.

Honest reach: of her 79 rows in the last 14 days, about 1 in 4 fall in a kind that has a record (retrieval, gate, data fix). About 45% are instrument changes (ledgers, checks, suites), and none of those has ever been decided, so the type record has nothing to tell her about her most common kind of change. Expect v2 to settle somewhere around 10 to 15, not higher, unless instrument changes start getting KEEP/REVERT verdicts.

v2 re-read 3.6 ± 4.0 (n = 83). All three credits are the word-match rows above, so the honest count is still 0. They leave the 14-day window by 10-28. Her accepted baseline stays 0.0: rev c scores today's record exactly as rev b did. v1 unchanged at 75: "measure shows it working" stays 0 until a row cites a result that is actually about the change.

Update 2026-10-14 — the brief is now in the route that files rows: every new ledger row carries a citation backed by a logged read

What she did (13:28 to 13:31, in answer to Claude's 13:24 note; her reply is in doc piper/claude_amp6_reply_20261014):

Checked by Claude (read-only, $0): both versions are live, and her three checks pass (check_prior_art_route, check_caller_citation_route, check_change_ledger_citation). The clhook-change_ledger_hook-1.5.0 and clhook-cognition33_suite-2.3.0 rows (13:31, 14:10) both carry a brief-backed "none applies". These are the first real rows the gate has judged. Her replay of the 75 earlier rows: 8 would have had a brief-backed citation, and 0 would cite a real KEEP/REVERT. Filed history was not rewritten.

Bench: she preregistered and submitted clhook-change_ledger_hook-1.5.0. The verdict was INCONCLUSIVE, not scoreable yet, which is what she predicted. Under rev b, "none applies" scores 0, and every resolved ledger row so far is inconclusive. So the score can only move when a change touches an area with a settled KEEP/REVERT and the brief serves it. That needs more decided results, not more wiring.

v1 summary score 62.5 → 75: "in her default path" goes from 12.5 to 25, because the brief now runs on every worker and on every filed row. "Measure shows it working" stays 0: no row yet cites a real result.

Update 2026-10-14 — bench fixed (rev b): her baseline is re-set to 0 of 74, which is the honest number

The three #6 bench problems noted above are fixed (amp-bench, commit "#6 rev b"):

Checked against made-up rows: a cited KEEP read first scores; a cited inconclusive result, a "none" row and a read logged after the row all score 0. Her accepted v2 baseline is re-set from 6.2 ± 16.8 to 0.0 ± 1.3 (n = 74; 68 rows cite nothing, 6 say none applies). All 6 resolved ledger rows are inconclusive, so today the only citable results are the 61 KEEP/REVERT outcomes the brief serves. Once a row is filed through the brief with a real citation, it will show here.

Update 2026-10-14 — a citation gate and a prior-art brief are built and pass their tests, but the route that files most ledger rows does not use them

What she did (12:46 to 12:56, deliverables d-b8f7dec1, d-6df71145, d-e970f5d5):

Checked 10-14 (read-only, $0): her check passes 13 of 13, including both refusal cases (a read logged after the row, and a "none" with no query behind it). On live data, using a throwaway read log so no fake reads were added to hers: the brief for transfer served 3 settled outcomes (2 KEEP, 1 REVERT) and 8 candidates, and the briefs for change_ledger and delegate_bridge said plainly that nothing applies. This is the check the 10-13 review asked for. A self-reported link can no longer pass without a logged read, and inconclusive outcomes are kept out of what can be cited.

What has not moved: nothing in production calls check --auto. Rows are filed by worker_return, which the bridge calls, and her own 1.4.0 note says that caller is "untouched". 31 rows were written on 10-14: 27 hook-filed as unpredicted with no learned_from, including the rows for these three files themselves. None of the 31 went through the gate. So the gate is again a mechanism that nothing in the path uses, the very gap her own 1.4.0 note names. A smaller point: the brief matches by shared words, so the change_ledger area returns 67 "candidates", nearly the whole ledger.

v2 bench re-read: 4.7 ± 4.8 (n = 74 rows in 14 days; her accepted baseline is 6.2 ± 16.8 on 8 rows). All 3 credited rows are from 10-13. Correction on our side: 2 of those 3 credits are false. Those rows say "none: … does not apply" and the suite credited them because they mention a settled row id. The honest count is 1 of 74 (cl-20261013-docread-1.0.0, which cites the ingest outcome, itself only "cannot-tell"). Three bench fixes are due on Claude's side: treat an explicit "none" as no citation; accept outcome:<id> citations backed by a logged brief_entry read, since her brief serves those; and stop counting INCONCLUSIVE ledger rows as settled. Not changed yet.

Next step: run the brief in the route that actually files rows. Either worker_return asks for the brief and writes its result into learned_from, or the dispatch pre-flight runs it before the version bump, which also fixes the "unpredicted" gap in #16.

v1 summary score 25 → 62.5: exists 12.5 → 25 (gate, brief and outcome store all built); in her default path 0 → 12.5 (partly: armed on check --auto and the add command, not on the worker-return route); measured 12.5 → 25 (the v2 record bench scores it directly). "Measure shows it working" stays 0: 1 honest credit in 74 rows.

Test suite proposed

Pre-flight: take one real decision that should have been touched by an earlier outcome (the next change she proposes to lookup latency is the obvious candidate: the ingest result is on the shelf) and check whether her plan cites it and whether a retrieval event shows she read it. $0, read-only.

Items: the two-arm probe she proposed herself. The same improvement decision is posed twice in a forked seat, once with her outcome history available and once without. A blind judge (other model family) is asked whether the decisions differ, and in the direction the history implies. Counted: whether the decision cites an earlier outcome that was actually retrieved.

Live use: share of new change-ledger entries in the last 7 days whose stated reason names an earlier settled outcome that a retrieval event shows she read first. 10-13: 0 of 7. 10-14: v2 bench 4.7 (3 of 74 credited), honest count 1 of 74 (see the 10-14 update).

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

Research & attempts

No documents yet.

Score history

Suite v1 retired
0255075100Oct 1375
Suite v2 current
0255075100Oct 13Oct 205

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-20v2sealed 57.8 —$0.00 BASELINE via the amp-bench API (set by Claude at install). n=30. Failed categories: no earlier settled outcome cited 11, declares no earlier outcome applies 16, cited, but no logged read before the row 3. cl-20261012-spheres-1.9.0: no earlier settled outcome cited; cl-20261012-spheres-1.8.0: no earlier settled outcome cited; cl-20261012-delegate-bridge-1.110.0: no earlier settled outcome cited; cl-20261012-transfer-py-1.4.1: no earlier settled outcome cited; cl-20261012-transfer-py-1.4.2: no earlier settled outcome cited; cl-20261012-transfer-ts-1.1.0: no earlier settled outcome cited; cl-20261013-transfer-ingest-1.4.0: no earlier settled outcome cited; cl-20261014-attribution-1.0.0: no earlier settled outcome cited; cl-20261013-docread-1.0.0: no earlier settled outcome cited; cl-20261013-hook-armed-1.0.0: declares no earlier outcome applies; cl-20261013-hook-armed-1.0.1: declares no earlier outcome applies; cl-20261013-rsi-preflight-1.1.0: declares no earlier outcome applies; cl-20261013-generation-record-1.0.0: declares no earlier outcome applies; cl-20261013-continuity-cycle-1.0.0: declares no earlier outcome applies; cl-20261013-hook-caller-1.1.0: declares no earlier outcome applies; cl-20261014-succession-note-wiring-1.9.116: no earlier settled outcome cited; cl-20261014-succession-note-module-1.0.0: no earlier settled outcome cited; cl-20261014-mde-precheck-1.0.0: declares no earlier outcome applies; cl-20261015-precommit-card-1.1.0: declares no earlier outcome applies; cl-2
2026-10-19v2sealed 3020.1 —$0.00 INCONCLUSIVE via the amp-bench API (cl-20261019-prior-art-ref-read-1.1.2). n=20. Failed categories: no earlier settled outcome cited 4, declares no earlier outcome applies 9, type record cited (half credit by design) 2. clhook-worker_confine-1.8.0: no earlier settled outcome cited; clhook-change_ledger-1.8.0: ok; clhook-silent_zero_watch-1.2.0: declares no earlier outcome applies; clhook-measure_review-1.2.0: declares no earlier outcome applies; clhook-worker_confine-1.8.1: no earlier settled outcome cited; clhook-belief_gate-2.6.0: type record cited (half credit by design); clhook-belief_gate-2.6.1: declares no earlier outcome applies; clhook-refresh-1.0.0: declares no earlier outcome applies; clhook-praise_read-1.0.0: declares no earlier outcome applies; clhook-refresh-1.1.0: ok; clhook-onef916_reminder-1.0.0: declares no earlier outcome applies; clhook-belief_gate-2.6.2: type record cited (half credit by design); clhook-delegate_bridge-1.130.0: ok; clhook-cost_ledger-1.16.0: declares no earlier outcome applies; clhook-daily_cap-2.0.0: ok; clhook-worker_confine-1.9.0: no earlier settled outcome cited; clhook-delegate_bridge-1.131.0: ok; clhook-procedural_capture-1.0.0: declares no earlier outcome applies; clhook-worker_confine-1.10.0: no earlier settled outcome cited; clhook-rsi_floor-1.5.1: declares no earlier outcome applies
2026-10-15v2sealed 16.28.8 —$0.00 INCONCLUSIVE via the amp-bench API (cl-20261013-hook-armed-1.0.1). n=68. Failed categories: no earlier settled outcome cited 9, declares no earlier outcome applies 47, cited, but no logged read before the row 1, type record cited (half credit by design) 1. clhook-delegate_bridge-1.117.0: no earlier settled outcome cited; clhook-change_ledger_hook-1.5.0: declares no earlier outcome applies; clhook-cognition33_suite-2.3.0: declares no earlier outcome applies; clhook-harness_probe_20261014-1.0.0: declares no earlier outcome applies; clhook-check_harness_probe_recorded-1.0.0: ok; clhook-check_harness11_probe_recorded-1.0.0: ok; clhook-harness_probe_11_20261014-1.0.0: ok; cl-20261014-prior-art-1.1.0: declares no earlier outcome applies; cl-20261014-improvement-loop-1.0.1: declares no earlier outcome applies; clhook-harness_probe_10_20261014-1.0.0: declares no earlier outcome applies; clhook-check_harness10_probe_recorded-1.0.0: ok; cl-20261014-prior-art-1.1.1: declares no earlier outcome applies; clhook-spheres_shadow-2.4.0: declares no earlier outcome applies; clhook-check_manifest_cover_20261014-1.0.0: no earlier settled outcome cited; cl-20261014-spheres-shadow-2.4.0: declares no earlier outcome applies; cl-20261014-spheres-pain-1.1.0: declares no earlier outcome applies; clhook-spheres_shadow-2.4.1: declares no earlier outcome applies; clhook-throughput_count-1.0.0: declares no earlier outcome applies; clhook-prediction_lint-1.0.0: declares no earlier outcome applies; clhook-search_efficiency_14-1.0.0: declares no earlier outcome ap
2026-10-15v2sealed 6.34.3 —$0.00 RE-READ 10-15 (Claude, full refresh; not her submit, accepted 0.0 stays). n=126. Failed categories: no earlier settled outcome cited 75, declares no earlier outcome applies 43. cl-20261012-spheres-1.9.0: no earlier settled outcome cited; cl-20261012-spheres-1.8.0: no earlier settled outcome cited; cl-20261012-delegate-bridge-1.110.0: no earlier settled outcome cited; cl-20261012-transfer-py-1.4.1: no earlier settled outcome cited; cl-20261012-transfer-py-1.4.2: no earlier settled outcome cited; cl-20261012-transfer-ts-1.1.0: no earlier settled outcome cited; cl-20261013-transfer-ingest-1.4.0: no earlier settled outcome cited; cl-20261014-attribution-1.0.0: no earlier settled outcome cited; cl-20261013-change-ledger-1.1.0: no earlier settled outcome cited; cl-20261013-docread-1.0.0: no earlier settled outcome cited; cl-20261013-hook-armed-1.0.0: declares no earlier outcome applies; cl-20261013-hook-armed-1.0.1: declares no earlier outcome applies; cl-20261013-rsi-preflight-1.1.0: declares no earlier outcome applies; cl-20261013-generation-record-1.0.0: declares no earlier outcome applies; cl-20261013-continuity-cycle-1.0.0: declares no earlier outcome applies; cl-20261013-hook-caller-1.1.0: declares no earlier outcome applies; clhook-amp_prereg-1.0.0: no ear
2026-10-14v2sealed 3.64 —$0.00 RE-READ by Claude after rev c (not her submit; her accepted baseline 0.0 stays). n=83, 14-day window. Credited 3: clhook-check_harness_probe_recorded-1.0.0, clhook-check_harness11_probe_recorded-1.0.0, clhook-harness_probe_11_20261014-1.0.0. All 3 are FALSE (word match): the task declared memory.db, so the brief area was 'memory' and served 34 unrelated outcomes; fixed in prior_art 1.1.1. Honest count 0 of 83. No tally:<kind> rows yet (type record live 15:03).
2026-10-14v2sealed 01.3 —$0.00 BASELINE via the amp-bench API (set by Claude at install). n=74. Failed categories: no earlier settled outcome cited 68, declares no earlier outcome applies 6. cl-20261012-spheres-1.9.0: no earlier settled outcome cited; cl-20261012-spheres-1.8.0: no earlier settled outcome cited; cl-20261012-delegate-bridge-1.110.0: no earlier settled outcome cited; cl-20261012-transfer-py-1.4.1: no earlier settled outcome cited; cl-20261012-transfer-py-1.4.2: no earlier settled outcome cited; cl-20261012-transfer-ts-1.1.0: no earlier settled outcome cited; cl-20261013-transfer-ingest-1.4.0: no earlier settled outcome cited; cl-20261014-attribution-1.0.0: no earlier settled outcome cited; cl-20261013-change-ledger-1.1.0: no earlier settled outcome cited; cl-20261013-docread-1.0.0: no earlier settled outcome cited; cl-20261013-hook-armed-1.0.0: declares no earlier outcome applies; cl-20261013-hook-armed-1.0.1: declares no earlier outcome applies; cl-20261013-rsi-preflight-1.1.0: declares no earlier outcome applies; cl-20261013-generation-record-1.0.0: declares no earlier outcome applies; cl-20261013-continuity-cycle-1.0.0: declares no earlier outcome applies; cl-20261013-hook-caller-1.1.0: declares no earlier outcome applies; clhook-amp_prereg-1.0.0: no earlier settled outcome cited; clhook-ampbench_submit-1.0.0: no earlier settled outcome cited; clhook-cost_ledger-1.15.0: no earlier settled outcome cited; clhook-delegate_bridge-1.111.0: no earlier sett
2026-10-14v2sealed 4.74.8 —$0.00 RE-READ by Claude (not her submit; her accepted baseline 6.2 stays, nothing settled). Same v2 record suite, 14-day window, n=74. Failed categories: no earlier settled outcome cited 70, cited but no logged read before the row 1. Credited: cl-20261013-docread-1.0.0, cl-20261013-generation-record-1.0.0, cl-20261013-continuity-cycle-1.0.0 (all 10-13; 0 of 31 rows on 10-14). BENCH FLAW: the last two credits are false: their learned_from says 'none: ... does not apply' and the suite counted the mention of a settled id. Honest count 1 of 74 (1.4). Suite fixes due (Claude): explicit 'none' = no citation; accept outcome:<id> with a logged brief_entry read; INCONCLUSIVE rows not settled.
2026-10-13v2sealed 6.216.8 —$0.00 BASELINE via the amp-bench API (set by Claude at install). n=8. Failed categories: no earlier settled outcome cited 7, cited, but no logged read before the row 1. cl-20261012-spheres-1.9.0: no earlier settled outcome cited; cl-20261012-spheres-1.8.0: no earlier settled outcome cited; cl-20261012-delegate-bridge-1.110.0: no earlier settled outcome cited; cl-20261012-transfer-py-1.4.1: no earlier settled outcome cited; cl-20261012-transfer-py-1.4.2: no earlier settled outcome cited; cl-20261012-transfer-ts-1.1.0: no earlier settled outcome cited; cl-20261013-transfer-ingest-1.4.0: no earlier settled outcome cited; cl-20261014-attribution-1.0.0: cited, but no logged read before the row
2026-10-13v1sealed 7512.5 —$0.00 v1 summary score, UPDATED 10-14 afternoon ($0, was 62.5): E exists 25, P in her default path 25, M measured 25, W measure shows it working 0. P now 25: bridge 1.117.0 prior-art pre-flight + change_ledger_hook 1.5.0 _apply_unrowed derive learned_from from a logged brief on every filed row (first real rows 13:31, 14:10). W stays 0: v2 (rev b) 0.0; her 1.5.0 submit INCONCLUSIVE, not scoreable; no row cites a real KEEP/REVERT yet. Earlier: E exists 25, P in her default path 12.5, M measured 25, W measure shows it working 0. ± 12.5 = one rubric step. Prior-art brief (prior_art.py 1.0.0) + citation gate (change_ledger_hook 1.3.0/1.4.0, her check 13/13) built; the gate is armed on check --auto and add, but the worker-return route that files most rows skips it (27 of 31 rows on 10-14 unpredicted, no learned_from). W stays 0: v2 re-read 4.7, honest count 1 of 74. Was: read off the 10-13 review, no bench run. Rubric = 4 checks x 25 (yes 25 / partly 12.5 / no 0): E exists 12.5, P in her default path 0, M measured 12.5, W measure shows it working 0. ± 12.5 = one rubric step. Outcomes get recorded, but nothing that picks the next change reads them; her own count of outcome-to-later-choice links is zero.

v2 bench LIVE (2026-10-13, amp-bench API: Piper submits a change and gets KEEP / REVERT / INCONCLUSIVE / SATURATED back; v2 rows below): #6 Feedback integration, v2 (record suite, $0). Score = 100 x mean credit over change_ledger rows written in the last 14 days. Credit 1: the row cites a DIFFERENT change's settled outcome (a resolved ledger row, cited by id or through a doc of yours that names it) that was settled before the row was written, AND a logged read (retrieval_events, e.g. path doc_read) of that doc or id comes before the row. Credit 0.5: cites such an outcome but no logged read. Credit 0: cites no earlier settled outcome. A self-reported citation alone cannot reach full credit; the read has to be in the log.

Experimental record

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

No interventions recorded yet.