Simulated ledger · no wallet, no login, no backend
Pactora is a multi-role escrow marketplace. Its correctness doesn't live in any single component - it lives between two parties. That's a bug class types and unit tests cannot see.
buyer + escrow + seller === $2,000
Always. Across every deposit, delivery, release and dispute. No single component owns this rule - which is why no single-component test can defend it.
An agentic edit makes a $500 deposit debit the buyer $1,000. TypeScript compiles. The production build passes. A unit test of the reducer in isolation still goes green.
node kane_guard.js --injectThree plain-English objectives drive Chrome across both portals. Kane sees the ledger banner flip, and returns a confirmed product-bug verdict with root cause and UI evidence.
node kane_test.jskane-guard hands Kane's NDJSON verdict to Claude Code. The agent patches the source itself, and Kane re-runs every objective to a 100% green pass.
node kane_guard.js --healNo selectors. No page objects. Kane takes an objective in plain language and drives a real browser across both portals at once. Every run persists an NDJSON trace to kane-traces/ - the evidence the agent patches against.
assertion_error.
severity major · confidence 0.95
Click the "Deposit $500" button. Verify the Buyer Portal available balance now reads $1,500, verify the Seller Portal escrow status reads "Escrow Locked", and verify the held in escrow amount reads $500.
Click the "Deposit $500" button. Verify the page shows the text "Ledger Balanced" and verify the ledger total reads $2,000.
Click "Deposit $500", then click "Mark Delivered", then click "Release Funds". Verify the Seller Portal paid out amount reads $500 and the escrow status reads "Funds Released".
# terminal 1
› npm run dev
# terminal 2
› node kane_guard.js --inject break it
› node kane_test.js Kane catches it
› node kane_guard.js --heal agent patches → greenDeposit, deliver, release, dispute - and watch the ledger invariant hold across every transition.
Launch App