test(linkedin-studio): M0-16 — lint: EXPECT_REFS=26 + no-bare-path + no-pin + SC2 dry-run (R1) + drop 5 ANALYTICS_ROOT pins it caught

This commit is contained in:
Kjell Tore Guttormsen 2026-06-18 13:11:50 +02:00
commit 8275159aad
4 changed files with 154 additions and 7 deletions

View file

@ -71,6 +71,24 @@ left are the three shipped exclusions; full lint Failed:1 = EXPECT_REFS only.
*migrated* data classes only, so it does not flag personas. Track as a follow-up if a
full personas externalization is wanted later.
### Step 16 — lint extended 74→81 checks; the no-pin guard caught 5 real survivors
Added to `test-runner.sh`: `EXPECT_REFS` 25→26 + "delta = exactly +1 (data-path-convention.md)"
assert (m3/m11); **Section 13** (no command/agent/skill/hook prose references a migrated
user-data path in-plugin — bare or `${CLAUDE_PLUGIN_ROOT}`-pinned — R1; + the no-`ANALYTICS_ROOT`-
pin sibling M3; + the SC2 `git status --porcelain --ignored` dry-run), each with a
non-vacuity self-test mirroring Section 8; **Section 14** assertion-count anti-erosion
floor (pre-M0 baseline 74, count may only grow — SC6 / assumption 3).
**The no-pin guard earned its keep on first run:** it flagged **5 surviving in-plugin
`ANALYTICS_ROOT="${CLAUDE_PLUGIN_ROOT}/assets/analytics"` pins** that Step 11 missed —
`agents/analytics-interpreter.md` (×2) + `skills/linkedin-analytics/SKILL.md` (×3). Step 11
scoped the pin-drop to the *commands* (`import.md`/`report.md`); the agent + skill invoke the
CLI directly and kept the pin, which would force the analytics CLI to read in-plugin even
after the default flipped external (the exact M3 failure). Dropped all 5 (surgical: removed
only the `ANALYTICS_ROOT=… ` prefix, kept the `node --import tsx` form — no CLI-style change),
matching how Step 11 left the commands. Lint now **81/0**.
## Session 3 — Steps 1113 (2026-06-18)
### Environment reality vs. plan assumptions