Fem grep-lokaliserte gjeldsposter fra STATE FUNN, pluss to anti-erosjons-lints
som gjør to av dem terminale i stedet for gjenoppdaget en gang til.
1. .claude-plugin/plugin.json description — v4.0.0-arvet release-notat med
historiske tellinger («→ 19 agents», «→ 27 commands», «→ 29 commands»)
erstattet av en beskrivelse av hva pluginen ER. Dette er teksten /plugin
viser. Ingen tellinger i teksten: de drifter, og CHANGELOG.md eier historikken.
2. CHANGELOG hadde TO «## [0.6.0]»-overskrifter (2026-07-17 = ekte, 2026-02-07 i
halen). Halens datert om til «## [0.6.0-legacy]». Sjette gangs gjenoppdagelse
— derfor lint, se punkt 6.
3. De-niche: 7 «thought leader»-treff utenfor commands/ rettet — README (mot
kommandoens egen frontmatter-ordlyd), skills/linkedin-networking (2:
FUNN-listen navnga bare :9, men :185 var samme defekt), analytics-interpreter,
analytics-tools-guide, collaborations-guide, linkedin-visual-style.
BEVISST BEHOLDT: de 5 blocklist-linjene, de to negative eksemplene
(opportunity-generation, det ironiske sitatet i video-strategy-guide), og
network-builder:562 — et WebSearch-uttrykk som treffer hvordan ANDRE
merker seg selv, allerede paret med «Creator».
4. Hardkodet «KTG» i generisk operatør-tiltale fjernet. FUNN navnga tre linjer i
language-reviewer; klassen var 21 linjer over 4 agenter, newsletter.md,
edition-state-templaten og specifics-bank sitt renderte NN-kilder.md-artefakt.
BEVISST BEHOLDT som proveniens: CHANGELOG, tests/fixtures/* (de ER KTGs
faktiske redaktørrunde, kalibreringsfasiten), adopter-notatene som ærlig
flagger KTG-interne verktøy (contract-gate, specifics-bank), «KTG
cover-directive» og «answers KTG's question» — attribusjon, ikke tiltale.
5. Step 9 persisterte tre nøkler templaten aldri deklarerte: randsoneGate (N9),
hookForge + personaSweep.deling (N24). Nå deklarert i BÅDE artikkel-shapen og
_doc. Additivt, schemaVersion forblir 1. _doc.hookForge bærer N22-invarianten
videre: en variant har målt lengde / krok-type / kroppsspor og ALDRI en
predikert engagement-score.
6. To nye ubetingede lints (Section 16aa), begge mutasjonstestet mot de FAKTISKE
filene, ikke bare mot self-testen:
- CHANGELOG-dublettvakt (+ in-memory non-vakuitets-self-test som skiller en
ekte dublett fra en bevisst «-legacy»-overskrift)
- Step 9-nøkkeldeklarasjon (shape + _doc)
Mutasjon 1 (gjeninnfør dubletten) → rødt. Mutasjon 2 (fjern hookForge fra
shapen) → rødt. Mutasjon 3 (fjern _doc.randsoneGate, fila fortsatt gyldig
JSON) → rødt. Restaurert → grønt.
Ti suiter grønne: test-runner 300 → 303 (floor 281 → 284) · trends 300 ·
analytics 202 · hooks 191 · brain 134 · editions 72 · render 63 ·
specifics-bank 45 · tests 35 · contract-gate 33.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017vMLTF7J13jJmgqwwJyivt
The 6 long-form-review fasit fixtures (agents/fixtures/*-cases.md) were registered
by Claude Code as junk `fixtures:*` agents because agents/ is scanned recursively.
They are test fixtures, not capabilities. Moved them + their 6 lint tests to
tests/ + tests/fixtures/ and retargeted the 5 agent fasit-refs. Count-neutral
namespace hygiene (ls agents/*.md still 19).
- agents/fixtures/*-cases.md -> tests/fixtures/ (6)
- agents/__tests__/*-fixture.test.mjs -> tests/ (6; ../fixtures -> ./fixtures)
- 5 agent refs ${CLAUDE_PLUGIN_ROOT}/agents/fixtures -> /tests/fixtures
- version-sync 0.5.2 -> 0.5.3 (plugin.json / README badge / CLAUDE.md / CHANGELOG)
Verify: fixture-lint 35/35 at new path; render 20/20, hooks 139/139; test-runner 109/0/0.
Reinstall/reload required for the 6 spurious agents to leave the registry.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CrTb8ktf1XZWEVwgz5MTTo
Wave 3 / Step 9 of the remediation plan (Phase 1 — usable by a non-author).
The long-form review layer shipped Norwegian-locked: language-reviewer graded
unconditional Norwegian, voice-scrubber's gold standard was 'approved Norwegian
editions', and the editorial/content craft gates pointed at a 'skrivekontrakt §C2'
that does not ship. A non-Norwegian adopter would get English prose graded against
Norwegian idiom and a gate that depends on an unshipped contract.
- config/edition-state.template.json: add additive 'language' field (top-level,
default 'en') + a _doc entry. Threads into the language-dependent agents.
- agents/language-reviewer.md: new 'Language parameter' section — Norwegian-specific
checks (anglicism->Norwegian idiom, kanselli-stil) apply only when language=='no';
any other value grades that language's equivalents and never flags idiomatic
English as an anglicism. Default 'en'.
- agents/voice-scrubber.md: gold standard reframed to 'approved editions in the
configured language'; the Norwegian-chronicle calibration is the language=='no'
instantiation.
- agents/editorial-reviewer.md + agents/content-reviewer.md: the in-tree checklist
is now the operative, self-contained source of truth; Maskinrommet §C2 is an
optional upstream contract that does NOT ship (available only on the author's
runs). The gates work for an adopter without it.
- commands/newsletter.md: thread 'language' through the Step 6.5 cold-inputs and the
per-reviewer call inputs; the writing contract is now 'if it ships'.
Norwegian remains fully working when language: no (the author's case).
fact-reviewer.md was in the plan's file list but needed no change on inspection:
its F1-F4 checks (claims/quotes/numbers/sources) are language-agnostic; its
'Norwegian' mentions are boundary notes vs language-reviewer, which stay correct.
[skip-docs]: three-doc + version reconciliation is Step 21 (pre-review-gate); these
intermediate Wave commits are not pushed before the /trekreview gate.
Verify: edition-state JSON parses + has top-level language 'en'; language-reviewer
has 'language ==' references and no unconditional-Norwegian assertion; editorial
§C2 reframed to in-tree fallback ('operative source', 'does not ship'); agent
fixtures 35/35 pass; structural lint exit 0 (61 passed).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Endring 8 from the change spec (Del 4 production, Maskinrommet). The persona
resonance sweep measures reader-response (does it land?); nothing measured prose
craft or narrative architecture (is it well-made?). In Del 4 every persona
reported PASS, yet the editor found 8 fresh editorial points on first reading —
~6/8 craft/architecture blind spots no agent could see. v2.4.0 adds the missing
editor role.
New Step 5.5 (editorial-review) runs between fact-check (Step 5) and the persona
sweep (Step 6): a new editorial-reviewer agent (Opus) judges two axes —
prosa-handverk (em-dash density, verbatim repetition, postulated numbers,
contradictions, versal-tic) + narrativ-arkitektur (concrete instantiation,
theory-anchored hypotheses, series-title symmetry, equal action per addressee,
un-overloaded conclusion). Returns <=10 flags as direction (never copy), each
BLOCK/REWORK/NICE, operator-gated via SendUserFile. Runs before the persona
sweep so the personas measure resonance instead of stumbling on craft noise.
Mirrors the Maskinrommet writing-contract section C2 (bidirectional mirror rule).
- agents/editorial-reviewer.md (NEW, Opus, orange) + fasit fixture
(editorial-reviewer-cases.md: Del 4 v5 gold standard, 8 points -> 2 axes +
severities, 3 BLOCK / 5 REWORK, 6/8 blind spots) + structural lint (7 tests).
- Step 5.5 wired into commands/newsletter.md; pipeline 14 -> 15 phases.
- editorial-review phase + additive editorialReview state in
config/edition-state.template.json; resumption: factcheck-sweep -> Step 5.5,
editorial-review -> Step 6 (spec said fact-check; canonical key is
factcheck-sweep).
- persona-reviewer contract unchanged: editorial-reviewer is supplementary
(one measures craft, one measures response).
- All doc levels synced (plugin + root README/CLAUDE.md, CHANGELOG, plugin.json
2.3.0 -> 2.4.0; agents 15 -> 16). 94 tests green.
Acceptance-criterion #8 (live run on Del 4 v5) delivered as fasit fixture:
a live run needs a session reload (new agent not invokable until then) + read
access to the Del 4 v5 draft in Maskinrommet.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>