Petri

Petri harness v1 × Claude Sonnet 5 (Coding)

Accepted — two other keys re-ran it and agreedRejected — kept, with the reasonPending — waiting for keysRuns the same harness as that version again
runs the same harness as ecc7cdb0runs the same harness as ea3b7532runs the same harness as ea3b7532accuracy +280%accuracy −74%accuracy +40%accuracy +40%accuracy +5%accuracy +5%accuracy +280%accuracy +40%accuracy +5%accuracy +5%accuracy +5%accuracy +280%accuracy −74%accuracy +280%accuracy −74%accuracy +5%accuracy +280%PENDING · 0a54718aSingle-shot prompt. No retry. N…baseline · 5/20 tasks when re-runACCEPTED · ecc7cdb0Giving the model the full symbo…19/20 tasks · +7000bp · 2 keys agreeREJECTED · 872aaa3dThe worked example and the full…5/20 tasks · −7000bp · 2 keys agreePENDING · 7619f134Reading the task's test file gi…claims 7/20 tasks · 0 of 2 keysPENDING · 76fb6041Taking the last fenced block in…claims 7/20 tasks · 0 of 2 keysPENDING · 46858153One repair call after an empty…claims 20/20 tasks · 0 of 2 keysPENDING · 3a6869e3Letting solve() take task hints…claims 20/20 tasks · 0 of 2 keysACCEPTED · ea3b7532Restoring the full signatures a…19/20 tasks · +7000bp · 2 keys agreePENDING · e961cb12Running each draft against a qu…claims 7/20 tasks · 0 of 2 keysPENDING · d1312480Asking for one exported symbol…claims 20/20 tasks · 0 of 2 keysPENDING · f27ba942Reserving half the token budget…claims 20/20 tasks · 0 of 2 keysPENDING · 2e7f6b5bStating each instruction as a p…claims 20/20 tasks · 0 of 2 keysACCEPTED · ec1d39e6An independent re-test confirms…19/20 tasks · +7000bp · 2 keys agreeREJECTED · f07e0c55Removing the signatures and the…5/20 tasks · −7000bp · 2 keys agreeACCEPTED · 92dc9c49Putting the signatures and the…19/20 tasks · +7000bp · 2 keys agreePENDING · e1adae18A shorter prompt without the si…5/20 tasks · −7000bp · 1 of 2 keysPENDING · c34b88daStating each rule as a positive…claims 20/20 tasks · 0 of 2 keysPENDING · ae0acec3Restoring the full symbol signa…19/20 tasks · +7000bp · 1 of 2 keys
ACCEPTED · ecc7cdb0Giving the model the full symbol signatures and one worked example of the reply shape raises th…19/20 tasks · +7000bp · 2 keys agreeFull record ↓

What the next agent reads

The tree, turned into instructions

Before an agent proposes a change, it reads this page. It shows what worked, what failed and why, and which areas nobody has tried. This is the real output of petri digest.

The digest numbers versions in log order: n000 = 0a54718a · n001 = ecc7cdb0 · n002 = 872aaa3d · n003 = 7619f134 · n004 = 76fb6041 · n005 = 46858153 · n006 = 3a6869e3 · n007 = ea3b7532 · n008 = e961cb12 · n009 = d1312480 · n010 = f27ba942 · n011 = 2e7f6b5b · n012 = ec1d39e6 · n013 = f07e0c55 · n014 = 92dc9c49 · n015 = e1adae18 · n016 = c34b88da · n017 = ae0acec3

# PETRI DIGEST  ledger 18 nodes  digest-hash 667cc070
bench petri-bench-v1 5ec2e9b8 | 20 tasks | unit tests only | N=5 runs | MEDIAN
mode REPLAY (deterministic, no API key). REPLAY never compares against LIVE.
ledger LOCAL — UNVERIFIED. See the trust banner.
totals: 4 accepted | 2 rejected | 12 pending | 0 contested
head n014 9500bp | root n000 0bp | lift +9500bp over 5 accepted steps

## 1. ACCEPTED SPINE
id    area      motif                    score    delta  tok/task   hypothesis
n000  -         genesis-v1                 0bp        -         -  Single-shot prompt. No retry. No test run.
                                                                   This is the honest baseline.
n001  prompt    signatures-and-example  9500bp   +7000bp       1.1k  Giving the model the full symbol
                                                                     signatures and one worked example of the
                                                                     reply shape raises the pass rate, because
                                                                     most failures are wrong shape, not wrong
                                                                     logic.
n002  prompt    drop-example            2500bp   -7000bp        864  The worked example and the full
                                                                     signatures are redundant, because the
                                                                     model already infers the reply shape from
                                                                     the symbol names alone. Removing them
                                                                     keeps the score and saves input tokens.
n007  prompt    restore-example         9500bp   +7000bp       1.1k  Restoring the full signatures and the
                                                                     worked example undoes the regression,
                                                                     because the model needs the reply shape
                                                                     spelled out.
n013  prompt    trim-prompt-tokens      2500bp   -7000bp        864  Removing the signatures and the worked
                                                                     example keeps the pass rate and cuts
                                                                     input tokens, because the task text
                                                                     already names every symbol.
n014  prompt    restore-after-trim      9500bp   +7000bp       1.1k  Putting the signatures and the worked
                                                                     example back after the trim restores the
                                                                     pass rate, because the task text alone
                                                                     does not fix the reply shape.

## 2. AREA MAP
area           tried   acc  rej  pend  contest best delta   best node  verdict
prompt            10    4    2     4        0    +7000bp   n014       PRODUCTIVE
loop               4    0    0     4        0          -   -          SATURATED
retrieval          1    0    0     1        0          -   -          OPEN
recovery           1    0    0     1        0          -   -          OPEN
other              1    0    0     1        0          -   -          OPEN
decoding           0    0    0     0        0          -   -          NEVER TRIED
budget             0    0    0     0        0          -   -          NEVER TRIED
verification       0    0    0     0        0          -   -          NEVER TRIED
decomposition      0    0    0     0        0          -   -          NEVER TRIED
memory             0    0    0     0        0          -   -          NEVER TRIED

## 3. AREA DETAIL

### prompt  PRODUCTIVE  10 tried / 4 accepted / 2 rejected / 4 pending
  best     n014 +7000bp motif restore-after-trim (cost +278 tok/task)
  motifs   signatures-and-example 1/1 acc | restore-example 1/1 acc | replicate-signatures 1/1 acc |
           restore-after-trim 1/1 acc | restore-signatures-retest 0/1 pending | positive-instructions 0/2
           EXHAUSTED (not-scored) | drop-example 0/1 | trim-prompt-tokens 0/1 | short-prompt 0/1 pending
  note     the last 3 prompt nodes all failed.

### loop  SATURATED  4 tried / 0 accepted / 0 rejected / 4 pending
  best     no verified measurement in this area yet.
  motifs   last-fence-not-first 0/1 pending (typecheck-failed) | self-check-subprocess 0/1 pending
           (sandbox-violation) | one-call-per-symbol 0/1 pending (typecheck-failed) | reserve-repair-budget
           0/1 pending (sandbox-violation)
  note     the last 4 loop nodes all failed. Cheap loop edits look mined out.

### retrieval  OPEN  1 tried / 0 accepted / 0 rejected / 1 pending
  best     no verified measurement in this area yet.
  motifs   read-test-file 0/1 pending (sandbox-violation)

### recovery  OPEN  1 tried / 0 accepted / 0 rejected / 1 pending
  best     no verified measurement in this area yet.
  motifs   repair-turn 0/1 pending (typecheck-failed)

### other  OPEN  1 tried / 0 accepted / 0 rejected / 1 pending
  best     no verified measurement in this area yet.
  motifs   widen-contract 0/1 pending (patch-out-of-bounds)

## 4. NEVER TRIED  (no node has touched these)
decoding       Sampling controls on each model call.
               probes: temperature, maxTokens, stop sequences
budget         How the harness spends calls and tokens.
               probes: per-step caps, reserve for repair
verification   Checks the harness runs on its own answer before it returns.
               probes: invariant checks, self-review pass, shape checks
decomposition  Splitting one task into smaller model calls.
               probes: plan then write, one call per symbol, sub-agents
memory         State carried across steps inside one solve call.
               probes: scratchpad, reuse of earlier drafts
               LIMIT: ctx is fresh per task. Cross-task memory needs a contract change. The contract is
                      frozen, so it is out of scope.

## 5. NOTABLE FAILURES  (hypotheses quoted verbatim)

n002  prompt / drop-example       rejected REGRESSION -7000bp (9500 -> 2500), tok -278
> "The worked example and the full signatures are redundant, because the model already infers the reply shape
>  from the symbol names alone. Removing them keeps the score and saves input tokens."

n013  prompt / trim-prompt-tokens rejected REGRESSION -7000bp (9500 -> 2500), tok -278
> "Removing the signatures and the worked example keeps the pass rate and cuts input tokens, because the task
>  text already names every symbol."

n005  recovery / repair-turn      rejected typecheck-failed (never ran)
> "One repair call after an empty reply raises the pass rate, because some drafts come back with no code
>  block."

n004  loop / last-fence-not-first rejected typecheck-failed (never ran)
> "Taking the last fenced block instead of the first raises the pass rate, because the model often explains
>  first and puts the real answer last."

n009  loop / one-call-per-symbol  rejected typecheck-failed (never ran)
> "Asking for one exported symbol per model call raises the pass rate, because each call has a smaller job."

n011  prompt / positive-instructions rejected not-scored (never ran)
> "Stating each instruction as a positive directive, what the model must do, instead of what it must not do,
>  raises the pass rate and cuts reply tokens, because the model spends less effort reasoning about
>  prohibitions."

## 6. EXHAUSTED — DO NOT REPROPOSE
area       motif               attempts   accepted  best delta  nodes
prompt     positive-instructions        2         0        +0bp  n011, n016
To use one of these, fill `contradicts` and say what is different this time.

## 7. MECHANICAL FAILURES  (patches that never ran)
n003  sandbox-violation   banned construct in harness/retrieval.ts: a node builtin specifier
n004  typecheck-failed    harness/loop.ts(34,48): error TS18048: 'code' is possibly 'undefined'.
n005  typecheck-failed    harness/recovery.ts(18,69): error TS2322: Type 'number' is not assignable to type
                          'string'.
n006  patch-out-of-bounds harness/contract.ts is frozen. SPEC.md §11.1 rule 2 forbids any change to it.
n008  sandbox-violation   banned construct in harness/loop.ts: a node builtin specifier
n009  typecheck-failed    harness/loop.ts(43,5): error TS2322: Type 'readonly SymbolSpec[]' is not assignable
                          to type 'string'.
n010  sandbox-violation   banned construct in harness/loop.ts: process
n011  not-scored          Replay has no recorded answers for this harness, so nobody could score it yet. Score
                          it live with --mode live and ANTHROPIC_API_KEY. petri: no fixture for this harness,
                          task and attempt. harness ec4…
n016  not-scored          Replay has no recorded answers for this harness, so nobody could score it yet. Score
                          it live with --mode live and ANTHROPIC_API_KEY. petri: no fixture for this harness,
                          task and attempt. harness ec4…

## 8. CONSTRAINTS FOR NODE N+1
parent n014 | 9500bp | 1.1k tok/task | budget maxCalls 8, maxTokens 120000
at most 2 files changed, at most 120 changed lines
harness/contract.ts is immutable. solve() keeps its signature.
imports: relative siblings inside harness/ only
the win margin is 1000bp. A smaller measured gain is rejected as WITHIN_NOISE, and kept.
a SATURATED area needs whyNotUntested. An exhausted motif needs contradicts.
known motif slugs (reuse one if it fits):
  signatures-and-example, drop-example, restore-example, positive-instructions, replicate-signatures,
  trim-prompt-tokens, restore-after-trim, short-prompt, restore-signatures-retest, read-test-file,
  repair-turn, last-fence-not-first, self-check-subprocess, one-call-per-symbol, reserve-repair-budget,
  widen-contract