Follow-up from #433 / PR (server-side coverage landed there).
#433 had four coverage bullets. The two reliable, self-contained ones landed as atty-guard server tests (atom-overlay Warn classify; loud-skip for the cross-UID gate tests). The remaining two need a different harness:
1. atty-side daemon-verdict integration (REFUSED / banner / trust short-circuit)
The headline gap: security_guard's daemon-Block path (red REFUSED + \x15 readline clear + Critical mark), daemon-Warn arming, and the trust short-circuit over a daemon verdict have no integration coverage — only the response parser is unit-tested.
Attempted + reverted: an in-process fake-UDS-daemon + servicing thread inside the Zig unit test (security_guard_tests.zig). It proved racy and hang-prone — the client connection is sticky, the server thread lifecycle is hard to bound under the build test runner (which also hides child stderr), and runs alternated between pass / assertion-fail / 240 s hang. Not worth merging a flaky threaded unit test.
Recommendation: cover this in the e2e harness (tests/e2e/) instead, driving a real (or scripted) atty-guard so the daemon→atty verdict path is exercised end-to-end without in-process thread races. A scripted-PTY scenario asserting the REFUSED line + cleared readline on a daemon-Block is the right shape.
2. e2e env.toml goldens + sandbox continue-on-error
- e2e
env.toml goldens are written but never diffed — either compare them or drop them from the golden set.
- The sandbox eBPF/ONNX workflows run
continue-on-error: true; reconsider whether that hides real regressions.
TODO
Follow-up from #433 / PR (server-side coverage landed there).
#433 had four coverage bullets. The two reliable, self-contained ones landed as atty-guard server tests (atom-overlay Warn classify; loud-skip for the cross-UID gate tests). The remaining two need a different harness:
1. atty-side daemon-verdict integration (REFUSED / banner / trust short-circuit)
The headline gap:
security_guard's daemon-Blockpath (redREFUSED+\x15readline clear + Critical mark), daemon-Warnarming, and the trust short-circuit over a daemon verdict have no integration coverage — only the response parser is unit-tested.Attempted + reverted: an in-process fake-UDS-daemon + servicing thread inside the Zig unit test (
security_guard_tests.zig). It proved racy and hang-prone — the client connection is sticky, the server thread lifecycle is hard to bound under the build test runner (which also hides child stderr), and runs alternated between pass / assertion-fail / 240 s hang. Not worth merging a flaky threaded unit test.Recommendation: cover this in the e2e harness (
tests/e2e/) instead, driving a real (or scripted)atty-guardso the daemon→atty verdict path is exercised end-to-end without in-process thread races. A scripted-PTY scenario asserting theREFUSEDline + cleared readline on a daemon-Block is the right shape.2. e2e
env.tomlgoldens + sandboxcontinue-on-errorenv.tomlgoldens are written but never diffed — either compare them or drop them from the golden set.continue-on-error: true; reconsider whether that hides real regressions.TODO
env.tomlor remove it from goldenscontinue-on-erroron the sandbox eBPF/ONNX jobs