Your AI Setup — Deep Audit
Granular pass over every visible control plus the former blind spots · 28 agents, adversarial verification on every proposal · July 16, 2026 · original macro report
16,847tokens auto-loaded into every session
60 / 206registered skills ever invoked (45 days)
198 / 215memory files actually cited
206wiki pages, usage mapped per page
123verified proposals (#7–129)
9findings killed by adversarial verify
What loads into every session (run receipt)
Measured from the live files. The instruction chain itself is lean — the weight is the memory index and the skill catalog.
| global CLAUDE.md | 5,083 |
| workspace CLAUDE.md | 357 |
| biv.md (imported) | 7,323 |
| MEMORY.md index | 19,364 |
| skill catalog descriptions (est) | 35,263 |
| Total ≈ 16,847 tokens/session | 67,390 B |
Macro changes #1–6 (from the first pass, still pending)
- Regenerate or retire
AGENTS.md (Codex mirror; broken import)
- Regenerate or retire
.agents/skills/biv-workspace/SKILL.md (sed-damaged copy)
- Declare the Claude fact-checker file owner; regenerate the Codex TOML from it
- Remove stale worktree
.claude/worktrees/wiki-cloud-compute (715 duplicate controls)
- Delete shipped ai-digest plan (git history is the archive)
- Delete shipped ai-digest design spec
How to approve: reply (chat or Dub notes) with numbers — “Approve 4, 7, 41–53. Leave 17.” Ranges and “all RETIREs in memory” both work. Verdicts: RETIRE delete · UPDATE fix stale content · CONSOLIDATE merge to one owner · RELOCATE move to right home · DISABLE turn off, keep installed · FLAG your judgment call.
Core instructions & settings #7–16
biv.md header import claim (~/Agent Workspace/.claude/biv.md, line 2)
Loads every workspace session (7,323 B)
Proposal Rewrite the header to current truth: imported only by ~/Agent Workspace/CLAUDE.md. Then decide (see git-duplication FLAG) whether biv repos should actually load the manual — today fleet agents in biv repos never get Delivery, Wrangler, Hard stops, or Task capture rules despite the header claiming they do.
Evidence & risk
Evidence Header: "@imported by ~/Agent Workspace/CLAUDE.md and by each biv repo's CLAUDE.md (a line @~/.claude/biv.md)". Verified: /Users/bradleyberkman/.claude/biv.md does not exist, and grep for "biv.md" across every CLAUDE.md under ~/code and ~/Scripts finds zero references (biv-dub's CLAUDE.md points only to ~/.claude/CLAUDE.md; biv-app/rates/systems/campaign-reports/proposals have none). ~/.claude/CLAUDE.md line 36 says the opposite and matches reality.
Risk Rules like /cb, hard stops, and wrangler limits silently don't apply in biv repo sessions while the doc claims they do.
Git rules duplicated: ~/.claude/CLAUDE.md 'Git (braininavatgroup)' paragraph vs biv.md '## git' section
Both load every workspace session
Proposal Question for Bradley: which is SSoT? A: wire biv.md into biv repos as its header claims (real repo imports or a ~/.claude/biv.md mirror) and shrink the global paragraph to a pointer. B: keep the global paragraph as the cross-repo copy and strip the duplicated bullets from biv.md. Global block is marked 'locked 2026-06-28' — needs his call.
Evidence & risk
Evidence Both carry the same rules: branch off origin/main (fetch first), <type>/<ticket-id>-<slug> naming with identical closed type set, auto-merge on green / never wait on a merge, sensitive paths (.github/, .claude/, CLAUDE.md, launchd, billing, governance) route to the biv-app tap. biv.md adds no-draft-PRs and ClickUp trailer detail. In workspace sessions both load — ~1.5 KB duplicated.
Risk Two copies drift; today the global copy is the ONLY one reaching biv repo sessions, so trimming the wrong one loses coverage.
chrome-devtools MCP references: allow `mcp__chrome-devtools__*` (global settings.json) + enabledMcpjsonServers entries in both settings.local.json files
Zero possible uses (no server)
Proposal Delete mcp__chrome-devtools__* from ~/.claude/settings.json allow and "chrome-devtools" from both enabledMcpjsonServers arrays (or drop the arrays entirely given enableAllProjectMcpServers: true).
Evidence & risk
Evidence No chrome-devtools server configured anywhere: workspace .mcp.json = [airtable, n8n-mcp, supabase, omnifocus, google-workspace]; ~/.claude.json = global [exa, firecrawl], project-scoped [drafts, dub]. Browser automation runs via claude-in-chrome and the playwright plugin. Global settings.local.json also sets enableAllProjectMcpServers: true, making both enabledMcpjsonServers lists redundant wholesale.
Risk None — server doesn't exist; entries inert.
image-generator MCP references: workspace settings.local.json enabledMcpjsonServers + two allow entries in ~/.claude/settings.json
Zero possible uses (no server)
Proposal Delete the two allow entries from ~/.claude/settings.json and "image-generator" from workspace settings.local.json enabledMcpjsonServers.
Evidence & risk
Evidence mcp__image-generator__text-to-image and __generate_ai_image allowed in ~/.claude/settings.json (lines 31, 38), "image-generator" enabled in workspace settings.local.json — but no image-generator server exists in workspace .mcp.json, ~/.claude.json global, or any project-scoped mcpServers block (verified by walking every mcpServers key).
Risk None — inert entries.
Legacy Drafts MCP tool names in ~/.claude/settings.json allow: mcp__drafts__search_drafts_db, get_all_drafts, get_draft, create_draft, connection_status, insert_text, connect_document
Zero possible uses (tool names don't exist)
Proposal Delete the seven stale unprefixed mcp__drafts__* entries; keep the drafts_*-prefixed ones.
Evidence & risk
Evidence The configured @agiletortoise/drafts-mcp-server (project-scoped in ~/.claude.json line 1275) exposes only drafts_*-prefixed tools (drafts_get_draft, drafts_create_draft, …), which are separately allowlisted in the same file (lines 57-60, 64). The seven unprefixed names match no live tool — leftovers from an older drafts server.
Risk None — names match no live tool.
12RETIRE
confirmed (proposal adjusted by verifier)
context7 allows + ECC_DISABLED_HOOKS env for disabled plugins (~/.claude/settings.json)
Plugins disabled; entries inert
Proposal Remove the two context7 allow entries and the ECC_DISABLED_HOOKS env var. KEEP the two `: false` enabledPlugins lines — both plugins are still installed (cache + marketplace dirs present), and removing the entry for an installed plugin risks it reverting to enabled rather than staying off.
Evidence & risk
Evidence Allow list has mcp__plugin_context7_context7__resolve-library-id and __query-docs (lines 32-33) while enabledPlugins sets context7@claude-plugins-official: false (line 380). env ECC_DISABLED_HOOKS="pre:observe,post:observe" (line 4) only tunes everything-claude-code hooks, and that plugin is also false (line 382).
Risk Trivial re-add if either plugin is ever re-enabled.
Stale Skill() and Notion allows in ~/.claude/settings.local.json (dev:state, n8n:*, feedback:log-reply, Notion notion-fetch)
0 mined invocations; skills/plugin nonexistent
Proposal Delete these 8 allow entries from ~/.claude/settings.local.json.
Evidence & risk
Evidence Entries: Skill(dev:state), Skill(n8n:list-workflows[:*]), Skill(n8n:get-workflow[:*]), Skill(feedback:log-reply[:*]), mcp__plugin_Notion_notion__notion-fetch. ~/.claude/commands has no dev/, n8n/, or feedback/ dirs (verified ls), and no Notion plugin in enabledPlugins or any mcpServers config. None appear in 45 days of skill_invocations.
Risk None — targets don't exist.
14CONSOLIDATE
confirmed (proposal adjusted by verifier)
Redundant granular permissions shadowed by blanket grants (~/.claude/settings.json + ~/.claude/settings.local.json)
Entries never consulted while blanket grants exist
Proposal As proposed, but do NOT touch the Skill(...) and mcp__* entries in the workspace settings.local.json that have no blanket equivalent (e.g. Skill(utilities:dub), firecrawl tools) — only Bash/WebFetch/Read/Write/Edit granular entries are truly shadowed.
Evidence & risk
Evidence settings.json allows blanket "Bash" (line 9) and Read/Write/Edit/Glob/Grep/WebFetch/WebSearch (lines 40-46), making inert: ~30 granular Bash(...) entries in settings.local.json, 13 WebFetch(domain:...) entries across both files, scoped Read/Edit/Write entries, and Bash(gh api ... statuses/*). additionalDirectories lists "/Users/bradleyberkman" (subsumes Downloads, .claude/commands, .claude/agents) and ".../Agent Workspace/.claude/skills/ops" which does not exist.
Risk Low — behavior unchanged; if blanket grants are ever narrowed the granular list would need rebuilding from transcript mining.
Workspace settings.local.json one-off leftovers: Bash(rm -rf ~/code/biv-tools) and the tools.braininavat.dance curl probe
One-off; target deleted
Proposal Delete both entries from /Users/bradleyberkman/Agent Workspace/.claude/settings.local.json.
Evidence & risk
Evidence ~/code/biv-tools no longer exists (ls: No such file or directory) — both entries are artifacts of a completed biv-tools retirement. A standing allow for rm -rf on a specific path shouldn't linger past its one use; biv.md's own rule says retirements aren't done until config mentions are swept.
Risk None — target path gone; inert under blanket Bash anyway.
16UPDATE
confirmed (proposal adjusted by verifier)
Duplicate voice config keys in ~/.claude/settings.json: "voice": {enabled, mode} and top-level "voiceEnabled": true
n/a (config cruft)
Proposal First confirm which key the current Claude Code version reads (toggle voice via /config and diff settings.json to see which key changes), then delete the other. If the structured "voice" object is the live key, delete "voiceEnabled" as proposed.
Evidence & risk
Evidence Both present (lines 391-394 and 406); "voiceEnabled" is the legacy flat form of the structured "voice" object — one is dead config.
Risk None — same value either way today.
Contradictions, wrong location & missing rules #17–24
Main-push rule strength: ~/.claude/CLAUDE.md vs biv.md
Both files load every workspace session; global loads in every session everywhere.
Proposal Exact question for Bradley: is a direct push to main ever authorizable per-instance (biv.md's 'ask first'), or absolute (global's NEVER)? Pick one and align the other file's wording.
Evidence & risk
Evidence Global (~/.claude/CLAUDE.md L14): "NEVER: push or force-push to `main` (open a PR instead)". biv.md (L11): "Still ask first: direct pushes to `main`/`master` (open a PR instead), force-push, any push that discards commits...". One surface makes it absolute, the other makes it ask-first-authorizable.
Risk An agent in a biv repo (where only global loads) refuses an authorized emergency push; an agent in the workspace treats NEVER as negotiable.
18UPDATE
confirmed (proposal adjusted by verifier)
biv-workspace/SKILL.md ClickUp section: DoR bypass + dangling cross-reference
biv-workspace skill invoked 6x in mined sessions; cup-capture 34x.
Proposal As proposed, preferring the inline DoR-gate variant: GSD subagents run autonomously and per feedback_no_interactive_in_autonomous an interactive checklist skill may not fit a subagent loop — inline gate + pointers to biv.md Task capture and the wiki page is safer.
Evidence & risk
Evidence SKILL.md L53: "When discovering bugs, ideas, or decisions during execution, create a ClickUp task: `cup create -n ... -l 901415845617`" — no DoR gate. biv.md L27: capture "only if it passes Definition of Ready; else surface it in chat". Wiki ClickUp (operating model).md L191: "DoR enforced at creation time (`cup-capture` skill walks checklist)". SKILL.md L54: "See CLAUDE.md ClickUp section for the full model" — no ClickUp section exists in workspace CLAUDE.md (7-line stub) or global.
Risk GSD subagents file raw sub-DoR tickets, contradicting the triage model.
Wiki page `4 Foundation/Agent operating rules (CLAUDE.md).md` stale after the 2026-06-28 chain split
44 wiki citations.
Proposal Rewrite the page to describe the three-file chain (global -> workspace stub -> biv.md) and what lives where; fix authority-ref; bump last-verified.
Evidence & risk
Evidence last-verified: 2026-04-22; authority-ref points only at workspace CLAUDE.md and claims it contains "Who Bradley is + communication norms ... Brand conventions ('BiV', 'Brain in a Vat') ... Developer profile". The workspace CLAUDE.md is now a 7-line pointer stub; those contents live in ~/.claude/CLAUDE.md (locked 2026-06-28), biv.md, and biv-workspace SKILL.md (brand conventions). No 'Developer profile' exists anywhere in the chain.
Risk Agents doing wiki-first research get a wrong map of where operating rules live.
Safety/verification rules duplicated verbatim between biv-workspace SKILL.md and the CLAUDE.md chain
biv-workspace invoked 6x.
Proposal Surviving owner: the CLAUDE.md chain (global + biv.md). Strip the duplicated Safety Rails/Verification bullets from SKILL.md, keeping only its unique content (naming/brand, Airtable data rules, commit routing, context-file map, ClickUp IDs).
Evidence & risk
Evidence Discord kill-exclusion verbatim in biv.md L21 and SKILL.md L26 ("exclude the discord agent (`grep -v 'plugins/cache.*discord'`)"). Client-facing deploy rail: biv.md L20 vs SKILL.md L24 (same three surfaces). Verification bullets: global CLAUDE.md L22 vs SKILL.md L19-20 ("truth lives in the running system", "'proven'... load-bearing"). Subagents inherit claudeMd (wiki page L38), so the copies are redundant and can drift.
Risk Next edit to one copy silently forks the rule (already visible: SKILL.md lacks biv.md's launchd/GH-Actions carve-out on the deploy rail).
21UPDATE
confirmed (proposal adjusted by verifier)
biv.md hard stops: dangling money-path pointer
Money-path approval lane.md: 649 wiki citations.
Proposal Add the one-line money-path hard stop (billing/Stripe/creator-payout actions need explicit per-instance authorization; creator payments only from BiV business accounts) but do NOT cite Money-path approval lane.md as the payments detail — it's the PR-gate doc. Point at the agent-inbox approval surface or keep the rule self-contained.
Evidence & risk
Evidence biv.md L11 (git): "anything touching a client-facing surface or money path (hard-stops below)" — but the '## Hard stops' section (L19-24) contains no money-path entry at all; the lane is documented only in wiki 'Money-path approval lane.md' (649 citations — heavily load-bearing).
Risk An agent scanning Hard stops for the promised money-path rule finds nothing and proceeds on a payment surface.
Ephemeral-worktree rule absent from biv.md git section (agents re-learn it constantly)
124 combined memory citations across the two files.
Proposal Promote one sentence into biv.md git section: all branch work in an ephemeral worktree off origin/main (worktree add -> PR -> worktree remove); primary trees of agent-workspace and ~/Scripts hard-block non-main commits.
Evidence & risk
Evidence feedback_ephemeral_worktrees_universal.md (60 citations) + head-race sibling (64): "Do ALL branch work in an ephemeral git worktree created off origin/main ... Never `git checkout -b` inside the long-lived working copy"; a biv.worktreeGuard pre-commit hook BLOCKS non-main commits in ~/Agent Workspace and ~/Scripts (known trap: push succeeds, commit blocked, empty remote branch). biv.md git (L12) says only "branch off origin/main" — no worktree mention.
Risk Every fresh/dispatched agent without the memory file branches in-tree, hits the guard or causes fleet drift (2026-07-13 audit: biv-app 22 behind, 4 repos parked).
biv-agent[bot] PR authoring + push-all-before-PR absent from biv.md git section
154 memory citations; PR flow exercised in nearly every coding session.
Proposal Add two lines to biv.md git: (1) author agent commits/PRs as biv-agent[bot] via ~/Scripts/lib/gh-app-token.sh (canonical doc: ~/Scripts/governance/agent-identity.md); (2) push every commit BEFORE `gh pr create` — auto-merge is instant and late pushes are orphaned.
Evidence & risk
Evidence reference_biv_agent_pr_authoring.md (154 citations, top non-project memory): agent commits MUST author as biv-agent[bot]; auto-merge fires within seconds so "Only commits pushed *before* PR creation make it into main" (orphan incidents 2026-06-19, 2026-07-02); "a spawned subagent does NOT inherit your loaded memory, so it authors as bradleybiav by default" and its PR stalls. biv.md L10-14 covers the PR flow but names neither rule.
Risk Rule currently lives only in session memory, which subagents provably don't inherit — the exact failure mode the memory file documents twice.
biv.md Wrangler section missing the standing-authorized biv-eph-* ephemeral Pages lane
Memory file created this week (6 citations already); review-HTML output is a frequent deliverable.
Proposal Amend biv.md Wrangler/hard-stop wording: pre-authorized lanes = secret rotation (already listed) AND biv-eph-* ephemeral deploys via ~/Scripts/deploy-ephemeral.sh; explicit go-ahead applies to client-facing/named surfaces.
Evidence & risk
Evidence feedback_ephemeral_cf_pages_for_review_artifacts.md (2026-07-16): deploy-ephemeral.sh -> `biv-eph-*` throwaway Pages projects are "structurally never client-facing" and "an `autoMode.allow` classifier rule in ~/.claude/settings.json standing-authorizes these deploys". biv.md L20 reads "a session `wrangler pages deploy` needs explicit go-ahead" with no carve-out — the ambiguity already caused an agent to fall back to a claude.ai Artifact instead of deploying.
Risk Agents keep refusing or misrouting a lane Bradley explicitly authorized on 2026-07-16.
Hooks #25–26
25FLAG
confirmed (proposal adjusted by verifier)
NotchBar AgentStatus hook — claude-event-hook.sh (wired in all 8 hook event blocks)
Fires on every tool call and session event in every Claude Code session; delivery unverifiable (no listener at probe time).
Proposal Sharpen the question with pref evidence: Bartender's own plist shows last hook received 2026-06-24 13:09 — dead 3+ weeks, not intermittent. If retiring: Bartender installed these hook entries itself, so also disable the agentStatus provider in Bartender's NotchBar settings, otherwise Bartender may reinstall them into settings.json.
Evidence & risk
Evidence ~/.claude/settings.json wires '/Users/bradleyberkman/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' into Notification, PostToolUse, PostToolUseFailure, PreToolUse, SessionEnd, SessionStart, Stop, and UserPromptSubmit. The script POSTs state to http://127.0.0.1:7823/event — but at audit time nothing listens on 7823 (lsof empty; curl probe fails) even with Bartender Pro running. Script untouched since 2026-06-22.
Risk If the widget listens only intermittently (e.g. when NotchBar is visible), removing the hooks kills a live status display; the hook is fail-silent so current cost is only per-tool-call subprocess overhead.
~/Scripts/maintenance/hooks/session-touch-tracker.sh — stale header doc
start/post modes fire in every session via SessionStart and PostToolUse(Bash|Edit|Write); end mode fires via the checkpoint wrapper.
Proposal One-line fix in the tracked source (~/Scripts repo): change the SessionEnd line of the header to say 'end' mode is invoked via session-end-checkpoint.sh, not directly from settings.json. Functional wiring is correct; only the doc drifted.
Evidence & risk
Evidence Header comment says it is invoked from settings.json as 'SessionEnd: session-touch-tracker.sh end', but settings.json SessionEnd actually wires ~/.claude/hooks/session-end-checkpoint.sh, whose own comment states it 'REPLACES the bare session-touch-tracker.sh end call in settings.json SessionEnd' (it runs the checkpoint first, then re-pipes stdin to the tracker's end mode).
Agent definitions #27–27
27RETIRE
confirmed (proposal adjusted by verifier)
~/.claude/agents/_retired/ (empty directory)
Zero contents, zero references anywhere.
Proposal rmdir /Users/bradleyberkman/.claude/agents/_retired — no commit needed: git never tracked the empty directory (git ls-files shows nothing, status clean), so removal produces no diff in the agents repo.
Evidence & risk
Evidence Empty since Apr 14 2026 (`ls -la` shows zero entries). The biv operating manual's hard stops say: "Dead code gets git rm'd, not moved to _archive/ — git history is the archive. No graveyard subdirs." This is exactly such a graveyard stub, now holding nothing.
Risk None — directory is empty; git history preserves anything ever retired through it.
BiV skills (commands/, A–M) #28–33
28FLAG
confirmed (proposal adjusted by verifier)
commands/biv/ship-and-verify.md
0 invocations in 45 days of transcripts; mtime 2026-06-15
Proposal Keep the question as proposed. Add: the skill lives in the biv-skills repo (~/.claude/commands is that repo); if retired, run retire-sweep — system-map/wiki/3 Capabilities/Claude Code Skills.md line 82 cites the biv namespace as 'Deploy helpers (ship-and-verify)'.
Evidence & risk
Evidence Line 36: "git push origin <branch> to the bradleybiav remote (pre-authorized per CLAUDE.md)" — actual remote is origin -> braininavatgroup/biv-app (verified via git remote -v), and the current manual says direct pushes to main require asking first ("open a PR instead"). The skill's whole flow (Step 1 requires being ON main, Step 3 pushes to it) rests on a pre-authorization that no longer exists in the instruction chain.
Risk An agent following this skill would direct-push to main on biv-app believing it's pre-authorized, bypassing the PR + auto-merge lane.
29UPDATE
confirmed (proposal adjusted by verifier)
Stale Google Workspace MCP tool names in 5 skills (audit-contacts, sweep, health-check, sprint-brief, ops/briefing)
Mixed: health-check 5x, audit-contacts 1x, sweep 1x, briefing 33x, sprint-brief 0
Proposal Sweep PR in biv-skills as proposed, but it is not a pure rename: get_gmail_thread_content → readGmailThread, get_gmail_message_content → readGmailMessage, but get_gmail_messages_content_batch has NO batch equivalent — audit-contacts' batch metadata step (line 46) and its subagent prompt need rewording to per-message readGmailMessage/readGmailThread calls.
Evidence & risk
Evidence clients/audit-contacts.md (frontmatter + subagent prompt, line 46), clients/sweep.md:4, clients/health-check.md:4, clients/sprint-brief.md:4+26-27, ops/briefing.md:4 reference mcp__google-workspace__search_gmail_messages / get_gmail_message_content / get_gmail_messages_content_batch / get_gmail_thread_content — none exist on the live server (real: searchGmail, readGmailMessage, readGmailThread). Newer skills (kickoff/ingest-assets, deal-intake) already use correct camelCase.
Risk audit-contacts hands the dead names to subagents in their prompt; allowed-tools lists naming nonexistent tools may silently fail to whitelist the real ones.
commands/clients/sprint-brief.md
0 invocations in 45 days despite claiming a biweekly cadence
Proposal Question for Bradley: is the biweekly sprint ritual still live? If yes, fix the dead feedback_omnifocus_operations.md refs (live equivalents: feedback_omnifocus_scope / feedback_omnifocus_date_semantics) and bootstrap context/biv/sprint/; if no, retire the skill and its sprint-state apparatus.
Evidence & risk
Evidence Its sprint state file ~/Agent Workspace/context/biv/sprint/current.md does not exist — the entire context/biv/ directory is absent (verified via ls), so no sprint has ever been recorded or the apparatus was cleaned. Lines 111 and 140 cite memory file feedback_omnifocus_operations.md which does not exist in the memory dir. Plus stale Gmail MCP tool names (separate finding).
Risk 12KB skill maintained for a ritual that shows no trace of running; agents reading it inherit a dead memory reference.
31RETIRE
confirmed (proposal adjusted by verifier)
commands/clients/pipeline.md
0 invocations in 45 days; oldest file in clients/ (mtime 2026-04-24)
Proposal Retire via PR in biv-skills + rerun build-index.js. If also git rm'ing fetch-pipeline-snapshot.js: regenerate lib/generated/paths/ bindings (SCRIPT_CLIENT_RELATIONS_FETCH_PIPELINE_SNAPSHOT in scripts.sh/.js/.py) and retire-sweep scripts-registry.md + the wiki CRM automation page.
Evidence & risk
Evidence Output section says "Post to Discord chat_id 1485039833540722719" but allowed-tools is only "Bash, mcp__omnifocus__search_tasks" — no Discord tool, so the skill cannot do what it specifies (and hardcoded chat_ids contradict feedback_notification_routing's biv-notify.sh router). Its territory is covered by /clients:health-check (pipeline+revenue analysis, invoked 5x) and /clients:sprint-brief (deal cards).
Risk Low — read-only overview skill. Check whether ~/Scripts/client-relations/fetch-pipeline-snapshot.js has other consumers before git rm'ing it alongside.
commands/clients/prospects/triage.md
0 invocations in 45 days
Proposal Fix the description to match stdout behavior, delete the Discord-identity leftover, rerun build-index.js. Note that discovery is paused so an empty triage is expected.
Evidence & risk
Evidence Frontmatter description (and thus the generated INDEX.md entry) promises "post summary to Discord", but body Step 5 says "Print the triage summary to stdout for in-session review" — no Discord step exists; the Important section still carries the orphaned bullet "Discord identity is always 'BiV Ops'". It also claims a weekly cadence while memory records the prospect-pipeline cron as disabled (project_prospect_pipeline_paused).
Risk INDEX router advertises behavior the skill doesn't have; agents may add an unsanctioned Discord post to match the description.
commands/clients/health-check.md
5 invocations in 45 days — actively used
Proposal Rewrite the line to the house pattern: resolve base/table IDs from the generated bindings (tables.sh) or schema.js, citing the gotchas wiki page as a reference, not as the base ID. Bundle with the Gmail tool-name sweep PR.
Evidence & risk
Evidence Data Collection line reads: "**Clients** (base ID: `system-map/wiki/4 Foundation/Airtable API gotchas.md`)" — a wiki page path pasted where the base ID or its lookup instruction belongs, apparently from an automated de-hardcoding sweep. The sentence is nonsense as written.
Risk Confuses the agent at the very first data-pull step of a used skill.
BiV skills (commands/, N–Z) #34–40
~/.claude/commands/utilities/cb.md — 'offer proactively' section
22 invocations in 45 days — heavily used, so the wrong guidance is repeatedly loaded
Proposal Rewrite the 'When to offer proactively' section to 'auto-copy the same turn, confirm in one line' so the skill matches biv.md instead of teaching the named anti-pattern.
Evidence & risk
Evidence cb.md: "When to offer proactively ... offer: 'Want me to /cb that?'" — but biv.md Delivery rule says: "/cb is free → automatic, not offered ... 'Want me to cb that?' is the anti-pattern — just do it." Direct contradiction between the skill body and the instruction chain.
Risk Agents that read the skill body keep asking instead of copying — the exact behavior Bradley banned
~/.claude/commands/utilities/dub.md — slug-reuse guidance
24 invocations in 45 days
Proposal Amend the slug paragraph in dub.md Job 1: same-slug upsert only before Bradley has engaged (typo/failed voicing); any post-send addition mints a fresh date-prefixed slug referencing the original. Per feedback_fix_source_not_memory, fix the skill, not just memory.
Evidence & risk
Evidence dub.md (mtime 07-13): "Re-sending the same slug is an idempotent upsert ... reuse it deliberately if you're revising the same Dub." Superseded by memory feedback_dub_fresh_over_upsert (07-15, 33 citations): sent Dubs are immutable, post-send additions = fresh slug; same-slug upsert only for pre-engagement fixes. Sibling dub-digest.md already carries "never reuse a slug — that clobbers his markups"; dub.md itself does not.
Risk An agent following dub.md verbatim upserts a Dub Bradley already marked up, destroying his annotations
36UPDATE
confirmed (proposal adjusted by verifier)
~/.claude/commands/reporting/social-metrics.md — nonexistent MCP tool + stale commit trailer
0 invocations mined, but the backing scraper runs daily in the 3pm pipeline; skill is the manual-judgment lane
Proposal s/create_records/create_record/ in both spots, noting create_record writes one record per call (Phase 6C loops per new CR). For the Phase 8 trailer, don't hardcode another model name — use a placeholder or the harness's current convention so it can't go stale again.
Evidence & risk
Evidence allowed-tools and Phase 6 pattern C both name `mcp__airtable__create_records` (2 occurrences) — the real tool is `mcp__airtable__create_record` (singular; verified against the live MCP tool list). conventions.md warns a stale allowlist "fails silently in headless runs." Also Phase 8 embeds trailer "Co-Authored-By: Claude Opus 4.7 (1M context)" — stale model attribution.
Risk New-CR creation path (Phase 6C) fails when an agent calls the misspelled tool mid-write
37UPDATE
confirmed (proposal adjusted by verifier)
~/.claude/commands/pitch/event-press-release.md — ephemeral reference corpus
0 invocations in 45 days; mtime 2026-05-12
Proposal Delete the Reference-corpus section (voice rules are already distilled into the skill body) — restoring is off the table, the corpus is gone. Also remove or rewrite the 'reference implementation lives in ~/Scripts/google-drive/ (see prior Akumandra session)' sentence: no such script exists, so it can't be repointed — drop it or keep only the documented two-step batchUpdate pattern.
Evidence & risk
Evidence "Reference corpus ... live at `/tmp/akumandra-refs/`" — verified: /tmp/akumandra-refs/ does not exist (reboot-mortal). Also "see prior Akumandra session for the full script" is a chat-session pointer. Both violate conventions.md §3: "Do NOT reference ephemeral paths as authority ... Durable reference material belongs in system-map/raw/ or context/."
Risk "When in doubt, read these" instruction dead-ends; skill still works from its distilled rules
38UPDATE
confirmed (proposal adjusted by verifier)
19 second-half skills still carrying `name:` frontmatter (pitch/*, rag/*, reporting/bef|chain|log-outcome|songstats|submithub|submithub-interpret, research/contact-hunt, wiki/fix)
n/a (frontmatter hygiene)
Proposal One sweep commit in biv-skills removing frontmatter `name:` from all 42 files carrying it (the 19 second-half plus 23 in biv/, clients/, kickoff/, ops/), then `node build-index.js` to regenerate INDEX.md — completing the retirement in one pass instead of half of it.
Evidence & risk
Evidence conventions.md §1: "`name:` — omit it ... redundant weight and a drift landmine ... existing `name:` lines are being retired." Verified via grep: 19 of the ~33 second-half files still have `^name:` while utilities/*, wiki/deep-audit|fold|lint|reconcile, sd/modify, reporting/social-metrics already dropped it.
Risk None functional today; drift risk if a file is moved and name disagrees with path
39UPDATE
confirmed (proposal adjusted by verifier)
~/.claude/commands/utilities/meeting-log.md — Step 4 edits vault note with Edit tool
1 invocation in 45 days
Proposal Keep Edit as the default (note is freshly script-created, rarely open), but add the documented fallback to Step 4: on a 'file modified since read' failure, switch to a single python3 one-pass read→replace→write splice per feedback_obsidian_live_edit_races, and note why Edit is normally safe here. No need to route through the Obsidian CLI.
Evidence & risk
Evidence meeting-log Step 4 uses the Edit tool directly on an Obsidian vault file, while sibling utilities/obsidian.md mandates the Obsidian CLI for edits to existing notes ("won't clobber an open editor buffer") and memory feedback_obsidian_live_edit_races documents Edit breaking against Obsidian auto-save. Two skills give contradictory edit mechanics for the same vault.
Risk Low: marker-block replacement can corrupt or fail if Bradley has the transcript open when the AI step runs
40UPDATE
confirmed (proposal adjusted by verifier)
~/.claude/commands/utilities/beatport-isrc.md — hardcoded Airtable table ID
0 invocations in 45 days; mtime 2026-07-02
Proposal Repoint to the existing binding (CAMPAIGNS in ~/Scripts/lib/generated/airtable/tables.js — confirmed present) or resolve via `node ~/Scripts/airtable/schema.js Campaigns` at run time, and add the biv.md-required live describe_table check before the ISRC write. One-line-ish change; the write-conflict table (empty/equal/differs→halt) stays as-is.
Evidence & risk
Evidence Body hardcodes "Campaigns table: `tbl1Rgv4jR37v5vYS`" — conventions.md §2: skills reference generated bindings, "never literal `tbl…` IDs"; hardcoded IDs are "the single most common skill-rot mode." biv.md also requires live `describe_table` verification before Airtable writes, which the skill omits.
Risk Silent wrong-table failure if the Campaigns table is ever recreated; currently functional
Installed skills (~/.claude/skills/) #41–53
~/.claude/skills/learned/
Zero invocations; cannot load (no SKILL.md).
Proposal Delete the empty directory.
Evidence & risk
Evidence Empty directory — no SKILL.md, no files at all (`ls -la` shows only . and ..), untouched since Mar 15. Not in the loaded skill list, not git-tracked (gitignored).
~/.claude/skills/tts.md (flat file)
utilities:tts invoked 25x; this file 0 (inert).
Proposal Delete; ~/.claude/commands/utilities/tts.md is the surviving owner.
Evidence & risk
Evidence Flat .md in skills root — invalid skill format (needs dir/SKILL.md), so it never loads. Duplicates the active /utilities:tts (~/.claude/commands/utilities/tts.md). Also stale: points API key at ~/.config/tts/elevenlabs_api_key while memory reference_tts_elevenlabs_keychain says the key lives in Keychain.
Risk None — file is inert today.
~/.claude/skills/clipboard.md (flat file)
utilities:cb invoked 22x; this file 0.
Proposal Delete; ~/.claude/commands/utilities/cb.md is the surviving owner.
Evidence & risk
Evidence Flat .md in skills root (inert — not in loaded skill list). Same /cb functionality as the active ~/.claude/commands/utilities/cb.md ('Copy the most recent code block… to the system clipboard with clean formatting').
44FLAG
confirmed (proposal adjusted by verifier)
~/.claude/skills/canvas.md (flat file)
Zero invocations; cannot be invoked at all in current location.
Proposal Keep the question as posed; if Bradley wants it kept, relocate per the slash-command SOP (global commands = SSoT, workspace mirrors) rather than a bare file copy.
Evidence & risk
Evidence Flat '/canvas — Obsidian Canvas Generator' file (Feb 10) in skills root; inert (invalid format, not in loaded skill list). Unlike tts/clipboard it has NO surviving owner — /utilities:obsidian contains zero canvas content (grep confirms).
~/.claude/skills/cloudflare-one/
Zero invocations in 45 days.
Proposal Remove from ~/.claude/skills; reinstall from the Cloudflare skill distribution if a ZT engagement ever appears.
Evidence & risk
Evidence SKILL.md: 'Cloudflare One Zero Trust and SASE work across Access, Gateway, WARP, Tunnel, WAN, DLP, CASB, device posture' — enterprise ZT/SASE deployment design. No BiV surface uses Gateway/WARP/DLP/CASB; his CF footprint is Workers/Pages/DNS. 24KB, installer-managed (gitignored), reinstallable from the Cloudflare distribution.
~/.claude/skills/cloudflare-one-migrations/
Zero invocations in 45 days.
Proposal Remove alongside cloudflare-one; reinstallable.
Evidence & risk
Evidence SKILL.md: 'Plans migrations from Zscaler ZIA/ZPA, Palo Alto, legacy VPN, SWG, or SASE stacks to Cloudflare One.' Zscaler/Palo Alto migration consulting has no connection to any BiV project or client. 16KB, installer-managed.
~/.claude/skills/sandbox-sdk/
Zero invocations in 45 days.
Proposal Remove; reinstallable from the Cloudflare distribution.
Evidence & risk
Evidence SKILL.md: 'Build sandboxed applications for secure code execution… AI code execution, code interpreters, CI/CD systems.' No BiV worker or project builds code-execution sandboxes. 16KB, installer-managed.
~/.claude/skills/workflow-automation/
Zero invocations in 45 days.
Proposal Delete; n8n-mcp is the surviving owner of n8n work.
Evidence & risk
Evidence Description is a generic essay ('Workflow automation is the infrastructure that makes AI agents reliable… n8n optimizes for accessibility') comparing n8n/Temporal/Inngest — no operational content specific to this setup. Actual n8n work is served by the connected n8n-mcp server (validate/autofix/deploy tools). 4KB single file.
~/.claude/skills/web-perf/
Zero invocations in 45 days.
Proposal Remove from activation until/unless the chrome-devtools MCP is ever added; the skill cannot run today.
Evidence & risk
Evidence Hard-depends on a chrome-devtools MCP server that is not installed — SKILL.md itself says 'Try calling navigate_page or performance_start_trace. If unavailable, STOP—the chrome-devtools MCP server isn't configured.' Connected browsers are claude-in-chrome and playwright, neither provides performance_start_trace. 12KB.
~/.claude/skills/turnstile-spin/
Zero invocations in 45 days.
Proposal Remove from ~/.claude/skills; reinstall on the day a form needs bot protection (mirrors developers.cloudflare.com/turnstile/spin, trivially recoverable).
Evidence & risk
Evidence Single-purpose Turnstile/CAPTCHA setup wizard ('add Turnstile, set up CAPTCHA, protect a form from bots'). No BiV surface uses Turnstile today. Largest non-cloudflare vendored tree after clean-my-ai-harness: 172KB.
~/.claude/skills/agents-sdk/
Zero invocations in 45 days.
Proposal Remove from activation; reinstallable from the Cloudflare distribution if an Agents SDK build starts.
Evidence & risk
Evidence Cloudflare Agents SDK build guide (stateful agents, Workflows, DOs on Workers). Adjacent to his stack but no BiV worker uses the Agents SDK, and 45 days of sessions never loaded it. 96KB, installer-managed.
~/.claude/skills/durable-objects/
Zero invocations in 45 days.
Proposal Remove from activation with agents-sdk; reinstall if a stateful-coordination build appears.
Evidence & risk
Evidence Durable Objects authoring/review skill (chat rooms, multiplayer, alarms, SQLite storage). None of the biv workers (stripe-webhook, cf-page-views, px, ops, rates) use DOs. 36KB, installer-managed.
GSD suite surfacing (68 gsd-* dirs)
~9/68 skills used; suite itself is clearly active (26+ invocations).
Proposal Do NOT hand-delete (installer-managed; gsd-update would resurrect). Question for Bradley: run gsd-surface with a minimal profile to hide unused clusters (ns-* launchers, ultraplan/manager/workstreams/profile-user etc.) and cut ~55 unused entries from every session's skill list?
Evidence & risk
Evidence 68 of the 90 skill dirs are gsd-*; only ~9 distinct ones were ever invoked in 45 days (gsd-plan-phase 10, gsd-quick 5, gsd-execute-phase 4, gsd-complete-milestone/cleanup/ingest-docs/debug 2 each, gsd-map-codebase 1). All 68 descriptions load into every session's skill list. gsd-surface exists precisely for this: 'Toggle which skills are surfaced — apply a profile, list, or disable a cluster without reinstall.'
Risk Hiding a cluster he later wants costs one gsd-surface call to restore — low.
Memory corpus (A–F) #54–64
54UPDATE
confirmed (proposal adjusted by verifier)
feedback_bef_openai_endpoint.md
4 memory citations in mining window
Proposal Rewrite in place against the wiki 'Email interpretation (BEF).md' page. If renaming the file, update the MEMORY.md line-79 link; the old slug is also cited in completed .planning artifacts (historical, no sweep needed). Keep the 3-phase pattern + Max-quota semantics.
Evidence & risk
Evidence References `batch-email-feedback-v2.js` exports — ls of ~/Scripts/batch-email-feedback/ shows only batch-email-feedback.js (v2 renamed ~2026-06-12). Cites 'Full spec: ~/Agent Workspace/.audit/2026-04-09/deep-dives/dd3-bef-routing-rebuild.md' — .audit dir no longer exists. BEF is now v3 (wiki 'Email interpretation (BEF v3).md'; sibling memories say 'Mirrors BEF v3'). Filename says 'openai_endpoint' but content is Max-OAuth routing.
Risk Agents following it will look for batch-email-feedback-v2.js and a spec file that don't exist
55UPDATE
confirmed (proposal adjusted by verifier)
feedback_cf_dns_domain_autonomy.md
5 memory citations
Proposal Just edit the memory to biv-rates-only (drop 'biv-tools' as decommissioned). Do not touch biv.md and don't route a question to Bradley — the biv-tools half of the carve-out points at a retired surface.
Evidence & risk
Evidence Says CF code deploys 'outside the standing biv-tools/biv-rates carve-out still need a per-instance go'. Canonical biv.md Wrangler section authorizes only `~/code/biv-rates` (grep of ~/Agent Workspace/.claude/biv.md finds zero 'biv-tools' mentions). The memory grants a wider standing deploy authorization than the instruction file — instruction file wins.
Risk An agent could treat biv-tools deploys as pre-authorized when biv.md does not authorize them
feedback_drafts_creation_method.md
17 memory citations — high-value file otherwise
Proposal Delete the route-output.sh sentence; keep the rest (drafts-create.sh guidance and shared-JS-scope gotcha are current and well-used).
Evidence & risk
Evidence Claims 'For content >1800 chars that would go to Discord, use route-output.sh which auto-routes to Drafts' — ~/Scripts/lib/route-output.sh does not exist and grep across ~/Scripts finds zero remaining references (retired). Everything else verified: drafts-create.sh exists, drafts-preview-send.js is live in the generated paths registry.
Risk Low — agents hunting for route-output.sh waste a lookup
57CONSOLIDATE
confirmed (proposal adjusted by verifier)
feedback_cross_file_consistency.md
0 citations in ~45 days
Proposal Retire the file and remove its MEMORY.md line-27 entry. No sweep of the completed .planning artifacts needed — the rule those docs invoke survives in CLAUDE.md and feedback_adversarial_audit_pass.
Evidence & risk
Evidence Core rule restates ~/.claude/CLAUDE.md Verification bullet: 'Verify references (fields, paths, IDs, names) against the canonical source, not the doc that cites them.' Its only unique evidence (Invoicing.md archived-Talents bug caught by the challenger, missed by 6 auditors) is already in feedback_adversarial_audit_pass.md from the same origin session (db1a81aa). Zero observed citations.
feedback_airtable_names_from_schema.md
21 memory citations — actively load-bearing
Proposal Repoint the base-ID reference to the surviving sources (env-loader.sh, or the wiki 'Airtable (tool reference).md' page); leave the rest intact.
Evidence & risk
Evidence Points at 'context/tools/airtable.md line 4' for the base ID — ~/Agent Workspace/context/tools/ no longer exists (tool docs moved to wiki '4 Foundation/<Tool> (tool reference)' pages per biv.md). context/airtable-schema-key.md and the env-loader fallback it also cites both still exist.
Risk Dead pointer in a frequently-consulted memory
feedback_drift_response_discipline.md
0 memory citations, but the behavioral rule is sound and unique
Proposal Repoint the SSoT-framework reference to the wiki 'SSoT principles.md' page.
Evidence & risk
Evidence States 'The full 5-context SSoT framework lives in context/biv/ssot-principles.md' — that path is gone (~/Agent Workspace/context/biv/ does not exist). The wiki page 'SSoT principles.md' (327 wiki citations in mining) is the current canonical home.
60UPDATE
confirmed (proposal adjusted by verifier)
feedback_docs_are_part_of_done.md
0 memory citations
Proposal Replace the context/tools/*.md checklist line with the wiki '<Tool> (tool reference)' pages AND fix the 'system-map/4 Foundation/' mention to 'system-map/wiki/4 Foundation/' in the same edit.
Evidence & risk
Evidence Its 'pass over' checklist directs doc-sync to 'context/tools/*.md for tools/platforms you interacted with' — the context/tools directory no longer exists; per biv.md, tool configs now live as '<Tool> (tool reference)' pages in the wiki's 4 Foundation tier. 'system-map/' and 'context/airtable-schema-key.md' entries verified still valid.
61UPDATE
confirmed (proposal adjusted by verifier)
feedback_gdrive_clonefile_trap.md
0 memory citations, but correct and safety-relevant (silent 0-byte copies)
Proposal Repoint to wiki 'Google Drive (tool reference).md' AND update the memory body: caller list is now only generate-footer-gifs.sh, and the 'always use the helper' advice must align with the wiki's newer guidance (helper = legacy; prefer Drive API for reading bytes).
Evidence & risk
Evidence Related section: 'See context/tools/google-drive.md "When to use File Stream vs Drive API"' — path gone (context/tools/ removed); wiki has 'Google Drive (tool reference).md'. The helper (~/Scripts/lib/gdrive-safe-copy.sh) and both listed callers verified present.
feedback_creator_payment_scope.md
0 memory citations; the account-scope rule is a money-path safety rule — keep the content
Proposal Drop or replace the dead proposal pointer (keep the is_business=true filter rule inline, which is the durable part) and fix the wikilink slug.
Evidence & risk
Evidence How-to-apply cites 'Option B of ~/Agent Workspace/.planning/creator-cost-reconciliation-proposal.md' — file does not exist (verified). Also carries a mis-slugged wikilink [[project-social-seeding-payment-drift]] (actual file uses underscores).
63UPDATE
confirmed (proposal adjusted by verifier)
feedback_autonomy_gate_model.md
0 memory citations, but it's the governance-model anchor other memories link to
Proposal Remove the dangling [[feedback_afk_must_be_high_leverage]] link only. Do not recreate the memory — it was an intentional 2026-06-16 retirement, not an accidental loss.
Evidence & risk
Evidence Related-links line cites [[feedback_afk_must_be_high_leverage]] — no such file exists anywhere in the memory dir (grep verified; only this dangling reference). The other cited paths (.planning/autonomous-change-governance/SPEC.md, feedback_propose_dont_write, feedback_no_tech_debt_choices) all verified present.
64UPDATE
confirmed (proposal adjusted by verifier)
Memory wikilink slug hygiene (4 files)
Proposal Normalize slugs to exact underscore filenames (dub link → reference_dub_thread_slug_model, drop 'if present' — it exists). In the ephemeral-CF-pages aside, delete only the '[[dead-code-verification-method]] n/a' fragment but KEEP 'see biv.md wrangler rules' — that clause is a load-bearing safety pointer to the hard-stop rules.
Evidence & risk
Evidence Hyphenated [[wikilinks]] that don't match underscore filenames: feedback_cf_pages_secret_redeploy.md → [[feedback-widen-before-declaring-missing]]; feedback_dub_own_aesthetic.md → [[feedback-html-review-ui]]; feedback_dub_fresh_over_upsert.md → [[dub-thread-slug-model]] (actual: reference_dub_thread_slug_model.md); feedback_ephemeral_cf_pages_for_review_artifacts.md → garbled aside '([[dead-code-verification-method]] n/a; see biv.md wrangler rules)'.
Risk Low — link-following agents miss the target file
Memory corpus (G–R) #65–74
65UPDATE
confirmed (proposal adjusted by verifier)
memory/feedback_use_enrich_campaign_metadata.md
2 citations in 45 days
Proposal As proposed. In the same pass, sweep project_songstats_budget_model.md, which also cites the dead context/tools/songstats.md path (found by grep; outside the reviewer's list).
Evidence & risk
Evidence Cites `context/tools/songstats.md` twice ("table at line 99-107", "§ Track lookup chain") — file does not exist; ~/Agent Workspace/context/ has no tools/ dir. Content migrated to wiki `4 Foundation/Songstats (tool reference).md` (verified present). Script paths it names (lib/enrich-campaign-metadata.js, songstats/populate-platform-links.js) verified live.
Risk Agent follows the dead path, concludes the reference doc is gone, and hand-rolls enrichment — the exact failure the memory exists to prevent.
memory/feedback_meeting_items_stay_in_note.md
8 citations in 45 days
Proposal Repoint the citation to `system-map/wiki/4 Foundation/OmniFocus (architecture).md`. Rule itself (checkboxes in meeting note, no OF/ClickUp fan-out) is current — keep.
Evidence & risk
Evidence Cites `context/tools/omnifocus-architecture.md` — file does not exist (context/ contains only airtable-schema-key, consumer-registry, dub, harness-first-principles, scripts-registry). Wiki `4 Foundation/OmniFocus (architecture).md` exists and is the current home.
67UPDATE
confirmed (proposal adjusted by verifier)
memory/feedback_rule_of_three_before_extraction.md
47 citations in 45 days
Proposal As proposed. Also sweep feedback_drift_response_discipline.md, which cites the same dead ssot-principles path (grep hit outside this finding).
Evidence & risk
Evidence Cites `context/biv/ssot-principles.md` twice — no context/biv/ dir exists; content now at wiki `4 Foundation/SSoT principles.md` (verified). Also cites `feedback_fix_root_cause.md` in Related — no such memory file exists.
memory/feedback_silent_if_unactionable.md
0 citations, but a correct behavioral rule — not retire-worthy
Proposal Replace the two dead sibling references with [[feedback_omnifocus_scope]] or delete the sentence. Rule body stays.
Evidence & risk
Evidence Cites `feedback_of_sweep_signal_quality.md` and `feedback_no_productivity_nudges.md` as sibling principles — neither file exists in the memory dir (verified by ls). Their surviving content lives in feedback_omnifocus_scope.md ("sweeps filter aggressively").
memory/feedback_no_disclaimer_framing_on_rollouts.md
2 citations in 45 days
Proposal Repoint the related-memory link to feedback_outbound_email_voice.md. Rule and verbatim Bradley quote are valuable — keep the body.
Evidence & risk
Evidence "Related memory: feedback_draft_voice_match.md (Bradley's voice: warm, casual, direct)" — that file does not exist; the live voice memory is feedback_outbound_email_voice.md (verified present, same subject matter).
memory/feedback_km_macro_plist_edits_revert.md
Proposal Remove or repoint the dead [[reference_biv_app_pwa_deeplink]] link (restate the deep-link fact inline if it matters). Keep everything else.
Evidence & risk
Evidence Ends with "See [[reference_biv_app_pwa_deeplink]] for the deep-link the wrappers call" — no such memory file exists (verified by ls). Rest of the memory (thin-wrapper pattern) is current and heavily cited (39 uses).
memory/feedback_stripe_finalize_locks_pdf_fields.md
0 citations, but rare-event billing safety knowledge
Proposal Drop the dead related-link or repoint to wherever WMG/PIIP onboarding facts now live (likely the wiki). Body stays.
Evidence & risk
Evidence "Related: [[reference_wmg_piip_onboarding]]" — no such memory file exists (verified by ls). The Stripe-mechanics content itself is durable vendor behavior and MEMORY.md indexes it.
72CONSOLIDATE
confirmed (proposal adjusted by verifier)
memory/feedback_km_plist_sweeps.md
0 citations in 45 days
Proposal As proposed, plus fix the third inbound reference the reviewer missed: the Related link in feedback_diff_stat_before_commit.md (repoint to the survivor or drop). Sweep set = feedback_rename_full_consistency.md, MEMORY.md line 32, and feedback_diff_stat_before_commit.md.
Evidence & risk
Evidence Teaches sed-sweeping KM's three plist locations as a working bulk-edit method (2026-04-27). feedback_km_macro_plist_edits_revert.md later observed plist edits "do not stick" even with Engine quit, sync off, and on-disk verification, mandating the thin-wrapper/KM-editor path. An agent reading only the sweeps memory gets contradicted doctrine. Usage: 0 vs 39 citations.
Risk Agent sed-edits KM plists per this memory and the work silently reverts when Bradley opens the KM editor.
memory/feedback_html_review_ui.md
23 citations in 45 days
Proposal Update the delivery step to reference deploy-ephemeral.sh / cross-link [[feedback_ephemeral_cf_pages_for_review_artifacts]] (keep /tmp+Safari as local-only fallback). The brutalist aesthetic rules and read-style.css-first guidance are load-bearing — keep intact.
Evidence & risk
Evidence Says "Any report/summary/comparison longer than ~20 lines → HTML page at /tmp/ + open -a Safari". feedback_ephemeral_cf_pages_for_review_artifacts.md (decided 2026-07-16) sets the new delivery default: publish self-consumed HTML review artifacts via ~/Scripts/deploy-ephemeral.sh to a biv-eph-* CF Pages URL.
Risk Two live memories give different delivery defaults for the same artifact class.
74UPDATE
confirmed (proposal adjusted by verifier)
memory/feedback_skills_sop.md
18 citations in 45 days
Proposal As proposed, but fix two details: (1) workspace mirror currently = dub.md + dub-digest.md symlinks, not dub-digest only; (2) don't call GSD a 'managed plugin' — gsd-* are GSD-tool-managed real dirs under ~/.claude/skills/ that @-include ~/.claude/get-shit-done/workflows/*. Keep the worktree-guard PR procedure verbatim.
Evidence & risk
Evidence Three stale claims, verified on disk: (1) "Agent Workspace/.claude/skills/ = pure symlink mirror of BiV commands" — dir contains only biv-workspace/ and one dub-digest.md symlink; (2) "GSD commands also live in ~/.claude/commands/gsd/" — that dir holds only dev-preferences.md; gsd-* skills live under ~/.claude/skills/; (3) step 2 mandates a workspace symlink per new skill, contradicting current selective practice (PR #203 mirrored dub-digest only).
Risk Agents creating skills add unwanted workspace symlinks or edit the wrong GSD location.
Memory corpus (project & reference) #75–92
75UPDATE
confirmed (proposal adjusted by verifier)
reference_biv_agent_pr_authoring.md
154 citations — most-cited reference file
Proposal Also rewrite the frontmatter description (it too says 'to clear a solo code-owner gate'). In the final bullet delete only the 'Then Bradley approves + merges' sentence — keep the rest of that line (biv-agent installed on all repos, workflows:write perms), which is valid.
Evidence & risk
Evidence Lead frames the memory around clearing a code-owner self-approval block, then the 2026-06-16 paragraph says that reality is gone (bot-PR is for attribution; change-approval status is the sole gate). Recipe still ends 'Then Bradley approves + merges' — contradicts biv.md's 'Never ask Bradley to approve, review, or merge a PR'.
Risk An agent following the literal recipe waits on a human merge that never comes, or pings Bradley to merge.
reference_biv_dub_ios_build_infra.md
101 citations
Proposal Replace the enrollment paragraph with enrolled-active + TestFlight-is-the-lane; replace the disk-blocked Xcode paragraph with a pointer to project_dub_dev_workflow's parked/Mac-mini state.
Evidence & risk
Evidence Says 'Apple Developer Program: enrollment PENDING (initiated 2026-07-07)... NOT yet active... free-team sideloading remains the operative distribution mode'. project_dub_build.md (2026-07-14) explicitly corrected this: 'ALREADY ENROLLED... build 26 ships to TestFlight via a full ASC upload pipeline — impossible without active paid membership'. Its 'Deferred (disk-blocked)' Xcode item is also superseded by project_dub_dev_workflow (parked; Mac mini M4 ordered, external SSD rejected).
Risk Agents plan around free-team ~7-day sideloading or gate TestFlight work on a blocker that no longer exists.
77RETIRE
confirmed (proposal adjusted by verifier)
project_33below_sinking_campaign.md
17 citations, but campaign concluded
Proposal When rehoming the Sheet ID into reference_sinking_pitch_tracker_gsheet.md, carry the full pointer detail: tab 'posts' has live metrics, and the Sheet is NOT findable via Drive search — must use the ID directly. Then delete the file and its MEMORY.md line as proposed.
Evidence & risk
Evidence Frontmatter self-expires: 'expires: 2026-04-25' — ~3 months past (today 2026-07-16). Body is April action items: 'Chase Bekah for PO on Monday Apr 14', 'CreatorCore renewal is Apr 14 — reference before losing access'. Durable facts already live elsewhere (reference_sinking_pitch_tracker_gsheet, project_social_seeding_payment_drift, project_creatorcore_dropped, project_bekah_warner_friend).
Risk None once the Sheet ID is rehomed; leaving it risks agents chasing April to-dos.
78UPDATE
confirmed (proposal adjusted by verifier)
feedback_workspace_repo_remote.md
53 citations — loaded on most workspace git work
Proposal Also reconcile the branch-tip bullet: 'a background git fetch origin (stale biv-tools) clobbers FETCH_HEAD' presumes the dead misconfiguration — restate the explicit-SHA fetch habit without the biv-tools rationale.
Evidence & risk
Evidence Frontmatter description: 'the `origin` remote is misconfigured to stale biv-tools — don't push to origin'. Body says the opposite: 'origin was repointed... it is now correct, so `git push origin <branch>` reaches the right repo. The historical trap... is gone' — then How-to-apply still opens '**Never** use origin'.
Risk A description-skimming agent treats origin as poisoned and burns time on the token-URL dance unnecessarily.
project_dub_digest_skill.md (+ its MEMORY.md line)
9 citations
Proposal Mark PR #70 merged, delete the post-merge follow-up item, fix the MEMORY.md line to 'shipped'.
Evidence & risk
Evidence Says 'shipped as PR #70... routed to the biv-app approval tap' with 'Post-merge follow-up: add the workspace mirror symlink (held back... pre-merge)'. Both resolved: the symlink exists (created 2026-07-16 04:21) and workspace commit 9d532f3 'chore(86bayf00c): mirror /utilities:dub-digest skill symlink (#203)' landed. MEMORY.md line still reads 'PR #70 pending tap'.
Risk An agent re-executes the 'post-merge follow-up' or reports the skill as blocked-pending-tap.
80UPDATE
confirmed (proposal adjusted by verifier)
MEMORY.md line for reference_cheap_model_offload_lever.md
32 citations on the file
Proposal Fix the MEMORY.md line as proposed AND rewrite the file's frontmatter description to match its body (both keys funded, GLM 5.2 live, reasoning-disabled gotcha).
Evidence & risk
Evidence MEMORY.md says 'biv-openai funded, GLM 5.2 via OpenRouter one top-up away'; the file itself says 'biv-openrouter — FUNDED 2026-07-14 ($40 top-up, ~$39 balance); z-ai/glm-5.2 is LIVE'. The index lags the file.
Risk Index-only readers skip a working cost lever thinking it needs a top-up first.
81UPDATE
confirmed (proposal adjusted by verifier)
reference_monologue_dictation.md
13 citations
Proposal As proposed; additionally reference the already-ticketed MacWhisper sweep (86bax07ab) rather than duplicating its scope, and keep the 'Import supports Superwhisper/Wispr/Willow, NOT MacWhisper' fact only if dictionary-migration context stays relevant.
Evidence & risk
Evidence Says 'Bradley is trialing Monologue Notes as a possible MacWhisper replacement (as of 2026-06-28; evaluating — not committed)... Delete this if he drops it.' project_dub_dev_workflow (2026-07-13) records the outcome: 'MacWhisper retired (no longer used — Monologue replaced it): app + models + LaunchAgent removed; sweep ticketed 86bax07ab.'
Risk Agents keep treating Monologue as provisional or reference MacWhisper paths that no longer exist.
project_algorhythms.md
52 citations — largest DSP client
Proposal Refresh the five open-deal statuses against Airtable Deals (the memory cites the rec IDs) and record the Ionic scope-doc outcome; keep pricing, label-group structure, and the dead-paths warning.
Evidence & risk
Evidence Deal states frozen ~10 weeks: 'Awaiting Algorhythms' scope doc Mon/Tue 2026-05-04', 'Re-engage by mid-May to lock tier; July 10 release date' (passed), Yung Omz proposal 'sent 2026-04-08 still open', NUSONIDO 'Last booked: Balazo EP, released 2026-04-24'.
Risk Agents nudge on dates already passed or scope against a proposal state that has since moved.
project_ella_lago_consulting.md
140 citations — 4th most-cited memory
Proposal Sweep the pre-Apr-14 pricing-decision and internal-draft-only sections; keep status, dashboard-freebie framing rules, constraints, pain points, SOP deck.
Evidence & risk
Evidence The 2026-07-02 status block is current, but superseded planning sections below contradict it: 'Pricing (needs alignment — two different numbers exist)... Bradley needs to decide which range before the Apr 14 meeting' (decided — $7,500 fixed, stated in the same file) and 'Proposal doc: internal draft only, never a live client link' (a live client page now exists at braininavat.systems/consulting/ryan-and-ryan/).
Risk Wrong pricing range or 'never a live link' rule gets applied to the next Ryan+Ryan touch.
project_revenue_strategy_2026.md
9 citations
Proposal Replace the per-client active-plays bullets with pointers to the per-client project memories (algorhythms, ella_lago, RA&A) and keep the durable strategy, rate ladder, and constraints.
Evidence & risk
Evidence Active-plays snapshot is from late March: 'Warner: Must-execute' (SINKING executed, released Apr 10), 'Ella Lago consulting meeting confirmed Apr 14 2026 at 12:30pm' (held; now a soft-no + $7,500 re-proposal), Algorhythms plays superseded by the Ionic build pivot (per project_algorhythms). Core strategy sections remain valid.
Risk Stale plays get surfaced as current priorities in briefings/health-checks.
85UPDATE
confirmed (proposal adjusted by verifier)
project_client_relations_system.md (+ feedback_verify_inferred_commitments.md)
8 and 3 citations respectively
Proposal Refresh the skill inventory to the actual clients/ dir; replace the cadence table with a pointer to compute-followups.js as SSoT (the memory's values no longer match the script — don't just re-home them); in the feedback file change 'clients:log' to 'any post-event/meeting-log skill'.
Evidence & risk
Evidence Skills list names '/clients:log' and '/clients:actions', and a section is titled 'Follow-up Cadence (in /clients:log)' — neither skill exists in ~/.claude/commands/clients/ (verified: 16 entries, no log.md or actions.md). feedback_verify_inferred_commitments also anchors its how-to-apply on 'clients:log (or any post-event skill)'.
Risk Agents try to invoke a retired skill or claim the cadence logic lives somewhere it doesn't.
project_songstats_budget_model.md (+ feedback_verify_links_in_generated_ui.md)
5 and 16 citations respectively
Proposal Point both files at the wiki tool-reference page (and scripts-registry.md for call sites); billing-model content is correct and stays.
Evidence & risk
Evidence Instructs 'read `context/tools/songstats.md` for the call-site inventory' — ~/Agent Workspace/context/tools/ does not exist (verified; context/ holds only schema-key, registries, dub, harness doc). Canonical is wiki '4 Foundation/Songstats (tool reference).md' (verified present). feedback_verify_links_in_generated_ui likewise says 'grep context/tools/ + wiki'.
Risk Precondition step silently no-ops — an agent 'reads' a nonexistent doc and proceeds without the call-site inventory.
87UPDATE
confirmed (proposal adjusted by verifier)
project_dub_build.md
1001 citations — the most-loaded memory; size is a real per-session token tax
Proposal Compress as proposed, but extract durable operational facts buried in the prior-state sections first: the 'Dub universe = dub tag on list 901415845617, tags only on single-task endpoint' gotcha, migration-guard behavior, the 8 going-public ticket IDs, and deferred-item decisions. Correct the size claim to 13KB.
Evidence & risk
Evidence 22KB carrying superseded layers explicitly labeled 'Prior state — build 27', 'Prior state — build 26', an old 'Roadmap — sequenced, fresh' list predating the locked two-wave plan, and '(corrected 2026-07-14, was wrongly...)' changelog phrasing — against the locked writing rule 'state current truth only... git holds history' (the memory dir is a git repo, so history is preserved).
Risk A fresh orchestrator acts on the pre-two-wave roadmap list or re-litigates already-corrected facts.
reference_claude_code_auto_mode.md
19 citations
Proposal Keep the (correct) classifier-doesn't-read-prose lesson but swap the example to a benign allowed command; note that push-to-main allows contradict current git governance and must not be re-added.
Evidence & risk
Evidence The classifier-vs-prose section's worked example teaches adding 'Bash(git push origin main)' + 'Bash(git push origin main:*)' to permissions.allow — directly contrary to the locked universal rule 'NEVER: push or force-push to main (open a PR instead)'.
Risk An agent pattern-matches the example and re-adds push-to-main allow rules to settings.json.
89UPDATE
confirmed (proposal adjusted by verifier)
project_ops_maintain_deprecation.md
4 citations
Proposal Delete the phase sentence from the body AND the frontmatter description ('Morning pipeline simplified to 2 phases' appears there too); project_dawn_chain owns pipeline structure.
Evidence & risk
Evidence Says 'Morning pipeline now has 2 phases (data refresh + briefing)' — contradicted by project_dawn_chain.md (2026-07-12): Phases 0/1/1b/2/2b plus post auto-fix. The durable facts (ops:maintain removed, extract-path-refs.py covers memory+context) remain valid.
Risk Conflicting phase counts confuse pipeline debugging.
project_s4a_ads_addon.md
9 citations
Proposal Fix or drop the strategy.md reference (point at the wiki pricing page if that's the current home) and say 'Clients record'; the $150 add-on + multi-track pricing facts stay.
Evidence & risk
Evidence 'Both documented in strategy.md and on ROOA/Morph org record' — no strategy.md exists in the workspace (verified via find); 'org record' predates the Organizations→Clients rename recorded in project_client_relations_system.
Risk Low — dead pointer sends an agent hunting for a file that isn't there.
reference_zsh_equals_expansion.md
5 citations
Proposal Rewrite the frontmatter cleanly (description: 'bare =word triggers zsh equals expansion; use echo --- or quote'); one-paragraph body is fine.
Evidence & risk
Evidence Frontmatter is corrupted: description truncates mid-sentence ('...use'), followed by a stray body fragment 'separators' and a second orphaned 'metadata:\n type: reference\n---' block — malformed YAML from a bad write.
Risk Parsers/linters over the memory corpus choke on the double frontmatter.
feedback_web_workflows_use_real_chrome.md + project_bluetooth_popup_setapp_pollers.md ('is unrelated' anti-links)
16 and 21 citations respectively
Proposal Delete the two 'X is unrelated' wikilinks; keep the genuinely related pointers. Content of both files is otherwise current (ToothFairy probation, real-Chrome default).
Evidence & risk
Evidence Both carry nonsense related-links: 'Related: [[project_bluetooth_popup_setapp_pollers]] is unrelated; see Agent Reach...' and 'Related: [[reference_cloudflare]] is unrelated; canary also tracks...' — links asserting their own irrelevance (likely graph-linking artifacts).
Risk Cosmetic — wasted lookups following a link the text says is irrelevant.
Wiki (first half) #93–95
1 Business/Strategy/Service offerings - pricing - structuring.md
190 wiki_citations in 45 days — heavily read page, so the stale line actively misinforms
Proposal Change line 70 to "Sainte-Vie-style subcontract; Caitlin Bose executes (structure originated with Halston)" — matches the fix already applied to Expansion conversations, memory project_biv_team_roster.md, and the Active experiments page
Evidence & risk
Evidence Line 70 reads "**Event PR** — Sainte-Vie-style subcontract via Halston" — contradicts the canonical executor everywhere else: Roster + roles.md:27 ("Caitlin Bose ... Default PR executor for Sainte-Vie-style plays"), Subcontractor plays.md:27 ("Caitlin is the default executor"), and Expansion conversations (wallet share).md:48 (already corrected to Caitlin). log.md has carried this as an open contradiction since 2026-06-21.
Risk Agents routing PR/event work read this page and route to Halston (now A&L/Sales), not Caitlin
94FLAG
confirmed (proposal adjusted by verifier)
2 Functions/Operations/Cross-functional decisions (pricing exceptions, new service pilots, hire-subcontract calls).md
0 citations in 45 days
Proposal Keep the question as proposed, but if Bradley picks retire: run retire-sweep and update index.md:103 and the parent Operations.md link. Drop the 'oldest verification stamp' framing (56 pages share 2026-04-22) — the zero-citation + status:gap signal is the real evidence.
Evidence & risk
Evidence Zero wiki_citations across ~45 days of sessions (only never-cited page in Operations); last-verified 2026-04-22 — the oldest verification stamp in the first half. Frontmatter status: gap / nature: not-done; body says "Not a formalized sub-process. Lives entirely in Bradley's head today" and ends with three open "Decisions Bradley needs to make".
Risk Open decisions parked in a never-read wiki page violate the biv.md rule that decisions-implying-work become ClickUp tickets — they will be forgotten here
95FLAG
confirmed (proposal adjusted by verifier)
2 Functions/Service Development/Active experiments (S4A add-on, multi-track pricing, post-release dashboards, event PR).md
0 citations in 45 days; overlapping sibling cited 133 times
Proposal Same question, plus: whichever option Bradley picks, repoint New service pilot framework.md:30 (links to this page as 'the current pilot inventory') and index.md:112. If folding, carry over the corrected Event PR line (Caitlin executes; structure originated with Halston) so the 2026-06-21 fix isn't lost.
Evidence & risk
Evidence Zero wiki_citations across ~45 days while its sibling Pricing experiments & tier logic.md (133 citations) already carries the S4A +$150 and multi-track-75% items under its own "Active pricing experiments" section. Remaining content is drifting state ("currently executing Akumandra Festival", "Demand across client base unclear", 33 Below dashboard PoC — that campaign released 2026-04-10).
Risk Two 'experiments' inventories with partial overlap will diverge; the uncited one is where drift accumulates unnoticed
Wiki (second half) #96–102
index.md (wiki root)
wiki_citations: 1225 — the wiki's entry point; gap means the newest Foundation page is invisible to browse-path readers.
Proposal Add a catalog entry for 'Repo sync and drift control' under 4 Foundation in index.md (and to the action->reading map if repo/drift work warrants it). Clears the standing lint index-gap.
Evidence & risk
Evidence Catalog is missing '4 Foundation/Repo sync and drift control.md' (created 2026-07-13). Programmatic diff of page basenames vs index.md found exactly this one gap; log.md lint entries report '1 index-gaps' daily since 2026-07-14 with no remediation.
Risk Low risk to fix; leaving it trains agents to ignore the daily lint signal.
97FLAG
confirmed (proposal adjusted by verifier)
com.biv.wiki-audit / com.biv.wiki-deep-audit launchd runs (wiki maintenance loop, evidenced in log.md + ~/Library/Logs/biv/)
Runs weekly (Sun 05:00) and monthly (day 1); both loaded per launchctl list.
Proposal Env var alone won't fix the weekly run: wrap-claude-p.sh kills attempts at WRAP_TIMEOUT_SEC (default 1200s; only deep-audit.sh raises it to 2700). Fix both wrappers — add CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0 and set WRAP_TIMEOUT_SEC (~2700s) in audit.sh — via routine PR; no plist change. Ask Bradley about restructuring fan-out only if runs still overrun.
Evidence & risk
Evidence wiki-audit.log (mtime Jul 12) ends: 'Background tasks still running after 600s; terminating' ... 'Waiting on clusters 5 and 6, then I'll compile everything, apply fixes, bump last-verified across all 53 reviewed pages, and write the log entry' — the Jul 12 weekly audit died before applying anything; log.md has no audit entry after 2026-07-05, and lint's stale-verified count is flat at 65 since 07-10. wiki-deep-audit.log (Jul 1 monthly) shows the same 600s termination with no completion entry.
Risk The wiki's self-healing loop is silently broken — staleness compounds while lint keeps reporting it to a log nobody acts on.
_Templates/_Sub-process.md
wiki_citations: 32 — low but it's the authoring stencil for every new tier-2 sub-process page.
Proposal Delete the ^summary sentence from the template comment so new sub-process pages aren't authored against a decommissioned convention.
Evidence & risk
Evidence Line 26 template guidance still says 'Other notes that embed this one will pull only the ^summary block below' — but _meta/schema.md 'Do not introduce' explicitly decommissions ^summary blocks ('no readers; lint will strip remaining'). The template teaches authors a banned convention.
Risk New pages minted from this template reintroduce a convention lint then has to strip.
4 Foundation/Code & filesystem.md
wiki_citations: 65.
Proposal Add ~/.claude/skills/ (Agent Skills → biv-agent-skills) alongside ~/.claude/commands/ (slash commands → biv-skills), mirroring Skills system.md.
Evidence & risk
Evidence Line 25 lists only '~/.claude/commands/ — skills system'; it omits ~/.claude/skills/ (Agent Skills, biv-agent-skills repo), contradicting 'Skills system.md' (2026-07-03) which documents two primitives/two repos. The 2026-07-05 audit surfaced exactly this ('Code & filesystem: ~/.claude/skills/ omitted from skills location description') and it was never fixed.
Risk Agents using this page as the filesystem map won't know Agent Skills exist or where they're tracked.
100UPDATE
confirmed (proposal adjusted by verifier)
3 Capabilities/Hazel rules.md (+ stale gap comment in 3 Capabilities/Knowledge capture.md)
Hazel rules wiki_citations: 189; Knowledge capture: 93.
Proposal Rule confirmed live (watches Knowledge-Capture/, runs process.sh, moves to Processed/). Add it to the Hazel rules table, delete the line-39 honest-gap comment, and also sweep line 116's '(KC rule not yet documented there)' parenthetical — it points at Hazel (tool reference), which should either gain the rule or drop the caveat.
Evidence & risk
Evidence Hazel rules.md rules table (last-verified 2026-04-22, oldest in corpus) lists only 2 rules and omits the Knowledge-Capture rule; Knowledge capture.md carries '<!-- Honest gap: Hazel rule configuration not documented in hazel.md... the rule isn't in the current rules table -->' since April. That comment's format ('<!-- Honest gap') also evades lint's gap-marker regex (/<!--\s*gap/i), so the gap is invisible to the lint sweep.
Risk A live file-arrival automation with no entry in the automation inventory; gap marker untracked by lint.
3 Capabilities/Prospect pipeline.md
wiki_citations: 240.
Proposal Add the idle-since-2026-05-03 state to the triage-Routine sections, matching the Claude Code Routines page, so a reader doesn't expect weekly Discord triage summaries.
Evidence & risk
Evidence Describes the weekly-prospect-triage cloud Routine in present tense ('A cloud Routine (Sun 14:00 EDT) then runs /clients:prospects:triage', 'clones biv-scripts... posts the top picks... to Discord #ops') without noting it has been idle since 2026-05-03 — per '3 Capabilities/Claude Code Routines.md' ('idle since 2026-05-03 because the Prospect pipeline feeding it was paused; it resumes when that pipeline does').
Risk Minor — pause is documented for the pipeline itself (line 26/82); only the Routine's idle state is unstated.
102UPDATE
confirmed (proposal adjusted by verifier)
3 Capabilities/n8n workflows.md
wiki_citations: 205.
Proposal As proposed, plus: record the outcome rather than just deleting the soak sentence — move the two workflows into the page's existing 'Archived' table (line 55) with date and reason, then retire-sweep remaining doc mentions of their IDs (ATpfOtWXb5yZoC7B, 6rRIJ2rg9rEumNee) per the retirement rule.
Evidence & risk
Evidence Line 32: workflows retired 2026-04-25 'still present in n8n, deactivated... Discord #errors channel begins 30-day soak; retire after zero new posts.' The soak window ended ~2026-05-25, ~7 weeks ago, with no recorded outcome — the page still describes a pending soak. Also the 2026-07-05 audit surfaced (unfixed) that the 'n8n ID' column header is confusing for 'v2.0 (local)' rows.
Risk Drifting retirement state — 'as of' style pending action that already elapsed; leaves dead workflows in n8n.
Workspace residue (.planning, docs, context) #103–117
103UPDATE
confirmed (proposal adjusted by verifier)
.planning/STATE.md
Read ~5x in mined sessions; canonical per biv.md (".planning/STATE.md is canonical for the current milestone")
Proposal Also reconcile the ROADMAP progress-table row for Phase 37 (shows 'In Progress 6/7' though STATE records Plan 07 ACTIVATION done 2026-06-27), and sweep STATE's stale v4.3 section that still points at v4.3-RESUME.md (line ~211).
Evidence & risk
Evidence Internally contradictory and 18 days stale: frontmatter says `status: milestone_complete` (v4.4, last_updated 2026-06-28) yet `completed_phases: 2/5`, and the body phase map lists phases 38/39/40 as "Not started" while ROADMAP.md's progress table shows them Complete 2026-06-27/28. ROADMAP.md milestone list still shows v4.4 as "🚧 in progress".
Risk Any agent obeying "STATE.md is canonical" gets a wrong current-milestone picture (thinks 38-40 are open work).
.planning/phases/38-*, 39-*, 40-contact-hunter (3 completed phase dirs)
No session activity since 2026-06-28
Proposal Move the three dirs into milestones/v4.4-phases/ (gsd-cleanup does exactly this), as part of the same v4.4 completion pass as the STATE.md fix.
Evidence & risk
Evidence Milestone v4.4 archival ran halfway: milestones/v4.4-phases/ holds phases 36 and 37, but 38/39/40 (all with SUMMARY files; ROADMAP marks them Complete 2026-06-27/28) still sit live in .planning/phases/.
Risk Live phases/ dir implies open work; duplicates the milestone archive convention.
105RETIRE
confirmed (proposal adjusted by verifier)
.planning/v4.3-RESUME.md
Zero citations in usage-mining
Proposal git rm, and in the same pass remove the two remaining pointers to it (live STATE.md v4.3 section; workstreams/work-queue-model-redesign/STATE.md, which finding 7 removes anyway) so no dangling resume reference survives.
Evidence & risk
Evidence Spent resume pointer for v4.3 (shipped 2026-06-22, archived to milestones/v4.3-*). Worse than dead: it instructs "The main workspace ... has a STALE .planning/STATE.md — do NOT use it. cd /Users/bradleyberkman/aw-v43" — a worktree from a finished chain; that warning is now itself the stale content.
Risk An agent finding it could distrust the real STATE.md and chase a dead worktree.
.planning/two-latency-model-TARGET-WIKI.md
Zero citations
Proposal git rm.
Evidence & risk
Evidence Its sole purpose was the Phase 35 cutover apply: "the clean current-truth rewrite Phase 35 applies at the cutover moment". Verified applied — system-map/wiki/4 Foundation/ClickUp (operating model).md now contains the derived "Backlog lifecycle — open/claimed/done, mechanically derived" content. Spent staging copy of a live wiki page.
Risk Parallel doc to the live wiki page — biv rule: no parallel docs; wiki is SSoT.
107RELOCATE
confirmed (proposal adjusted by verifier)
.planning/two-latency-model-SPEC.md + .planning/v4.3-design-lock.md
Zero citations since ship
Proposal Move both into .planning/milestones/ but keep the archive naming convention — prefix the SPEC as v4.3-two-latency-model-SPEC.md (design-lock is already v4.3-prefixed) so they sort with v4.3-ROADMAP.md/v4.3-REQUIREMENTS.md.
Evidence & risk
Evidence Both are v4.3 design artifacts (SPEC D-01..D-08; design-lock D-LOCK-01/02 TTL tiering, "Locked: 2026-06-22"). v4.3 shipped 2026-06-22 and is archived (milestones/v4.3-ROADMAP.md etc.); the decisions now live in the wiki ClickUp operating model page. Only these loose spec files were never archived.
Risk Top-level .planning/ clutter reads as current-milestone material.
108RELOCATE
confirmed (proposal adjusted by verifier)
.planning/research/ (SUMMARY, ARCHITECTURE, FEATURES, PITFALLS, STACK)
Cited only by STATE.md's v4.3 section
Proposal Move the 5 files into .planning/milestones/ under a v4.3 prefix or a v4.3-research/ subdir (bare SUMMARY.md etc. in milestones/ would collide with future milestones); leave the research/ dir convention intact for the next milestone's research phase.
Evidence & risk
Evidence SUMMARY.md header: "Project: v4.3 Work-Queue Model Redesign ... Researched: 2026-06-21". This is v4.3-milestone research left at .planning/ top level after the milestone shipped; the research dir was never rotated for v4.4 (whose phases carry their own per-phase RESEARCH.md files).
Risk A future gsd-new-milestone may read it as current-project research.
.planning/workstreams/work-queue-model-redesign/
Zero citations
Proposal git rm the dir (and the now-empty workstreams/ parent).
Evidence & risk
Evidence Contains only ROADMAP.md + STATE.md for the workstream that became milestone v4.3 (shipped 2026-06-22). The parallel curator-research workstream was already folded in and removed (STATE.md: "Folded in from the former curator-research workstream 2026-06-25"); this one was left behind as the sole entry in workstreams/.
Risk Duplicate/contradicting roadmap+state files for shipped work.
110RETIRE
confirmed (proposal adjusted by verifier)
.planning/quick/ (5 completed quick-task dirs, 2026-06-11..06-20)
Zero citations
Proposal git rm all five (the two 260611 dirs are spent via their relocated memos, not via SUMMARYs). Optionally refresh the example slug in the wiki '.planning-' structure page so it doesn't cite a deleted dir.
Evidence & risk
Evidence All five carry SUMMARY (mostly + VERIFICATION) files = completed one-shot tasks (caitlin onboarding artifacts, cloud-vs-macbook decision memo, AFK headless block, ruleset autodiscover, sandbox allowappleevents eval). Newest ~4 weeks old; nothing references them.
Risk Low — pure accumulation, which workspace CLAUDE.md explicitly says not to allow.
.planning/codebase/systems-audit-2026-06-10/
Zero citations
Proposal Confirm O3/O5 remainder still lives in the ClickUp tickets, then git rm the dir.
Evidence & risk
Evidence Point-in-time systems audit (REPORT/DECISIONS/EXECUTION-PROGRESS/verify-R*). Execution tracked to ClickUp (5 tickets CLOSED; O3/O5 remainder OPEN as 86baczw1a/86baczw1w — ClickUp is the SSoT). The workspace's own execution-surface-map.md states the rot principle: "Point-in-time inventories of live config rot in weeks (proven...)" — this one is 5 weeks old.
Risk Stale audit conclusions could be trusted over live state.
112RELOCATE
confirmed (proposal adjusted by verifier)
.planning/autonomous-change-governance/ (SPEC.md + research/)
Referenced only by archived v4.1/v4.2 sections of ROADMAP/STATE
Proposal Relocate into .planning/milestones/ AND update the wiki '.planning-' structure page's subdirectory table row in the same change (retire-sweep rule) — drop the row or repoint it to the archive location and to change-approval-gate.yml as the live SSoT.
Evidence & risk
Evidence v4.1 design spec, "Status: design finalized ... 2026-06-13"; v4.1 shipped 2026-06-15 and v4.2 (which cited it as source of truth) shipped 2026-06-16, both archived. The live gate's SSoT is now each repo's change-approval-gate.yml (per biv.md) plus the wiki Money-path approval lane page (649 wiki citations).
Risk A finalized-but-frozen spec can drift from the live gate config it once specified.
113RETIRE
confirmed (proposal adjusted by verifier)
docs/superpowers/plans/2026-04-21-client-relations-architecture.md + specs/2026-04-21-client-relations-architecture-design.md
Zero citations of either file
Proposal git rm both; acceptable to leave the archived ROADMAP/milestone citations dangling (git history is the archive), or sweep the two live-ROADMAP pointer lines while completing v4.4 archival.
Evidence & risk
Evidence Shipped ~3 months ago: ~/Scripts/client-relations exists, the clients:* skill family runs against the migrated Clients+People model (clients:reengage 7 invocations, clients:health-check 5), memory project_client_relations_system documents the live system. Spec header is now false: "Status: Design approved, not yet implemented".
Risk "Not yet implemented" header could mislead an agent into re-planning a live migration.
114RETIRE
confirmed (proposal adjusted by verifier)
docs/superpowers/specs/2026-06-16-meeting-thread-surfacing-design.md
Zero citations of the spec itself vs 199 for the wiki page
Proposal git rm the spec AND remove/repoint the wiki page's line-84 design-spec pointer in the same change (retire-sweep rule) so the surviving wiki page carries no dangling reference.
Evidence & risk
Evidence Shipped: the wiki page "Meeting-note thread surfacing.md" exists and is heavily read in real sessions (199 wiki citations), i.e. the feature is live and wiki-documented. The spec's "Approved design, ready for implementation" status line is now false.
Risk Stale "ready for implementation" status.
context/dub/ (DUB-SPEC.md, brainstorm-working-doc.md, dub-mockup-v6.html)
Dub work is heavy (project_dub_build.md: 1001 memory citations) but runs from ~/code/biv-dub, not these copies
Proposal Surviving owner: ~/code/biv-dub. Delete context/dub/ rather than re-sync — maintaining a mirror violates the no-parallel-docs rule.
Evidence & risk
Evidence Both .md files carry an explicit banner: "STALE SNAPSHOT (captured 2026-07-03, never re-synced) ... The PWA is retired; Dub is a native iOS app now. Canonical source: ~/code/biv-dub/DUB-SPEC.md / docs/DUB-V1.1-BRAINSTORM.md" — I verified both canonical files exist. dub-mockup-v6.html is a PWA-era mockup superseded by the shipped native app.
Risk An agent grounding Dub work here inherits pre-v1.1 PWA architecture (explicitly retired 2026-07-06).
context/fable-run-a-coherence-audit.prompt.md
Zero citations; nothing in the workspace references it
Proposal Exact question for Bradley: did Fable Run A already fire (or is this cmah audit its successor)? If yes, git rm the prompt; if still queued, move it out of context/ into the run's own scratch/ticket.
Evidence & risk
Evidence One-shot orchestrator prompt (frontmatter: "type: agent-prompt ... Run A — System Coherence Audit", body: "Hand this to a Claude Code session..."), dated Jul 2. The currently-running harness audit covers the same coherence-audit ground, and memory holds a HARD HOLD on harness building (project_harness_rethink_hold).
Risk Spent launch prompts accumulating in context/ read as standing instructions.
graphify-out/ (git-tracked, ~8MB graph.json + GRAPH_REPORT.md)
graphify: 2 invocations in 45 days
Proposal Regenerate the graph or, if graphify isn't earning its keep at 2 uses, delete graphify-out/ (regenerable) and gitignore it like the other generated context docs.
Evidence & risk
Evidence Entire graph generated 2026-07-02, untouched since — two weeks of workspace change unindexed. The graphify skill's trigger says "especially when graphify-out/ exists, where the question should be treated as a graphify query first", so a stale graph is an actively-consulted wrong answer. Also holds one-shot analysis droppings (.dead-code-candidates.txt, .dead-strong.txt) and a 7.7MB graph.json churning git.
Risk Stale-graph answers presented as codebase truth; repo bloat.
Stale artifacts (~/.claude disk & caches) #118–126
118RETIRE
confirmed (proposal adjusted by verifier)
~/.claude/gsd-user-files-backup/ (2.5M, mtime 2026-05-09)
No reads observed; untouched since May 9 install.
Proposal Delete the directory. Note it is created by the /gsd-update workflow (get-shit-done/workflows/update.md:479-483) and will be legitimately recreated on the next GSD update — expected, not a regression.
Evidence & risk
Evidence GSD-installer snapshot, fully superseded: hooks/scripts-bindings-reminder.sh and skills/canvas.md, clipboard.md, tts.md are byte-identical to live copies (diff -q clean); get-shit-done/USER-PROFILE.md differs but live version is newer and keeps its own .prior-20260413.bak; agents/ backup redundant because live ~/.claude/agents is its own git repo. Only unique content is deliberately-retired hooks (discord-context-alerts.js, skill-trace.sh, notify.sh).
Risk Low — loses last copy of 3 already-retired hook scripts.
119RETIRE
confirmed (proposal adjusted by verifier)
~/.claude/jobs/ (21 job dirs, 90M, Jun 28 - Jul 13)
All sampled jobs finished; no pins.
Proposal Delete only the 16 dirs whose state.json says done (includes 8ed1ba09's 85M venv). KEEP the 3 blocked jobs — recent Dub v1.31 work on an active project, may be resumed — and the stopped one pending Bradley. Keep pins.json.
Evidence & risk
Evidence Background-job records (state.json + timeline.jsonl + tmp/). pins.json is [] — nothing pinned. 85M of the 90M is one job, 8ed1ba09 'dub voice spike', state 'done' ('v1.2.1 fully pushed... PR #184 merged'), whose tmp/ contains a full aeneas Python venv (22M libopenblas dylib etc.). Newest job is Jul 13; all >=3 days idle.
Risk Low — loses timelines of completed background jobs; check each state.json says done before removing.
120FLAG
confirmed (proposal adjusted by verifier)
~/.claude/projects/ — 9 dirs for deleted source paths (of 44 dirs, 1.7G total)
1.6G of the 1.7G is the live Agent-Workspace project (2,775 transcripts) — healthy.
Proposal Ask Bradley about 8 dead-path projects only — exclude Ryan-and-Ryan-Agent-Workspace (source path alive, memory in use). Also note ClaudeCode/biV-claude-code hold sessions-index.json remnants and Agents-clawd holds 4 memory files, not just MEMORY.md.
Evidence & risk
Evidence Source paths verified GONE: Agents-bivbot, Agents-clawd (+nested), ClaudeCode, Developer-active-ClaudeCode, Developer-active-biV-claude-code, biV-claude-code (+songstats variant), clawd (all Jun 4), aw-v43 (Jun 22, 11M, 13 transcripts), Ryan-and-Ryan-Agent-Workspace (Jul 3). Jun-4 dirs now hold only memory/MEMORY.md — transcripts already pruned by default 30-day cleanup (cleanupPeriodDays unset in all 4 settings files). ~14 more dirs map to ephemeral /tmp worktrees and releases-<sha> paths.
Risk Project memories may hold context not captured elsewhere; default cleanup prunes transcripts, not memory files.
121RETIRE
confirmed (proposal adjusted by verifier)
everything-claude-code plugin + marketplace (~57M: 21M cache + 36M marketplace clone)
Disabled since the bivbot project was deleted; zero possible invocations.
Proposal As proposed, plus remove the empty ~/.claude/plugins/data/everything-claude-code-everything-claude-code/ data dir.
Evidence & risk
Evidence settings.json has "everything-claude-code@everything-claude-code": false (disabled). installed_plugins.json shows project-scope install for /Users/bradleyberkman/Agents/bivbot — path no longer exists. Marketplace clone (affaan-m/everything-claude-code) last updated 2026-03-15, four months stale.
Risk None — reinstallable from GitHub.
context7 plugin (disabled but still cached/updated)
Disabled; no invocations possible.
Proposal Uninstall and remove the false entry so it stops riding marketplace updates. Keep only if the disable is a deliberate quick-re-enable toggle.
Evidence & risk
Evidence settings.json: "context7@claude-plugins-official": false, yet installed_plugins.json shows lastUpdated 2026-07-16 — re-fetched on every marketplace refresh despite being disabled. Cache only 44K.
Risk Trivial — one-command reinstall from the official marketplace.
~/.claude/plugins/cache/temp_git_1783950279301_b4xax0/
Proposal Delete the directory.
Evidence & risk
Evidence Orphaned temp clone from 2026-07-13 containing only a .git directory — an interrupted plugin install/update never cleaned up. Not referenced by installed_plugins.json or known_marketplaces.json.
Risk None.
Loose ~/.claude backup/probe files: 5x settings.json.bak-* (Jun 8-28), settings.json.topshelf-agents.bak, 'settings.json:180' (0 bytes), CLAUDE.md.bak-20260628-143450, importprobe.md
Proposal Delete all nine files (~85K).
Evidence & risk
Evidence One-time artifacts of resolved changes: six settings backups Jun 8-28 (current settings.json is Jul 16, healthy); 'settings.json:180' is a 0-byte shell-redirect typo from Jun 8; CLAUDE.md.bak predates the current Jul 3 CLAUDE.md; importprobe.md contains only 'IMPORT_TOKEN=ZEBRA42XY' — a Jun 28 @import-resolution test probe. Bradley's own rule: no bak/changelog layers, current truth only.
Risk None — current settings.json and CLAUDE.md verified present and newer.
125RETIRE
confirmed (proposal adjusted by verifier)
~/.claude/channels/discord/inbox/ (24M of attachments, Mar 22-27 2026)
Proposal Delete the 25 stale image files but KEEP the inbox/ directory itself — it is the live download_attachment target of the active discord plugin — along with .env, access.json, and approved/.
Evidence & risk
Evidence 25 downloaded Discord attachment images (several exact duplicates, e.g. one 1,215,868-byte PNG saved twice), newest 2026-03-27 — nothing added in ~4 months even though the Discord plugin is active (current path is plugins/data/discord-*). channels/discord/approved/ is empty; only .env and access.json are live config.
Risk Low — March attachment copies; originals remain on Discord.
~/.claude/metrics/costs.jsonl (1.7M, last write Jun 17)
Proposal Question for Bradley: archive the historic cost data somewhere durable, or delete? Deleting loses Mar-Jun 2026 usage-cost history that exists nowhere else.
Evidence & risk
Evidence Cost-tracking log with no live writer: grep over ~/.claude/hooks/*, settings.json, and settings.local.json finds no reference to costs.jsonl; it stopped growing 2026-06-17, consistent with a removed hook/pipeline.
Risk Data loss is irreversible — hence FLAG, not RETIRE.
Memory ↔ wiki boundary #127–129
127CONSOLIDATE
confirmed (inline side-by-side reading)
Five memory files are near-verbatim twins of canonical wiki pages, already drifting: feedback_billing_entity_conventions, feedback_notification_routing, project_prospect_pipeline_paused, reference_claude_code_routines, project_rsvp_nano_feed
All five memories cited in transcripts; wiki twins are canonical + fresher
Proposal Wiki stays the canonical home. Shrink each of the five memories to a 2–3 line stub: the agent-behavioral takeaway plus a pointer to the wiki page. Reconcile the drifted details into the wiki twin first (execution ID, missing table rows).
Evidence & risk
Evidence Read side-by-side: billing memory (Apr 23) lacks rows the wiki twin (last-verified Jul 2, marked canonical) has; notification memory says proving run 'execution 21993' while the wiki page says '21991' — dual-maintenance drift caught in the act. The memory index also loads 19KB into every session, so duplicated facts are paid per-session.
Risk A stub loses the redundant copy an offline agent might have leaned on; the wiki page is one Read away, so exposure is minimal.
128UPDATE
confirmed (inline side-by-side reading)
No written boundary rule decides whether a new fact belongs in memory or the wiki — two capture paths (auto-memory, wiki:fold) with overlapping charters
Every capture decision hits this ambiguity
Proposal Add one paragraph to biv.md (wiki section): wiki = facts about the business and its systems (what exists, how it works, conventions); memory = how agents should behave, who Bradley is, external pointers, and project state not yet derivable from any source. A fact that is both gets the wiki page + at most a one-line memory pointer.
Evidence & risk
Evidence biv.md says 'file hard-won answers back as a wiki page'; the memory instructions say to save feedback/project facts. Nothing arbitrates. Result: the five twin pairs in #127, plus fuzzy splits like feedback_schema_generated_bindings_pattern (principle) vs wiki Generated bindings (system) that hold only by accident.
Risk Low — codifies the division that already mostly holds.
129UPDATE
confirmed (inline side-by-side reading)
wiki:fold never retires the source memory when it folds a memory-derived fact into the wiki — the mechanism that created the #127 twins
wiki:fold invoked 24× in 45 days
Proposal Add a step to the wiki:fold skill: when the folded fact originates from (or duplicates) a memory file, shrink that memory to a pointer stub in the same PR, and update its MEMORY.md index line.
Evidence & risk
Evidence The fold skill amends/creates wiki pages from conversation-derived facts but has no step that stubs or deletes the originating memory file, so every fold of a remembered fact mints a duplicate that then drifts.
Risk Low — skill edit rides the normal biv-skills PR flow.
Killed by verification (9)
Proposed by reviewers, refuted by independent adversarial verifiers — shown for transparency, not actionable.
- brainstorm override vs superpowers:brainstorming (global CLAUDE.md '# brainstorming' section) (Core instructions & settings)
The open question is answerable and refutes the risk: no transcript modified after 2026-07-03 contains a superpowers:brainstorming invocation, while brainstorm invocations span 9 files dated 07-03 to 07-15. The override phrase first appears in 07-03 transcripts, so all 27 mined superpowers invocations predate it. The override is winning; no plugin-level disable needed. - superpowers:brainstorming skill vs global CLAUDE.md brainstorm rule (Contradictions, wrong location & missing rules)
Counts accurate (27 vs 9) but timeline refutes 'prose failed': all 27 wrong-skill sessions date 06-16 to 07-03; all 9 brainstorm sessions 07-03 to 07-15. Zero wrong invocations in 13 days since the carve-out — it IS holding. Also infeasible: no per-skill disable (whole-plugin toggle; versioned cache reverts edits); whole-plugin disable kills used skills (systematic-debugging 20x). - ECC_DISABLED_HOOKS env var in ~/.claude/settings.json (Hooks)
Runtime claim is true, but a doc consumer was missed: wiki '2 Functions/Operations/Nice-wan sign-off.md' line 50 documents this exact var as the deliberate disable mechanism ('disabled by design... don't reintroduce'). Removal contradicts the SSoT doc, silently re-arms observe hooks on any future plugin re-enable, and saves nothing — the var has zero runtime cost. Keep it. - commands/clients/prep.md (BiV skills (commands/, A–M))
Evidence is wrong: email_open_summary EXISTS as a live Supabase VIEW with exactly the columns prep.md queries (email_type, open_count, first_opened_at, last_opened_at, recipient_hash) — verified via live information_schema query. tables.sh lists only BASE TABLEs, so absence there proves nothing about views; the wiki 'Meeting prep.md' documents the same view. The skill works as written. - ~/.claude/commands/pitch/prep.md — thin launcher (BiV skills (commands/, N–Z))
Refuted. It fits conventions.md §3's explicit thin-wrapper exception (rerun semantics, PENDING gate, error-intake source — §2 cites skill:pitch:prep as its canonical example). 'If retired: none' is wrong: the wiki Weekly-cycle page names /pitch:prep as the weekly entry point (plus 2 more wiki pages + INDEX.md), so retiring needs a retire-sweep; 0 invocations reflects the sanctioned KM lane. - ~/.claude/skills/figma-swiftui-co-design/ (Installed skills (~/.claude/skills/))
Refuted: the directory was created Jul 15 2026 14:12 — one day old. 'Zero invocations in 45 days' is vacuous for a skill installed yesterday, evidently deliberately during active Dub design work (two-wave plan decided Jul 16). Not a duplicate either: its body orchestrates the plugin skills (figma-use, figma-generate-design, figma-code-connect) into an approval workflow the plugin suite lacks. - ~/.claude/skills/agent-reach/ (Installed skills (~/.claude/skills/))
Refuted — active consumer missed: ~/.claude/commands/utilities/dub-digest.md line 37 routes Reddit ingestion through 'the agent-reach skill's OpenCLI Reddit backend', and the wiki page '4 Foundation/Agent Reach (tool reference).md' documents the deliberate pipx install and already acknowledges the Firecrawl/Exa trigger overlap. - reference_biv_repo_governance_stack.md (Memory corpus (project & reference))
Evidence is wrong: MEMORY.md line 129 ALREADY indexes it — '[Repo governance stack: gate stub + ci.yml + protect-main ruleset + allow_auto_merge; ruleset writes classifier-gated (hand Bradley the cmd), App org-wide](reference_biv_repo_governance_stack.md)'. The proposed index line effectively exists; the reviewer likely read a stale MEMORY.md snapshot. No change needed. - docs/superpowers/plans/2026-05-06-bef-v3-implementation.md + specs/2026-05-06-bef-v3-vertical-aware-design.md (Workspace residue (.planning, docs, context))
Evidence 'Zero citations of either file' is wrong: LIVE wiki page 'Email interpretation (BEF).md' line 28 links the spec as 'Full design and rationale: [BEF v3 spec](...)' — the wiki deliberately delegates design detail to it. git rm both breaks a live wiki page's canonical design pointer. Only the plan is safely retirable; the spec needs its rationale folded into the wiki + link swept first.
Still can't see
- Anthropic-side system prompt internals and model routing — vendor state, not inspectable.
- Wiki claim accuracy against the live business —
wiki:deep-audit owns that; this pass covered usage and staleness signals only.
~/Scripts internals (361 scripts) — its own repo with its own dead-code tooling; audited here only where a harness file referenced it.