feat(linkedin): longform quality rules + edition resumption wiring (S12)

This commit is contained in:
Kjell Tore Guttormsen 2026-05-27 22:30:42 +02:00
commit 8d25dd908e
2 changed files with 223 additions and 45 deletions

View file

@ -0,0 +1,148 @@
# Long-Form Quality Rules
Canonical quality rules for long-form LinkedIn content (newsletter editions,
essays, series articles). These are enforced by the `/linkedin:newsletter`
pipeline — primarily in **Step 4 (Consistency + quality)**, reinforced by the
fact-check sweep (Step 5) and the persona sweeps (Steps 6 + 9).
> **Provenance.** Distilled from the Seres series production (the operator's
> first full long-form run) and codified as the authoritative spec in plan §8.
> Source of truth: this file. `commands/newsletter.md` Step 4 points here rather
> than restating the rules — there is exactly one place to change them.
> **Scope.** These rules are for **long-form only**. Short-form feed posts are
> governed by the `PreToolUse` content-gatekeeper / voice-guardian hooks, which
> are calibrated for feed posts and stay short-form-only (plan decision B). Long-
> form quality is enforced by pipeline *phases*, not by those hooks.
---
## The rules
### 1. Leder-takeaway (lead takeaway)
Every text lands **ONE clear takeaway + ONE concrete action**. The reader should
be able to state, in a single sentence, what they now think differently and what
they will do about it.
- Cut references hard. Hands-on credibility beats a citation-pile — a text that
shows you have done the work outweighs one that quotes everyone who has written
about it.
- If the reader cannot state the takeaway in one sentence, the text is not done —
tighten until they can.
**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
action.
### 2. Premiss→konklusjon-bue (premise→conclusion arc)
Establish **one clear premise early** (in the ingress + first paragraph), then let
the conclusion **grip that premise concretely and twist it forward** — give a
direction plus one tangible grip. The conclusion does not merely summarize.
- The premise the conclusion grips must be the SAME premise the ingress set. If
the draft drifted to a different premise mid-text, realign the conclusion or the
ingress — never leave two premises standing.
**Pass/flag:** PASS when ingress-premise == conclusion-premise and the close moves
it forward; FLAG when the conclusion only restates, or grips a premise the opening
never set.
### 3. AI-slop-fraser (forbidden phrases — strip on sight)
These phrases read as machine-written and are **banned**. They are the Seres
ban-list; strip them on sight (the list is Norwegian because the target text is
Norwegian):
- «her må jeg være ærlig» / «for å være ærlig»
- «ikke bare X, men Y» (the not-just-X-but-Y construction as a tic)
- gratuitous three-item listing (rule-of-three used as a reflex, not because the
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
**Pass/flag:** PASS when none appear; FLAG (with count) and remove each occurrence.
### 4. Generell, ikke etat-/person-spesifikk (general, not org-/person-specific)
Write for a broad reader, not as an internal memo or a grievance.
- No personal agency anecdotes.
- Present **opportunities, not provocations**.
- At most **one** structural anchoring reference per text — never repeated
criticism of a named person or organization.
**Pass/flag:** PASS when the text reads as generally useful and carries ≤1
structural anchor; FLAG personal anecdotes, provocations, and any repeated naming.
### 5. Formaterings-dose (minimal formatting dose)
> *"No article should look like a PowerPoint printout."*
- **Bold** = at most one point per section.
- Short lists (24 items) **only** where the text already enumerates — never turn
load-bearing reasoning into bullets. Prose carries the argument; lists carry
genuine enumerations.
- Tables sparingly.
**Pass/flag:** PASS when formatting stays within these bounds; FLAG (and trim) when
bold is scattered, reasoning has been bulletized, or tables proliferate.
### 6. Gap lukkes med stramming, ikke utvidelse (close gaps by tightening, not expanding)
The gap between a draft and the final is closed by **swapping weaker passages for
sharper ones and cutting** — not by adding material. **Hold the length flat.**
This rule holds across every later phase too: fact-check fixes (Step 5), persona
rework (Step 6), and hook revisions (Step 9) all close their gaps by tightening,
never by expansion.
**Pass/flag:** target a **flat** length delta vs. the prior draft; FLAG when a
revision grew the word count to cover a weakness instead of sharpening it.
### 7. Kalibrering per sweep (per-sweep calibration — a user choice, not a default)
Before each quality / fact-check / persona sweep, **the operator calibrates**
this is a per-sweep user choice, never a silent default:
- **Fold-in aggressiveness** — conservative vs. aggressive when folding flags back
into the text.
- **Jargon handling** — keep, gloss, or cut domain jargon.
- **Persona weighting on conflict** — how to weigh a secondary persona's flag
against the primær when they disagree (the primær trumfer rule still governs the
final gate, but the calibration sets how hard a secondary signal is chased).
Ask once if the Step 1 brief did not already settle it. Do not assume an
aggressiveness; the same draft can be tightened conservatively or aggressively and
the operator owns that dial.
---
## How the pipeline uses these rules
| Phase | Where the rules bite |
|-------|----------------------|
| Step 4 — Consistency + quality | Primary enforcement: apply rules 16, calibrate per rule 7, report a pass/flag per rule. |
| Step 5 — Fact-check sweep | Fixes obey rule 6 (tighten, don't expand). |
| Step 6 — Persona sweep (pre-lock) | Rework obeys rule 6; the leader-takeaway (rule 1) and arc (rule 2) are what the reader jury judges for resonance. |
| Step 9 — Hook / conversion gate | Hook revisions obey rule 6 (sharpen the krok by tightening, body stays locked). |
## Self-certification boundary
Whether a text *lands*, matches voice, is original, or reaches prose quality is
**subjective judgment** and is NEVER self-certified green by Claude (plan §10.0).
These rules give objective-where-possible checks (forbidden-phrase presence,
length delta, formatting counts, one-takeaway test), but the resonance verdict is
routed to the persona sweep (`[GATE]`) or the operator (`[OPERATØR]`), never
auto-passed.
## Related
- `commands/newsletter.md` — Step 4 applies these rules; the whole pipeline
references them.
- `agents/fact-checker.md` — Step 5 sweep (guilty-until-disproven).
- `agents/persona-reviewer.md` — Step 6 (resonance) + Step 9 (conversion) reader
jury.
- `config/personas.template.md` — the reader personas + "primær trumfer" rule.
- `references/newsletter-strategy-guide.md` — strategic context for long-form.