From 1c07d4e80c1cdabe6def99581d25685201c652a2 Mon Sep 17 00:00:00 2001 From: dawn <90008@klbr.net> Date: Wed, 30 Sep 2026 10:49:26 +0300 Subject: [PATCH] [beads] close hydrant-4xb --- .beads/interactions.jsonl | 1 + 1 file changed, 1 insertion(+) diff --git a/.beads/interactions.jsonl b/.beads/interactions.jsonl index 995ac38..54e919b 100644 --- a/.beads/interactions.jsonl +++ b/.beads/interactions.jsonl @@ -103,3 +103,4 @@ {"id":"int-bdc88f6c12ad79db0efb531d53412d61","kind":"field_change","created_at":"2026-09-30T05:34:01.794085Z","actor":"dawn","issue_id":"hydrant-e0w","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"SparseScanner::scan_node (recursive) -> scan_subtree over a (cid, NodeBounds) work stack, children pushed reversed so scan order stays depth first, left to right. reproduced first: a 100k-deep left chain aborted the test process with 'stack overflow' (SIGABRT) on the old scanner; passes now. existing pruning/resume/pending-dedupe tests unchanged and passing, plus a self-loop test. live check via backfill_strategy_bench on 10 sh.tangled repos (up to root layer 5, 3 getBlocks rounds): sparse record counts equal full-walk counts for all 10."}} {"id":"int-42f2133099c47668fc0443451dcaceb1","kind":"field_change","created_at":"2026-09-30T06:34:40.54604Z","actor":"dawn","issue_id":"hydrant-cee","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"done: crate::car::parse_commit_car (root + BTreeMap, jacquard's ParsedCar shape so the commit pipeline is unchanged) replaces parse_car_bytes + validate_block_cids in validation.rs, sparse getRecord proof, resync buffer replay and jetstream; validate_block_cids removed. 10k live #commit cars (p50 10 blocks, ~5 KB): m5 2.93 -> 2.07 us/commit, zen3 4.74 -> 3.70 us. walking the map afterwards cost the same as the bare hashing on these sizes, so the win is the parser, not cache order. stricter than iroh-car on trailing partial varints, sections longer than the car, empty payloads (tests pin all three); 20k live commits parse cleanly on both machines. forged-block test now covers #commit as well as #sync."}} {"id":"int-c8391b2cba97c73d6fbfceb33fc984f6","kind":"field_change","created_at":"2026-09-30T06:55:28.287477Z","actor":"dawn","issue_id":"hydrant-642","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"done: process_did_sparse now runs against a mock pds serving built getRecord proofs (real AppState, repo metadata, filter). honest proof imports; a forged mst node (claims the signed tree's cid, maps the record elsewhere, carries that record's real body) is rejected with verify_cids and imported without it; a forged record body is rejected either way by put_record's rehash, which had no test before. mutants: parse_commit_car(proof.body, false) fails only the forged-node test; dropping put_record's cid check fails only the forged-body test. mock pds plumbing shared (spawn_car_server takes the xrpc method, public_client replaces three inline copies)."}} +{"id":"int-7ccfc85975d69ca16f9d95bebcbda917","kind":"field_change","created_at":"2026-09-30T07:49:25.993075Z","actor":"dawn","issue_id":"hydrant-4xb","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"done: put_record takes &crate::car::CarBlock, whose bytes are reachable only through CarBlock::verify() -> VerifiedBlock. car blocks now come as car::Blocks (map + cids_checked), set only by a verifying parse; Blocks::extend ANDs the flag, Default (empty) is checked, and nothing else constructs one outside tests. with verify_cids on, verify() is free; off, it hashes like put_record used to. pfrazee.com full backfill (215,747 records), per-record storage check: m5 20 ms -> 1-2 ms, zen3 55 ms -> 3-5 ms; unchanged with verify_cids off. 6 soundness mutants in car.rs each fail tests; getBlocks fill of records missing from a sparse proof now tested; txn test restored as unchecked_block_with_a_forged_cid_is_rejected. repo_sync_integrity passes for atproto.com and pfrazee.com."}} -- 2.51.2