docs(linkedin-studio): S10 harden headless-review — verified clean, no change (4 axes PASS)
headless-review is the standalone surface of newsletter Step 6.5: a cold
adversarial review-orchestrator, NOT post-emitting — it emits a consolidated
review report + optional edition-state persist, never drafts prose, never
publishes a feed post, so the feed-post predicates (hook 110-140, 1,200-1,800
band, no-body-link) do not apply (even further from feed-post than newsletter).
The 4 archetype agents are shared with newsletter Step 6.5 -> S9 baseline reused.
Ran the 7 predicates tool-grounded against the final file (248 lines):
- 4 namespaced subagent types resolve (frontmatter name: match)
- 8/8 Reference Files exist (:241-248)
- always-present fallback longform-quality-rules.md exists
- articles.NN.headlessReview schema complete in edition-state.template.json
(:56-69, ladder pending->run->folded)
- 5 degradation points (freeze cp :130 / draft ask-once :104 / persona :117 /
[GATE] re-run :163-164 / output-default :93 + SendUserFile-else-file:// :208-210)
- persona resolution chain = newsletter Step 1 (:179-183)
- "five archetypes" (line-wrapped :5-6/:30-31) = 5 modes from 4 agents
Borderline at talk: freeze (:126) assumes review/ exists (no mkdir -p).
Operator chose Alt A (no change) — byte-identical to newsletter :1050 (S9-clean);
review/ is created by the render pipeline that produces the draft. Logged as a
NICE below the axis-pass bar, not pursued.
4-axis verdict: a/b/c/d all PASS, 0 gaps, 0 deferrals -> NO CHANGE.
Gate: test-runner 81/0/0 · counts 29/19/26 unchanged · headless-review.md
byte-identical to 3cd174c (S9); only docs/hardening/log.md added.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qgzo6rxthw7KuxHjn5vyE
This commit is contained in:
parent
3cd174c616
commit
adb8c5bde3
1 changed files with 83 additions and 0 deletions
|
|
@ -856,3 +856,86 @@ short-form hooks.
|
|||
- Disposition: **VERIFIED — NO CHANGE** (0 edits) · 0 deferrals · axes a/b/c/d all PASS.
|
||||
|
||||
---
|
||||
|
||||
## Session 10 — Longform companion (`headless-review`)
|
||||
|
||||
> S10 status: re-grounded STATE's predicates against the actual `headless-review.md` (248 lines, 13 KB)
|
||||
> BEFORE talk (jerndisiplin: assert-after-read). Class agreed S10 steps 1–2: **cold adversarial
|
||||
> review-orchestrator, NOT post-emitting** — it emits a consolidated review report + optional
|
||||
> `edition-state` persistence, never a feed post and never drafts prose; the feed-post predicates
|
||||
> (hook 110–140, 1,200–1,800 band, no-body-link) do NOT apply — imposing them would be the S4/video
|
||||
> category error (even further from feed-post than `newsletter`). The four archetype agents are
|
||||
> SHARED with `newsletter` Step 6.5 → S9 agent findings reused as baseline. All `file:line` below are
|
||||
> tool-grounded against the FINAL file (no edits this session → final == 1c31644).
|
||||
|
||||
### /linkedin:headless-review — cold adversarial review package on a FROZEN long-form draft, NOT post-emitting
|
||||
|
||||
**INTENT.** `headless-review` is the standalone surface of `newsletter` Step 6.5: read a frozen,
|
||||
publish-ready (or pivoted) long-form draft COLD — with NONE of the drafting session's framing-bias —
|
||||
through five independent archetypes and return direction-only flags, consolidated into one
|
||||
operator-gated report. Two isolation layers: fresh session (strongest, `:64–68`) + per-archetype
|
||||
subagent context (`:69–74`). The adversarial-independence layer the in-session gates structurally
|
||||
cannot be (`:30–48`).
|
||||
|
||||
**SIMULATE (grounded persona-sim, anchored to the Step 3 cold fan-out).**
|
||||
- **Persona (operator):** KTG in a FRESH session running `--type all` on `<serie>/NN-utkast.md`.
|
||||
- **Walk:** Step 1 resolve-from-disk (draft → edition-state `currentArticle` fallback → ask-once
|
||||
`:103–104`; contract 3-tier fallback ending at always-present `longform-quality-rules.md` `:111–114`;
|
||||
personas = newsletter Step 1 chain `:116–118`) → Step 2 freeze (`cp` snapshot `:126`, live-draft
|
||||
fallback if `cp` unavailable `:130–131`) → **Step 3 fan out 5 archetypes** (single message,
|
||||
`:135–136`; 4 `linkedin-studio:`-namespaced types, persona-reviewer ×2 modes `:141–146`) →
|
||||
**degradation gate** (`:161–164` "re-run that one archetype — do not paper over a missing reviewer
|
||||
`[GATE]`") → Step 4 consolidate (operator gates, never auto-resolve flags `:168–169`/`:196–197`;
|
||||
convergence marked `:200–202`) → Step 5 surface via `SendUserFile` (else `file://` `:208–210`) +
|
||||
optional persist `articles.NN.headlessReview` (`:211–215`).
|
||||
- **Friction sought (the S2–S8 pattern: a missing buzzword gate / a missing fallback):** **NONE found.**
|
||||
Not post-emitting → the category-correct quality bar is the reviewers grading against the writing
|
||||
contract + the structured-return degradation gate, both present. Every fan-out call has a degradation
|
||||
re-run path.
|
||||
|
||||
**EVALUATE (4 axes).**
|
||||
- **(a) intention fidelity — PASS.** The 5-step flow (resolve → freeze → parallel fan-out → consolidate
|
||||
→ surface/persist) delivers the description's promise; primær artifact is the consolidated report
|
||||
(`:171–198`), surfaced + optionally persisted (`:204–215`). `allowed-tools` (`:18–26`) complete and
|
||||
fully used (Read/Glob/Grep · Bash freeze · AskUserQuestion ask-once · Task fan-out · Write report+state).
|
||||
- **(b) algorithm/format bar (long-form honesty, NOT feed-post predicates) — PASS.** Cold contract
|
||||
(`:50–74`) nøktern: reviewers get a "deliberately starved context", exactly-what-they-get /
|
||||
exactly-what-they-don't enumerated; two-layer isolation with honest caveats (Layer 1 "recommended …
|
||||
strongest" not absolute; reload caveat for the v3.1.0 agents `:80–82`). Deliberate redundancy
|
||||
(`fact-reviewer`↔`fact-checker`, `language-reviewer`↔`editorial` prose axis) disclosed as
|
||||
on-purpose, not collapsed (`:234–237`). No feed-post predicate imposed.
|
||||
- **(c) quality rules (category-appropriate) — PASS.** Review quality enforced by (1) reviewers judging
|
||||
against the writing contract (`:111–114`), (2) the degradation gate requiring structured/populated
|
||||
returns, not a hedged paragraph (`:161–164`), (3) operator-gates-the-fold-in — the command recommends,
|
||||
never rewrites/gates (`:168–169`/`:196–197`/`:210`), (4) convergence-as-signal (`:200–202`). No hollow
|
||||
gate found.
|
||||
- **(d) agent-wiring + graceful degradation — PASS.** 4/4 invoked subagent types resolve to real
|
||||
`agents/*.md` with matching frontmatter `name:`, all `subagent_type: linkedin-studio:`-namespaced
|
||||
(content-reviewer · language-reviewer · fact-reviewer · persona-reviewer ×2 modes → "five
|
||||
archetypes" `:5–6`/`:30–31`). 8/8 Reference Files (`:241–248`) exist. `articles.NN.headlessReview`
|
||||
schema present + complete in `edition-state.template.json` (`:56–69`: frozenDraft · reviewers
|
||||
{content,language,fact,personaResonance,personaConversion} · consolidatedReport · foldedIn · waived ·
|
||||
status; ladder pending→run→folded `:29`). Degradation ×5: freeze `cp` fallback `:130` · draft-missing
|
||||
ask-once `:104` · persona fallback `:117` · `[GATE]` re-run `:163–164` · output-default `:93` +
|
||||
SendUserFile-else-`file://` `:208–210`.
|
||||
|
||||
**HARDEN — NO CHANGE (verified clean).**
|
||||
- 0 edits. Borderline surfaced at talk: the freeze step (`:126`) assumes `review/` exists (no
|
||||
`mkdir -p`). **Operator chose Alt A (no change).** Rationale: the freeze block is **byte-identical to
|
||||
`newsletter` `:1050`** (S9-verified-clean), and `review/` is created by the render pipeline that
|
||||
produces the draft (`build-html.mjs` → `./review/` newsletter `:1136`; skeleton/draft render
|
||||
`:444`/`:580`); adding `mkdir -p` only here would drift from its S9-clean twin, and fixing both would
|
||||
re-open S9 (out of S10 scope). The `cp`-unavailable fallback (`:130`) covers the degraded path loosely.
|
||||
- **Deferrals:** none. **Anti-gold-plating:** the `mkdir -p` robustness improvement is a NICE below the
|
||||
axis-pass bar — left as the operator's logged decision (Alt A), not pursued.
|
||||
|
||||
**VERIFY.**
|
||||
- `bash scripts/test-runner.sh` → `Passed: 81 · Failed: 0 · Warnings: 0`; counts **29/19/26** (+6
|
||||
skills) unchanged (count/version-consistency guards inside the lint passed); `git status --porcelain`
|
||||
empty → working tree byte-identical to `1c31644` (S9).
|
||||
- Predicates re-grounded against the final file: 4 namespaced subagent types (frontmatter `name:`
|
||||
match) · 8/8 ref files exist · `headlessReview` schema `:56–69` · 5 degradation points · persona
|
||||
chain = newsletter `:179–183` · "five archetypes" (wrapped) = 5 modes from 4 agents.
|
||||
- Disposition: **VERIFIED — NO CHANGE** (0 edits) · 0 deferrals · axes a/b/c/d all PASS.
|
||||
|
||||
---
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue