Skip to content

v5.17.4 — checks that were not checking

Choose a tag to compare

@ucsandman ucsandman released this 11 Aug 03:59
· 294 commits to main since this release

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.mjs matched "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 tolerant warn and 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 --strict rather than advisory: a check that never ran is not a passing check. .claude/CODEBASE_MAP.md is marked optional — it is generated by a local skill and gitignored, so its absence on a runner is expected, not a dead guard; git ls-files over all 22 referenced paths confirms it is the only untracked one.
  • The demo deployment hid the interruption budget entirely. /api/approvals/floods had no demo dispatch entry, so it fell through to the write-block path and 403'd. ApprovalFloodBanner treats any non-OK response as "no flood" and renders null, so the capability was absent from the demo with no error to notice. The fixture trips the real require_approval fixture rule rather than an invented id, because the banner names the rule and its Pause button PATCHes that id — a visitor clicking through to /policies has 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 a title and aria-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.