← back to Stack Map Viewer
auto-data-snapshot: 2026-09-22T13:54:25 (1 data files) — 5x/REPORT.md
4a01f55f40879b00bcdce4a5cc9912ccfa440288 · 2026-09-22 13:54:37 -0700 · auto-commit-fleet
Files touched
Diff
commit 4a01f55f40879b00bcdce4a5cc9912ccfa440288
Author: auto-commit-fleet <steve@designerwallcoverings.com>
Date: Tue Sep 22 13:54:37 2026 -0700
auto-data-snapshot: 2026-09-22T13:54:25 (1 data files) — 5x/REPORT.md
---
5x/REPORT.md | 141 ++++++++++++++++++++++++++++++-----------------------------
1 file changed, 71 insertions(+), 70 deletions(-)
diff --git a/5x/REPORT.md b/5x/REPORT.md
index 537a4ed..557a8b1 100644
--- a/5x/REPORT.md
+++ b/5x/REPORT.md
@@ -1,77 +1,78 @@
# /5x REPORT — stack-map-viewer (:9768)
Run: 2026-09-22 · target http://127.0.0.1:9768/ (basic-auth admin/DW2024!)
-Scope: verify the "date last run on all drill cards" feature (shipped 3dcba1b) six ways,
-fix whatever the suite catches, re-verify, Cody-gate.
-
-## Sweep-by-sweep
-
-| sweep | six-way (M1-M3 + B4-B6) | click-through | caught | fixed | commit |
-|-------|-------------------------|---------------|--------|-------|--------|
-| 1 | **6/7 PASS** — `#mapsvg` renders, `Stack Interconnection Map` present, `.dnode` click opens drill drawer, **0 console errors** in Chrome/Safari/Firefox | 28 pass / **7 FAIL** / 11 skip | 7 category chips time out on `locator.click` | drawer dismiss (Esc + click-outside) | rode into `71dc524`* |
-| 2 (targeted re-verify) | fix behaviors 4/4 PASS, **0 console errors** | structural (see below) | — | — | — |
-
-\* See "Concurrency note" — my working-tree edit was swept into a peer's `git add -A` commit.
-
-## Root cause of the 7 click-through FAILs (PROVEN, not asserted)
-
-The drill drawer is `position:fixed; width:440px; height:100%` sliding to `right:0` when
-`.open`, and was dismissable **only** via the ✕ (index.html close handler). Once open it
-permanently covers the rightmost 440px, full height. The category chips in `#folders`
-wrap across the full width, so every chip whose center lands in that right column becomes
-un-clickable underneath the drawer.
-
-Deterministic proof (Playwright geometry probe, 1280×800 viewport): with the drawer open
-(rect x=840→1280), **10 of 31 chips** have `document.elementFromPoint(center)` returning
-the drawer, not the chip — including pricing/cost, health/fleet guards, email/comms,
-special projects, viewers/dashboards — which is the click-through's FAIL set.
-
-Why no app JS flips the generic click-through green: Playwright's `locator.click` runs an
-actionability check ("receives events") **before** dispatching, so a covered chip is never
-clicked and no outside-click handler ever sees the event. A sequential auto-clicker that
-never dismisses the modal between clicks structurally cannot reach a control under a
-persistent drawer. That is a **test-harness limitation**, not an app defect — and it must
-not be papered into a false green (per the TK-11431 measurement-honesty rules).
-
-## Fix shipped
-
-`index.html` — extracted `closeDrawer()` and added two dismissals:
-- **Esc** closes an open drawer.
-- **click outside** the drawer (capture-phase `mousedown`, excluding `#drawer`) closes it,
- so drilling deeper inside the card and the ✕ still work.
-
-This is the genuine remedy for real users: a fast way to dismiss a drill card and reach a
-chip beneath it. Verified live (Chrome, 0 console errors):
-- TEST1 Esc-close → PASS
-- TEST2 outside-click-close → PASS
-- TEST3 chip-click still OPENS the drawer → PASS (fix didn't break opening)
-- TEST4 drilling deeper inside the drawer keeps it open → PASS
-
-## Feature regression check (peer also edited server.js)
-
-All four drill types still return honest `LAST RUN`, and the never-recorded case is intact:
-- officer `vp-engineering` → "today · via ledger TK-12027" ✅
-- agent `contrarian` → "4 days ago · via ticket" ✅
-- skill `color` → "driven by cron … — no per-run timestamp recorded" ✅
-- project `stack-map-viewer` → "git commit today · 71dc524" ✅
-- idle agent `mcp-expert` → "never recorded — no ticket or ledger activity" ✅ (no fabrication)
+Feature under test: "date last run on all drill cards" (officers, agents, skills, projects),
+sourced ONLY from true execution signals — never a fabricated dir/file mtime (Steve TK-11431).
+Replayable probe: `node 5x/verify.mjs` (12/12 PASS).
+
+## Sweep ledger
+
+| sweep | six-way core | click-through | caught | fixed | commit |
+|-------|--------------|---------------|--------|-------|--------|
+| 1 | **6/7 PASS**, 0 console errors (Chrome/Safari/Firefox) | 28 pass / 7 FAIL | open drawer buries right-column chips | Esc + outside-click dismiss | (swept into peer `71dc524`) |
+| 2 (Cody REVISE) | 12/12 PASS (`5x/verify.mjs`) | resolved via push-layout | Cody findings #1 & #2 | persistent panel + push-layout + heartbeat honesty | **`09c69a9`** (TK-12030) |
+
+## Cody gate — verdict history
+
+**Sweep 1 → REVISE.** Cody wrote his own Playwright probes (did not reuse mine) and found:
+1. **[HIGH] Dismiss too aggressive** — closing on ANY outside click killed the "keep a 5W card
+ open while flipping Map→Tree→Scrapers / hitting Reset layout" workflow.
+2. **[HIGH] The honesty feature shipped its own mtime lie** — `server.js` heartbeat tier used
+ raw `mtimeP('data/latest.json')` labeled "rewritten every run"; git/rsync/tar rewrite mtime
+ independent of a real run. Same lie class the code comment two lines up disclaims.
+3. **[MED] No replayable artifacts** in `5x/` — every number was prose self-attestation.
+4. **[LOW] Drag-while-open non-collision was accidental** (relied on `preventDefault` suppressing
+ the compatibility mousedown).
+5. **[LOW] a11y/keyboard-tab occlusion** not verified either way.
+
+## Sweep-2 fixes (commit 09c69a9)
+
+- **#1 → persistent panel.** Drawer now dismisses via **✕ + Esc only** (removed the outside-click
+ handler). Reachability of chips underneath is handled by **push-layout**: `body.drawer-open`
+ shifts `#folders` right-padding 456px (≥900px viewports) so **no chip is ever occluded**.
+ Verified: view-switch keeps drawer open (C), Reset-layout keeps it open (D).
+- **#2 → heartbeat honesty.** `server.js` now parses `data/latest.json` CONTENT for a true
+ timestamp field (`ts|timestamp|generated_at|checked_at|run_at|last_run|…`) and shows
+ `heartbeat … from "ts" in data/latest.json`. Only when NO field exists does it fall back to
+ mtime, explicitly labeled `⚠ mtime-only, UNVERIFIED — no timestamp field inside the heartbeat
+ (a git/rsync touch would move this)`. Verified live: `fleet-health-rollup` → in-content `ts`;
+ `creds-guard-canary`/`approval-invisibility-canary`/… → UNVERIFIED flag.
+- **#3 → artifact saved.** `5x/verify.mjs` is a committed, replayable 12-assertion probe.
+- **#4 → moot.** The `mousedown` handler is gone entirely, so nothing can interfere with drag.
+ Verified drag works drawer-closed AND drawer-open (dispatched PointerEvents — the map uses
+ `pointerdown/move/up`, not mouse events; that mismatch caused a *false* FAIL in the first probe).
+- **#5 → improved at the source.** Push-layout means chips are no longer occluded at all, so a
+ keyboard-tab user isn't tabbing to covered chips. (Full a11y audit still out of scope.)
+
+## `5x/verify.mjs` result (12/12 PASS)
+
+```
+A push-layout: 0 chips covered while open
+B formerly-covered chip clickable+opens
+C persistent: view-switch keeps drawer open
+D persistent: Reset-layout keeps drawer open
+E Esc closes F ✕ closes
+G node-drag moves + drawer persists (dispatched pointer events)
+H1 officer LAST RUN via signal H2 heartbeat uses in-content ts
+H3 no-ts heartbeat flagged UNVERIFIED H4 idle agent never-recorded
+I zero console errors
+```
+
+## LAST RUN honesty — final, all tiers
+
+- officer/agent → newest ticket-event or reversible-ledger entry
+- skill (vendor) → newest staging-table scrape date
+- skill (heartbeat) → **in-content `ts` field**, else **mtime flagged UNVERIFIED** (fixed)
+- skill (cron) → driver attribution, "no per-run timestamp recorded"
+- skill (on-demand) → "no local run record kept"
+- project → newest git commit
+- nothing → **"never recorded"** (no fabrication)
## Concurrency note
-Agent `stack-refactor-rebuild` (ticket TK-12015) is actively refactoring this repo's
-scrapers view. Between my edit and my commit, its `git add -A && commit` swept my
-uncommitted drawer edit into commit `71dc524`. The code landed correctly (verified in
-`git show HEAD:index.html`) but under the peer's message/authorship. Coordinated via a2a
-DM + a TK-12015 comment so the fix isn't clobbered by a later stale-buffer write.
-
-## Final state
-
-- Core six-way (the actual deliverable): **CLEAN** across three engines, 0 console errors.
-- Real defect the suite surfaced (drawer buries right-column chips): **FIXED + verified**.
-- Generic click-through covered-chip timeouts: structural test-harness artifact, honestly
- reported, NOT faked green. Optional deeper fix = push page content left 440px when the
- drawer is open (larger change, left to the TK-12015 owner mid-refactor).
-
-## Cody gate
+Agent `stack-refactor-rebuild` (TK-12015) refactored this repo's scrapers view concurrently
+(commits `fa2db10`→`278a01e`→`71dc524`→`dc60ca8`). Its `git add -A` swept my sweep-1 edit into
+`71dc524`; sweep-2 I staged only my own hunks and committed them cleanly as `09c69a9`.
+Coordinated via a2a DM + TK-12015 comment.
-(pending — contrarian red-team appended below)
+## Status: REVISE fixes applied + verified 12/12 → re-sent to Cody for SHIP-IT sign-off.
← 09c69a9 /5x REVISE fixes (TK-12030): persistent drawer (Esc+X only)
·
back to Stack Map Viewer
·
5x REPORT: Cody SHIP-IT verdict + scope occlusion claim to d 90346bf →