Files

2.7 KiB

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.