feat(linkedin): v2.2.0 — harden longform gates from 2nd production run
Implements the 6-change spec from the Seres-serien production (linkedin-plugin-endringsspec.md). All acceptance criteria met. 1. Avoid-patterns (modell-/navne-katalog, completeness-over-reader-action, self-referential overhead openings) → longform-quality-rules.md (rule 1+3) + user-profile.template.md. 2. Persona gate now BLOCKING with explicit hard-fail list (primær mistet meg / doesn't own action / sjargong-mur / modell-navne-katalog → BLOCK; "JA med store forbehold" = NEI) → persona-reviewer.md + personas.template.md. 3. Fact-check declared orthogonal to narrative strength + post-cutoff web-search mandate + high-frequency-error checklist → fact-checker.md. 4. NEW agent voice-scrubber.md (Opus) — de-AI scrub + Norwegian-chronicle voice-drift; gold standard = approved Norwegian editions, NOT the English post corpus. Wired into newsletter.md Step 4. 5. Operator gates = render+annotate rounds (build-html.mjs to file://) as primary flow, AskUserQuestion as receipt/fallback → newsletter.md 2.5+3a. 6. Edition state reconciled with STATE.md (ONE-system). edition-HANDOVER template deleted; narrative to <serie>/STATE.md, machine data (factcheckLog, personaSweep, immutableRules) to edition-state.json. Agents 14 to 15; commands unchanged (24). Backward-compatible (additive state-shape only). Docs updated across all three levels + CHANGELOG. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
2a27a7cd6a
commit
4ed9717627
15 changed files with 494 additions and 152 deletions
|
|
@ -30,6 +30,12 @@ they will do about it.
|
|||
about it.
|
||||
- If the reader cannot state the takeaway in one sentence, the text is not done —
|
||||
tighten until they can.
|
||||
- **Serve what the reader can DO, not what the author knows.** The text exists to
|
||||
give the *primær* reader (the non-technical line manager) something they can act
|
||||
on from their own chair — not to demonstrate the author's breadth. Completeness
|
||||
is not a virtue: if a passage exists to be thorough rather than to move the
|
||||
reader's decision forward, cut it. Choose ONE concrete, verifiable (preferably
|
||||
Norwegian) case over an exhaustive list.
|
||||
|
||||
**Pass/flag:** PASS when the one-takeaway + one-action is stated and unmistakable;
|
||||
FLAG when the text carries two competing takeaways or ends without a concrete
|
||||
|
|
@ -61,8 +67,20 @@ Norwegian):
|
|||
content actually enumerates three things)
|
||||
- «i en stadig mer kompleks verden» (and equivalent throat-clearing openers)
|
||||
- tacked-on summary sentences that restate what was just said
|
||||
- **modell-/navne-katalog** — reeling off product names, model names, or
|
||||
benchmarks (Qwen3-14B, Ministral 3, SWE-bench, Arena, «parametere», «vekter»)
|
||||
for completeness' sake. A list of names is a jargon wall to the primær reader;
|
||||
pick ONE concrete, verifiable case instead (see rule 1). This is a **hard fail
|
||||
for the primær persona**, not a stylistic nit — it is the failure mode that
|
||||
nearly shipped in the Seres process.
|
||||
- **selvrefererende overhead-åpning** — meta-commentary about what the text will
|
||||
or will not do, warm-ups, and openers like «Det er bra. Det er ikke det denne
|
||||
teksten handler om». Start on the reader's problem, not on the text's own
|
||||
framing.
|
||||
|
||||
**Pass/flag:** PASS when none appear; FLAG (with count) and remove each occurrence.
|
||||
**Pass/flag:** PASS when none appear; FLAG (with count) and remove each
|
||||
occurrence. A modell-/navne-katalog or a sjargong-mur is a hard fail (treat as
|
||||
BLOCK-level for the primær reader in the persona sweep), not a soft flag.
|
||||
|
||||
### 4. Generell, ikke etat-/person-spesifikk (general, not org-/person-specific)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue