fix(linkedin-studio): S10 — generalize stale-stat lint to the pattern class + permanent non-vacuity self-test

Closes the S9 re-review (1 BLOCKER + 2 MAJOR, all grep-verified). The survivor
set converged 8 -> 6 -> 2; this closes the meta-problem behind the convergence,
not just the two lines.

BLOCKER — references/glossary.md:10: drop the fabricated "150-parameter
foundation model" (a garbled 150B that the S9 enumerative grep/lint, requiring a
"B"/"billion", could not match). Reframe to "a real input to LinkedIn's 2026
relevance-ranking model" with no parameter count, citing
algorithm-signals-reference.md inline — which makes the :12 "Used in" provenance
accurate (the reference does state the relevance-ranking framing; it never stated
"150-parameter").

MAJOR — CHANGELOG.md:308: de-brand "360Brew profile optimization (January 2026
algorithm update)" -> "Profile/topic-relevance optimization". Removes the
unpublishable brand + asserted Jan-2026 date, honouring v4.0.0's "removed
everywhere" claim. It was the only STALE_STATS hit in CHANGELOG.

MAJOR — scripts/test-runner.sh: the rebuilt lint was enumerative on surface form.
Generalize it to the PATTERN CLASS so the same grep that defines the SC fails on
any surface form, present or future:
  - STALE_STATS model token: "150 ?B param|150 billion param"
      -> "[0-9]+[ -]?(B|billion)?[ -]?param"
    (covers 150-parameter / 150B param / 150 billion param). This robustifies the
    review's literal suggestion "[0-9]+[ -]?(B|billion )?param", which missed the
    space form "150B param"; the separator is moved out of the group.
  - STAT_HITS grep scope += CHANGELOG.md (the 360Brew survivor lived outside it).
  - Permanent non-vacuity SELF-TEST before the real scan: 13 forbidden probes must
    match (incl. the exact "150-parameter" survivor), 8 legitimate probes must not
    ("Language parameter", "parameterized", "different parameters",
    "175-milliarders parametermodell", 5x5x5, cadence, pixel dims, "10x your
    reach"). S7->S9 each shipped a green lint because the proof was run by hand and
    never committed; this makes narrowing STALE_STATS fail the suite.

Verification: test-runner.sh 67/0/0 exit 0 (was 66/0/0; +1 self-test);
node --test 94/94; broadened exhaustive grep across the tree -> zero survivors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-05-30 13:48:37 +02:00
commit 853cad3ade
3 changed files with 70 additions and 7 deletions

View file

@ -7,7 +7,7 @@ Alphabetical glossary of specialized terminology used across the plugin. Each te
## 3
### Profile/topic relevance
LinkedIn's 150-parameter foundation model that validates creator profiles before distributing content. Checks expertise alignment across About section, Experience, content history, network quality, and engagement patterns. Content from unvalidated profiles receives limited distribution.
How well a creator's profile and expertise align with the topic they post about — a real input to LinkedIn's 2026 relevance-ranking model that gates distribution. The model checks expertise alignment across the About section, Experience, content history, network quality, and engagement patterns; content from profiles with weak topic alignment receives limited distribution. (The relevance-ranking model's production name and size are not publishable as fact — see `references/algorithm-signals-reference.md`.)
**Used in:** `references/algorithm-signals-reference.md`, `skills/linkedin-studio/SKILL.md`, `agents/content-optimizer.md`