Task files, the files they copy in (byte-identical to the reference on m3a-ref), each area's check record, and a README with the per-task table of what each check exposed. The handoff note is done with. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.9 KiB
M3a task 22: end to end, in two processes
Branch: m3a (run git switch m3a; git status --short must be empty, otherwise stop)
Commit subject: Add the end-to-end test: loopd against the real brokerd binary
Goal
One test that runs the whole decision path across the real socket: loopd's turn loop, with a
BrokerPort, against the real brokerd binary on a temporary home, and the fake llama server.
The recorded model calls read_file with no grant; the next request to the model holds
"Denied: no grant allows this call."; the audit log verifies and holds one Decision record,
no_grant. It cannot be one process: loopd may not depend on brokerd, even as a
dev-dependency (scripts/check-crate-deps.sh checks that too). So the test finds the binary
through BOXMAKER_BROKERD, is #[ignore]d without it, and make gate sets it.
This task writes no code: every piece is from tasks 10 to 21. If the test fails, an earlier task's code is wrong. Find which and stop and report; do not fix it here.
Files
- Copy:
crates/loopd/tests/end_to_end.rs,Makefile,tools/check-m3a-device.sh - Modify:
docs/implementer-log.md
The Makefile gains two lines in gate, after cargo test:
cargo build --workspace --locked --offline
BOXMAKER_BROKERD=$(CURDIR)/target/debug/brokerd \
cargo test -p loopd --test end_to_end --locked --offline -- --ignored
tools/check-m3a-device.sh is the owner's check on straylight. Do not run it: it needs the
real server, which is shared. Copy it so that it is in the repository.
Steps
- 1. Copy.
git switch m3a, thencp docs/plans/M3a/files/crates/loopd/tests/end_to_end.rs crates/loopd/tests/,cp docs/plans/M3a/files/Makefile Makefileandcp docs/plans/M3a/files/tools/check-m3a-device.sh tools/ - 2. Without the variable.
cargo test -p loopd --test end_to_end. Expected:0 passed; 0 failed; 1 ignored. - 3. With it.
cargo build --workspace, thenBOXMAKER_BROKERD=$PWD/target/debug/brokerd cargo test -p loopd --test end_to_end -- --ignored, five times. Expected:1 passedevery time. - 4. See it fail closed.
cargo test -p loopd --test end_to_end -- --ignoredwithout the variable. Expected: it fails with "set BOXMAKER_BROKERD". A test that passed here would be a test that checks nothing. - 5. Run the gate.
make gate. Expected: the end-to-end line reports1 passed, and the last line isgate: ok. - 6. Log and commit.
git add crates/loopd/tests/end_to_end.rs Makefile tools/check-m3a-device.sh docs/implementer-log.md && git commit
Done when
- Steps 2 to 5 gave what they say, and
make gateprintsgate: ok.
Stop and report if
- Step 3 fails. Say which assertion, and paste
brokerd's audit directory listing if the audit part failed. Do not change any code in this task. make gatecannot findtarget/debug/brokerd(for example becauseCARGO_TARGET_DIRis set).