Repository navigation
T122 — Host-address boxes reach GitHub, end to end - #3095
Conversation
Three session e2e cases for BEP-087 on a VM host with the Box Egress Proxy running. A host_ip box with a GitHub grant clones, pushes and runs gh api against E2E_BEP_PRIVATE_REPO under the default dns steering with no proxy variables, and under proxy_env steering. A host_ip box with no grant resolves github.com to a real address. A third case shows the grant box's id in min box show, connects it to the proxy's listener, and checks that a box with no grant cannot connect after it ends. Each case prints PASS, or NOT RUN with its gate. On a failure each case prints min box audit and the proxy's log lines for each box it started.
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
|
Approved: every review thread resolved at @norrietaylor resolved the last thread, which releases the approval this review had withheld. Nothing to do. |
There was a problem hiding this comment.
arch-review: PASS_WITH_CONDITIONS · 1 condition · the full ruling
The three new cases assert what §5.3 line 151 and §5.4 lines 169–170 require for a host_ip box. Placement in scripts/session-e2e.sh is correct. All three legs recorded NOT RUN, so BEP-087's proof is open. C1 names #2500 as the owner of the legs in the header comment, as the sibling BEP cases do. The change can merge with C1 open. The #2500 lane must record PASS for each leg.
Ruled at 263b615 against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.
Retry the branch delete in the host_ip case cleanup and name a branch that stays. Print (none) when the proxy log has no line for a box. Name #2500 as the owner of the macOS lane that runs these cases.
There was a problem hiding this comment.
arch-review: PASS_WITH_CONDITIONS · 1 condition · the full ruling
The new commit changes only cleanup and evidence output. The cases still assert what D6 and section 5.4 require for a host_ip box. The three legs printed NOT RUN on this head, so the BEP-087 proof is open. C1 runs them on the macOS lane that #2500 owns. The change can merge with C1 open on #2500.
Ruled at 0318515 against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.
|
Round 1 of 10 on the runtime's review findings, pushed as
Verify Review threads the coder judged:
Not delivered on this box. The three cases exist in scripts/session-e2e.sh and record NOT RUN here with their gates. On the macOS lane with a sign-in and E2E_BEP_PRIVATE_REPO (owned by #2500), a host_ip grant box clones, pushes and runs gh against a private repository under the default dns steering with no proxy variables, and a host_ip box with no grant resolves github.com to a real address. Notes from the agent: Revise round 1. All three cases recorded NOT RUN on this Linux box (no E2E_BEP_PRIVATE_REPO, no macOS proxy), so BEP-087 evidence is still owed by the #2500 macOS lane. The new branch-cleanup warning names a host-side git push --delete; that command needs push credentials on the host, which the script does not check. |
The no-grant leg of bep_host_ip_grant_box_reaches_the_proxy_lane passed on any socat failure. It now probes /usr/bin/socat first and requires a connect failure or a timeout in the error text.
There was a problem hiding this comment.
arch-review: PASS_WITH_CONDITIONS · 1 condition · the full ruling
The change conforms to D6 and to networking §5.3, §5.4 and §7.1. The new commit makes the no-grant leg stricter. A missing socat or a failed exec no longer passes as a refusal. All three cases recorded NOT RUN on this branch, so BEP-087 is not proved yet. C1 asks for a PASS of each case on the macOS VM lane (#2500).
Ruled at 1cff7a3 against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.
|
Round 2 of 10 on the runtime's review findings, pushed as
Verify Review threads the coder judged:
On a macOS VM host with a GitHub sign-in and E2E_BEP_PRIVATE_REPO, the e2e cases show a host_ip grant box clone, push and run gh api against a private repository under default dns steering with no proxy variables, and a host_ip box with no grant resolves github.com to a real address. This box ran none of these legs: all three cases printed NOT RUN with their gates, so the proof is still owed by the macOS lane (#2500). Notes from the agent: Revise round 2. The no-grant leg of bep_host_ip_grant_box_reaches_the_proxy_lane now probes /usr/bin/socat first and requires a connect failure or a timeout in the socat error text. All three test lines exit 0 as NOT RUN on this Linux box: the first two miss E2E_BEP_PRIVATE_REPO, the third needs the macOS Box Egress Proxy. No PASS line exists yet. |
|
/revise Three review findings at 1cff7a3 in
Change nothing else. The three cases still print |
Record the pushed branch before the push runs, so cleanup deletes a branch that a failed push wrote. Cleanup skips the delete when git ls-remote finds no branch. Record each box name before the activate, so cleanup destroys a box that a failed activate made. Fail a case when env in the box fails, so an empty list of proxy variables is evidence.
There was a problem hiding this comment.
arch-review: PASS_WITH_CONDITIONS · 1 condition · the full ruling
The compare makes cleanup and the env check safer. It does not change what a case proves. A failed env in the box now fails the case, so an empty list of proxy variables is evidence. The three legs still record NOT RUN on this head. C1 carries the earlier condition: run them on the macOS VM lane (#2500) and record each PASS line.
Ruled at 83beb3f against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.
There was a problem hiding this comment.
minimal-review — approval withheld
Verdict COMMENT — APPROVE withheld: 4 unresolved threads — minimal-foundry[bot] scripts/session-e2e.sh:16265, minimal-foundry[bot] scripts/session-e2e.sh:16284, minimal-foundry[bot] scripts/session-e2e.sh:16171, minimal-arch[bot] scripts/session-e2e.sh:16286. No findings.
Panel: 3 of 3 personas ran (correctness, security, supply-chain).
|
Round 3 of 10 on a /revise note, pushed as
Verify Review threads the coder judged:
The three host_ip cases in scripts/session-e2e.sh prove on a macOS VM host with a GitHub sign-in and E2E_BEP_PRIVATE_REPO that a host_ip grant box clones, pushes and runs gh against a private repository under dns steering with no proxy variables, and that a host_ip box with no grant resolves github.com to a real address. This round, a failed push or activate leaves no branch and no box behind, and the no-proxy-variable check fails when env in the box fails. This Linux box cannot run the cases, so the proof is not observed here. Notes from the agent: Round 3 addresses the three findings in scripts/session-e2e.sh only. bep_hi_activate now sets BEP_HI_ID in place of printing the id, because a function in $(...) cannot add to BEP_HI_SIDS. It adds the box name to BEP_HI_SIDS before the activate and replaces the name with the id on success. Because BEP_HI_PUSHED is now set before the push, cleanup first runs git ls-remote --exit-code in the box and skips the delete when the branch is not there (exit 2). Without that check, a push that fails before it writes the branch prints a false 'branch stays' warning. All three cases still print NOT RUN on this Linux host. No macOS VM, GitHub sign-in or private repository was available, so the changed paths ran only through bash -n and shellcheck, not live. |
There was a problem hiding this comment.
minimal-review — approved
Verdict APPROVE — every review thread is resolved; @norrietaylor closed the last one. The review of 83beb3fc042d withheld this approval on the threads open then. Posted as a comment: the App cannot approve its own pull request; the check and the label carry it.
T122 — Host-address boxes reach GitHub, end to end
slice: S17
kind: integration
covers: BEP-087
size: M
est: 0 code, 260 tests
executor: agent
difficulty: needs care
model: standard
diagnostics: each case prints PASS, or NOT RUN with its gate where a GitHub sign-in or
E2E_BEP_PRIVATE_REPOis missingobservability: on a failure each case prints the box's
min box auditrecords and the proxy's debug lines for the box id, so a refused or unsteered request shows where it stoppedlayers:
- e2e:
- scripts/session-e2e.sh: three cases on a VM host with a
host_ipgrant box: under the default steering, and understeering = "proxy_env", git clones and pushes and gh api reads a private repository; a secondhost_ipbox with no grant resolves github.com to a real address in the first case; a third case proves T117 on a Mac: a GitHub grant box started with--network host_ipgets a box id frommin box showand reaches the proxy's listener, and after it ends ahost_ipbox with no grant cannot reach the proxy's addresstest: ./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_dns_steering
test: ./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_proxy_env
test: ./scripts/session-e2e.sh bep_host_ip_grant_box_reaches_the_proxy_lane
produces: none
consumes:
- per-box dns steering for a host-address box
- the in-VM refusal of a host-address box with no grant at the proxy's address
proof: A box started on the default host network clones, pushes and runs gh against a private repository through the proxy under its default dns steering with no proxy variables, and a host-address box with no grant still resolves GitHub's real address.
depends on:
- blocked by #2854
- blocked by #2855
- blocked by #2856
- blocked by #2857
- blocked by #3032
- blocked by #3047
- blocked by #3048
- blocked by #3049
Proof
scripts/session-e2e.s 8000 h has three new cases. On a macOS VM lane with a GitHub sign-in and E2E_BEP_PRIVATE_REPO, bep_host_ip_git_and_gh_under_dns_steering starts a --network host_ip box with a GitHub grant and no steering line. It checks that the box has no proxy variables and that github.com resolves to the proxy's address. Then it runs git clone, git push (a throwaway branch, then a delete) and gh api against the private repository. A second host_ip box with no grant must resolve github.com to a real address. bep_host_ip_git_and_gh_under_proxy_env runs the same git and gh steps with steering = "proxy_env". bep_host_ip_grant_box_reaches_the_proxy_lane shows the grant box's id in min box show and connects to the proxy's listener. After that box is destroyed, a host_ip box with no grant cannot connect to the proxy's address. On this branch the proof itself is not observed: this Linux box has no proxy, no sign-in and no repository, so each case recorded NOT RUN.
Notes from the agent: Only scripts/session-e2e.sh changed: the three proof functions and their helpers (bep_hi_*), the whole-lane order (after the box-zone resolver case), the dispatch list and the usage text. The host_ip boxes declare no egress flags, because a host_ip box refuses a narrowing allow list. The proxy's address and listener port (100.64.255.252:8118) come from the existing proxy cases. For the 'debug lines' in observability, the cases put bep=info,bep=debug in RUST_LOG (debug last, so it wins) and restart the daemon through bep_live_gate when the directive is new. On a failure they grep bep.log for each box id and print
min box audit <id> -o jsonl. Not verified here: the cases need the macOS VM lane (#2500) with bep, a GitHub sign-in and E2E_BEP_PRIVATE_REPO. Assumptions that only that lane can check: min box show prints the minted id on an 'ID:' line, a host_ip box with no grant fails its connect to the proxy's address in some way (the case accepts a drop or a reset), and a host_ip …[truncated]Tests
./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_dns_steering./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_proxy_env./scripts/session-e2e.sh bep_host_ip_grant_box_reaches_the_proxy_laneVerify
min task run agent-verifypassed ([tasks.verify]).Closes #2858