fix(linkedin-studio): S8 harden pipeline — Step-3 buzzword gate enumerated inline
Step-3 optimize gate (:79) carried the buzzword line but as a bare '- [ ] No corporate buzzwords' — not self-contained, leaning on the quality-scorecard.md reference rather than the inline gate the AI executes. Enumerated the banned list inline to match every other post-emitting gate (post :134 / react :131 / carousel :123 / video :129 / scorecard :132), removing pipeline as the odd-one-out. Recorded deferral: Step-2 component structure (:58-62) sums 960-1640, floor below the Step-3 band floor 1,200 — identical to batch's untouched 3a; the gate (:77) already names the band and catches a minimum-path undershoot, so no edit (editing Step 2 would exceed S7 precedent). Gate: test-runner 81/0/0 · counts 29/19 unchanged · only .md touched. 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
5934c94faf
commit
52e888a868
2 changed files with 77 additions and 1 deletions
|
|
@ -76,7 +76,7 @@ Run the draft through optimization checks:
|
|||
- [ ] Hook 110-140 chars
|
||||
- [ ] Total 1,200-1,800 chars
|
||||
- [ ] No external links in body
|
||||
- [ ] No corporate buzzwords
|
||||
- [ ] No corporate buzzwords (leverage, synergy, paradigm shift, thought leader, disruptive, value proposition, ecosystem, holistic approach)
|
||||
- [ ] Topic aligns with expertise areas
|
||||
- [ ] Authentic voice (not AI-sounding)
|
||||
|
||||
|
|
|
|||
|
|
@ -709,3 +709,79 @@ graceful degradation).
|
|||
- Disposition: **HARDENED** (1 edit, axis-c) · 3 recorded deferrals · axes a/b/d PASS.
|
||||
|
||||
---
|
||||
|
||||
## Session 8 — Pipeline (`pipeline`)
|
||||
|
||||
> S8 status: re-grounded the proposed predicates against the actual `pipeline.md` lines BEFORE
|
||||
> talk (jerndisiplin: assert-after-read). Field-notes inbox **absent** at S8 → graceful no-op (SC-I).
|
||||
> All `file:line` below are tool-grounded against the FINAL (post-edit) file.
|
||||
> **Class call (operator-delegated → quality + precedent):** hybrid **guided/stateful + post-emitting
|
||||
> on the final post** — the 8-step idea→publish→analysis pipeline produces ONE feed post (Step 2 draft
|
||||
> `:57–62` → Step 3 gate `:66–86` → Step 6 publish `:135`), so the post predicates apply to that post;
|
||||
> the orchestration around it (Step 0 load · Step 1 agent-deleg · Step 4 schedule/queue · Step 5 5x5x5 ·
|
||||
> Step 7 first-hour · Step 8 analysis · state-update `:186–199`) is the guided/stateful layer.
|
||||
|
||||
### /linkedin:pipeline — full idea→publish→analysis pipeline, one 1,200–1,800-char feed post, 8 steps
|
||||
|
||||
**INTENT.** `pipeline` is the Create journey's **end-to-end path**: from idea (or `$ARGUMENTS` topic)
|
||||
through ideation → draft → optimize → schedule → 5x5x5 pre-engagement → publish → first-hour → 48h
|
||||
analysis, with a deterministic state update. Post-emitting on the final post (hook **110–140**, length
|
||||
**1,200–1,800**, no body link, no banned buzzword, topic→5 pillars); guided/stateful for the
|
||||
orchestration (subagent targets + 5 node helpers resolve; graceful degradation).
|
||||
|
||||
**SIMULATE.**
|
||||
- **Persona (ICP):** the author — 1048 followers, "Validation", 5 pillars; direct/technical NO/EN voice.
|
||||
- **Invocation:** `/linkedin:pipeline about AI-kodeassistenter i offentlig sektor` (topic in `$ARGUMENTS`
|
||||
→ Step 1 ideation skipped, `:41`).
|
||||
- **Walk:** Step 0 load state/SKILL/voice → Step 1 skipped → Step 2 angle + draft to the structure
|
||||
(`:57–62`) → **Step 3 optimize gate (`:66–86`, the gap)** → Step 4 schedule (+ Option-3 queue) →
|
||||
Step 5 5x5x5 → Step 6 publish+clipboard → Step 7 first-hour → Step 8 analysis → state.
|
||||
- **CONCRETE friction (spec-level, anchored — not a generated post):** at **Step 3** the inline quality
|
||||
scorecard (`:75–81`) carried the buzzword line (`:79`) but as a **bare** `- [ ] No corporate buzzwords`
|
||||
— no inline enumeration; it leaned on the scorecard reference (`:75` → `quality-scorecard.md:132`). A
|
||||
draft opening *"How to leverage AI to drive synergy across the public-sector ecosystem…"* relies on the
|
||||
operator cross-referencing a long shared asset rather than the inline gate the AI actually executes.
|
||||
**Unlike S2/S3/S5/S6 the line was PRESENT** — the gap was that it was not self-contained, making
|
||||
pipeline the odd-one-out among post-emitting commands (post `:134` · react `:131` · carousel `:123` ·
|
||||
video `:129` all enumerate inline).
|
||||
|
||||
**EVALUATE (4 axes).**
|
||||
- **(a) intention fidelity — PASS.** 8-step idea→publish→analysis delivers the description's promise.
|
||||
- **(b) algorithm bar — PASS.** Step 3 signals (`:70–73`) cited to the SSOT (saves rank highest · a
|
||||
15+-word comment ≈ 2× a like · dwell >30 s +25 %); no body link (`:78`); 5x5x5 (`:120–133`); first-hour
|
||||
(`:158–169`). No 30 %-claim → untouched by the open reference-consistency follow-up.
|
||||
- **(c) MECHANICAL predicate (post-emitting, on the final post) — GAP → fixed.** hook 110–140 ✓
|
||||
(`:58/:76`) · length band ✓ (`:77` names 1,200–1,800) · no-body-link ✓ (`:78`) · topic→pillars ✓
|
||||
(`:80` + `:49` content-planner pillar-situating) · subagent resolves ✓ (`:49`) · **buzzword
|
||||
present-but-not-self-contained ✗→fixed** (`:79` bare → enumerated inline).
|
||||
- **(d) agent-wiring + graceful degradation — PASS.** `content-planner` + `trend-spotter` (`:49`) resolve
|
||||
to real `agents/*.md`, both `subagent_type: linkedin-studio:`-namespaced. All 5 node helpers export with
|
||||
matching signatures: `queueUpcoming(days=7)` (qm`:52`) · `queueAdd(…8 params)` (qm`:63`; pipeline passes
|
||||
8 args `:116`) · `queueFormatSummary` (qm`:112`) · `writeState` (su`:346`) · `updatePostTracking`
|
||||
(su`:55`). Degradation: Step 1 (`:43–47`) handles no-planned-topic/no-input via AskUserQuestion; Step 0
|
||||
voice-samples is a soft read (no "REQUIRED" dead-end).
|
||||
|
||||
**HARDEN (surgical — 1 edit, 1 file, grep-confirmed landed).**
|
||||
- `commands/pipeline.md:79` — `- [ ] No corporate buzzwords` → `- [ ] No corporate buzzwords (leverage,
|
||||
synergy, paradigm shift, thought leader, disruptive, value proposition, ecosystem, holistic approach)`
|
||||
(same banned list as the other post-emitting gates + the scorecard).
|
||||
- **Deferral (1, recorded):** the Step-2 component structure (`:58–62`: hook 110–140 + context 200–300 +
|
||||
insight 400–800 + implication 200–300 + CTA 50–100) sums **960–1 640**, whose floor sits below the
|
||||
Step-3 band floor 1,200 (`:77`) — **identical structure to batch's 3a (`:88–92`)**. NOT edited:
|
||||
pipeline's Step-3 gate already NAMES the band (the S7 fix was naming the band on an *unenforceable* gate;
|
||||
here it is already named), so a minimum-path draft is caught by the gate, not shipped — and S7 did not
|
||||
edit the analogous 3a structure either. Editing Step 2 here would exceed precedent (over-engineering).
|
||||
Below the axis-pass bar.
|
||||
- **CONCRETE after:** the "leverage…synergy…ecosystem" draft now trips the Step-3 buzzword line inline
|
||||
before optimize completes, without the operator cross-referencing the shared scorecard.
|
||||
|
||||
**VERIFY.**
|
||||
- `bash scripts/test-runner.sh` → `Passed: 81 · Failed: 0 · Warnings: 0`; counts **29/19** confirmed
|
||||
(`ls commands/*.md|wc -l` == 29, `ls agents/*.md|wc -l` == 19; `git diff --stat` = `pipeline.md` only,
|
||||
1 insertion / 1 deletion). Only `.md` touched → hooks/analytics `node --test` not needed.
|
||||
- Before/after delta: axis (c) buzzword sub-check is now self-contained at the load-bearing Step-3 gate
|
||||
(was a bare, reference-dependent line). The 1 edit is the cause.
|
||||
- Disposition: **HARDENED** (1 edit, axis-c) · 1 recorded deferral (Step-2 component-sum, gate-caught) ·
|
||||
axes a/b/d PASS.
|
||||
|
||||
---
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue