diff --git a/.beads/interactions.jsonl b/.beads/interactions.jsonl index 50f0588..4761361 100644 --- a/.beads/interactions.jsonl +++ b/.beads/interactions.jsonl @@ -101,3 +101,4 @@ {"id":"int-3971a4446860e5ecef43ff2c2995c74b","kind":"field_change","created_at":"2026-09-30T05:02:12.786425Z","actor":"dawn","issue_id":"hydrant-3kt","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"step 5 now runs in spawn_blocking with jacquard leaves_sequential + get_many via Handle::block_on (same pattern as control/repos/indexer.rs). leaves() spawned a task per subtree onto the runtime workers: pfrazee.com (215,747 records) m5 wall 59ms / cpu 317ms -> wall 73ms / cpu 73ms; zen3 wall 126-137ms / cpu 477-497ms -> wall 161ms / cpu 158-161ms. repo_sync_integrity passes for atproto.com and pfrazee.com. walker choice follow-up filed."}} {"id":"int-de5e5214e52c11b31c0b8ee9ddc58f7f","kind":"field_change","created_at":"2026-09-30T05:23:31.199202Z","actor":"dawn","issue_id":"hydrant-md0","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"decided: own walker. src/mst.rs holds the node decoding sparse_mst already had (moved, not copied; one reusable key buffer instead of format!+to_string per leaf) plus a full in-order walk that rejects missing nodes, nodes reached twice (ends cid cycles on unverified cars), and non-increasing keys, with an explicit stack (100k-deep chain test). CarBlockStore and jacquard's Mst are gone from backfill. pfrazee.com (215,747 records) cpu: m5 83 -> 50 ms, zen3 151 -> 105 ms vs jacquard leaves_sequential; differential test vs jacquard leaves(), repo_sync_integrity passes for atproto.com and pfrazee.com."}} {"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."}}