04 — QUALITY: Knowledge Transfer
Format: two gates. Gate 1 is mechanical and binary (engine/qc.py — the build is gated on it; you cannot ship a fail). Gate 2 is a judgment checklist run by Claude + the advisor. When to run: after every Create or Update, before the capture is shared.
Why two gates, not 100-point scoring: the mechanical checks (gaps flagged, nothing fabricated, structure intact) are disqualifying — a binary gate is correct. The judgment checks (is the captured tacit knowledge actually the knowledge?) can't be mechanized — a checklist is correct.
Gate 1 — Mechanical (binary, blocking · engine/qc.py)
Run: py engine/qc.py ". Must exit 0. It enforces:
| # | Check | Blocks ship |
|---|---|---|
| 1 | Every template section is present in the output | Yes |
| 2 | No marker leaks — no [...], no FILL::, no FLAG:: in the rendered text | Yes |
| 3 | Every gap and every risk is highlighted (highlight count == FILL + FLAG count) | Yes |
| 4 | Aptos font (matches the source-doc standard) | Yes |
| 5 | Filename matches | Yes |
Gate 1 is the anti-fabrication floor: a blank can't go un-flagged, and a flag can't go un-highlighted.
Gate 2 — Judgment (checklist · Claude + advisor)
Mechanical pass ≠ good capture. Verify by hand:
Substantiation
- Pick 5 lines at random — each traces to a specific moment in the source. Zero lines you can't source.
- No invented values dressed as fact. Anything uncertain is a
FILL::flag, not a confident guess.
The knowledge is actually captured
- Watch-outs carry judgment, not restated steps. At least the non-obvious calls a successor would otherwise learn the hard way are present.
- The single points of failure are flagged (
FLAG:: RISK —), not buried. - A competent successor who never met the expert could run one cycle from this doc + ask only the flagged questions.
Voice + boundary
- Plain operator language — no internal jargon, no AI-team names, no builder-speak (see
02forbidden terms). - If vault-visible: fully anonymized. No real client, person, or account number. Fictional names only.
- Alphabetized Rules + Standing-notes lists.
Ship Criteria
- Gate 1 exited 0, and every Gate 2 item is true, and the advisor has reviewed. The advisor is the final gate — not the QC pass.
Common Failure Modes
| Failure | What Happens | How to Fix |
|---|---|---|
| Steps captured, judgment missed | The doc reads like an SOP; the successor still can't make the calls | Re-mine the source for the watch-outs — the "this always…" / "don't do X before Y" moments. If the source doesn't have them, that's a facilitation gap (06), not a writing gap. |
| Blank filled with a guess | A plausible value that isn't in the source slips in | Replace with FILL:: . The gate can't catch a plausible fabrication — Gate 2 substantiation must. |
| Real client in a vault example | Anonymization boundary violated | Swap to fictional names/data. Never lift a real subject into a vault-visible capture. |
| Gate gamed by removing flags | Someone deletes a FILL:: to make the page "clean" | The gap didn't close — the flag did. Restore it; an unflagged unknown is the exact failure this kit exists to prevent. |
| One capture, many subjects | A single doc tries to hold several people/processes | One capture per subject/process. Run the kit again. |
| Process content under a config heading | Ordered steps (1, 2, 3…) render under "Rules — alphabetized" | Pick the template shape that matches: template-process.json ("Sequence — run in order") for a method, template.json ("Rules — alphabetized") for standing config. See 05, Two capture shapes. |