feat(linkedin-studio): v3.1.0 — Endring 9 adversarial review-pakke + per-artefakt personas
Cold, adversarial review package for the long-form pipeline + configurable per-edition personas. Motivated by Del 4 (Security Champions pivot): the in-session editor + persona sweep shared the drafting session's framing-bias, so the shipped version was never independently re-reviewed. Headless package (9a/9b): - New Step 6.5 (headless-review) in /linkedin:newsletter, after the persona sweep, before lock — the independence layer the in-session gates can't be. - New standalone /linkedin:headless-review command (run in a fresh session for maximum isolation; reconstructs frozen draft + contract + personas from disk). - 3 new Opus archetypes, each with a cardinal context-isolation block that refuses drafting-session framing as "context pollution": - content-reviewer (argument integrity C1–C5, ≤8 flags) - language-reviewer (Norwegian language L1–L5, ≤10 flags) - fact-reviewer (cold re-verification F1–F4, risk-sort + pivot-risk, WebSearch) - Deliberate redundancy with fact-checker / editorial-reviewer documented so the pairs are never de-duplicated. Pivot-reopen (9c): - New /linkedin:pivot command: logs articles.NN.pivots[], resets currentPhase, un-locks, marks gates to re-run. - Pivot-detection gate in Step 8 lock precondition (>20% word-count change or >2 new sections re-opens cleared gates). Del 4 v8→v11 worked example. Per-artifact personas (new requirement): - articles.NN.personas with resolution order (edition-state → series file → plugin library → interactive). One or more readers configurable per edition. Schema/docs: - edition-state.template.json: additive personas[], pivots[], headlessReview, headless-review phase (16 phases); personaSweep.resonance.wordCount baseline. - 3 fasit fixtures + 3 structural lint tests (Del 4 worked cases). - Counts: 24→26 commands, 16→19 agents, 15→16 newsletter phases. - README + CLAUDE.md (plugin + root) + CHANGELOG synced. Verification: 35 agent-fixture + 59 hook + 20 render tests green. Backward- compatible (additive state); reload required before the 3 new agents resolve. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
e162cdce38
commit
e69ea1f4c9
20 changed files with 2520 additions and 59 deletions
|
|
@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [3.1.0] - 2026-05-29
|
||||
|
||||
### Summary
|
||||
**An adversarial review package becomes part of the long-form pipeline (Endring 9).** The Del 4 production run (Maskinrommet, 2026-05-29 — the Security Champions pivot, v8 → v11) shipped a high-quality article, but its quality assurance leaned on **one good editor + KTG's availability to read it several times** — it did not scale. The root cause: the editor and the persona sweep ran *in the same session as drafting*, sharing the conversation history (which versions passed, what was deliberately cut, which flags had been raised). They were therefore **not adversarial** — they carried framing-bias. Three concrete symptoms: (1) the persona resonance sweep effectively judged an early version, not the one that shipped; (2) editor-approval was single-source; (3) the fact-check was post-hoc relative to the late pivot, so the pivot could build on an unverified premise. v3.1.0 answers KTG's explicit question — *how do I start sessions with no context from the main session, to review both content and language?* — and makes per-artifact personas a first-class input.
|
||||
|
||||
### Added
|
||||
- **`/linkedin:headless-review` command** — runs the cold adversarial review package on a FROZEN draft. Designed to be invoked in a **fresh session** for maximum isolation (the parent then has no drafting transcript); reconstructs everything from disk (frozen draft + writing contract + personas). Flags `--draft`, `--type {content|language|fact|persona-resonance|persona-conversion|all}`, `--persona`, `--article`, `--output`.
|
||||
- **Three new headless review archetypes** (all Opus, each with an explicit cardinal context-isolation block that refuses drafting-session framing as "context pollution"):
|
||||
- **`content-reviewer`** (color maroon, Read+Grep) — argument integrity: C1 logical holes · C2 unsupported assumptions · C3 argument-level contradiction · C4 missing concretization · C5 unanswered «what about X?». ≤8 flags BLOCK/REWORK/NICE.
|
||||
- **`language-reviewer`** (navy, Read+Grep) — Norwegian language: L1 verbatim repetition · L2 anglicisms · L3 stiff bureaucratic register · L4 language-level self-contradiction · L5 clang/rhythm. ≤10 flags. Deliberate cold re-take of `editorial-reviewer`'s prose axis.
|
||||
- **`fact-reviewer`** (gold, Read+WebSearch) — cold re-verification on the frozen/pivoted version: F1 verifiable claims · F2 quote precision · F3 number attribution · F4 source quality. Carries over `fact-checker`'s 5-dimension scoring + 🔴/🟡/🟢 sort + contradiction sweep + post-cutoff mandate, adds a **pivot-risk** subsection. Deliberate redundancy with `fact-checker` to catch a pivot premise that arrived after Step 5.
|
||||
- **Step 6.5 (headless-review)** in `/linkedin:newsletter` — fans the package out in parallel after the in-session persona sweep (Step 6), on a frozen draft snapshot, BEFORE lock; consolidated report surfaced via `SendUserFile`; converged flags (two independent cold reviewers agreeing) marked as the strongest signal. Pipeline 15 → 16 phases.
|
||||
- **`/linkedin:pivot` command** + **pivot-detection gate** — a pivot re-opens the pipeline so the cleared gates (fact-check 5 → editorial 5.5 → persona 6 → headless 6.5) re-run on the changed version before lock. Heuristic: a draft that drifted **> 20 % in word count OR gained > 2 sections** since Step 6 cleared triggers the gate (enforced as a Step 8 lock precondition). Worked example: the Del 4 v8→v11 run (+42 %, 2 new sections) would have fired the gate and forced the re-sweep.
|
||||
- **Per-artifact personas** — `articles.NN.personas` in `edition-state.json`: one or more readers configurable **per edition**, resolved in Step 1 in order (edition-state → `<serie>/linkedin/personas.md` per-series file → plugin `personas.local.md`/template → interactive definition). Feeds both the Step 6 sweep and the Step 6.5 package. `config/personas.template.md` documents the resolution order.
|
||||
- **Three fasit fixtures + three structural lint tests** for the new agents (Del 4 / Security Champions worked cases), mirroring the `editorial-reviewer` fixture discipline. All 35 agent-fixture assertions green.
|
||||
|
||||
### Changed
|
||||
- `config/edition-state.template.json` — additive: per-article `personas[]`, `pivots[]`, `headlessReview` object; new `headless-review` phase string (16 phases total); `personaSweep.resonance.wordCount` recorded at Step 6 as the pivot-detection baseline.
|
||||
- `commands/newsletter.md` — Step 0/1 persona resolution reworked to per-artifact; new Step 6.5; Step 8 lock preconditions add the headless gate + pivot-detection gate; pipeline + resumption tables updated (`persona-sweep-prelock` → resume at Step 6.5; new `headless-review` → Step 7).
|
||||
- Counts: 24 → 26 commands; 16 → 19 agents; 15 → 16 newsletter phases.
|
||||
|
||||
### Compatibility
|
||||
Backward-compatible: every state-shape change is additive (existing editions resume by `currentPhase`; `persona-sweep-prelock` now resumes at Step 6.5 — an intended deterministic improvement). **Reload required** before the three new agents resolve (the plugin agent set is built at session start). No new runtime code beyond the agents/commands/fixtures; the render pipeline, hooks, and short-form surface are untouched.
|
||||
|
||||
## [3.0.0] - 2026-05-29
|
||||
|
||||
### Summary
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue