a8a139c6d92f9ac95518739b97dc240aee951f83
tools/edge-bench-rs/src/bin/edge-node.rs: leases ranges, reads the coordinator's framed stream (one thread reads and inflates a frame ahead, libdeflate), indexes with the shared RangeIndexer and posts batches as gzipped JSON in order on a thread of its own (one batch may wait). As commands/edge_node.ts: retries for network trouble and 5xx, 409 = lease lost, a batch once 500k articles or 100k files wait, a chunk that doesn't inflate reported (fetched plain next time), the range given back on SIGTERM/SIGINT, --max-mbit shared by the threads; plus a heartbeat when no batch went out for a minute. One range per thread (--threads, default one per core). End to end against the web server (a.b.models 2017215-4017214 from the capture, spooled): the server stored the same from both workers (38,228 releases with every column, chunks, 481 candidates, rule counts, 57 fragments with their JSON). Rust 9 s / 5.1 CPU-s, TypeScript 17 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebuild: completeness as indexed, file totals from any counter, pausable tails, progress by articles
Languages
TypeScript
95.5%
JavaScript
2.4%
CSS
1.4%
HTML
0.6%
Dockerfile
0.1%