Skip to content

PAIDEIA v0.9.23 — the prose contracts get a test suite

Choose a tag to compare

@TaewoooPark TaewoooPark released this 04 Jul 15:19
· 14 commits to main since this release

test(ci): 53 tests + spec lints + GitHub Actions

Four of the five releases before this cycle (v0.9.9–v0.9.12) repaired contracts that lived only in prose — tier vocabulary, timestamp formats, log idempotence, phase parity. Nothing verified them, so they drifted. Now something does, on every push:

Behavior tests — the phase machine's full precedence (setup→diag→drill→mock→cram→cool), log_tool's idempotent replace-by-source with all-or-nothing validation, the statusline rendering cool · D-0 with byte-identical cache hits and silence outside course folders, the SessionStart banner agreeing with it, doctor --fix's global-mode guard, and vision_ocr's structure-preserving dedupe (headings/$$-blocks keep their lines; "Let's check…" student prose survives).

Spec lints — the novel part: unit tests over the markdown specs themselves. The retired ✅/🔴 coverage vocabulary is banned outside its ban-notices; exactly 16 commands; /hwmap blind may never be recommended; the weakmap/timestamp/schema anchors that python regexes on must exist; every errors/log.md writer must route through log_tool.py; the init-course seed must be byte-equal to paideia_lib.ERRORS_LOG_SEED; ingest keeps its 30-page cap and 3-digit padding; paideia_lib stays the only parse_meta definer.

CI.github/workflows/test.yml, Python 3.9 (documented floor) + 3.13, stdlib only — the absence of a pip step is itself part of the contract.