Audit whether the theories/methodologies a project claims to implement are faithfully operationalized — or name-dropped, partially built, distorted, or over-claimed. Source-grounds the load-bearing theories; tags the rest provisional. Run periodically alongside /framework-health.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add haabe/mycelium --skill theory-fidelity --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Theory Fidelity?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/haabe-theory-fidelity)More formats (shields.io, HTML) on the badges page.
---
name: theory-fidelity
description: "Audit whether the theories/methodologies a project claims to implement are faithfully operationalized — or name-dropped, partially built, distorted, or over-claimed. Source-grounds the load-bearing theories; tags the rest provisional. Run periodically alongside /framework-health."
metadata:
instruction_budget: "55"
framework_dependency: "mycelium"
framework_dependency_note: "Designed to run within Mycelium (https://github.com/haabe/mycelium), where docs/theories.md provides the claimed-theory inventory. On a non-Mycelium project it audits whatever theory/methodology doc the project maintains; with no such doc it reports the absence. Install: /plugin install mycelium@haabe-mycelium."
---
# Theory Fidelity Audit
Most framework checks evaluate *process* (cycle health, gates) or *artifact performance* (evals, DORA). None of them ask the question this skill exists for: **for every theory a project claims to represent, is the mapped mechanism actually faithful to what the theory says — or is it theatre?** This is the audit of the theory→mechanism mapping itself.
The framework's own stated bar (`docs/theories.md`): *"every theory is mechanism-mapped … citations without mechanism-mapping are theatre."* This skill holds the project to that bar — including holding the theory doc to it.
## When to Use
- Quarterly, alongside `/mycelium:framework-health` (process health) — this is the theory-fidelity half.
- After adding/citing a new theory, or after editing a theory's mechanism (skill/gate/schema).
- When a citation looks decorative, or when a doc claims a mechanism you suspect doesn't exist.
## The Grading Rubric (three axes)
For each claimed theory, record:
1. **Representation** — `Mechanized` (a skill/gate/schema/canvas applies it) · `Prose-only` (cited + described, no mechanism) · `Absent`.
2. **Fidelity** (only if Mechanized):
- `Faithful` — the mechanism matches the theory's real claims.
- `Justified-Adaptation` — the mechanism deliberately diverges **and the rationale is documented in-repo**. Divergence with **no** documented rationale is `Distorted`, not Justified.
- `Partial` — a faithful subset, with a named gap.
- `Distorted` — diverges without rationale, or misrepresents the theory.
- `Over-claim` — the theory doc claims more than the mechanism delivers (the project's own "theatre" failure mode).
- `Name-only` — cited but not actually mechanized.
3. **Evidence-basis** — `source-grounded` (verified against the author's canonical work) · `model-knowledge` (from the agent's training — **provisional / consistency-only**).
## Workflow
0. **Rule on the PREVIOUS audit's findings — before producing any new ones.** Per
`${CLAUDE_PLUGIN_ROOT}/engine/canvas-guidance.yml#prior_findings_first`.
Locate the most recent `.claude/evals/theory-audit-*.md`. For every finding it raised,
write one of three rulings into the new report, and say what grounds it:
- **CLOSED** — name the mechanism, version or commit that closed it.
- **STILL-OPEN** — carry it forward WITH A HORIZON. An open finding with no date is how
a ranking becomes archaeology.
- **DECLINED** — a reason AND a re-open trigger. Declining is a first-class outcome; a
gap not worth closing for this project should be declined in writing rather than
re-proposed every audit or silently dropped.
If no prior audit exists, say so and continue — a first audit has nothing to score.
**WHY THIS IS STEP 0 AND NOT STEP 9.** `theory-audit-2026-04-17.md` graded Wardley
fidelity and ranked its gaps correctly: climatic patterns zero of ~30 HIGH, gameplay
4-5 of 64+ HIGH, inertia not modelled. **Nothing consumed that ranking for four months**,
while the map was repeatedly described as strategy. It surfaced on 2026-08-05 only
because an agent happened to search before proposing — and had it not, the next audit
would have re-derived the same list and called it new. The failure is not dishonesty:
grading theories is interesting and scoring last quarter's grades is not, so anything
placed after the interesting work is what a long session drops. Ordering is the
mechanism.
1. **Build the claimed-theory inventory.** Read the project's theory doc (`docs/theories.md` for Mycelium). Tier it by load-bearing-ness if the doc does (Mycelium: Tier 1 load-bearing / Tier 2 integrated / Tier 3 citation-only). If no theory doc exists, report that absence and stop — you cannot audit fidelity against an unstated standard.
2. **Set the grounding standard (cost gate).** Source-grounding every theory is expensive; grading from model-knowledge alone is the **anti-pattern #7 trap at the meta-level** — you would be grading the project against your own paraphrase of the theory, which is consistency-as-evidence (see `harness/anti-patterns.md` #7). Default split:
- **Load-bearing theories → source-grounded.** Use WebSearch/WebFetch to confirm the author's actual canonical claims; cite the source. Distortion in a load-bearing theory is the expensive failure.
- **The rest → model-knowledge, every grade tagged provisional**, plus a `promotion candidate` flag for any that turn out load-bearing but under-mechanized.
- Surface the chosen split to the user before a large run (this can fan out many agents).
3. **Map each theory to its mechanism — and READ the mechanism.** Open the cited skill/gate/schema/canvas before grading. A claim in the theory doc is not evidence of the mechanism's state; only reading the artifact is (anti-pattern #7 Read-before-claim). To grade `Justified-Adaptation`, search the repo (theory doc, philosophy doc, changelog, decision-log, the skill itself) for the documented rationale — absent rationale ⇒ `Distorted`.
4. **Grade** on the three axes. For each: the mechanism + path, representation, fidelity grade, evidence-basis, a 2–4 sentence justification citing **both** the theory's real claim and the repo mechanism, the specific gap/distortion, and a one-line fix.
5. **Premortem (how is THIS audit wrong?).** State it explicitly: model-knowledge grades inherit the same fidelity risk they measure; subagents may anchor on the project's own framing; single-pass grades have no adversarial second opinion. Name the lowest-regret findings (self-contradictions in-repo are unimpeachable regardless of theory knowledge).
6. **Devil's-advocate.** Challenge your own calls: is an "over-claim" really infidelity, or just doc imprecision? (By the project's own "no theatre" standard, an inaccurate mechanism-map *is* the failure.) Is a schema-absence a fidelity gap, or just a validation gap? (Usually the latter — say so.)
7. **Attribution-fix discipline (the Lopopolo rule).** When the audit finds a wrong citation, do **not** blind-sweep the name across the repo. Ground-truth **every** occurrence first — the same name is often attached to a *different, correct* claim elsewhere. A blind find-replace of a mis-attributed Reflexion citation once would have corrupted ~16 valid citations of the same author for an unrelated concept. Fix only the occurrences that actually carry the wrong claim.
8. **Log + recommend — to a PREDICTABLE, DATED PATH.** Write the report to
`.claude/evals/theory-audit-YYYY-MM-DD.md`, and append a one-paragraph summary plus that
path to the decision-log. **The path is pinned because an instrument that cannot LOCATE
its previous output cannot score it** — this step previously read "the decision-log (or a
report file)", and that vagueness is why the 2026-04-17 audit was findable only by
accident. Include the Step 0 rulings in the report so the NEXT audit can score this one.
Separate cheap doc-fidelity fixes from mechanism/schema builds; gate the latter on real
need (JiT), not on the audit's enthusiasm.
**Every finding ranked HIGH must leave this skill with a HOME** — tag an existing
opportunity or create one on the FRAMEWORK-side root of the OST (`opportunities.yml`,
`rolls_up_to: <framework root id>`), or decline it explicitly with a re-open trigger. Per
`${CLAUDE_PLUGIN_ROOT}/engine/canvas-guidance.yml#prior_findings_first.route_high_findings`.
**This is the half that actually closes the loop, and Step 0 alone does not.** Step 0 fires
only when someone RUNS this skill again — so on an annual cadence, findings sleep for a
year, and the rule merely moves the trigger from "somebody re-reads the report" to
"somebody re-runs the audit". An opportunity is read by instruments on their own cadence
(`/canvas-health`, `/ost-render`, `/diamond-assess`), so the finding stops depending on
anyone remembering this audit exists.
**NOT human-tasks.yml.** That canvas is scoped by its own schema to "offline human tasks
(interviews, observations, outreach)" and its `type` enum is entirely human-contact
activities. A finding like "encode the climatic patterns" is agent-executable engineering
work, and filing it as an `interview` would be a finding wearing a human-task's clothes.
## Output Format
```
## Theory-Fidelity Report
> **Verdict: [N theories · X Faithful · Y Partial · Z Distorted/Over-claim]** — [one-line headline; e.g. "engine faithful, theory doc is the weakest artifact"]
### Scorecard
| Theory (Author) | Representation | Fidelity | Basis | Mechanism / path |
|---|---|---|---|---|
| ... | Mechanized | **Distorted** | source-grounded | ... |
(Render Distorted / Over-claim / Name-only rows so they POP — leading bold — per Von Restorff; they are the rows the reader must not scroll past.)
### Findings (per flagged theory)
- <Theory>: <gap/distortion>, citing theory claim + repo mechanism. Evidence: source-grounded|provisional. Fix: <one line>.
### Cross-cutting patterns
- [e.g. doc-fidelity weaker than engine-fidelity; schema-gap cluster; citation errors]
### Premortem + Devil's-advocate
- [how this audit could be wrong; which grades are provisional; lowest-regret findings]
### Recommended actions (ranked; cheap doc fixes vs mechanism builds)
- ...
```
## Rules
- Never grade a load-bearing theory from model-knowledge alone — source-ground it, or tag the grade provisional and say so.
- Never blind-sweep an attribution fix — ground-truth every occurrence (step 7).
- A deliberate adaptation with documented rationale is `Justified-Adaptation`, not a failure — do not flag conscious divergence as infidelity.
- Surface large fan-outs for re-authorization before spending (scope checkpoint, G-P9).
- **Never open a fresh audit without ruling on the previous one (Step 0).** An audit that
ranks work and is never re-read is the same shape as a check that runs and is never looked
at — and this skill produced exactly that on 2026-04-17.
## Theory Citations
- Argyris: triple-loop learning (the framework evaluating how faithfully it represents its own foundations).
- Goodhart: a cited theory becomes decoration the moment the citation, not the mechanism, is the target.
- Lanham et al. (2023): citations must be faithful, not after-the-fact rationalization — the discipline this skill enforces on the project.
- Mycelium anti-pattern #7 (consistency-as-evidence): grading a mechanism against one's own recollection of a theory is the meta-level instance; source-grounding is the escape.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!