{"id":"int-9e82e018","kind":"field_change","created_at":"2026-06-27T20:31:50.656833364Z","actor":"dawn","issue_id":"hydrant-7ra","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"test"}}
{"id":"int-6eedbf38","kind":"field_change","created_at":"2026-06-27T20:34:46.528783549Z","actor":"dawn","issue_id":"hydrant-ct8","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"not an issue"}}
{"id":"int-55de70f4","kind":"field_change","created_at":"2026-06-27T20:34:46.630520455Z","actor":"dawn","issue_id":"hydrant-r6q","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"not an issue"}}
{"id":"int-ea64011f","kind":"field_change","created_at":"2026-06-27T20:39:01.288049505Z","actor":"dawn","issue_id":"hydrant-28z","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"resolved (ban.rs and BanTracker completely removed from codebase back in March)"}}
{"id":"int-11e4d483","kind":"field_change","created_at":"2026-06-27T20:53:29.6549615Z","actor":"dawn","issue_id":"hydrant-8b8","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"resolved (added HYDRANT_DB_RECORDS_BLOOM_FILTERS configuration option to toggle bloom filters, defaulting to true to protect against public getRecord miss attacks)"}}
{"id":"int-8f61562c","kind":"field_change","created_at":"2026-06-27T21:09:39.634037667Z","actor":"dawn","issue_id":"hydrant-ydn","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-cf30394f","kind":"field_change","created_at":"2026-06-27T21:09:44.785162938Z","actor":"dawn","issue_id":"hydrant-bvr","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-baf7d995","kind":"field_change","created_at":"2026-06-27T21:09:49.650869387Z","actor":"dawn","issue_id":"hydrant-hn5","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-2759bcaf","kind":"field_change","created_at":"2026-06-27T21:09:55.50046001Z","actor":"dawn","issue_id":"hydrant-iwu","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-466b10ac","kind":"field_change","created_at":"2026-06-27T21:10:00.185923024Z","actor":"dawn","issue_id":"hydrant-4gk","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-660c10a6","kind":"field_change","created_at":"2026-06-27T21:10:04.74704104Z","actor":"dawn","issue_id":"hydrant-cci","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-43c2fa27","kind":"field_change","created_at":"2026-06-27T21:10:09.381504085Z","actor":"dawn","issue_id":"hydrant-wk1","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-8eea25ae","kind":"field_change","created_at":"2026-06-27T21:10:14.088044065Z","actor":"dawn","issue_id":"hydrant-64t","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-2f9c937e","kind":"field_change","created_at":"2026-06-27T21:10:18.602540361Z","actor":"dawn","issue_id":"hydrant-akc","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-dffa6201","kind":"field_change","created_at":"2026-06-27T21:10:23.08910978Z","actor":"dawn","issue_id":"hydrant-7ab","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-c413e2b2","kind":"field_change","created_at":"2026-06-27T21:10:27.59772856Z","actor":"dawn","issue_id":"hydrant-bb9","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-c8b70f72","kind":"field_change","created_at":"2026-06-27T21:10:32.040725843Z","actor":"dawn","issue_id":"hydrant-b5n","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-40a73af9","kind":"field_change","created_at":"2026-06-27T21:10:36.532427948Z","actor":"dawn","issue_id":"hydrant-0g9","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-8387862e","kind":"field_change","created_at":"2026-06-27T21:10:40.978338026Z","actor":"dawn","issue_id":"hydrant-56c","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-b1243dd0","kind":"field_change","created_at":"2026-06-27T22:04:06.967996391Z","actor":"dawn","issue_id":"hydrant-jsk","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-d195e24f","kind":"field_change","created_at":"2026-06-27T22:04:07.051681392Z","actor":"dawn","issue_id":"hydrant-3h9","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-1c4fe55f","kind":"field_change","created_at":"2026-06-27T22:04:07.139629055Z","actor":"dawn","issue_id":"hydrant-byv","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-2d438cde","kind":"field_change","created_at":"2026-06-27T22:04:07.234595271Z","actor":"dawn","issue_id":"hydrant-7o8","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-a3d9ec99","kind":"field_change","created_at":"2026-06-27T22:04:07.333430423Z","actor":"dawn","issue_id":"hydrant-0hs","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-4a0e5370","kind":"field_change","created_at":"2026-06-27T22:04:07.423270611Z","actor":"dawn","issue_id":"hydrant-5ci","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-ec499f8c","kind":"field_change","created_at":"2026-06-27T22:04:07.514929804Z","actor":"dawn","issue_id":"hydrant-m6v","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-b808f474","kind":"field_change","created_at":"2026-06-27T22:04:07.602032897Z","actor":"dawn","issue_id":"hydrant-6w8","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-8b7d6132","kind":"field_change","created_at":"2026-06-27T22:04:07.690588963Z","actor":"dawn","issue_id":"hydrant-p2e","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-1f4fccbe","kind":"field_change","created_at":"2026-06-27T22:04:07.784933972Z","actor":"dawn","issue_id":"hydrant-gvr","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-560fbdac","kind":"field_change","created_at":"2026-06-27T22:04:07.869294251Z","actor":"dawn","issue_id":"hydrant-b0v","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-bcb4acd9","kind":"field_change","created_at":"2026-06-27T22:04:07.969448542Z","actor":"dawn","issue_id":"hydrant-ao2","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"fixed all 12 reported bugs"}}
{"id":"int-c5142d1c6b1b4ef2d1e46dd4fdce9525","kind":"field_change","created_at":"2026-07-09T19:26:22.639873Z","actor":"dawn","issue_id":"hydrant-oth","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"switched reqwest to native root certificates and added a darwin-compatible devshell; checks and tests pass"}}
{"id":"int-832ee20415313678de9d18490fa5ebb8","kind":"field_change","created_at":"2026-07-11T09:40:50.765918Z","actor":"dawn","issue_id":"hydrant-4hk","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified proxy-pool scaling plus sparse probe reuse, one-request auto fast path, parallel getBlocks chunks, zero-copy CAR parsing, and benchmark request accounting."}}
{"id":"int-40c64e6034cfb8a0dbcd83d93671f0e1","kind":"field_change","created_at":"2026-07-11T09:40:50.962019Z","actor":"dawn","issue_id":"hydrant-8u5","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified proxy-pool scaling plus sparse probe reuse, one-request auto fast path, parallel getBlocks chunks, zero-copy CAR parsing, and benchmark request accounting."}}
{"id":"int-632f66bb8a0ffe9b50a6f4e98fff17ad","kind":"field_change","created_at":"2026-07-11T11:56:17.599247Z","actor":"dawn","issue_id":"hydrant-76x","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"shared car::validate_block_cids applied to sparse proof + getBlocks; full/ingest paths deduplicated; tests cover mismatch/match/disabled"}}
{"id":"int-2d8452d5606c2f560f0f91ac7bfa74e8","kind":"field_change","created_at":"2026-07-11T12:01:39.629304Z","actor":"dawn","issue_id":"hydrant-37h","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"SparseScanner carries NodeBounds through pending/visited scans; boundary subtrees pruned (test shows one fewer round), fetches deduped by CID, conflicting-bounds reuse rescanned deterministically; 69/69 lib tests"}}
{"id":"int-172481868fa58aa6281c7aa0c152276b","kind":"field_change","created_at":"2026-07-11T12:12:58.883838Z","actor":"dawn","issue_id":"hydrant-9ka.3","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"superseded: keep compile-time feature gates, don't compile all modes in; epic goal is composability/cfg consolidation (hydrant-9ka.2), not runtime mode selection"}}
{"id":"int-673a873b685f9bb3289d8f60a3543353","kind":"field_change","created_at":"2026-07-11T12:21:57.79772Z","actor":"dawn","issue_id":"hydrant-9ka.1","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"tests/feature_matrix.nu checks 13 supported combos error+warning-free; fixed bare-indexer, featureless, firehose-diagnostics, and relay combo breakage; documented in AGENTS.md; lib tests pass on default (69), relay (48), relay+jetstream (51)"}}
{"id":"int-98c8017fe132cfedeb794583f35d7136","kind":"field_change","created_at":"2026-07-11T15:50:21.796448Z","actor":"dawn","issue_id":"hydrant-9ka.2","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"all four seams landed: (1) Config::default mode_defaults modules, (2) ingest per-mode EventSink (indexer/relay/none) replacing inline cfg blocks in worker/context/handlers + diagnostics ZST facade removing ~100 hot-path gates, (3) db keyspaces grouped into IndexerDb/StreamDb/JetstreamDb/RelayDb declared in db/keyspaces.rs incl. keyspace_by_name table, (4) types/event split per mode + ops::record_events emitter + backlink_ops hooks making apply_commit unconditional. cfg mentions 720->551; remaining sites are mod decls, struct groups, route registration, and composition roots (run.rs, sink.rs, keyspaces.rs, firehose_stats.rs) plus mode-internal sub-feature coupling (shard.rs/process.rs — dedup follow-up filed). metric note: order-of-magnitude numeric target not hit; the shared-logic confetti the epic complains about is gone. verified: 13-combo matrix warning-free, lib tests 69/60/51/93 across modes, live full-network indexer smoke (live creates w/ payloads over /stream), relay subscribeRepos CBOR frames E2E, debug/crawler/ttl/repos integration tests."}}
{"id":"int-4076df0c4f5aa199da3c2b00104151a6","kind":"field_change","created_at":"2026-07-11T15:50:22.329086Z","actor":"dawn","issue_id":"hydrant-9ka","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"epic complete: matrix check (9ka.1) + composable mode seams (9ka.2); runtime-mode child superseded per dawn's direction (keep compile-time gates)"}}
{"id":"int-8eba29aa89c70bffe53d29a8ac491e16","kind":"field_change","created_at":"2026-07-11T17:15:31.961561Z","actor":"dawn","issue_id":"hydrant-9xa.1","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"landed: schema table + registry derivation + open-time completeness assert; matrix 13/13, lib tests 69/69, integration suite green minus known-env websocat + preexisting hydrant-580"}}
{"id":"int-05755dcd6c390ead650e7f175801d1fd","kind":"field_change","created_at":"2026-07-11T18:18:13.890504Z","actor":"dawn","issue_id":"hydrant-9xa.3","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"landed Txn/RecordTxn as the sole record mutation path for live commits, sparse backfill, and full backfill; atomic count/lifecycle commit; backfill/live event modes; private records/blocks/events handles with read-only accessors; verified matrix 13/13, lib 69/69, repo integrity, backlinks, and Bun websocket backfill smoke"}}
{"id":"int-1b812da9ab9c275825dd22ce1443f6dc","kind":"field_change","created_at":"2026-07-13T11:15:01.614513905Z","actor":"dawn","issue_id":"hydrant-14m","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Completed and fully verified"}}
{"id":"int-ccc009d33be267d4edde80efbb0afda6","kind":"field_change","created_at":"2026-07-18T16:29:04.90142Z","actor":"dawn","issue_id":"hydrant-cth","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
{"id":"int-677d150e68b2c1ce8213906f12033033","kind":"field_change","created_at":"2026-07-18T16:29:05.154349Z","actor":"dawn","issue_id":"hydrant-kht","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
{"id":"int-6226544b59403bf49f951646e17a3e12","kind":"field_change","created_at":"2026-07-18T16:29:05.385414Z","actor":"dawn","issue_id":"hydrant-25t","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
{"id":"int-be22013221b8f1bbee2c9daaa22a96b0","kind":"field_change","created_at":"2026-07-18T16:29:05.612388Z","actor":"dawn","issue_id":"hydrant-clb","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
{"id":"int-ee780a63e8da786aaaea85060dffc7fc","kind":"field_change","created_at":"2026-07-20T14:30:28.938993Z","actor":"dawn","issue_id":"hydrant-nxp","extra":{"field":"status","new_value":"in_progress","old_value":"open"}}
{"id":"int-2e5de176c75f524476b30a083f73a966","kind":"field_change","created_at":"2026-07-20T14:40:43.857928Z","actor":"dawn","issue_id":"hydrant-nxp","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
{"id":"int-971ef62cb2ef2ab21e7bca2d338cf84e","kind":"field_change","created_at":"2026-07-22T23:33:26.248759Z","actor":"dawn","issue_id":"hydrant-7dn","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Root cause demonstrated, Hydrant bootstrap defect fixed/tested/deployed; remaining blocker is the PDS TLS/database outage."}}
{"id":"int-da0db57c3fd939f41baa5a4d05ffd7a8","kind":"field_change","created_at":"2026-07-24T16:36:49.753067Z","actor":"dawn","issue_id":"hydrant-qcm","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
{"id":"int-ca318206dd32c9308557a8476d6b375a","kind":"field_change","created_at":"2026-07-25T23:15:02.965313Z","actor":"dawn","issue_id":"hydrant-ed3","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified PDS-fair backfill admission"}}
{"id":"int-a5ba65c8d10c0e7b1d1853e7d6aad564","kind":"field_change","created_at":"2026-07-25T23:54:12.369613Z","actor":"dawn","issue_id":"hydrant-6zr","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified periodic listRepos reconciliation"}}
{"id":"int-b09e978b3baf1464ca5a83acbe78aca1","kind":"field_change","created_at":"2026-07-26T01:12:00.183044Z","actor":"dawn","issue_id":"hydrant-4xh","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and benchmarked bounded discovery lookahead"}}
{"id":"int-f94c2f4d9a604bad85e37f5e2a349d35","kind":"field_change","created_at":"2026-07-26T02:19:30.894005Z","actor":"dawn","issue_id":"hydrant-7bb","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Benchmark found no beneficial fairness-preserving DID order"}}
{"id":"int-791e1391001df4d33ca5d8e77e7fba95","kind":"field_change","created_at":"2026-07-26T08:46:35.184013Z","actor":"dawn","issue_id":"hydrant-90c","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified opt-in relay-first deep discovery"}}
{"id":"int-67b072505a3ef91c2db038cd21b5ccda","kind":"field_change","created_at":"2026-08-04T09:43:07.770144Z","actor":"dawn","issue_id":"hydrant-6vo","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"implemented in f332596: replay policy = resolve via records/history at inflation (Ptr-only StoredData, Block variant removed); version-keyed bodies in history; ephemeral expiry gc via db::expiry"}}
{"id":"int-e8e986d1eee79fe3ceef56a3631fd7de","kind":"field_change","created_at":"2026-08-04T09:43:32.520656Z","actor":"dawn","issue_id":"hydrant-715","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"implemented in f332596: record bodies stored inline in records, cids recomputed on read (cid_from_record_value); superseded bodies versioned in history by death rev"}}
{"id":"int-53c4b2718e2425a9d79ca282eb339032","kind":"field_change","created_at":"2026-08-04T14:35:40.513543Z","actor":"dawn","issue_id":"hydrant-dte","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-7d5297acd3d89842d62955f3d3bca23c","kind":"field_change","created_at":"2026-08-04T14:35:40.979682Z","actor":"dawn","issue_id":"hydrant-wyz","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-c40b4e0979136f385a3204ea1a257fa2","kind":"field_change","created_at":"2026-08-04T14:35:41.444775Z","actor":"dawn","issue_id":"hydrant-m1k","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-d2be0ec0d725374e86b656c507cda75d","kind":"field_change","created_at":"2026-08-04T14:35:41.905024Z","actor":"dawn","issue_id":"hydrant-s2w","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-44627fcadedd4fbfcdf0050459bac98e","kind":"field_change","created_at":"2026-08-04T14:35:42.371067Z","actor":"dawn","issue_id":"hydrant-5jy","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-2dea50d4724ffdd947a941fb183e631c","kind":"field_change","created_at":"2026-08-04T14:35:42.842168Z","actor":"dawn","issue_id":"hydrant-bgk","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-ac70db8b6c546d91ed2c76fb6ebcf19d","kind":"field_change","created_at":"2026-08-04T14:35:43.306866Z","actor":"dawn","issue_id":"hydrant-s2g","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-88c101852700d08fcadd8c0221c2f4d2","kind":"field_change","created_at":"2026-08-04T14:35:43.773997Z","actor":"dawn","issue_id":"hydrant-8wn","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-682b031c4f73fb410a92008e0d37a55b","kind":"field_change","created_at":"2026-08-04T14:35:44.242014Z","actor":"dawn","issue_id":"hydrant-95y","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-ba97c96e74d8b43031736829262e93bc","kind":"field_change","created_at":"2026-08-04T14:35:44.700977Z","actor":"dawn","issue_id":"hydrant-pkq","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-4b70f3c4a31f3d6726e063561d9afdde","kind":"field_change","created_at":"2026-08-04T14:35:45.144829Z","actor":"dawn","issue_id":"hydrant-68p","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-b7b43097a0e32a322dde432352ec19b7","kind":"field_change","created_at":"2026-08-04T14:35:45.601611Z","actor":"dawn","issue_id":"hydrant-18e","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Closed"}}
{"id":"int-441489c25879543bfe19dd44035dfeaf","kind":"field_change","created_at":"2026-08-04T15:46:16.654434Z","actor":"dawn","issue_id":"hydrant-br2","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Review complete; actionable findings reproduced or traced and filed."}}
{"id":"int-e3633aca4e00defd1359024b30eb445a","kind":"field_change","created_at":"2026-08-04T15:48:41.5613Z","actor":"dawn","issue_id":"hydrant-kgh","extra":{"field":"priority","new_value":"1","old_value":"2"}}
{"id":"int-48a0a70f17eb6a63b893c0476faf4b8e","kind":"field_change","created_at":"2026-08-04T18:24:19.87492Z","actor":"dawn","issue_id":"hydrant-2m4","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Duplicate of hydrant-6vo.1 and incorrect scope: operator erasure stays on the private REST management API; no com.atproto.repo.deleteRecord XRPC."}}
{"id":"int-059a0476704b98cf5d5fefeda55b0b1c","kind":"field_change","created_at":"2026-08-04T19:57:42.63491Z","actor":"dawn","issue_id":"hydrant-6vo.1","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"implemented and verified by library suites, API integration, and the 13-combination feature matrix"}}
{"id":"int-e1e1c82f7a547fe603f7884daa72f465","kind":"field_change","created_at":"2026-08-04T19:57:42.859027Z","actor":"dawn","issue_id":"hydrant-ara","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"implemented and verified by library suites, API integration, and the 13-combination feature matrix"}}
{"id":"int-f910c2ce5e3970afdaa4bc460e60e84c","kind":"field_change","created_at":"2026-08-04T19:57:43.053914Z","actor":"dawn","issue_id":"hydrant-0ch","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"implemented and verified by library suites, API integration, and the 13-combination feature matrix"}}
{"id":"int-65b4ebc407f10d6bc79a929ed408e7ea","kind":"field_change","created_at":"2026-08-04T19:57:43.248943Z","actor":"dawn","issue_id":"hydrant-b3x","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"implemented and verified by library suites, API integration, and the 13-combination feature matrix"}}
{"id":"int-b0e9d94aa9b941850ed1b01d23a86158","kind":"field_change","created_at":"2026-08-04T19:57:43.441968Z","actor":"dawn","issue_id":"hydrant-bmm","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"implemented and verified by library suites, API integration, and the 13-combination feature matrix"}}
{"id":"int-3eb84bb7e4c4fbb16394fdabd4383eca","kind":"field_change","created_at":"2026-08-04T19:57:43.640007Z","actor":"dawn","issue_id":"hydrant-7oh","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"implemented and verified by library suites, API integration, and the 13-combination feature matrix"}}
{"id":"int-c5b7583f00350a0200945b602ba66619","kind":"field_change","created_at":"2026-08-04T19:57:44.242864Z","actor":"dawn","issue_id":"hydrant-6vo","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"retired legacy blocks with bounded v12 migration and verified durable operator redaction semantics"}}
{"id":"int-38168424a32deca0fb58036e1a83de3b","kind":"field_change","created_at":"2026-08-04T20:11:39.563066Z","actor":"dawn","issue_id":"hydrant-iv6","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"legacy marker adoption now uses constant/cheap migration-specific proofs and never reruns the all-repo v8 rebuild or current v10 pass"}}
{"id":"int-6828db596b2578b756aa4285991d9124","kind":"field_change","created_at":"2026-08-04T20:27:19.841311Z","actor":"dawn","issue_id":"hydrant-6vo","extra":{"field":"status","new_value":"in_progress","old_value":"closed"}}
{"id":"int-6eee58e0219f03afafa110afc5d03a39","kind":"field_change","created_at":"2026-08-04T20:51:47.545017Z","actor":"dawn","issue_id":"hydrant-6vo","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"retired legacy blocks in one final v10 migration and verified operator deletion semantics"}}
{"id":"int-c0741f817921b110897e00af00ecc349","kind":"field_change","created_at":"2026-08-05T00:14:20.548028Z","actor":"dawn","issue_id":"hydrant-6vo.1.1","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"operator deletion is now ordered after commit-coupled body broadcasts"}}
{"id":"int-09e1aac49c25bce98cd75ee897845e6a","kind":"field_change","created_at":"2026-08-05T01:20:08.275853Z","actor":"dawn","issue_id":"hydrant-6vo.2","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Migration copy and all requested invariants validated; full non-credentialed integration suite passes."}}
{"id":"int-31e5dd29f03926cd1b773b3379c0ddb3","kind":"field_change","created_at":"2026-08-05T13:28:53.901038Z","actor":"dawn","issue_id":"hydrant-adq","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and fully validated on the final working tree."}}
{"id":"int-d47b701c216df2d75a8351144aa4e648","kind":"field_change","created_at":"2026-08-05T13:28:54.108148Z","actor":"dawn","issue_id":"hydrant-0gg","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and fully validated on the final working tree."}}
{"id":"int-a476263d50fdc6414edb9ac747ba69b6","kind":"field_change","created_at":"2026-08-05T13:28:54.314066Z","actor":"dawn","issue_id":"hydrant-4hr","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and fully validated on the final working tree."}}
{"id":"int-ccc4d70168c95b110d3b7e29fcf40451","kind":"field_change","created_at":"2026-08-10T22:32:35.356361Z","actor":"dawn","issue_id":"hydrant-dom","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
{"id":"int-1981f331f8b8daf93820df3650c16c6a","kind":"field_change","created_at":"2026-08-13T14:45:08.148441Z","actor":"dawn","issue_id":"hydrant-5dn","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Persisted transition_repo state in the transaction; regression exercises BackfillFinished and rereads Synced from db.repos."}}
{"id":"int-23b91ab3d0040a77ba13c0bd85aeecec","kind":"field_change","created_at":"2026-09-09T14:19:20.644047Z","actor":"dawn","issue_id":"hydrant-hhs","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"bumped jacquard to 0.12.2 and migrated types in 87c7371"}}
{"id":"int-99b3e5d83c411ecf6c75c6f4cc56befb","kind":"field_change","created_at":"2026-09-16T19:41:43.495676Z","actor":"dawn","issue_id":"hydrant-20o","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
{"id":"int-d3e9c1df6510bba18c001bc419076d7e","kind":"field_change","created_at":"2026-09-29T08:08:16.581442Z","actor":"dawn","issue_id":"hydrant-aj7","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"fixed in 45784c4"}}
{"id":"int-53271b8bed8598d144576602a9c47c08","kind":"field_change","created_at":"2026-09-29T08:21:03.967954Z","actor":"dawn","issue_id":"hydrant-abq","extra":{"field":"priority","new_value":"1","old_value":"3"}}
{"id":"int-106dc2c16a9faddcec453986c3140ba8","kind":"field_change","created_at":"2026-09-29T13:45:23.840403Z","actor":"dawn","issue_id":"hydrant-abq","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"fixed in e478bcf, be797e7, c4cc0b9: positions are assigned at commit by the sequencer"}}
{"id":"int-dcf53a27a3aaa0cfd5688b6b43d732b0","kind":"field_change","created_at":"2026-09-29T16:53:42.411648Z","actor":"dawn","issue_id":"hydrant-abq","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"fixed on main (a65cbee): positions assigned at commit by the sequencer, plus the review fixes on top. soak: /stream 1,594,774/1,594,774, /subscribe 1,305,381/1,305,381"}}
{"id":"int-8da573db8f5876522a84f44c384971fb","kind":"field_change","created_at":"2026-09-30T03:39:10.942522Z","actor":"dawn","issue_id":"hydrant-xzs","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"HYDRANT_VERIFY_CIDS now defaults to true. cost on real getRepo CARs (m-series, release): ~500-600ns/block; pfrazee 82.8MB/273k blocks = 154ms verify vs 64ms parse; firehose commit ~few us vs 31.6us k256 verify. pinned by ingest::validation::tests::default_config_rejects_forged_car_blocks."}}
{"id":"int-8adfef5988f821548716813cb36a7ab4","kind":"field_change","created_at":"2026-09-30T03:57:19.520454Z","actor":"dawn","issue_id":"hydrant-pt1","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"done: pfrazee.com CAR (273k blocks) CID verify 152ms -> 32ms on m5; x86 zen3 unchanged at ~255 ns/block."}}
{"id":"int-8484373a692cb3620c119f3331d254fe","kind":"field_change","created_at":"2026-09-30T04:30:48.491785Z","actor":"dawn","issue_id":"hydrant-870","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"done in 2b34d56 + a36d752. pfrazee.com parse+verify: m5 83->62ms, zen3 157->122ms; hashing now at the in-order ceiling on both. follow-ups hydrant-j88, hydrant-3kt."}}
{"id":"int-82f9de1e6db3b9e0e230cb21110cd5c7","kind":"field_change","created_at":"2026-09-30T04:52:12.504394Z","actor":"dawn","issue_id":"hydrant-j88","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"replaced BTreeMap with HashMap<IpldCid, Bytes, ahash::RandomState> (seeded: cids are pds-chosen) behind a read-only CarBlockStore for the backfill MST walk. pfrazee.com (273k blocks): map build m5 40->16ms, zen3 99->72ms (zen3 is page-fault bound for any fresh 60MB+ structure); lookups m5 41->5ms, zen3 73->15ms; jacquard MST walk m5 98->58ms, zen3 208->139ms. repo_sync_integrity passes for atproto.com and pfrazee.com."}}
{"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."}}
{"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<M> (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."}}
{"id":"int-97b612e02e1aba03f89e2682db706a5d","kind":"field_change","created_at":"2026-09-30T10:55:51.409278Z","actor":"dawn","issue_id":"hydrant-pwu","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"done: benches/repo.rs covers compute_cid, parse_car/parse_commit_car (verify/trust), mst_leaves, sparse_scan, record_check and backfill_cpu on atproto.com / jay.bsky.team / pfrazee.com. gate: nu tests/bench.nu compare-ref <ref> builds both sides (ref in a worktree, own target dir) and runs each benchmark ref, tree, tree, ref (ABBA), judging the geometric mean of both comparisons at the low end of its 95% ci, default threshold 10%. evidence on the m5: identical code passes all 27 (max |change| 6.3%); verify-always-hashes mutant fails exactly the 6 verify benches (+26..+35% backfill_cpu, +7000..+31000% record_check), trust unchanged; an mst decode slowdown fails all 6 mst_leaves/sparse_scan benches (+13.8..+40.9%). found on the way: back-to-back runs of identical binaries differ 10-15% by order (hence ABBA), and env!(CARGO_MANIFEST_DIR) put the checkout path in the binary, shifting all code 8 bytes between checkouts and making parse_commit_car/trust 40% slower with no code change (fixed: sections now byte-identical)."}}
{"id":"int-4b2b44d347154fb6234e5429cc5fbccd","kind":"field_change","created_at":"2026-10-03T18:08:52.486963Z","actor":"dawn","issue_id":"hydrant-5ja","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"requestCrawl is routed in every mode now, with a router-level test"}}
{"id":"int-dfbe79a63408255f6faeaa452fcf1623","kind":"field_change","created_at":"2026-10-03T18:44:13.284193Z","actor":"dawn","issue_id":"hydrant-qoo","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"a PDS admitted via requestCrawl, or seeded from a relay already listed to the end once, gets one listRepos walk through the signal checker; queued with the source row, resumable, dropped on ban or removal"}}
{"id":"int-23d5c49f0e8952f97b833bd39c3bf83c","kind":"field_change","created_at":"2026-10-03T18:52:30.146109Z","actor":"dawn","issue_id":"hydrant-jti","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
{"id":"int-d5de2aa41c3755dfaf3dc40910fa0ba2","kind":"field_change","created_at":"2026-10-05T10:45:54.50661Z","actor":"dawn","issue_id":"hydrant-aym","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"committed: getLatestCommit + getBlocks fallback when the probe has no proof, plus the commit did check"}}
{"id":"int-767ed42a4884d9efdc4adc064abb8458","kind":"field_change","created_at":"2026-10-05T10:46:07.089503Z","actor":"dawn","issue_id":"hydrant-96w","extra":{"field":"status","new_value":"in_progress","old_value":"open"}}
{"id":"int-c31fc7f3d150c1cbd50df53183c5acb8","kind":"field_change","created_at":"2026-10-05T13:05:27.520219Z","actor":"dawn","issue_id":"hydrant-96w","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"committed b5ec633: chunked CarStream + FilteredCar keeping commit, wanted records and nodes that can reach a wanted range"}}
{"id":"int-ae1c263347fc8368e2f2d740c7a3e469","kind":"field_change","created_at":"2026-10-05T22:17:15.232815Z","actor":"dawn","issue_id":"hydrant-auw","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"66c1827 drops buffered commits at or below a fetched car's rev in the persist batch (failed-backfill leftovers, live-path leftovers and the tail after a poison entry), 6dc4fdd keeps the newer root when an older commit applies"}}
{"id":"int-f91df9cb1aad00b92a51d5e88d1fb0c5","kind":"field_change","created_at":"2026-10-05T22:17:15.749945Z","actor":"dawn","issue_id":"hydrant-513","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"b45547f moves every per-pds account count through Txn::put_repo/remove_repo from the row each write replaces, 9c1e0f5 counts from a row the txn already read, 9e9b2e4 (v13) recounts existing databases once"}}
{"id":"int-053bcc0c9b404af798134d66b89be4a3","kind":"field_change","created_at":"2026-10-05T22:17:16.267963Z","actor":"dawn","issue_id":"hydrant-unm","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"feab1af takes the NewRepo back when stage_repo_row finds the row made meanwhile"}}
{"id":"int-a47e6118f9f06398f0c16dda7b85d1e7","kind":"field_change","created_at":"2026-10-05T22:17:16.77684Z","actor":"dawn","issue_id":"hydrant-3x1","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"34335a7 parks an inactive repo with an Error, Desynchronized or Throttled status as Gone in transition_repo instead of flipping it active or refetching"}}
{"id":"int-476a15da7f071a3a133eb7cfd156a1cb","kind":"field_change","created_at":"2026-10-06T10:03:21.947305Z","actor":"dawn","issue_id":"hydrant-hma","extra":{"field":"status","new_value":"open","old_value":"in_progress"}}
{"id":"int-87823acaa8f6d3b9188197dd472548ed","kind":"field_change","created_at":"2026-10-06T10:03:21.947932Z","actor":"dawn","issue_id":"hydrant-hma","extra":{"field":"assignee","new_value":"","old_value":"dawn"}}
{"id":"int-cd9a854c3f74bd203abb9c980064e7a9","kind":"field_change","created_at":"2026-10-06T14:53:30.852174Z","actor":"dawn","issue_id":"hydrant-x41","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"5a0e701: a relay listing a repo inactive only queues a pds check, the pds's answer decides, a per-status marker on the metadata keeps the hourly pass from refetching. relay Deleted still deletes"}}
{"id":"int-4ce765eefd2a5d755d2873a6352478dd","kind":"field_change","created_at":"2026-10-06T14:53:31.512968Z","actor":"dawn","issue_id":"hydrant-1t7","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"03b3d7e: the retry count lives on RepoMetadata (v14, 426b9b7), survives requeues and resets on a successful store, backoff 2,4,8,16,32,60 min"}}
{"id":"int-f1c2c76c3423b16b1bcb20ad510d1f51","kind":"field_change","created_at":"2026-10-06T14:53:32.013296Z","actor":"dawn","issue_id":"hydrant-a5k","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"0f3956e: the backfill keeps its car rev as backfilled_rev, handle_commit and the drain skip commits at or below it"}}
{"id":"int-fd7233319918c806604d6dd62159edd6","kind":"field_change","created_at":"2026-10-06T14:53:32.521341Z","actor":"dawn","issue_id":"hydrant-bpu","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"5946a14 + 45396ea: track and _resync keep a metadata-less row and count it once"}}
{"id":"int-0ee57c11e372dd012a2cdfd428b38cff","kind":"field_change","created_at":"2026-10-06T14:53:33.017553Z","actor":"dawn","issue_id":"hydrant-7ry","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"bb20ecb: the audit records codec fns passed as values, the 13 boundaries it finds each get a test (505675b..64e9ee7 land them first)"}}
{"id":"int-b8c239343df4392a609aaf45a00b9511","kind":"field_change","created_at":"2026-10-06T14:53:33.516667Z","actor":"dawn","issue_id":"hydrant-sf4","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"0deafd4 streams the unfiltered car, 13f54e6 bounds whole-car backfills by HYDRANT_BACKFILL_MEMORY_BYTES (car x 6.3, oldest holder goes over). the rest of the peak is hydrant-fts"}}
{"id":"int-656b87460eb69ed8acb4571b51b488a3","kind":"field_change","created_at":"2026-10-06T14:53:34.012572Z","actor":"dawn","issue_id":"hydrant-5w3","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"6a36a28: positions are reserved in blocks of 1024 so cursors stops flushing, 100k stalls>=5ms 13 -> 8, total 177 -> 117 ms. the root cause is in fjall (filed separately)"}}
{"id":"int-1138acea0dd8e4cdff70ed54579bf83a","kind":"field_change","created_at":"2026-10-06T14:53:34.511659Z","actor":"dawn","issue_id":"hydrant-53z","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"a5ae9ea: alloc-jemalloc feature on hydrant-ffi, off by default, prefixed so it never takes over the embedder's malloc. linux rss not measured"}}
{"id":"int-369ab0759d03861bd42ab0cfbbc03f45","kind":"field_change","created_at":"2026-10-06T14:53:35.008926Z","actor":"dawn","issue_id":"hydrant-eib","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"already fixed on main: f3e0af3 makes an invalid since None on purpose, 6300c74 fixed the test to match"}}
{"id":"int-faa55d6178e3346c9427437f65d4e90d","kind":"field_change","created_at":"2026-10-06T14:53:35.525797Z","actor":"dawn","issue_id":"hydrant-580","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"already fixed on main: f5eb807 asserts the indexer's default tier equals trusted"}}
{"id":"int-a83a46274f1a82509b3d8938337e8cf2","kind":"field_change","created_at":"2026-10-06T14:53:36.021944Z","actor":"dawn","issue_id":"hydrant-mxh","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"884fb06: the nu harness probes the plc mirror and falls back to plc.directory"}}
{"id":"int-f49032e55960be77732320be27c976e4","kind":"field_change","created_at":"2026-10-06T14:53:36.512966Z","actor":"dawn","issue_id":"hydrant-uka","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"2458cb6: websocat always gets --no-async-stdio, the stream tests pass on darwin"}}
{"id":"int-b53e63f9815506145d501dc6425344ce","kind":"field_change","created_at":"2026-10-06T14:53:37.016983Z","actor":"dawn","issue_id":"hydrant-8zu","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"1159be8: gated on indexer_stream"}}
{"id":"int-ad500463cbf631b60bd9e10f23c7b8df","kind":"field_change","created_at":"2026-10-06T14:53:37.516063Z","actor":"dawn","issue_id":"hydrant-j2e","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"f73ee52: --version/-V and --help/-h answer, anything else exits 1"}}
{"id":"int-56cd170051c970557e11f8f44148952e","kind":"field_change","created_at":"2026-10-06T21:11:56.977744Z","actor":"dawn","issue_id":"hydrant-e5y","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"landed: 59e8358 made alloc-jemalloc the default with the tuned _rjem_malloc_conf baked in on linux (percpu_arena:percpu, background_thread, dirty_decay_ms:1000, muzzy_decay_ms:0, the sweep's winner), and a5ae9ea lets hydrant-ffi embedders opt into the same allocator."}}
{"id":"int-d67f2face35776521b8b485e3e15e607","kind":"field_change","created_at":"2026-10-06T22:37:01.626083Z","actor":"dawn","issue_id":"hydrant-2tg","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"already fixed on main in 45396ea, 42e7316 adds the bulk acceptance test"}}
{"id":"int-da9d4f9d62636785f3b3b0c0b049af4b","kind":"field_change","created_at":"2026-10-06T22:37:02.31112Z","actor":"dawn","issue_id":"hydrant-qin","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"14dc13c: a relay listing an inactive repo as active at the same rev asks the pds first"}}
{"id":"int-85b7370cdd3727038e106935d3122bb8","kind":"field_change","created_at":"2026-10-06T22:37:02.806112Z","actor":"dawn","issue_id":"hydrant-2xc","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"9467e44: /stats counts.history reads the history keyspace's approximate size, the durable counter is gone"}}
{"id":"int-bb617b9190ab6a46c76f996cdf2b1db8","kind":"field_change","created_at":"2026-10-06T22:37:03.304897Z","actor":"dawn","issue_id":"hydrant-aze","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"9467e44: same change as 2xc, retention and overwrites show up once compaction reaches them"}}
{"id":"int-c7f8c40ca90795fa092a9f626e725b9e","kind":"field_change","created_at":"2026-10-06T22:37:03.78505Z","actor":"dawn","issue_id":"hydrant-4r4","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"ec8b7fc: documented and tested ttl changes across restarts, no bug found"}}
{"id":"int-85bc6d6fbf0d712d3c22edbef259c667","kind":"field_change","created_at":"2026-10-06T22:37:04.28902Z","actor":"dawn","issue_id":"hydrant-idh","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"already on main since 322ef21 (route, test, nu coverage, docs)"}}
{"id":"int-0b74b7fb164f05176212ca2a429fe00c","kind":"field_change","created_at":"2026-10-06T22:37:04.788969Z","actor":"dawn","issue_id":"hydrant-0pc","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"b135642: history keys printed by /debug/iter parse back for /debug/get and bounds"}}
{"id":"int-72014bf1cde5f2151e2113ab1b827673","kind":"field_change","created_at":"2026-10-06T22:37:05.28402Z","actor":"dawn","issue_id":"hydrant-e4v","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"22c6719: relay seed rows are real #identity frames, the fixture escape hatch is gone"}}
{"id":"int-923632f203e5fb5978fb8ed53cb7cc99","kind":"field_change","created_at":"2026-10-06T22:37:05.785051Z","actor":"dawn","issue_id":"hydrant-5wx","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"eea1900: removed scan_collection_blocks, nothing called it"}}
{"id":"int-b221e102fbac2d943504fda21bc4ece0","kind":"field_change","created_at":"2026-10-06T22:37:06.286031Z","actor":"dawn","issue_id":"hydrant-6wl","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"dc315a7: default filter info,fjall=warn,lsm_tree=warn plus a backfill progress line"}}
{"id":"int-89e71495bb623de1e44b477cff4dfd31","kind":"field_change","created_at":"2026-10-06T22:37:06.771872Z","actor":"dawn","issue_id":"hydrant-2uq","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"6f47038: from_lookup test passes in relay mode, relay lib run added to AGENTS.md"}}
{"id":"int-7cb8ae5acb8283ab87abb83dbf9659b9","kind":"field_change","created_at":"2026-10-06T22:37:07.258988Z","actor":"dawn","issue_id":"hydrant-3kd","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"09af30e: feature_matrix --only takes a plain string"}}
{"id":"int-30089c1321542260b55685f26596d9e4","kind":"field_change","created_at":"2026-10-20T22:33:52.3575Z","actor":"dawn","issue_id":"hydrant-y3v5","extra":{"field":"status","new_value":"blocked","old_value":"in_progress"}}
{"id":"int-15e6d15880ce3f69784f0739e59d85d5","kind":"field_change","created_at":"2026-10-20T22:39:29.241533Z","actor":"dawn","issue_id":"hydrant-y3v5","extra":{"field":"status","new_value":"in_progress","old_value":"blocked"}}
{"id":"int-8e2cb6ef2fbd5ed4e13acc94e62ea676","kind":"field_change","created_at":"2026-10-20T23:16:30.795489Z","actor":"dawn","issue_id":"hydrant-4syj","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Use http-nu documented metadata set { merge {...} } closures; all 28 integration scripts pass. Direct eval verifies six repos, JSON content type, and 404 metadata; fixture also loads under Nix http-nu 0.9.0."}}
{"id":"int-2e433b5d7cdd7ed25420d10e679e3c6e","kind":"field_change","created_at":"2026-10-20T23:16:31.585311Z","actor":"dawn","issue_id":"hydrant-y3v5","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Updated reqwest to 0.13.5 and pinned upstream Jacquard 0.13.0 at 9046f282; native-only trust verified by regression against old graph and Linux/macOS graphs. Final cargo test: 809 passed/2 ignored; relay lib:313 passed; feature matrix13/13; integration suite28/28 with TMPDIR=/tmp and http-nu on PATH; public repo HTTPS/CAR integrity passed; Nix cargoDeps vendoring and format/whitespace checks pass. No application Rust source changes. wasm-only cert package remains in lockfile, never compiled into supported native builds."}}
{"id":"int-8c3892a65d65a366e1e82e5915730010","kind":"field_change","created_at":"2026-10-23T21:29:13.707722Z","actor":"dawn","issue_id":"hydrant-lk49.1","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"scaffold landed in 1abfd40"}}
{"id":"int-f84cda0f55db67dd0e690a11d363bc67","kind":"field_change","created_at":"2026-10-23T21:32:11.658362Z","actor":"dawn","issue_id":"hydrant-lk49.2","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"list + inspector built from configuration.md at build time"}}
{"id":"int-4ebfdd6c6e9261c0b8b12bfa2bc4f9f6","kind":"field_change","created_at":"2026-10-23T21:32:12.216274Z","actor":"dawn","issue_id":"hydrant-lk49.3","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"search.json (pages, headings, settings), README section pages and home banner blurbs from the index lists landed with the scaffold and the settings commit"}}
{"id":"int-6d6be50686d682da7001c7b9f15ada8b","kind":"field_change","created_at":"2026-10-23T23:05:27.143805Z","actor":"dawn","issue_id":"hydrant-lk49.4","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"pagefind fallback, 301s from the old urls, 404 page, bun build/deploy in the flake, phone pass all landed; dawn deploys"}}
{"id":"int-478104e0d82eb41ec87fe9934c1c68d3","kind":"field_change","created_at":"2026-10-24T00:14:33.282373Z","actor":"dawn","issue_id":"hydrant-yk3g","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"specs checked against the code: statuses, heads/history names, line refs, history vs now marked"}}
{"id":"int-3c0a11490c2508a321ca46e1ac751743","kind":"field_change","created_at":"2026-10-24T00:17:59.156963Z","actor":"dawn","issue_id":"hydrant-w8q","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"moot since v10: records is gone, heads is zstd at every level"}}
{"id":"int-bf72e445f0f39da1a2910201de95c19d","kind":"field_change","created_at":"2026-10-24T00:17:59.654208Z","actor":"dawn","issue_id":"hydrant-iis","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"closed per dawn: heads/history (the bulk) have no TRAIN since v10, so training no longer touches record bodies"}}
{"id":"int-dd74140050e398a467360372a79a774f","kind":"field_change","created_at":"2026-10-24T01:00:21.004032Z","actor":"dawn","issue_id":"hydrant-i6e2","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"9b9290f: record count deltas live on the Txn and are staged in commit_inner, finish() is gone"}}
{"id":"int-eb5339d0339ce1ed027394235ebd1c08","kind":"field_change","created_at":"2026-10-24T01:00:21.939585Z","actor":"dawn","issue_id":"hydrant-8pze","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"61637d1: IndexerDb.heads and head/head_prefix/head_range/stage_head"}}
{"id":"int-794ecd8c94a0366dc98e207d071ad36f","kind":"field_change","created_at":"2026-10-25T14:07:08.950606Z","actor":"dawn","issue_id":"hydrant-927","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
{"id":"int-cbdfcf204f69a7b8b9829646da74788a","kind":"field_change","created_at":"2026-10-25T16:26:44.250104Z","actor":"dawn","issue_id":"hydrant-j18r","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Closed"}}
