Measure SCANNER_PROBE_RE for pre-existing over-match against real routes (not admitted-population gate)
Authorized 2026-07-30 by pmmaster (ms7ju3ll89dg): MARS-585's gate (0 canaries/app-routes swallowed) only proved no NEW over-match introduced by blocks P/Q against still-visible paths + correctly evidenced allowlist lag. It cannot detect PRE-EXISTING over-match, because on mars a matched probe writes no row (MARS-346), so anything already swallowed is absent from the admitted-404 population by construction. Gap population: real user traffic hitting non-declared routes (stale links, mistyped outbound-email paths, signed links against a wrong base) — pluto already found one instance (/n/solicitar-acceso/completar malformed base). This is the invisible-defect direction the taxonomy exists to prevent. MEASUREMENT ONLY, in-scope under the freeze (no code change): evaluate mars's route manifest + known real-traffic paths directly against SCANNER_PROBE_RE/WELLKNOWN_BENIGN_RE/ICON_PROBE_RE, looking for any real/declared path that the allowlist currently swallows. Report as its own coverage statement, do not fold into closed MARS-585/586.
Questions
Activity
-
pmmaster requirement added (2026-07-30, ms7jyjaahi2j): mars's leg must be derived-from-tree (both a stated count AND the derivation method), same standard as pluto/venus. Remedy for the whole class: don't hand-reconcile counts into a comment (goes stale on next route added) — replace any quoted route-count claim (including the existing 70-route fixture comment) with a fixture that ENUMERATES THE TREE AT TEST TIME and asserts 0 pattern collisions, with enumeration rules (test routes excluded, route groups stripped, dynamic segments->x) stated IN the fixture so scope travels with the assertion. Add this to coder-mars-cc's MARS-587 scope.
-
SHIPPED 771a56e v2.59.25, test-only. Result: 0 declared routes swallowed (73 expanded), 0 real-undeclared paths swallowed (incl pluto's /n/ class). ONE real over-match: ICON_PROBE_RE drops all 10 apple-touch-icon files mars actually ships (bare+precomposed x120/152/167/180) with persist:false — 4 of 10 are emitted in layout.tsx metadata on every page. Not a user break (icons serve fine today) but a detection blind spot: if a deploy stopped serving them, the rail is structurally incapable of noticing (zero row, zero page). NOT fixed — narrowing ICON_PROBE_RE is a classifier change, out of scope under freeze, needs its own adjudication (possibly fleet-shaped: 'don't match what you ship'). Pinned by name in test ('KNOWN OVER-MATCH (MARS-587)...') asserting persist:false on exactly those 10, not an endorsement. Fixture replaced per scope addition: enumerateRouteTemplates() walks src/app at test time (rules stated in-fixture), transcribed 70-list deleted (kept-alongside would reinstate the defect), anti-vacuous guards added. 219 passed, tsc clean. Awaiting live-version PTD confirm.
-
pmmaster accepted, MARS-587 derived the fleet rule: a classifier must never suppress a URL the app itself emits/ships (discriminator = advertised, not filename shape) — cross-validated against pluto's opposite case (favicon.png correctly benign because pluto declares no favicon.png anywhere). pluto/venus now ordered to check their own benign/icon patterns against their own shipped public/ + emitted metadata. Two method rules made fleet-binding: extract patterns FROM SOURCE never retyped; anti-vacuous floor guards mandatory on any test-time enumeration. PTD still owed on 771a56e — requesting from coder-mars-cc.
-
PTD PASS on 771a56e (v2.59.25, dpl_5tfpFnApHa6pA3mQUZJzFjMFXzBh, READY, correct alias). Mars fully clear: MARS-585/586-fixture/587 all shipped+live-confirmed+reported. 1854121 PTD not separately owed (superseded by 454d30b within same burst, already confirmed). Remaining open, both correctly fleet-gated not mars-blocking: MARS-586 decode half, ICON_PROBE_RE narrowing.
-
Correction (pmmaster ms7k5zsznsch): ICON_PROBE_RE narrowing (and MARS-586's decode) are gated on FLEET-DESIGN ADJUDICATION, not the applog-listen freeze — not-found-classify.ts is app code through Vercel, touches no rail process, freeze only covers applog-listen restarts. Citing 'freeze' as the blocker was wrong and would survive a thaw unnoticed. Both items remain blocked pending one-fleet-design-across-three-rails, unrelated to VENUS-324's restart freeze.
-
IMPORTANT correction surfaced via pmmaster's VENUS-324 review (ms7kctkyl5x0 item 3): MARS-587's own enumeration fixture (771a56e) reintroduced the exact defect it was built to fix, on the first attempt — corpus narrower than its prose claimed: metadata-generated routes (manifest.ts->/manifest.webmanifest, favicon.ico) missing from the route walk, public/ walked top-level only (not recursive), all catch-alls excluded instead of just the 404 sink. Blocked by audit-mars-ca, fixed in ebdf35f. Anti-vacuous floors only prove the walk returned SOMETHING, never EVERYTHING — that's the gap. Need to confirm ebdf35f shipped/PTD'd; checking with coder-mars-cc.
-
CLOSED. ebdf35f, v2.59.26, corpus gap fixed (metadata routes added, public/ walked recursively, only 404-sink catch-all excluded, [id]/[category] fill widened). PTD PASS live 2.59.26, dpl_CFb5JG7v8a6b1VzPMF33Mea5ejW7, 229 tests, tsc clean. BLOCK:771a56e from audit-mars-ca discharged. Measurement stands: 10/15 shipped public/ files swallowed by ICON_PROBE_RE (4 advertised in layout.tsx metadata.icons.apple), 0 declared routes swallowed, 0 real-undeclared paths swallowed. Cross-validated independently by pluto+venus, same shape (10 swallowed, 1 advertised), no copying. Severity = detection loss (info tier, no row, no page on regression), not breakage — icons serve fine today. Remediation NOT started, correctly not mars-local: ICON_PROBE_RE narrowing + MARS-586 decode both await one fleet design across three rails.
-
coder-mars-cc acfa5c0 (v2.59.27, comment-only): MARS-346's no-consumer justification was FALSE — ux-pain-digest.ts:118-126 reads level='info' unrestricted by action, so info/security/404 rows ARE queryable. Conclusion held anyway: 0 rows in trailing 7d (recent floor ~14), 224 all-time — no signal ever lost, on low volume not absence of reader. Comment struck with measurement inline. Not re-tiered (promoting to warn without noise-floor measurement is not the remedy, per pmmaster ruling). PTD pending deploy.
-
ICON_PROBE_RE narrowing design UNBLOCKED fleet-wide (pmmaster, all 3 rails effect-measured, equivalent for 3 different reasons: mars writes nothing, venus writes nothing, pluto writes to a reader that can't resolve the regression). coder-mars-cc drafts the design; pluto/venus review. Mars leg PARTIAL-HELD: coder-mars-cc's zero used detail.requestedPath only, missed the writer's real route column at :227 — pmmaster ruling requires a CONTROLLED zero (ILIKE across both fields incl a known-matching positive control) before the mars mechanism (EXIST vs RESOLVABLE) is decided. Awaiting db-mars-cc's controlled re-measurement.
-
ICON_PROBE_RE design v1 APPROVED FOR REVIEW by pmmaster (pluto/venus reviewing). Fleet rule ratified (§0): subtract an explicit SET before any shape regex runs — a set answers membership and diffs against source-of-truth, a regex can't; ICON_PROBE_RE itself stays unchanged (handles the convention-driven iOS-request case a set can't). Mars implementation STILL HELD on two gates: (1) db-mars-cc's field-set control (route vs detail.requestedPath) proving mars's 'one reader' claim, now escalated fleet-wide — mars pushed compute to Postgres since mig083, so db-side readers (pg_proc/pg_views/pg_matviews) are invisible to src/ grep the same way venus's fn_uxPainDigest was; mars's single-reader claim is UNVERIFIED pending db-mars-cc's enumeration+control. (2) §5 noise-floor: 24h warn volume + ALERT_ERROR_THRESHOLD arithmetic before implementing, even though expected-zero reasoning is sound. Venus leg fully out of scope (proxy.ts matcher, separate WI). Pluto's digest group-key fix stays IN this WI (bounded blast radius, reviewable, own commit).
-
Mars all 4 review checks run (two-axis pins, whole-manifest read, layout-file recount, second-suppression-surface): 3 measured-empty (pins hold on 2-axis, manifest has start_url but no shortcuts/screenshots, 3 layout.tsx files not 1 - none advertise extra assets, zero <link> tags anywhere). 4th NOT closeable from repo: mars's alert rail is a DB-side trigger (mig012/MARS-173) + out-of-repo scrp-applog-mars emitter, not a scripts/ file like venus's applog-pull.ts - coder-mars-cc correctly refused to declare 'none found' and dispatched db-mars-cc to read the live trigger predicate (does it test path at all, and does it independently suppress apple-touch-icon/icon/sw.js paths - would cancel the detection benefit even if the row is written). Also flagged: the -A evolutiva-internal-probe/mars-ptd UA-suppression claim used all night has never been read at source either, same dispatch. Pluto remains sole implementation gate.
-
MARS v2 SHIPPED bc90795 v2.59.29, with a self-caught deviation from reviewed design: db-mars-cc's mig012 trigger read landed between approval and push and showed the reviewed 'fall-through to generic warn/navigation' shape would cross the alert trigger's WHEN clause (level=warn AND category<>toast admits it) and could escalate to error+alert on same-origin referer — a paging regression none of the 3-rail review could see since the predicate is DB-side. Shipped instead: explicit {level:info, category:navigation, alert:false}, admitted by no arm of the trigger, retained + read by ux-pain-digest.ts (mars's one info-tier consumer). Mars's actual detection-claim wording (neither venus's nor pluto's neighbor-predicate applies): retained at info, not admitted by mig012 alert trigger, surfaces weekly via ux-pain-digest. Also corrected: only 1/8 it.each pins inverted not 3 (2 apple-touch-icon variants are shipped-but-unadvertised, correctly stay green — ship≠advertise); drift guard widened+mutation-falsified; NUL sweep corrected form = 46 not 0 whitespace-split files (50 NUL-bearing tracked, 0 source, conclusion held, instrument didn't). STILL OPEN: -A evolutiva-internal-probe/mars-ptd UA-suppression unread — lives in venus-hosted daemon outside both db-mars-cc's and coder-mars-cc's boundary. PTD pending on bc90795.
-
PTD PASS bc90795 v2.59.29 live (dpl_5MJ3xyQ2w7EXViFW21pnktXHHoeS READY, alias attached). Final measured wording: action='404' shared across ALL retained mars 404s (not-found-log.ts:222-223), digest GROUP BY category,action (ux-pain-digest.ts:135) — advertised-asset 404s land in one undifferentiated navigation/404 group, route not in key. Corrected claim is RETENTION only, not detection: retained at info/navigation/404, admitted by no mig012 trigger arm, not dropped by security/access category filter (mars inherits venus's SUPPRESSED_CATEGORIES default unconditionally, no override set) — but NOT resolvable to a specific asset within the digest as shipped. Same limitation independently reached on all 3 rails via 3 different mechanisms. UA-suppression (-A evolutiva-internal-probe/mars-ptd) CLOSED: confirmed real+consumer-side via source read of scripts/lib/classify.ts on this host (the 'venus daemon unreadable' claim held by 3 lanes for 2 hours was false — plain tracked file, no restart needed). Proposed-not-shipped: a distinct action value (404-advertised-asset) would make the digest group resolvable, but action='404' is a live query surface (db-mars-cc's own analysis, mig012 NOTIFY signature) — re-partitioning it needs the full consumer-enumeration pmmaster mandated, not a 1-line diff. MARS-587 measurement + shipped mitigation complete.
-
Shipped bc90795 v2.59.29 (PTD PASS, live). ICON_PROBE_RE over-match measurement + retention mitigation complete. Delivers RETENTION not DETECTION: advertised-asset 404s retained at info/navigation/action=404, admitted by no mig012 trigger arm, not dropped by rail category filter; enters weekly ux-pain-digest navigation/404 group but is not resolvable to a specific asset within it (route not in group key). Follow-on (not this WI): consumer-enumeration WI gating any future action-string split; pluto's implementation still in flight on the shared ICON_PROBE_RE design.
-
Post-close finding (coder-mars-cc): corrected consumer count is 6, not 5 — missed second producer applog-pull@mars (DIGEST_LEVELS=warn, timer-driven) which is a 3rd independent reason bc90795's info row isn't paged. Also found mars's OWN collapse-to-one-signature defect (venus-class) at applog-pull.ts:391: COALESCE lacks route, all 404s collapse to signature '404' on that path (mig-012 trigger DOES include route, 654 distinct sigs/825 rows — the two mechanisms diverge). Retention-not-detection closure wording stands; bc90795 unaffected. Follow-on consumer-enumeration WI grows by one confirmed defect.
-
Per pmmaster ruling: bc90795 is retained-and-not-paged for THREE independent reasons, record which was which. (1) Established at push time: explicit {level:info,alert:false} admitted by no arm of mig-012's 3-armed trigger WHEN. (2) Found after push: applog-listen@mars's SUPPRESSED_CATEGORIES fallback (security,access) — mars sets no override, category=navigation not in that set so this reason doesn't independently apply to navigation/404, superseded by (3). (3) Found after push: applog-pull@mars's DIGEST_LEVELS=warn (live env) — pull path admits warn only, info excluded. Corrected enumeration = 6 consumers (classifier, write, mig-012 trigger, applog-listen, applog-pull, ux-pain-digest); applog-pull is a SECOND PRODUCER, previously missed. Retention-not-detection closure wording unchanged; bc90795 unaffected.
-
Final count (pmmaster): mars closed at 6 consumers / 9 gates (classifier 3, write 0, trigger WHEN 1, listen 2, pull 2, digest 1). not-found-log.ts:222-223 (the action writer) is 0 gates but a discriminator-mutating transform — flattens route out of action:'404' for every consumer downstream; gate-only enumeration misses it. bc90795 unaffected, no code change.
-
Addendum: coder-mars-cc shipped a second SHA, 2667aaa v2.59.30 (PTD PASS, live) — pm/env-surface-unreadable.md now records venus/scripts/ as a mars production surface with NO mars-side read instrument (mars's alert rail runs applog-pull.ts from the venus checkout under tsx, deploys on save, no build/restart/push — measured today: an edit went live on 3 rails ~48min after write, incl an 8m54s window where the running file existed in no commit at all). No mars-side action available; owner is coder-venus-cc by fleet ruling, fix already in venus's lane. Not escalating to Elazar — tracked, already being handled fleet-side. Mars health confirmed clean tonight: pull rail emitted 21:10:48Z (freshest positive control fleet-wide), db-mars-cc control run confirms zero warn/error/fatal past watermark — silence is correct, not a broken rail.
-
REOPENED per pmmaster (ms84h3cyi9vk), narrowly on GATE COUNT only. Both mars's 6/11 and pluto's re-derivation counted terminals against classify.ts:110-146 in commit 36cd502^ (1059 lines) — production is e874465 (07-14, 732 lines); classify.ts does not exist in production at all, 4 of 11 gates were cited from a module created today at 13:01:40Z. Consumer/write-path findings (6 consumers) are mars-repo reads, UNAFFECTED, stay closed. Restated deliverable: gate figure must be per-PLANE and per-BUILD, derived against git log -1 --before=<ExecMainStartTimestamp> against the LISTEN plane's actual running build — not tonight, not a fourth recount under fatigue. Surviving finding: 'if (e.level==="warn" && !WARN_ENABLED) return;' logs NOTHING — makes warn-suppression silence 3-way ambiguous (never-arrived / paged-ok / silently-dropped) wherever APPLOG_WARN=0. Mars doesn't set it so inert by CONFIGURATION not absent by construction — open question is whether this branch exists at e874465.
-
Gate figure CLOSED at 5 (listen plane, production build e874465, 732 lines) — reconciled with pluto's 4 (production-logged set) + genuine remainder :427, not averaged. Prior 9/11/6 VOID (11 was worst — cited from scripts/lib/classify.ts, a module with no production existence). Consumer count (6) and every write-path finding UNAFFECTED, stand as closed. Surviving fleet finding: :427 is a suppression that logs NOTHING — warn-row silence is 3-way ambiguous (never-arrived/paged-ok/silently-dropped) wherever APPLOG_WARN=0; mars doesn't set it, so inert by CONFIGURATION not absent by construction — must not be inherited silently by future work. bc90795 v2.59.29 unaffected throughout. Nothing started/restarted/written tonight on any lane. Thread closed per pmmaster ms84hjod6rds.