fix(linkedin-studio): S22 harden outreach — add missing Bash grant, drop orphan WebFetch+Write, re-source fabricated pod/DM stats to SSOT

Outreach is the first command in the hardening queue that both delegates to an
agent (network-builder) and mutates real state (recordOutreachContact), so the
weight fell on axis-d. Five fixes across two files (operator-approved scope
extension to the SSOT-diverging guide source):

- allowed-tools: ADD Bash (Step 8c runs `node state-updater.mjs --record-outreach`
  and needs it — firsthour precedent grants Bash for the same pattern; the command
  promised a mutation it couldn't execute), DROP orphan WebFetch + Write grants
  (zero body use; :410/:1040 "Write a post" is prose). Now
  Read·Glob·WebSearch·AskUserQuestion·Task·Bash.
- Step 7 pod-warning (axis-b'): replaced fabricated magnitudes ("30-55% reach
  reduction", "shadow suppression", "credibility score", "penalizes",
  "Post-March 2025", "low dwell") with the SSOT statement
  (algorithm-signals-reference.md:98 — demote out of "Most Relevant" / scope to
  own network / restrict repeat offenders) + cite.
- :652 DM-amplification "2-3x first-hour" (axis-b'): re-attributed 2-3x to collab
  reach (where SSOT places it), kept the first-hour effect qualitative.
- collaborations-guide.md:349-370 (axis-b', scope extension): same SSOT rewrite of
  the "March 2025 Crackdown" section so the Step 7 fix can't be re-rendered from a
  stale reference (dropped "shadow banning ALL future content / 90+ days / 6+
  months / permanent penalty" + speculative detection methods).

Verify: re-grep both files clean (orphans/fabricated stats NONE, Bash :21, SSOT
text in place); recordOutreachContact throwaway-fixture 10/10 PASS (additive,
$-safe, newest-first, untouched undeclared fields); test-runner 81/0/0 exit 0;
counts 29/19 unchanged (.md-only).

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:
Kjell Tore Guttormsen 2026-06-19 20:33:30 +02:00
commit ff52ec8577
3 changed files with 88 additions and 28 deletions

View file

@ -16,10 +16,9 @@ allowed-tools:
- Read
- Glob
- WebSearch
- WebFetch
- AskUserQuestion
- Write
- Task
- Bash
---
# LinkedIn Outreach Orchestrator (Collaborations + Speaking)
@ -649,7 +648,8 @@ DM Amplification Protocol:
Both partners share/comment on each other's version.
Creates compound visibility effect.
Impact: DM amplification can boost first-hour engagement 2-3x.
Impact: this feeds the first-hour engagement that carries collaborative
content to its 2-3x reach (ref: collaborations-guide.md).
```
### Step 5b: Speaking — Outreach by Channel
@ -918,24 +918,22 @@ LinkedIn: [profile URL]
## Step 7: Engagement-Pod Warning (Both Tracks)
**Post-March 2025 LinkedIn Algorithm Update:**
LinkedIn runs an active engagement-pod crackdown (see
`references/algorithm-signals-reference.md`):
```
⚠️ ENGAGEMENT PODS: DO NOT USE
LinkedIn now actively detects and penalizes engagement pods:
What LinkedIn does to pods (its stated crackdown):
- Pod-style auto-comments are demoted out of "Most Relevant"
- Their reach is scoped to your own network — it stops spreading beyond it
- Repeat offenders get restricted
Detection methods:
How pods get detected:
- Consistent same-person engagement patterns
- Engagement timing clusters (everyone engages within minutes)
- Low dwell time on engaged posts (engage without reading)
- Reciprocal engagement loops (A→B→A→B pattern)
Penalties:
- 30-55% reach reduction on detected posts
- Shadow suppression of pod participants
- Account credibility score reduction
INSTEAD, build genuine engagement through:
- CEA method comments (Compliment, Expand, Ask)
- 5x5x5 daily routine (organic engagement)

View file

@ -1545,3 +1545,71 @@ invokes WebFetch, Write, Glob, or Grep.**
- Disposition: **FIXED** (2 edits, `commands/monetize.md`) · 0 deferrals · axes a/c PASS, axes b/d PASS post-fix.
---
### /linkedin:outreach — collab + speaking outreach orchestrator (track select → readiness → targets → format/pitch → production → pipeline persist) (S22)
**INTENT.** Grow-tier **orchestrator** (unlocks ~1K), prose-heavy **+ agent-delegating + state-persisting**.
Two tracks (collab + speaking) under one paradigm, 11 steps (Step 010 `:65-1252`). Absorbed
`collab`/`speaking`/`authority` (capability checklist `:36-63` maps each predecessor function). **First in
the queue to BOTH delegate to an agent AND mutate real state** — shifts the weight onto axis-d.
**SIMULATE (adversarial cold quality-reviewer; grounded prose-trace + throwaway state fixture — operator
chose the thorough path; touches no real state/data-dir).** Traced Step 010 against the file; verified every
mechanical claim (refs resolve, agent resolves, mutation exists, grants match body use, axis-b claims trace
to SSOT) with a tool, never by reasoning.
**EVALUATE (relevant axes; mechanical predicate each).**
- **(a) intention: PASS** — checklist maps both predecessors; all 5 refs + SKILL.md resolve (Step 0 +
Reference Files); state path `~/.claude/linkedin-studio.local.md` correct post-M0 (per CLAUDE.md).
- **(b) algorithm/conversion-bar (axis-b): 2 FINDINGS.** **B1** `:652` "DM amplification can boost
first-hour engagement **2-3x**" — over-quantified: 2-3x is SSOT for *collab reach*
(`collaborations-guide.md:32/165/187`), while the DM-loop's first-hour effect is held *qualitative* there
(`:335`). **B2** `:921-946` Step 7 pod-warning fabricated magnitudes — "**30-55%** reach reduction",
"shadow suppression", "account credibility score reduction", "penalizes", "**Post-March 2025** Update" +
"low dwell" detection (dwell unmeasurable per CLAUDE.md). SSOT (`algorithm-signals-reference.md:98`) states
ONLY: "auto-comments demoted out of 'Most Relevant', scoped to own network; repeat offenders restricted"
(Sachdeva 2026-02-16, high) + design rule "do not quote a percentage / soften penalty". Same S18/S21 +
follow-up-#1 pattern.
- **(c) quality rules: PASS** — prose templates only (no post emission); "thought leader"/"ecosystem"
appear only in search-queries / internal *goals* (`:230/:813/:820`), not in published post-copy (Rule 4).
- **(d) agent-wiring + grants + state + graceful: 3 FINDINGS.** **D1 PASS** — `Task subagent_type:
linkedin-studio:network-builder` (`:172`) resolves (`agents/network-builder.md`). **D2 PASS**
`recordOutreachContact` is **NOT fabricated** (`state-updater.mjs:294`, CLI `--record-outreach :394`,
additive, `$`-safe). **D3 Bash MISSING** — Step 8c (`:1064`) runs `node …state-updater.mjs --record-outreach`
(needs Bash) but frontmatter didn't grant it; `firsthour.md` grants Bash for the same `node`-mutation
pattern → functional defect (command promised a mutation it couldn't execute). **D4 WebFetch orphan**
(`:19`, zero body use). **D5 Write orphan** (`:21`; `:410/:1040` are prose "Write a post", not tool use).
**HARDEN (5 edits across 2 files — operator-approved scope extension to also fix the SSOT-diverging guide
source so the B2 rewrite can't be re-rendered from a stale reference).**
1. [REWORK · axis-d] `commands/outreach.md` frontmatter: dropped `- WebFetch` + `- Write` (orphans),
added `- Bash` (Step 8c needs it). allowed-tools now Read·Glob·WebSearch·AskUserQuestion·Task·Bash
(borderline Glob kept — S20 precedent).
2. [REWORK · axis-b] `:652` (B1): re-attributed 2-3x to collab reach (where SSOT places it), kept the
first-hour effect qualitative + cite to `collaborations-guide.md`.
3. [REWORK · axis-b] Step 7 (B2): replaced "Post-March 2025 Update" header + the fabricated
detection/penalties block with the SSOT crackdown statement (demote out of "Most Relevant" / scope to own
network / restrict repeat offenders) + cite; softened "penalizes", dropped "low dwell".
4. [REWORK · axis-b, scope-extension] `references/collaborations-guide.md:349-370` (B2 propagation): same
SSOT rewrite of the "March 2025 Crackdown" section — dropped "shadow banning ALL future content / 90+ days
/ 6+ months / permanent reach penalty", the date, and the speculative detection methods (browser-extension
tracking, linguistic fingerprinting).
**VERIFY.**
- Re-grepped final files. `commands/outreach.md`: `grep WebFetch`**NONE**, `^ - Write$`**NONE**,
`^ - Bash$``:21`; B1 old form → **NONE** (new `:651`); B2 `30-55%|Post-March 2025|penalizes engagement
pods|credibility score|Low dwell|Shadow suppression` → **NONE** (SSOT text `:928-929`).
`references/collaborations-guide.md`: `90+ days|6+ months|never fully recover|permanent reach
penalty|Shadow banning affects ALL|March 2025 Crackdown` → **NONE** (SSOT text `:349/:364`).
- **D2/D3 throwaway fixture** (`/private/tmp/claude-*`, fictional, deleted after): `recordOutreachContact`
direct-call (no `writeState`), **10/10 assertions PASS** — additive insert after `last_post_date`,
`outreach_active` untouched when undeclared, pre-existing fields + custom section intact, newest-first
append, **`$`-safe** (`@kari$boss` preserved literally — S13 behavioral), section auto-created.
- `git diff --stat` = 2 files, **+20 / 28**.
- `bash scripts/test-runner.sh``Passed: 81 · Failed: 0 · Warnings: 0`, **exit 0**; counts **29/19**
unchanged (.md-only edits — node hook/analytics tests not triggered).
- Disposition: **FIXED** (5 edits, 2 files) · 0 deferrals · axes a/c PASS, axes b/d PASS post-fix.
Note: state-updater HTML-comment lands between newest+older rows on repeat append = cosmetic, logged as
non-scope follow-up (the command calls the mutation correctly).
---

View file

@ -346,28 +346,22 @@ Include collaborator content in Featured:
---
## Engagement Pods: March 2025 Crackdown
## Engagement Pods: An Active Crackdown
LinkedIn's March 2025 update dramatically increased pod detection capabilities.
LinkedIn runs an active engagement-pod crackdown and keeps expanding how it
detects them (see `algorithm-signals-reference.md` — the algorithm SSOT).
### Detection Methods Now in Use
### How Pods Get Detected
- Browser extension tracking (LinkedIn detects pod-organizing extensions)
- Pattern analysis on comment timing (simultaneous engagement = red flag)
- Comment-timing analysis (simultaneous engagement = red flag)
- Cross-account engagement correlation (same people always first to engage)
- Linguistic fingerprinting (similar comment patterns across accounts)
- Reciprocal engagement loops (the same accounts engaging each other)
### Consequences
### What LinkedIn Does
- Shadow banning affects ALL future content (not just the flagged post)
- Reach penalties persist for 90+ days
- Can take 6+ months to recover algorithmic trust
- Some accounts never fully recover
### The Math Has Changed
- **Old:** Pod engagement boosted first-hour metrics → more reach
- **New:** Pod engagement triggers detection → permanent reach penalty
- Pod-style auto-comments are demoted out of "Most Relevant"
- Their reach is scoped to your own network — it stops spreading beyond it
- Repeat offenders get restricted
**Pods now hurt more than help.** Build authentic communities instead:
- Genuine relationships with 3-5 aligned creators