docs(linkedin-studio): S29a hardening log entry — terminology-scrub commands/

Append the S29a verification record to docs/hardening/log.md (anchored
"### S29a terminology-scrub" entry, matching S27/S28 format): scope decisions
locked for all S29 sub-passes a–e (FORM A only; surface + forward-docs; history
untouched; per-directory sub-passes), the 15-edit replacement map, and the
verify block (assertive non-filename FORM-A in commands/ = NONE; FORM B
unchanged; gate 81/0/0; counts 29/19/26/6 unchanged). Documents fix commit
9d83dbc.

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 22:40:34 +02:00
commit 1a88972362

View file

@ -1892,3 +1892,60 @@ files (`linkedin-growth-playbook`, `glossary`, `engagement-coach`, `firsthour`,
`ab-testing-framework`, `poll-strategy-guide`). Pod/AI-slop "penalized" stays intact (officially confirmed).
---
### S29a terminology-scrub — "thought leadership" → neutral (`commands/`)
**CLASS: terminology-scrub** (NOT re-hardening — surgical removal of the operator-banned brand phrase
"thought leadership", FORM A, from the user-facing command surface; memory `no-thought-leadership-phrase`).
First sub-pass of the plugin-wide S29 scrub. Predicate: no command surface uses the phrase "thought
leadership"; the plugin is named **LinkedIn Studio**.
**SCOPE (operator-locked for ALL S29 sub-passes ae).**
- **FORM A only** ("thought leadership"). **FORM B** ("thought leader(s)" as role — 38 plugin-wide,
incl. the buzzword denylist `post.md:134`) = **untouched**.
- **Layers = user-facing surface + forward-looking docs.** Pure history (CHANGELOG, `hardening/log.md`+
`plan.md`, `voyage-build/*`, `remediation/*`) = untouched ("history → git"). Forward docs =
`docs/integration-test-guide.md` + `docs/expert-review/plan.md`.
- **Per-directory sub-passes, one per session.** Replacement map approved BEFORE edit.
- FORM A baseline = **140 in `.md`** (99 surface + 41 history) + 1 test-`.mjs`.
**TEST (tool-grounded).** Plugin grep `thought.leadership` (case-insensitive). `commands/` = 26 hits;
split: **11 filename pointers** to `references/thought-leadership-angles.md` (`post×3, video×2, batch×2,
react×1, pipeline×2, competitive×1`) → deferred to **S29e** (atomic rename + pointer update);
`competitive.md`/`pipeline.md` carry only pointers → untouched here. **15 in-file phrase occurrences** in
9 files = S29a scope. Read-and-show of all 15 in context before proposing the map.
**HARDEN (15 edits, 9 files — 1:1).**
- `post.md` (4): `:21` "LinkedIn thought leadership content creator" → "LinkedIn content creator";
`:64` "Select Thought Leadership Angle" → "Select Content Angle"; `:98` "Standard Thought Leadership
Structure" → "Standard Post Structure"; `:136` "thought leadership test" → "the insight test".
- `video.md` (1): `:146` "8 thought leadership angles" → "8 content angles".
- `strategy.md` (3): `:67` "thought leadership & authority" → "authority & influence"; `:234` table row
"Thought leadership pieces" → "Signature pieces"; `:395` "[Thought leadership milestone]" → "[Authority
milestone]".
- `batch.md` (1): `:113` "[thought leadership angle]" → "[content angle]".
- `setup.md` (2): `:256` "Which thought leadership angle" → "Which content angle"; `:323` "thought
leadership & authority" → "authority & influence".
- `react.md` (1): `:22` "into thought leadership posts" → "into insightful posts".
- `outreach.md` (1): `:813` "Demonstrate thought leadership depth" → "Demonstrate subject-matter depth".
- `onboarding.md` (1): `:18` "a LinkedIn thought leadership onboarding guide" → "the LinkedIn Studio
onboarding guide".
- `monetize.md` (1): `:18` "turn their thought leadership into revenue" → "turn their LinkedIn authority
into revenue".
**VERIFY.**
- Re-grep final, assertive non-filename FORM-A in `commands/` (`grep -v thought-leadership-angles`) →
**NONE**. Remaining `commands/` hits = 11, all filename pointers (S29e).
- FORM B in `commands/` count = **15**, unchanged (incl. `post.md:134` denylist).
- `git diff --stat` = **9 files, +15/15** (1:1, no collateral).
- `bash scripts/test-runner.sh``Passed: 81 · Failed: 0 · Warnings: 0`, **exit 0**; counts
**29/19/26/6** + v0.5.0 unchanged.
- Disposition: **FIXED** (15 edits, 9 files). Commit `e6db0dd`; pushed 2026-06-19 22:38 (operator OK, in
window).
**SURFACED (queued, not swept).** S29 remaining sub-passes: **S29b** `agents/` ← next · **S29c**
`references/` (in-file phrase; `thought-leadership-angles.md` body scrubbed but FILE renamed in S29e) ·
**S29d** `skills/`+`config/`+`assets/`+`README.md`+`CLAUDE.md`+`hooks/prompts/`+forward-docs+test-`.mjs` ·
**S29e** rename `references/thought-leadership-angles.md` + all 20 pointers atomically (new filename TBD).
---