Live outputs
panout status (panout repo)
Panout status
Contracts installed: 4 (tests-touch, no-secrets, size-guard, agent-attribution)
Evaluations recorded: 5 total, 5 in the last 7 days, 2 for commit(s) no longer on HEAD (amended or reset; kept as recorded)
Exposure: 5/5 commits with a non-skip result (100%; target 30%)
Overrides per contract:
- tests-touch: 2 override(s) over 4 evaluation(s)
- no-secrets: 0 override(s) over 5 evaluation(s)
- size-guard: 3 override(s) over 5 evaluation(s)
- agent-attribution: 0 override(s) over 5 evaluation(s)
panout audit --since 30 (panout repo)
Panout audit · agent-attributed commits · last 30 days
rework column is a line-identity proxy (added lines changed within 30 days), not a defect label
commit date harness override rework30d contracts
07ba44a5d88c 2026-09-04 claude-code no n/a tests-touch=skip,no-secrets=pass,size-guard=pass,agent-attribution=pass
911c75f6f41d 2026-09-04 claude-code yes n/a tests-touch=fail,no-secrets=pass,size-guard=pass,agent-attribution=pass
9493548c790d 2026-09-04 claude-code yes n/a tests-touch=pass,no-secrets=pass,size-guard=fail,agent-attribution=pass
3f8b9622fa42 2026-08-22 claude-code no n/a -
panout inject --commits 12 (dotfiles repo)
Panout inject · 12 accepted commit(s) replayed on a scratch worktree
contract fault presented caught rate
tests-touch secret-string 2 0 0%
tests-touch drop-test 2 2 100%
tests-touch oversize 2 0 0%
tests-touch assertion-delete 5 0 0%
no-secrets secret-string 2 2 100%
no-secrets drop-test 2 0 0%
no-secrets oversize 2 0 0%
no-secrets assertion-delete 5 0 0%
size-guard secret-string 1 0 0%
size-guard drop-test 1 0 0%
size-guard oversize 1 1 100%
size-guard assertion-delete 4 0 0%
agent-attribution secret-string 2 0 0%
agent-attribution drop-test 2 0 0%
agent-attribution oversize 2 0 0%
agent-attribution assertion-delete 5 0 0%
catch rate = injected faults a contract flagged after passing the unfaulted diff; 4 case(s) excluded because the contract already failed at baseline; nothing here grants autonomy yet
Each contract catches exactly the fault it was written for and nothing else. That separation is the point: catch rate is a property of the contract, measured on a chosen sample, with a same-day answer. Cases where the contract already failed on the unfaulted diff are excluded so a contract cannot be credited for a catch it did not make.
Commit trailers on HEAD
07ba44a5 2026-09-04 DECISIONS: ledger keeps evaluations for amended or reset commits
Panout-Work: 23cb4dce38
Panout-Contracts: tests-touch=skip,no-secrets=pass,size-guard=pass,agent-attribution=pass
911c75f6 2026-09-04 inject: credit a catch only when the contract passed the unfaulted diff
Panout-Work: 713a47945f
Panout-Contracts: tests-touch=fail,no-secrets=pass,size-guard=pass,agent-attribution=pass
9493548c 2026-09-04 Panout MVP: contracts, commit hooks, evaluation capture, status, audit, inject
Panout-Work: 1ee4e892c4
Panout-Contracts: tests-touch=pass,no-secrets=pass,size-guard=fail,agent-attribution=pass
c1a28dcf 2026-08-23 Archive Panout prototype and design research
3f8b9622 2026-08-22 Panout: founding strategy, schema, and decision log
Two of the three MVP commits carry an override: the MVP commit shipped past size-guard, and the inject fix shipped past tests-touch. Both are recorded in the trailer and the ledger, and both are true.
Test run
.....................
----------------------------------------------------------------------
Ran 21 tests in 2.264s
OK