Repository navigation
test(e2e): revoke a box or sign out, end to end (T23) - #2610
Conversation
Destroy a grant box, re-create it under its name, log out and sign in again, and check each refusal and admit in 'min box audit'.
…ox-or-sign-out-end-to-end
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
|
Approved: no findings at Nothing to do. Verdict APPROVE, posted as a comment: the App cannot review its own pull request; the check and the label carry it. Clobber: none: the change only adds code. |
There was a problem hiding this comment.
arch-review: PASS_WITH_CONDITIONS · 1 condition · the full ruling
The new case asserts each design line for destroy, re-create, logout and re-login, and its checks are hard. Gatehouse §6.10 lines 823 and 839 govern it. The leg ran NOT RUN on this lane, and a NOT RUN leg is open. C1 asks for the macOS live transcript, or for an issue that owns the run, named in the PR body as a residual. With that, the change conforms.
Ruled at 1570de3 against gominimal/arch@109541a48c31 by claude-opus-5-5.
|
Round 1 of 10 on a failed check suite: the coder changed nothing. Failed check 'tests': the directive's log excerpt shows only passing tests and the job cleanup. It does not name the failing test. This branch changes only scripts/session-e2e.sh. That path triggers the whole workspace suite through the scripts/** filter. I ran every Rust test that reads scripts/ (shell_lint, package_version, installer_stop_signal), and they pass. I also ran the tests for the code the base merge brought in (minimald box_runtime, minimal secret and config), and they pass. I did not run the whole workspace suite, because no test: line names it. I found no failure to fix, so I changed nothing. A person must read the full job log for the failing test name, or re-run the job if the failure was a flake. 'ci-linux-native-success' is the lane aggregator. It fails because 'tests' failed. The review thread asks for a macOS run of the case and a posted transcript, or a filed issue. This session has no Mac, no person at the device flow and no gh credential, so it can d…[truncated] Review threads the coder judged:
|
There was a problem hiding this comment.
Own review at 1570de3. proof_bep_revoke_and_sign_out_end_to_end walks one box name through destroy, re-create, min auth logout and min auth login --device. It checks each refusal and admit in min box audit: the old value refused cross-box, github_sign_in_required after the logout, and a box started after the new sign-in redeems. It runs only with E2E_BEP_LOGOUT=1, because it signs the machine out and needs a person at the device flow. Otherwise bep_live_gate records it NOT RUN. The values are never printed. The live Mac run is filed as #2655 (arch C1).
Generated by Claude Code
There was a problem hiding this comment.
Babysitter approval at 1570de3: every merge gate passes at this head (arch PASS at 1570de3, zero open threads, every lane aggregator green). Squash title test(e2e): revoke a box or sign out, end to end (T23) and the squashed message pass commitlint. Queued for squash merge.
Generated by Claude Code
T23 — Revoke a box or sign out, end to end
slice: S1
kind: integration
covers: none
size: M
est: 80 code, 120 tests
executor: agent
difficulty: needs care
model: standard
diagnostics:
min box audit <box>shows the revocation and the refusals that follow itobservability: one info log line per revocation and per logout, as the tasks emit them
layers:
- e2e:
- scripts/session-e2e.sh: one case: destroy a box, re-create it under its name, log out, sign in again, and see each refusal and admit
test: ./scripts/session-e2e.sh bep_revoke_and_sign_out_end_to_end
produces: none
consumes: none
proof: Destroy a box or log out, and every value naming it is refused within a m 8000 inute; a re-created box works, and a later sign-in revives nothing.
depends on:
- blocked by #2277
- blocked by #2278
- blocked by #2286
Proof
On a macOS host with a live Box Egress Proxy and a GitHub sign-in, 'E2E_BEP_LOGOUT=1 ./scripts/session-e2e.sh bep_revoke_and_sign_out_end_to_end' runs one box name through the full story. A destroyed box gets a revocation record within 60 s. The box re-created under its name gets a new id, and its own value is admitted. The destroyed box's value is refused (cross_box). After 'min auth logout' the box's next request is refused (github_sign_in_required) and the box keeps running. After 'min auth login --device' both old values stay refused with new refusal records, and a box started after the sign-in is admitted. 'min box audit' shows each step.
Notes from the agent: The case could not run its body here: the proxy runs on macOS only, so bep_live_gate records it NOT RUN on this Linux box. The macOS VM lane (or a person on a Mac) still owes the live evidence. The case needs a person: it signs the machine out, then runs 'min auth login --device' and tees its stderr so the person can enter the code. For this reason it is gated on E2E_BEP_LOGOUT=1, the same gate as the logout case, and it runs after that case in the whole-lane order. The check that a sign-in revives nothing expects the proxy to mark the refusal of a pre-logout reference as github_sign_in_required after a new sign-in. The redeemer returns no credential on an instance mismatch, so that is the expected marker, but no live run confirmed it. The observability line (one info log per revocation and logout) belongs to the tasks this one depends on. This case only greps bep.log for those lines on a failure.
Tests
./scripts/session-e2e.sh bep_revoke_and_sign_out_end_to_endVerify
min task run agent-verifyexited 101 under rustc 1.98.1, which the repository does not pin (1.99.0 in rust-toolchain.toml); the PR is not a draft on that alone — CI, which honours the pin, is the gate.Base
The base branch moved while the coder worked; it was merged in before the tests ran.
Residuals
bep_revoke_and_sign_out_end_to_endon a Mac with a GitHub sign-in (arch C1). It needs a person to enter the device code, so no unattended lane runs it.Closes #2291
Generated by Claude Code