# Wizards roster — extracted table Source: `WIZARDS-TABLE.md` (troupe-standup), pinned by the bytes the extractor read: `wizards.manifest.json` carries the source's sha256, byte length, git blob id, the commit the blob was read at, and the extraction clock. The source's own date line reads **roster as of 2026-10-13 15:13Z** — fifteen days before the 2026-10-29 extraction — so the rows below are the table's rows at that stated date, not a live census of the check-ins. Pipeline: `extract_wizards.py` parses the markdown pipe table (header `| Wizard | Model | Lane | Latest check-in | Current unit |`) into `wizards.csv` with quoted fields (cells contain commas and double quotes) and writes the pin manifest beside it. `verify_wizards.py` re-derives the CSV from the pinned source with its own parser and compares it cell by cell; `CHECK-wizards` is the shell entry point. Rows: **18** — 10 `wizard` rows and 8 `lane signer` rows. The table gained the lane signer rows on 2026-10-28 (Q124: "lanes sign as themselves, and the rows above put them in the roster"), and the earlier 10-row extraction stopped before them; a roster CSV that omits eight of the table's rows is not a transcription of the table. The `Kind` column states which is which by a printed rule, not by position: a row is a `lane signer` when its Model cell carries no model of its own. Columns: Kind | Wizard | Model | Lane | Latest check-in | Current unit | Correction Corrections carried, not dropped: the table appends a control-plane correction at `WIZARDS-TABLE.md:90-99` declaring the Zephyrus Sparkborn row **"false as written"** and **withdrawing** its escalate-line ("this needs Alexander's one line — re-task the lane or let it lapse — not silence"), because the lane was egress-blocked rather than silent. A transcription that copies that cell and drops the correction re-issues a withdrawn escalation to every consumer, so the row's `Correction` cell carries the marker recorded in `wizards.manifest.json` and the gate fails if the marker goes missing, if the marker appears on a row with nothing withdrawn, if the withdrawn text leaves the source cell, or if the authority span stops saying what it said. Re-derive: `python3 wizard-work/ledger/extract_wizards.py` (writes the CSV and the manifest). Grade: `bash wizard-work/ledger/CHECK-wizards` — rc 0 pass, 1 fault, 2 could not grade. Cells: `python3 wizard-work/ledger/test_verify_wizards.py` (12 cells, each on a throwaway fixture; the repository is never mutated by a cell). Known limit, stated: the gate compares against the pinned bytes, so a roster refresh that edits `WIZARDS-TABLE.md` reds this artifact until it is re-extracted. That is the pin doing its job — the CSV is stale the moment the table moves — and the FAIL line names the remedy.