Changes touching this path
- the site server records every request as one wide event and prints it as one JSON line (ADR 0101): lib/wide-event.ts holds the rules the browser will share, the declared field catalogue and its reductions, the error capture that scrubs a message and drops it on /private and /api/private, and the tail sampler that keeps every error, every request of 2 s or more and every signed-in surface and 5 percent of the rest at a recorded sample_rate; server/wide-event.ts is the per-request recorder, which also prints exact per-minute counts. start.ts runs every request under it first, timing.ts spans land on it, withPrivateSession and withSession record their caught error on it where they printed it raw with console.error, and router.tsx reports the loader and render errors the router answers 500 without throwing, seen live as a 500 event with a null error before that seam. no identity yet. ADR 0101 section 6, the glossary and ylmnvrtp now name the browser as the forge caller, since the site server reads the forge database directly. pinned in test/wide-event.test.ts, 21 tests; red under named mutations, each restored, failed and passed of 20: the private message kept (1 and 19), a raw path kept (2 and 18), an undeclared key kept (1 and 19), an error sampled like the rest (5 and 15), the quote scrub gone (2 and 18), only kept events counted (1 and 19), a throw not recorded (1 and 19), our own traffic not marked internal (1 and 19), spans not forwarded (1 and 19), the owner seam printing raw (1 and 19), the middleware off (1 and 19), and of 21: the router seam off (1 and 20). site gate green at 1049 passed. owes a site deploy (oqqwzwkp)
bb784ff1 · dbf3dbe6… - an uppercase private or forge path no longer passes the path scrubs: the site ROUTE_SHAPE_RULES and the scripts repo nginx PATH_RULES match the /k and /private prefix and the owner key hex in any case, and only those literals are written for either case, so a remainder with capitals still keeps nothing where an i flag or a path lowercased first would have kept it; dropsMessage and isSignedInSurface ask the shape in any case and the message scrub reads a site path in any case; the edge leak checks read the same prefixes, and the scripts test reads metrics-path.ts from the loot checkout and compares it with PATH_RULES, so an edit on either side shows there. a later manifest row with no grantor does not renew a row with one, so a file grant to its own name no longer replaces an expired row from a peer, which reopened the path locally and refused the maroon of that peer. CONTEXT.md gives the renewal the condition it lacked and the new one, and its head declaration entry names loot fetch --deepen all on a shallow position as the ADR 0098 amendment says; the skipped_unheld doc says a burned object lands there too. pinned: red before the change (site 3 failed and 31 passed, scripts 3 and 85, rust 0 passed and 2 failed) and under named mutations, each restored: site prefix words lowercase only, owner hex lowercase only, an i flag over the old rules and the path lowercased before matching (3 failed and 31 passed each), dropsMessage, isSignedInSurface or the message pattern case-sensitive (1 and 33 each); scripts prefix words lowercase only (3 and 85), owner hex lowercase only in the rules (2 and 86), either leak check lowercase only (2 and 86 each), nginx case-insensitive map with an i flag (4 and 84), PATH_RULES drifting (2 and 86) and metrics-path.ts drifting (1 and 87); rust no grantor rule (2 failed and 3 passed over the pins and the ylrtootl pins) and no renewal without a grantor at all (1 and 4). site gate green at 1071 passed, scripts suite 391 passed against this lane, cargo test green, 4972 passed over 144 test result lines with 15 ignored. owes a site deploy, and an edge redeploy through the site setup script once the scripts change, left uncommitted in that repo, is committed (wxuqkosw)
d00b3f57 · 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.