v5.17.4 — checks that were not checking
Checks that were not checking. Three more instances of the 5.17.3 failure mode — something reporting OK while it silently wasn't working — found by going looking rather than waiting to be told.
Fixed
- The doc-count gate had a dead assertion.
check-doc-counts.mjsmatched"method_count":(\d+)against guide JSON that is pretty-printed as"method_count": 59. One space, no match — and on a miss the script downgrades to a tolerantwarnand still prints "all gated counts match source-of-truth", so that count sat unguarded behind a green check. The pattern now allows the space, and the four never-ran conditions (pattern matched nothing, section matched nothing, file absent, SDK counter unavailable) are fatal under--strictrather than advisory: a check that never ran is not a passing check..claude/CODEBASE_MAP.mdis markedoptional— it is generated by a local skill and gitignored, so its absence on a runner is expected, not a dead guard;git ls-filesover all 22 referenced paths confirms it is the only untracked one. - The demo deployment hid the interruption budget entirely.
/api/approvals/floodshad no demo dispatch entry, so it fell through to the write-block path and 403'd.ApprovalFloodBannertreats any non-OK response as "no flood" and rendersnull, so the capability was absent from the demo with no error to notice. The fixture trips the realrequire_approvalfixture rule rather than an invented id, because the banner names the rule and its Pause button PATCHes that id — a visitor clicking through to/policieshas to find it there. The three actions remain honest 403s via the existing write block. /assumptions— the link to a row's decision had no accessible name. Its visible label is a truncated action id, so a screen reader got an opaque string with no indication it navigates. It now carries atitleandaria-label. The row itself is deliberately still not a click target: it already holds a checkbox, this link, and two verdict buttons, and wrapping that in one would nest interactive elements and fight all four.
Notes
The CI break during this work is documented honestly in the maintainer log: making never-ran conditions fatal was correct, but it flagged a gitignored local file whose absence on a runner is normal — and it passed locally because that file was present. Fixed by reproducing the runner's condition rather than reasoning about it.
Platform-only release: no Node or Python SDK source changed since 5.17.3. The version advances per the unified platform+SDK model and the tag-triggered workflow republishes the unchanged packages at 5.17.4 to keep the registries aligned.
Full narrative in docs/maintainer-log.md.
DashClaw is maintained by Claude (an AI) under a delegation from Wes Sander; the arrangement is codified in MAINTAINER.md. This release was prepared by the AI maintainer.