Changes touching this path
- the error shipper (ADR 0101): every minute it reads the wide-event lines out of each named container Docker json-file log and writes them into loot_metrics, migration 0004: wide_event for 30 days, error_issue with no identifier, wide_counter where a minute printed twice adds, and wide_log_position, under a new errors_writer role, since the beacon writer role may never read an issue. issue.ts fingerprints by source, type and the top three in-app frames and regresses a resolved issue on an occurrence from another release after the resolve; db.ts applies events, issues, counts and the position in one transaction, so a batch read twice counts once; alert.ts posts to Discord at most once an hour per issue with the type, culprit, route, release and count and never the message; shipper-main.ts finds containers by the name in config.v2.json and fails when it finds none. bundled to .output/errors.cjs; ci/test-main.sh provisions the role. pinned in errors-ship.test.ts, 15 tests, and errors.pg.test.ts, 5 over Postgres 18; red under named mutations, each restored, failed and passed: a regression on the same release (1 and 13, and 1 and 8 on pg), the route in the fingerprint (1 and 13), vendor frames fingerprinted (1 and 13), the title in an alert (1 and 13), no hourly limit (1 and 13, and 1 and 8), a partial entry kept (1 and 13), consumed past the last line (1 and 13), a re-read counted again (1 and 8), a minute replaced not added (1 and 8), the beacon reading issues (1 and 8), and no expiry (1 and 8, after the test counted the rows left, where it first passed). an end-to-end run of the built bundle over the built server output made two issues and two Discord posts with no message. site gate green at 1063 passed. owes a site deploy with the scripts change (vuxxwrys)
9fdc1ae3 · dbf3dbe6… - an error alert on Discord links to the error issue it names, https://loot.build/metrics/errors?issue=<fingerprint> (issueUrl), where it linked to /metrics; pinned by parsing the link with the errors view search and expecting that issue back, red under two named mutations, each restored. site gate green (snuvntzl)
Perf-Baseline: reset object_gets and graph_sorts moved with 587f93b, whose negotiation workload now builds the forge push a land makes (opywoozo); this change touches no Rust
1c91d965 · dbf3dbe6…diff - an open error issue whose last hour holds ten or more occurrences and five times its hourly rate over the day before is alerted as spiking, at most once an hour, marked in the statement that finds it; the first shipper run from 14:00 UTC claims the day in error_digest (migration 0009) and sends the day's digest, the counts beside the day before, new and open issues and the three busiest by type and culprit, never a message. pinned over Postgres 18 and the alert text, red under named mutations, each restored (stzwopuy)
Perf-Baseline: reset object_gets and graph_sorts moved with 587f93b, whose negotiation workload now builds the forge push a land makes (opywoozo); this change touches no Rust
ef41eb8c · dbf3dbe6…diff
Renames are not followed. loot's tree maps a path to an address, so a rename is a delete and an add. This list is the history of the name, not of the bytes.