Repository navigation
receipt-coverage re-derived from every append site; KNOWN-LIMITS 87: sent targets are plaintext - #99
Open
githubscum wants to merge 2 commits into
Open
githubscum wants to merge 2 commits into
githubscum wants to merge 2 commits into
Conversation
…ntext sent targets) docs/receipt-coverage.md, written 2026-07-26, had gone stale: six shapes where there are nine, no session id on gate rows, toolIo "staged". Re-derived at 22ae903, citing file and function rather than line numbers, with a tripwire that fails when a receipt type is missing from the doc. The re-derivation found sent.items[].target holds full URLs, search queries and the first 100 characters of network-shaped Bash commands in plaintext. Disclosed as limit 87, pinned by a test, not fixed: the trade is the owner's. Limit 74 amended: the doc half of its open item is closed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
WO: WO-COVERAGE-RESYNC. Source tier: docs and legibility debt, which turned up a new limit.
Addresses: KNOWN-LIMITS 74 (the half it names in
docs/receipt-coverage.md) and new limit 87. The v3 spec's "Lotor records, never infers" split is untouched: this PR changes what the project says about its record, not the record.The one to read first: limit 87
Re-deriving the doc turned up a field it had never listed as readable text.
sent.items[].targeton every session receipt holds, in plaintext:cat mapping.txtqualifies throughping)So a
curlwith an auth header puts the credential on an append-only, hash-linked chain, where removing it breaks verification, andnpm run exportcarries it off the machine. KNOWN-LIMITS had no entry for this. Limit 18 covers a different writer (grant rows).Not fixed, on purpose. Digesting the target removes the only readable account of where a session reached out. That is a trade for the owner. The new test pins today's behaviour so a change is visible.
Not measured on the real chain, on purpose. Finding out how often this has happened means searching the record for secrets. That is the owner's call to make, and the owner may want to make it.
What changed
docs/receipt-coverage.mdre-derived from every append site insrc/andbin/at22ae903. It was written 2026-07-26 and had gone stale: it said six shapes (there are nine),gated-actionhad nosessionIdor request digest (it has both, since 09-07 and later),toolIowas staged (it is on the chain), and cost was one blended total (cost.byModelexists). Citations are now file plus function ortype:literal, because line numbers are part of how it drifted.test/docs-receipt-coverage.test.js: tripwire. Every kebab-casetype:literal undersrc/andbin/, plus theGRANT_TYPEconstant, must be named in the doc.test/known-limits-87-sent-plaintext.test.js: pins limit 87 with fake values.KNOWN-LIMITS.md: entry 87, a dated amendment on 74, pin re-stamped as its own commit.No file under
src/orbin/changed.How it was checked
policy-warnsites in the pre hook (six), said only two places hold plaintext paths, omittedsentaltogether, said the post hook's fast path writes nothing (areasoning-steprow is already on the chain by then), and creditedsessions_sincewith attributing gate rows (src/views/since.jsstill does not, per limit 74). It also passed a test that threw on its own destructuring. All corrected and re-read.parseSessionover a synthetic transcript before writing limit 87; the output is what the entry says.grant-usefrom the doc fails the first check, naming the literal; removingdelegation-grantfails the second; restored file byte-identical, both pass.npm teston the committed tree at133ee74: 1402 tests, 1396 pass, 0 fail, 6 skipped (the 6 are the existing rehearsals of landed patches).limits-pin --checkreads current. The pin is its own commit after the content commit, the lesson from KNOWN-LIMITS 76: three readers stop reporting a refused write as touched #98.Eval
Serves none of E1-E6 directly. It serves R1 honesty: a coverage statement a stranger can check.
What a reviewer should doubt
gated-action,egress-event,grant-use,delegation-grant, the warn shapes andsentagainst source. Thesession-openfield list (toolPins,observer,harness,reach) and thereasoning-steprecorded-path list are the executor's reading, spot-checked by grep for the named fields, not read end to end. The doc's own audit section lists what nobody chased.type: 'foo-bar'in a comment demands a doc mention. Noisy in the safe direction.🤖 Generated with Claude Code