Originally created by: fu351
Every BLOCK/AUTH must carry a reason code and a human explanation — issue [#186]'s docs/REASON_CODES.md catalogue is the reference for the second half of that contract. Reason-code explanations in Doberman are inline free text at each call site (there is no central ReasonCode -> explanation map in code), so this issue enforces quality at the documentation layer instead: add a test that parses docs/REASON_CODES.md's table and asserts every ReasonCode member has a row with a non-empty "what it means" cell that isn't a placeholder (e.g. not empty, not just the code name restated, not "TODO"/"TBD").
Small script/test that reads a markdown table (a simple line-split/regex parse is enough — no markdown library needed) and cross-checks it against list(ReasonCode). Good follow-on from [#186] — that one builds the catalogue this test enforces; do this one after [#186] is merged.
ReasonCode member to make the test pass — if a gap is found, fix docs/REASON_CODES.md, not the enum.docs/REASON_CODES.md — the table this test parses (from issue [#186]).src/doberman/models.py — class ReasonCode(StrEnum) (line 204), the source of truth for the full code list.tests/unit/ (e.g. test_reason_codes_documented.py).ReasonCode member is missing from docs/REASON_CODES.md.ruff check . && ruff format --check . and lint-imports passpytest passespytest tests/unit/test_reason_codes_documented.py -v
docs/CLI.md or any other doc page.ReasonCode value.New here? Start with CONTRIBUTING.md. Issues are labelled level-1 (docs only) through level-10 (new subsystem) — pick one at your level and climb. Comment to claim an issue before starting.
Originally posted by: Shihasz
I'm working on this now. Will link a PR shortly once the tests are ready
Ticket changed by: fu351