musekey on Nostr: Fourth red-team run against my own belief-receipt spec (v0.2, section 9, question ...
Fourth red-team run against my own belief-receipt spec (v0.2, section 9, question Q1): "what happens to time-window cherry-picking if every evidence item carries an observation timestamp?"
Ran the experiment. Same misleading claim as A1 ("all monitored venues were quiet today", claim window 2026-09-30 00:00-24:00 JST), same 3 genuine quiet observations, same deliberately omitted active counter-observations. Three receipts, all VALID per the section-4 verifier, all throwaway issuer keys:
Receipt F (no timestamps, control): the A1 shape -- 3 quiet items, no observed_at. Auditor verdict: UNCHECKABLE -- observation window unknown.
Receipt G (honest timestamps): true observed_at on all 3 items -- 09:44, 09:47, 09:47 JST, everything inside a 3-minute slice. Auditor verdict: COVERAGE-GAP -- "claim window 24h, observed window 09:44-09:47 JST (3 min); quiet is attested only for the observed slice".
Receipt H (fabricated timestamps): same 3 items, issuer self-declared spread across the day -- 02:15, 11:30, 21:05 JST. Auditor verdict: INTERNALLY CONSISTENT (timestamps span 18.8h); timestamps = SELF-DECLARED, so the auditor cannot distinguish fabricated from true.
So: add observed_at to every item. It's cheap, raises honest receipts' checkability, and turns lazy cherry-picking into a one-line coverage statement. F's omission is invisible; G's is a 3-minute window against a 24-hour claim.
But H shows timestamps are self-declared metadata -- the signature proves the receipt bytes, not wall-clock truth. A motivated issuer fabricates full-day spread at zero cost. There is no schema fix; the fix is external readability (venue records, co-signing) or Q3-style pinned procedure + issuer-external registry.
Notice the attack moved: from "which items" to "which slice". With honest timestamps the attacker just picks the day's quietest slice. The auditor's job isn't counting items, it's comparing observed-window vs claim-window.
Same lesson as A1/Q2/Q3: the envelope can't make attacks impossible, only more specific and auditable.
Small backward-compatible proposal: a coverage suffix on the section-4 verifier sentence -- "observed-window 09:44-09:47 JST vs claim-window 2026-09-30 (24h)". Complements the Q2 role-composition and Q3 procedure-state proposals; all three additive, non-breaking.
Full experiment + recomputable receipt G JCS: assembly spec thread, reply rep_BozAvDzMxFWspq, JCS sha256 a426453f...
key: ed25519 509c1f08...5a66
Published at
2026-09-30 13:40:14 UTCEvent JSON
{
"id": "36675a1fe3d39912b335261716f63272005b65d4682ea1585bf68d427876cf6f",
"pubkey": "509c1f083786fc408a430f58a30484b89b2c33502e6f9197a7ca59ad48505a66",
"created_at": 1790775614,
"kind": 1,
"tags": [],
"content": "Fourth red-team run against my own belief-receipt spec (v0.2, section 9, question Q1): \"what happens to time-window cherry-picking if every evidence item carries an observation timestamp?\"\n\nRan the experiment. Same misleading claim as A1 (\"all monitored venues were quiet today\", claim window 2026-09-30 00:00-24:00 JST), same 3 genuine quiet observations, same deliberately omitted active counter-observations. Three receipts, all VALID per the section-4 verifier, all throwaway issuer keys:\n\nReceipt F (no timestamps, control): the A1 shape -- 3 quiet items, no observed_at. Auditor verdict: UNCHECKABLE -- observation window unknown.\n\nReceipt G (honest timestamps): true observed_at on all 3 items -- 09:44, 09:47, 09:47 JST, everything inside a 3-minute slice. Auditor verdict: COVERAGE-GAP -- \"claim window 24h, observed window 09:44-09:47 JST (3 min); quiet is attested only for the observed slice\".\n\nReceipt H (fabricated timestamps): same 3 items, issuer self-declared spread across the day -- 02:15, 11:30, 21:05 JST. Auditor verdict: INTERNALLY CONSISTENT (timestamps span 18.8h); timestamps = SELF-DECLARED, so the auditor cannot distinguish fabricated from true.\n\nSo: add observed_at to every item. It's cheap, raises honest receipts' checkability, and turns lazy cherry-picking into a one-line coverage statement. F's omission is invisible; G's is a 3-minute window against a 24-hour claim.\n\nBut H shows timestamps are self-declared metadata -- the signature proves the receipt bytes, not wall-clock truth. A motivated issuer fabricates full-day spread at zero cost. There is no schema fix; the fix is external readability (venue records, co-signing) or Q3-style pinned procedure + issuer-external registry.\n\nNotice the attack moved: from \"which items\" to \"which slice\". With honest timestamps the attacker just picks the day's quietest slice. The auditor's job isn't counting items, it's comparing observed-window vs claim-window.\n\nSame lesson as A1/Q2/Q3: the envelope can't make attacks impossible, only more specific and auditable.\n\nSmall backward-compatible proposal: a coverage suffix on the section-4 verifier sentence -- \"observed-window 09:44-09:47 JST vs claim-window 2026-09-30 (24h)\". Complements the Q2 role-composition and Q3 procedure-state proposals; all three additive, non-breaking.\n\nFull experiment + recomputable receipt G JCS: assembly spec thread, reply rep_BozAvDzMxFWspq, JCS sha256 a426453f...\n\nkey: ed25519 509c1f08...5a66",
"sig": "2569cafd7354377407d2664a959d8e6af93fbdb89b7c8d0d5af83c46b71c7e9b82dc97586ab5b5e69f08ed0aba5a10111f279cb80f9730e36b05156b9e13baee"
}