hypatia-bench exists so that a green run predicts a green pull request. For api-rest it stopped being true.
The script runs:
cargo test -p api-rest --lib
ci.yaml runs both halves, and its comment says why the second one names no binary:
# Every test target, not one named binary: the integration tests are
# split per surface, so naming them here means a new file is silently
# never run in CI.
- name: API integration tests
run: just rust-test-api-integration
just rust-test-api-integration is cargo test -p api-rest --tests. Nothing under crates/api-rest/tests/ runs in the bench today — sixteen trigger tests, twelve ingest tests, and every other surface.
Found 2026-08-11 on hypatia issue-182: two new tests were added to crates/api-rest/tests/ingest.rs, hypatia-bench --full reported PASS, and neither test had run. They passed when invoked by hand:
cd bench/<name>
DATABASE_URL=postgres://hypatia_ci@localhost:55432/hypatia_<name> cargo test -p api-rest --tests
This is the same class as the hypatia-verify web gate that runs tsc --noEmit against a solution-style tsconfig and compiles zero files: a gate that reports on work it never did. The fix that does not rot is to read the command out of ci.yaml, the way hypatia-compose-check already does, rather than keeping a second copy of the gate list in the script.
Done when: a test file added under crates/api-rest/tests/ fails hypatia-bench if it fails CI.
hypatia-benchexists so that a green run predicts a green pull request. Forapi-restit stopped being true.The script runs:
ci.yaml runs both halves, and its comment says why the second one names no binary:
just rust-test-api-integrationiscargo test -p api-rest --tests. Nothing undercrates/api-rest/tests/runs in the bench today — sixteen trigger tests, twelve ingest tests, and every other surface.Found 2026-08-11 on hypatia issue-182: two new tests were added to
crates/api-rest/tests/ingest.rs,hypatia-bench --fullreported PASS, and neither test had run. They passed when invoked by hand:This is the same class as the
hypatia-verifyweb gate that runstsc --noEmitagainst a solution-style tsconfig and compiles zero files: a gate that reports on work it never did. The fix that does not rot is to read the command out ofci.yaml, the wayhypatia-compose-checkalready does, rather than keeping a second copy of the gate list in the script.Done when: a test file added under
crates/api-rest/tests/failshypatia-benchif it fails CI.