linkedin-studio/commands
Kjell Tore Guttormsen 527391ab47 feat(linkedin-studio): wire lived-specifics extraction into newsletter pipeline (fix #2 slice 3)
Wire the kilde-så-draft binding (slices 1–2) into the live /linkedin:newsletter
pipeline so a draft is grounded in the operator's real material BEFORE any prose.

- New Step 1.5 "Lived-specifics extraction" BETWEEN brief (1) and research (2):
  query the bank → 3–5 sharp elicitation questions (vagueness refused, never
  fabricated — invariant 3) → `add` to the specifics-bank → populate the
  articles.NN.livedSpecifics slot-map → render the NN-kilder.md ledger. First
  phase to write machine state (persists brief + personas + binding).
- Deterministic binding-gate (`validate-binding`, exit 1 = BLOCK) wired as a new
  step 5 of the Step 2.5 skeleton-gate (renumbered 5→9): no prose is written on
  an unresolved load-bearing claim; livedSpecifics → "bound" on pass.
- Step 2 re-scoped BY the binding: research fills the ekstern/unresolved slots +
  verifies the operator's own numbers (regel 6/7) → flips bank unverified→verified
  → re-renders NN-kilder.md, instead of re-sourcing what is already grounded.
- Pipeline 17 → 18 phases: new `lived-specifics` phase id in edition-state
  _doc.phases; resumption table + pipeline overview + CLAUDE.md + README updated.
- Lint: new Section 15 "Specifics-Bank Binding" wires the specifics-bank suite
  into CI (suite green + case-count floor 28, KTG-only/adopter-skip); the
  assertion-count anti-erosion floor moves to Section 16.

Verification: structure gate 84/0/0 (was 83), specifics-bank 28/28, contract-gate
ratify 1:1, edition-state template valid JSON (18 phases), gitleaks clean on all
5 files. Design record: docs/fix2/slice2-binding.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 22:29:01 +02:00
..
ab-test.md fix(linkedin-studio): S18 harden ab-test — soften "(Tue-Thu, 8-9 AM optimal)" precision over-claim to "(Tue-Thu mornings)" 2026-06-19 13:55:41 +02:00
analyze.md refactor(linkedin-studio): S31c descriptive-%-scrub — platform-norm percentages asserted as fact -> SSOT 2026-06-20 09:54:44 +02:00
audit.md fix(linkedin-studio): S27 ref-consistency A — "penalty/penalizes" framing → SSOT 2026-06-19 22:06:39 +02:00
batch.md refactor(linkedin-studio): S29e terminology-scrub — rename thought-leadership-angles.md -> content-angles.md + all pointers 2026-06-20 06:39:49 +02:00
calendar.md fix(linkedin-studio): S13 harden calendar — concrete Reschedule snippet + correct camelCase exports 2026-06-18 20:19:31 +02:00
carousel.md fix(linkedin-studio): S5 harden carousel — Step-5 caption buzzword gate 2026-06-18 14:28:07 +02:00
competitive.md refactor(linkedin-studio): S29e terminology-scrub — rename thought-leadership-angles.md -> content-angles.md + all pointers 2026-06-20 06:39:49 +02:00
create.md fix(linkedin-studio): S24 harden create — drop orphan Glob grant from routing front-door 2026-06-19 21:25:00 +02:00
first-post.md docs(linkedin-studio): M0-14 — D3 path-convention + voice-readers prototype 2026-06-18 12:38:17 +02:00
firsthour.md fix(linkedin-studio): S12 harden firsthour — re-source ~70% stat to first 15-30 min + drop CEA mislabel 2026-06-18 18:48:19 +02:00
headless-review.md feat(linkedin-studio): v3.1.0 — Endring 9 adversarial review-pakke + per-artefakt personas 2026-05-29 13:01:24 +02:00
import.md fix(linkedin-studio): S14 harden import — drop baseline/metadata over-promise, prose now matches CLI 2026-06-18 20:56:47 +02:00
linkedin.md fix(linkedin-studio): S26 harden linkedin — re-source router copy to "LinkedIn Studio", queue S29 terminology-scrub 2026-06-19 21:52:58 +02:00
measure.md fix(linkedin-studio): S25 harden measure — explicit Glob, drop Read from routing front-door 2026-06-19 21:38:02 +02:00
monetize.md fix(linkedin-studio): S29a terminology-scrub — "thought leadership" → neutral (commands/) 2026-06-19 22:37:05 +02:00
multiplatform.md fix(linkedin-studio): S4 harden multiplatform — Step-0 empty-source fallback + cross-platform buzzword line 2026-06-18 14:10:17 +02:00
newsletter.md feat(linkedin-studio): wire lived-specifics extraction into newsletter pipeline (fix #2 slice 3) 2026-06-20 22:29:01 +02:00
onboarding.md fix(linkedin-studio): S29a terminology-scrub — "thought leadership" → neutral (commands/) 2026-06-19 22:37:05 +02:00
outreach.md refactor(linkedin-studio): S31b multiplier-scrub (commands + agents) — generic "Nx" claims -> SSOT 2026-06-20 09:34:20 +02:00
pipeline.md refactor(linkedin-studio): S29e terminology-scrub — rename thought-leadership-angles.md -> content-angles.md + all pointers 2026-06-20 06:39:49 +02:00
pivot.md fix(linkedin-studio): S11 harden pivot — moderate to-phase reset skipped fact-check (off-by-one) 2026-06-18 18:34:37 +02:00
post.md refactor(linkedin-studio): S29e terminology-scrub — rename thought-leadership-angles.md -> content-angles.md + all pointers 2026-06-20 06:39:49 +02:00
profile.md fix(linkedin-studio): S23 harden profile — re-source profile-as-validated-object overclaim to SSOT, soften SEO claims 2026-06-19 21:12:54 +02:00
quick.md fix(linkedin-studio): S1 hardening — method calibration (quick) + Start journey 2026-05-31 06:46:11 +02:00
react.md refactor(linkedin-studio): S29e terminology-scrub — rename thought-leadership-angles.md -> content-angles.md + all pointers 2026-06-20 06:39:49 +02:00
report.md refactor(linkedin-studio): S31c descriptive-%-scrub — platform-norm percentages asserted as fact -> SSOT 2026-06-20 09:54:44 +02:00
setup.md fix(linkedin-studio): S29a terminology-scrub — "thought leadership" → neutral (commands/) 2026-06-19 22:37:05 +02:00
strategy.md fix(linkedin-studio): S29a terminology-scrub — "thought leadership" → neutral (commands/) 2026-06-19 22:37:05 +02:00
video.md refactor(linkedin-studio): S29e terminology-scrub — rename thought-leadership-angles.md -> content-angles.md + all pointers 2026-06-20 06:39:49 +02:00