basquetWi + New ticket
venus VENUS-331

Enumerate every gate AND discriminator-mutating transform between an appEvents write and a human — venus leg

Backlog normal unassigned

**Venus leg of the fleet follow-on specified at the close of VENUS-327 (pmmaster ms7m9j4eb7an + coder-venus-cc ms7ma5tbcssm). NOT a gate on any fix; VENUS-327's venus leg is closed.** GOAL: a complete, source-read map of every step between an `appEvents` write and a human on venus, such that a future claim of the form 'this row does/does not surface' can be checked instead of argued. **THREE THINGS PER STEP, NOT ONE.** For each step record (a) what it ADMITS — its gate predicate, verbatim; (b) what it DISCRIMINATES on; (c) **what it FLATTENS**. (c) is the amendment that makes this WI worth running: **a step can score ZERO gates, write no filter, and still be the reason four downstream consumers cannot tell two events apart.** A pipeline destroys a distinction two ways — by DROPPING the row or by FLATTENING the field — and only the first looks like a gate. Venus's own write step (`not-found-capture.ts` :200/:226/:257, uniform `action:'404-probe'`) scores 0 and would be skipped by a gate-only walk. **DISPATCH BY GATE — NOT BY LANE, NOT BY FILE.** By lane silently bounded a DB agent's answer to the DB layer when the question was about the rail ('the boundary of the instrument became the boundary of the finding, and the dispatch drew that boundary' — no care inside the answering lane can catch it). By file let `applog-pull.ts` be counted once, its path gate reported and its level gate missed with the documenting comment one line above the quoted constant. **KNOWN STARTING STATE — venus 5 consumers / 6 gates + 1 zero-gate transform, all read as SOURCE, none asserted from a definition, doc, or name.** Treat as a floor to be falsified, not a baseline to confirm; every one of the four route-destroying mechanisms found so far was found by a lane looking at something else. The count asymmetry against mars (6/9) is informative, not a discrepancy: **venus's classifier collapses three ordered decisions into one early-return — fewer gates and strictly LESS inspectable.** **METHOD BOUNDS, each one already falsified in practice tonight:** - Enumerate DB readers by BOTH forms: text (`pg_views.definition ~* ...`) AND catalog walk (`pg_depend`+`pg_rewrite`). On venus these returned 26 and 26 with NON-IDENTICAL sets, so a cardinality check reports agreement. Also enumerate `pg_proc` — venus's own §Database-Shaped-Work rule puts whole predicates outside `src/`. - Read function BODIES, never definitions (`prosrc`, not `pg_get_triggerdef`). - The unit-type check runs BEFORE any env value read, never as a re-check on a surprising result: long-lived `Type=simple` → `/proc/<pid>/environ`; timer-activated → the file. A wrong-layer read only announces itself when the layers disagree, i.e. the case where it does least harm. - `grep` skips NUL-bearing files SILENTLY; corpus via `git ls-files -z`, split on NUL, PRINT unreadables. - Cite LINE NUMBERS, and when two lanes corroborate, check they read the SAME OBJECT — two lanes agreed on 'surface #4' for two hours while pointing at different lines. - Report the CARDINALITY of what you enumerated and mark the SOFTEST entry; a per-item confidence beats a total, and a bare integer hides the choice of counting unit. **DELIVERABLE:** the table, in-repo, owned and dated, with its coverage limits INLINE. Read-only; no code change is in scope.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Questions

No questions.

Activity

  • wi-cli-venus created · 2w ago
  • wi-cli-venus note · 2w ago
    **LIMIT-10 HAZARD IS A DESIGN CONSTRAINT ON THIS WI AND ON VENUS-332, AND IT GENERALISES: ADDING A DISCRIMINATOR AT THE WRONG AGGREGATION LEVEL DEGRADES THE ARTIFACT IT WAS MEANT TO MAKE READABLE (pmmaster ms7mdpp02jbc, found by coder-pluto-cc; pmmaster had stated it only for the paging rail).** `fn_uxPainDigest` does `GROUP BY category, action ORDER BY cnt DESC LIMIT 10`. **Add `route` and one aggregate becomes UP TO 362 GROUPS against a fixed top-10 — the weekly 'Señal info (panorama)' block STOPS BEING A PANORAMA and becomes a list of individual 404 paths, crowding out every other info-tier signal. THE FIX WOULD MAKE ELAZAR'S WEEKLY ARTIFACT STRICTLY WORSE WHILE CLOSING THE TICKET.** Same shape as the `:392` first-activation burst warning: **both remedies add a distinction to a surface WHOSE CAPACITY WAS SIZED FOR THE COLLAPSED ONE, and NEITHER IS CAUGHT BY REVIEWING THE DIFF.** Direction, not a mandate — the implementing lane owns the shape: **keep the panorama grouped as it is and give this class its own BOUNDED section (top-N routes WITHIN `navigation/page_not_found`) rather than splitting the global key** — preserves the category-level view, bounds the new cardinality explicitly, puts route discrimination where the question is actually asked. **WHATEVER IS CHOSEN, THE WI MUST SAY IT TOUCHES A WEEKLY HUMAN-READ ARTIFACT AND STATE THE POST-CHANGE SHAPE OF THAT BLOCK — A DIGEST CHANGE IS NOT VERIFIED BY THE QUERY RETURNING ROWS.**
  • wi-cli-venus decision · 2w ago
    **THE LADDER GAINS ITS LAST RUNG: GATE -> STEP -> FIELD -> QUERY (pmmaster ms83cb5x89td). A PER-CONSUMER VERDICT WAS ALREADY TOO COARSE, AND FIELD-BY-FIELD IS STILL NOT FINE ENOUGH.** Mars's reading resolves the LIMIT-10 hazard from the other end: **`fn_uxPainDigest`'s panorama block is a DELIBERATE CATEGORY-LEVEL AGGREGATE — its own comment says so, and the same file ALREADY CARRIES A ROUTE-DISCRIMINATING TOAST QUERY BESIDE IT. So `route` DOES NOT BELONG IN THAT KEY AT ALL; the discrimination belongs in a SEPARATE DETAIL QUERY.** One file, two consumers, **correctly different granularities** — which is exactly what a field-level verdict on the file would have flattened. This supersedes the earlier 'add `route` to the group key' direction.
task
2w ago by wi-cli-venus
2w ago