A Claude skill that turns an experimental-science discipline into a portable tool for evaluating any claim set and maintaining living hypothesis registries. Bilingual TR/EN.
Turkish original:
docs/tr/kullanim-kilavuzu.md
This guide is the permanent reference. The system has three layers, based on the architecture that survived the audit of the original proposal — the rest was discarded:
| Layer | Component | Responsibility | Where it lives |
|---|---|---|---|
| Behavior | userPreferences + Mizan Project Instructions | How the AI behaves | Claude settings + Project instructions |
| Audit | Mizan skill (v2.1) | How a claim is evaluated | Installed as a skill |
| Data | mizan-registry.yaml | How research knowledge is stored | Project knowledge / repo |
The three layers work independently: the schema is readable without the skill, and the skill audits without the schema. Together they are the full system.
mizan.skill to Claude (Settings → Capabilities →
Skills). On updates, upload the new version over the old one — it does
not auto-update. Current version: v2.1 (5 modes + schema).project-instructions.md into the
“Project instructions” field of every Claude Project you run with Mizan.mizan-registry.yaml template, fill in your
project name, and add it as a file to Project knowledge OR keep it in
your repo (recommended: in the repo — the git diff IS the schema’s
design rationale).When a testable claim arises: say “preregister this in the registry” or approve Claude’s suggestion. Claude produces an H-entry in schema format — the threshold and refutation condition are LOCKED BEFORE ANY RESULT IS SEEN. Add the entry to your registry file (Claude cannot directly edit the file in project knowledge; it produces the up-to-date block and you paste it — if you work in a repo, Claude Code can write it directly).
Two fields are non-negotiable in an experiment entry: baseline (if none,
a written justification; a baseline-less experiment can never promote a
hypothesis to [K]) and confound_controls (each item in the
hypothesis’s confound list is either controlled or explicitly accepted as
a risk). The result block is append-only; honesty_annexes cannot be
empty.
If a result is better than expected, mark surprising_positive: true and
the [K]-promotion waits for the symmetric control (“is it this specific
mechanism, or a generic alternative?”). The headline is published after
the control.
Hand over any claim set — an AI summary, report, or self-assessment — by saying “audit this with Mizan”. Output: a coverage declaration, a tiered claim table, a counter-example sweep, a hit rate, the missing card, and next steps.
“Audit this repo/module with Mizan.” Claude extracts a claim inventory
(tests → comments → names → docs), verifies each hop separately (a
comment’s existence ≠ a behavior’s existence), and produces an
evidence-tiered behavior report + a Gap Map. In an undocumented project,
that report IS the documentation. A coverage declaration is mandatory on a
large codebase — a sampled audit is never presented as a full one. When you
want full coverage on a repo too big for one pass, ask Claude to phase it:
sequential slices sharing one append-only registry plus a Coverage Ledger
(procedure in code-audit.md §A5.1) — no need to hold the whole repo in
one session.
When starting to debug: “register this as a bug hypothesis.” The symptom
(no interpretation), the mechanism hypothesis (specific enough to be
wrong), a rival hypothesis, and a refutation test are recorded. “The fix
worked” is a surprising positive: no mechanism becomes [K] without a
revert-check. After 10–15 entries you get your real bug-instinct hit rate.
For a new feature/PRD: “gate this.” The PRD is atomized (problem / value / cost / dependency / scope claims are tiered — dependency claims are verified NOW, not mid-sprint), the success threshold AND the kill condition are preregistered, and alternative-forcing is applied (≥1 cheaper alternative + the null alternative, on the same metric). Acceptance criteria are written as refutation conditions. Candidates from the Gap Map are an evidence-carrying, ready-made backlog.
Every ~10 entries or on request: which hypothesis types hit, which instruments are reliable, where bias is accumulating. The output feeds the methodology — the instructions and schema are themselves subject to revision (following their own discipline: changes are justified, history is never deleted).
[K].[R] is never deleted.runtime / instrument / third_party / author / none). A
self-judged claim (author) carries a permanent [KKE] and can never
reach [K]; with no arbiter (none) the threshold is decorative and
the entry stays [S]. This is what keeps the discipline honest outside
software, where the runtime no longer decides for you.Four more come in at schema 1.4, and each one closes a place where the schema permitted what the prose already forbade:
[K] entry is backed by a result that met its threshold, or by a
cited external source. Writing the tier is not the same as earning it.
Prior art does not count: relatives are context for originality, not
evidence for this claim.non_numeric_justification) for the rare categorical verdict.formal, metric with a named
instrument, cost, status, and prior_art present — “no known
relatives” is an answer, an absent field is silence.Three more apply to the specialised blocks, from schema 1.3 onward. A bug entry and a feature gate ARE hypotheses — same fields, same rules 1–8 — plus:
Registries declaring 1.0–1.4 keep working unenforced; bump the version when the entries are ready. The shipped schema is 1.5.
coverage block’s claim_tier may only be [K] once every phase row
and the MERGE row are done. “Each slice fully audited” is not “the
target fully audited”, and presenting the second as the first is itself
a [Y]. The ledger lives in the registry rather than beside it, so the
append-only rule protects its rows like any other entry.Warnings (W1–W4) advise, they do not block. An entry with no two_sided
statement; an entry with no result yet and no threshold or refutation; a
registry where every tiered entry sits at [K]. Each has a legitimate
exception — a draft entry, a one-entry registry — which is why none is a
rule. --strict promotes them to failures; CI runs strict on the files whose
job is to model the discipline (schema, templates, examples) and advisory
everywhere else, so a warning nobody has acted on yet does not block an
unrelated change.
Migrating your SpectralLM experiment registry
(experiment_registry_and_metrics.md) to the mizan-registry.yaml schema —
with the threshold locked last session: the schema carries ≥20 real
entries without requiring a structural rewrite AND is read and updated at
least once by a tool/model other than you → then the standardization
discussion opens. Otherwise the ORP idea is [R] and the schema stays a
personal tool — which is also a valid outcome.
| File | Contents |
|---|---|
| mizan.skill | Skill package v2.1 (5 modes + embedded schema) |
| mizan-registry.yaml | Schema template (standalone copy) |
| docs/en/project-instructions.md | Project instructions block + diff analysis |
| skill/mizan/SKILL.md + references/ | Mode 1–5 English reference |
| docs/tr/ | Full Turkish documentation |
| This guide | Install, workflows, rules |