Install any skill in seconds. Free to start, no credit card required.
Get Started Free →INTERNAL SUBROUTINE — semiotic / fanout audit on a concept rename, deprecation sweep, or doc-vs-code consistency check. Walks all carriers (filenames, manifests, stale refs, review surfaces, dashboards, prompts) until fixed-point clean, because one-shot text replacement creates rework when carriers diverge. Manual invocation only. Do not auto-select for general work — for code review use Claude Code review; for FPF reasoning about decisions use h-frame / h-decide.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 98% | 0% |
You are running the semiotic fanout audit per FPF X-FANOUT-AUDIT and the semiotics_slideument discipline. The premise: on concept rename / deprecation / spec consistency check, the change must sweep ALL carriers — prose, filenames, manifests, review bundles, provenance, tests, schemas — until fixed-point clean. Skipping carriers leaves zombie references that mislead future operators and agents.
Explicit-only — disable-model-invocation: true.
What CONCEPT or TERM is being renamed / deprecated / audited? Get it from the operator explicitly. Bad: "audit the docs"; good: "rename Service to EnablingSystem across docs and code".
If renaming, capture both old and new names. If deprecating, capture the old name and the replacement (or explicit "no replacement").
Run discovery across all carrier surfaces:
bash# Prose carriers grep -rl "<term>" --include="*.md" --include="*.txt" --include="*.rst" # Code carriers grep -rl "<term>" --include="*.go" --include="*.py" --include="*.ts" --include="*.tsx" --include="*.rs" \ --include="*.java" --include="*.js" --include="*.jsx" # Manifest carriers grep -rl "<term>" --include="package.json" --include="Cargo.toml" --include="pyproject.toml" \ --include="go.mod" --include="*.yaml" --include="*.yml" --include="*.toml" # Filenames find . -name "*<term>*" -not -path "./node_modules/*" -not -path "./.git/*" # Test fixtures grep -rl "<term>" --include="*_test.*" --include="*.test.*" --include="testdata/*" # Review bundles & specs grep -rl "<term>" .haft/ docs/ .context/ 2>/dev/null
Build a carrier-by-carrier inventory. Every hit is a potential semio failure if the rename / deprecation doesn't sweep it.
For every hit, classify the statement type (per FPF X-STATEMENT-TYPE):
This matters because rename behavior differs per type:
mcp__haft__haft_query(action="search", query="<term>"))Look for cases where the term being renamed already has a DIFFERENT meaning elsewhere in the codebase. Example: renaming Service to EnablingSystem — but Service already means something else in auth/ (HTTP service vs FPF enabling system).
For each ambiguous hit, ask the operator whether this hit is in-scope for the rename.
The inverse: look for cases where the OLD concept appears under different aliases. Example: renaming Service to EnablingSystem — but the same concept might also be called Creator, Builder, Producer in different carriers. Surface aliases for operator decision.
Output as ordered repair list:
Fanout repair plan for rename "<old>" → "<new>":
Phase A — Definitional carriers (update first):
- docs/glossary.md (Rule)
- .haft/specs/term-map.md (Rule)
- internal/types/service.go:42 (Rule — Go type declaration)
Phase B — Reference carriers (update after definitions stable):
- internal/auth/handler.go:80 (uses term in implementation)
- internal/auth/handler_test.go:120 (test fixture)
- README.md:55 (prose explanation)
Phase C — Manifest carriers:
- internal/auth/_meta.yaml:3
- pyproject.toml:14
Out of scope (different concept, same name):
- internal/network/service.go (HTTP service abstraction, not FPF EnablingSystem)
Aliases to disambiguate (operator decision):
- "Creator" appears in 4 files — operator confirm: is this the same concept?After the operator (or downstream agent) applies the repair plan, re-run discovery. Repeat until grep returns zero unexpected hits. Per X-FANOUT-AUDIT: not iterating to fixed-point is the failure mode.
Present:
The operator decides what to act on. This skill stops at audit + recommendation — it does NOT execute the renames.
Look up via mcp__haft__haft_query(action="fpf", query="X-FANOUT-AUDIT"). The semiotics_slideument in .context/semiotics_slideument.md carries the human-facing rationale.
Other measured skills in the registry, with their headline benchmark lift.