diff --git a/docs/hardening/log.md b/docs/hardening/log.md index 1d21b69..7b5ed7e 100644 --- a/docs/hardening/log.md +++ b/docs/hardening/log.md @@ -2088,3 +2088,66 @@ canonical file's in-file phrase scrub is done, so S29e is now a pure rename + po remaining FORM A inside the file. --- + +### S29d terminology-scrub — "thought leadership" → neutral (`skills/` + `config/` + `assets/` + `hooks/`-test) + +**CLASS: terminology-scrub** (NOT re-hardening — surgical removal of the operator-banned brand phrase +"thought leadership", FORM A, from the remaining surfaces; memory `no-thought-leadership-phrase`). Fourth +sub-pass of the plugin-wide S29 scrub. SCOPE inherits the S29a-S29c operator-lock verbatim (FORM A only; +FORM B untouched; per-directory sub-pass, map approved before edit). + +**TEST (tool-grounded).** `grep -in "thought leader"` (A+B) across the S29d scope — `skills/`, `config/`, +`assets/`, `README.md`, `CLAUDE.md`, `hooks/prompts/`, `hooks/scripts/__tests__/clipboard-helper.test.mjs`, +and the forward-looking docs (`docs/integration-test-guide.md`, `docs/expert-review/plan.md`). Result: +**8 FORM A instances / 7 files** + **8 FORM B** + 21 hyphenated filename pointers (S29e). The forward- +looking docs were clean. The test fixture (`clipboard-helper.test.mjs:61`) was included deliberately — +STATE pre-listed it. Anchor-check: `\bTL\b` / `value test` in scope = NONE; a broad `(#…thought…)` +anchor-link grep across the whole plugin = **NONE**, so renaming the three skill headers breaks no internal +link (the S29c anchor grep started with `#thought-leadership` and would have missed +`#step-2-identify-thought-leadership-angles`; this run used a `thought`-anywhere anchor pattern). The only +text cross-refs to the changed header phrases were the three instances being edited. + +**HARDEN (8 edits, 6 files — 1:1).** Vocabulary consistent with S29a-S29c. +- `skills/linkedin-content-creation/SKILL.md` (3): :75 "### Step 2: Identify Thought Leadership Angles" → + "Identify Content Angles"; :109 "**Standard Thought Leadership Post (…):**" → "**Standard Post (…):**" + (matches the S29a/S29c "Standard Post Structure" equivalent); :192 "**Axis 2: The 8 Thought Leadership + Angles**" → "The 8 Content Angles". (lines 77/193 filename pointers → S29e.) +- `skills/linkedin-strategy/SKILL.md:176` phase-focus cell "Thought leadership, cross-platform" → + "Signature content, cross-platform" (judgment-call; the Authority phase's column-1 is already + "Authority", so "Signature content" avoids the echo). +- `config/user-profile.template.md:35` "1. [ ] Build thought leadership & authority" → "Build authority & + influence" (judgment-call; "& authority" already present, so a straight map would duplicate). +- `assets/checklists/quality-scorecard.md:136` "Passes thought leadership test:" → "Passes Authority Value + Test:" (consistent with the renamed test; its 3 questions ARE the Authority Value Test). (line 132 + buzzword denylist = FORM B, untouched.) +- `assets/case-studies/case-study-template.md:173` "**Best for:** Thought leadership, showing expertise" → + "Authority content, showing expertise". +- `hooks/scripts/__tests__/clipboard-helper.test.mjs:61` unicode fixture "'🚀 Thought leadership → impact'" + → "'🚀 Authority → impact'" (judgment-call; the test asserts unicode/emoji handling — 🚀 + → retained, so + coverage is unchanged; pathguard allows `__tests__/*.mjs`). + +**KEPT BY DESIGN (FORM B = 8, operator-locked).** Five buzzword-denylist entries that MUST list the banned +word "thought leader" (`skills/linkedin-studio/SKILL.md:78`, `assets/checklists/quality-scorecard.md:132`, +`CLAUDE.md:124`, `README.md:217`, `hooks/prompts/content-quality-gate.md:13`) + three role usages +(`skills/linkedin-networking/SKILL.md:9` & `:185`, `README.md:158` "niche thought leaders"). + +**VERIFY.** +- Re-grep final FORM A `thought leadership` (space) in the S29d scope → **NONE**. +- FORM B in scope = **8**, unchanged. +- Filename pointers `thought-leadership-angles.md` in scope = **21**, unchanged (S29e). +- New terms present (1:1 with edits): "Identify Content Angles", "Standard Post", "The 8 Content Angles", + "Signature content, cross-platform", "Build authority & influence", "Authority Value Test", "Authority + content, showing expertise", "🚀 Authority → impact". +- `node --test clipboard-helper.test.mjs` → **pass 13 / fail 0** (the fixture change kept the test valid). +- `bash scripts/test-runner.sh` → `Passed: 81 · Failed: 0 · Warnings: 0`, **exit 0**; counts + **29/19/26/6** + v0.5.0 unchanged. +- Disposition: **FIXED** (8 edits, 6 files). Commit `b804a04` (local; push held — the STATE.md-tracking + commit `773340b` is parked at the tip, so a normal push would carry it; awaiting operator decision). + +**SURFACED (queued, not swept).** Remaining S29 queue: **S29e** rename `thought-leadership-angles.md` → +`content-angles.md` + all pointers (atomic; filename locked; the file's in-file FORM A is already gone, so +S29e is a pure rename + pointer-update). After S29e: **S30** magnitude-scrub. The plugin-wide FORM A scrub +is now complete except the canonical filename itself (S29e) and the one kept ironic quote +(`references/video-strategy-guide.md:429`). + +---