8000 T122 — Host-address boxes reach GitHub, end to end by minimal-foundry[bot] · Pull Request #3095 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

T122 — Host-address boxes reach GitHub, end to end - #3095

Merged
norrietaylor merged 4 commits into
mainfrom
agent/2858-host-address-boxes-reach-github-end-to-end
Nov 6, 2026
Merged

norrietaylor merged 4 commits into
mainfrom
agent/2858-host-address-boxes-reach-github-end-to-end

Conversation

@minimal-foundry
Copy link
Copy Markdown
Contributor

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_REPO is missing
observability: on a failure each case prints the box's min box audit records and the proxy's debug lines for the box id, so a refused or unsteered request shows where it stopped
layers:
- e2e:
- scripts/session-e2e.sh: three cases on a VM host with a host_ip grant box: under the default steering, and under steering = "proxy_env", git clones and pushes and gh api reads a private repository; a second host_ip box 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_ip gets a box id from min box show and reaches the proxy's listener, and after it ends a host_ip box with no grant cannot reach the proxy's address
test: ./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.sh 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

line exit tail
./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_dns_steering 0 ::group::host_ip grant box under the default dns steering: git clone, git push and gh api against a private repository (BEP-087) bep_host_ip_git_and_gh_under_dns_steering: NOT RUN (no private repository named: set E2E_BEP_PRIVATE_REPO to /, a private repository the signed-in account can
./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_proxy_env 0 ::group::host_ip grant box under proxy_env steering: git clone, git push and gh api against a private repository (BEP-087) bep_host_ip_git_and_gh_under_proxy_env: NOT RUN (no private repository named: set E2E_BEP_PRIVATE_REPO to /, a private repository the signed-in account can push to)
./scripts/session-e2e.sh bep_host_ip_grant_box_reaches_the_proxy_lane 0 ::group::host_ip grant box: a box id, the proxy's listener, and no reach for a box with no grant after it ends (T117) bep_host_ip_grant_box_reaches_the_proxy_lane: NOT RUN (the Box Egress Proxy runs on macOS only) ::endgroup:: session e2e: 1 case(s) NOT RUN: bep_host_ip_grant_box_reaches_the_proxy_l

Verify

min task run agent-verify passed ([tasks.verify]).

Closes #2858

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.
@coderabbitai
coderabbitai Bot commented Nov 6, 2026 •
Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 64ef7b98-e6f7-4634-8f3d-d8cfb6a2666b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@minimal-foundry
minimal-foundry Bot commented Nov 6, 2026 •
Copy link
Copy Markdown
Contributor Author

Approved: every review thread resolved at 83beb3fc042d.

@norrietaylor resolved the last thread, which releases the approval this review had withheld.

Nothing to do.

@minimal-arch minimal-arch Bot left a comment
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread scripts/session-e2e.sh Resolved
@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minimal-review — advisory review

Verdict COMMENT — 2 findings, 2 inline.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

Comment thread scripts/session-e2e.sh Resolved
Comment thread scripts/session-e2e.sh Resolved
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.
@minimal-arch minimal-arch Bot left a comment
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread scripts/session-e2e.sh Resolved
@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minimal-review — advisory review

Verdict COMMENT — 1 finding, 1 inline.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

Comment thread scripts/session-e2e.sh Resolved
@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 1 of 10 on the runtime's review findings, pushed as 0318515713d0.

line exit tail
./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_dns_steering 0 ::group::host_ip grant box under the default dns steering: git clone, git push and gh api against a private repository (BEP-087) bep_host_ip_git_and_gh_under_dns_steering: NOT RUN (no private repository named: set E2E_BEP_PRIVATE_REPO to /, a private repository the signed-in account can
./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_proxy_env 0 ::group::host_ip grant box under proxy_env steering: git clone, git push and gh api against a private repository (BEP-087) bep_host_ip_git_and_gh_under_proxy_env: NOT RUN (no private repository named: set E2E_BEP_PRIVATE_REPO to /, a private repository the signed-in account can push to)
./scripts/session-e2e.sh bep_host_ip_grant_box_reaches_the_proxy_lane 0 ::group::host_ip grant box: a box id, the proxy's listener, and no reach for a box with no grant after it ends (T117) bep_host_ip_grant_box_reaches_the_proxy_lane: NOT RUN (the Box Egress Proxy runs on macOS only) ::endgroup:: session e2e: 1 case(s) NOT RUN: bep_host_ip_grant_box_reaches_the_proxy_l

Verify min task run agent-verify passed.

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.
@minimal-arch minimal-arch Bot left a comment
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread scripts/session-e2e.sh Resolved
@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minimal-review — advisory review

Verdict COMMENT — 3 findings, 3 inline.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

Comment thread scripts/session-e2e.sh Resolved
Comment thread scripts/session-e2e.sh Resolved
Comment thread scripts/session-e2e.sh Resolved
@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 2 of 10 on the runtime's review findings, pushed as 1cff7a3a5e7f.

line exit tail
./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_dns_steering 0 ::group::host_ip grant box under the default dns steering: git clone, git push and gh api against a private repository (BEP-087) bep_host_ip_git_and_gh_under_dns_steering: NOT RUN (no private repository named: set E2E_BEP_PRIVATE_REPO to /, a private repository the signed-in account can
./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_proxy_env 0 ::group::host_ip grant box under proxy_env steering: git clone, git push and gh api against a private repository (BEP-087) bep_host_ip_git_and_gh_under_proxy_env: NOT RUN (no private repository named: set E2E_BEP_PRIVATE_REPO to /, a private repository the signed-in account can push to)
./scripts/session-e2e.sh bep_host_ip_grant_box_reaches_the_proxy_lane 0 ::group::host_ip grant box: a box id, the proxy's listener, and no reach for a box with no grant after it ends (T117) bep_host_ip_grant_box_reaches_the_proxy_lane: NOT RUN (the Box Egress Proxy runs on macOS only) ::endgroup:: session e2e: 1 case(s) NOT RUN: bep_host_ip_grant_box_reaches_the_proxy_l

Verify min task run agent-verify passed.

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.

@norrietaylor
Copy link
Copy Markdown
Member

/revise Three review findings at 1cff7a3 in scripts/session-e2e.sh. Each one can leave state behind, or pass a check without evidence:

  1. PRRT_kwDOPdfcxM60oBCy (MEDIUM), bep_hi_git_and_gh_steps. BEP_HI_PUSHED is set only after git push succeeds. A push that writes the ref and then fails, for example when timeout 120 fires, leaves the branch in the private repository, and bep_hi_cleanup skips it. Set BEP_HI_PUSHED before the push runs, and clear it only after the delete succeeds.
  2. PRRT_kwDOPdfcxM60oBC7 (LOW), bep_hi_proxy_vars. The exec hides its error with 2>/dev/null, and the script has no set -e. If env in the box fails, the output is empty, and the dns case passes its no-proxy-variable check without evidence. Check the exec's exit status and fail the case on it.
  3. PRRT_kwDOPdfcxM60oBC_ (LOW), bep_hi_activate. Each case records the box in BEP_HI_SIDS only after bep_hi_activate succeeds. An activate that creates the box and then fails leaves the box behind. Record the box's name before activation, or destroy it on the failure path, in all three cases.

Change nothing else. The three cases still print NOT RUN on a host without a macOS VM, a GitHub sign-in and E2E_BEP_PRIVATE_REPO. Keep that. Keep each commit message line at 100 characters or fewer.

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.
@minimal-arch minimal-arch Bot left a comment
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread scripts/session-e2e.sh Resolved
@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 3 of 10 on a /revise note, pushed as 83beb3fc042d.

line exit tail
./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_dns_steering 0 ::group::host_ip grant box under the default dns steering: git clone, git push and gh api against a private repository (BEP-087) bep_host_ip_git_and_gh_under_dns_steering: NOT RUN (no private repository named: set E2E_BEP_PRIVATE_REPO to /, a private repository the signed-in account can
./scripts/session-e2e.sh bep_host_ip_git_and_gh_under_proxy_env 0 ::group::host_ip grant box under proxy_env steering: git clone, git push and gh api against a private repository (BEP-087) bep_host_ip_git_and_gh_under_proxy_env: NOT RUN (no private repository named: set E2E_BEP_PRIVATE_REPO to /, a private repository the signed-in account can push to)
./scripts/session-e2e.sh bep_host_ip_grant_box_reaches_the_proxy_lane 0 ::group::host_ip grant box: a box id, the proxy's listener, and no reach for a box with no grant after it ends (T117) bep_host_ip_grant_box_reaches_the_proxy_lane: NOT RUN (the Box Egress Proxy runs on macOS only) ::endgroup:: session e2e: 1 case(s) NOT RUN: bep_host_ip_grant_box_reaches_the_proxy_l

Verify min task run agent-verify passed.

Review threads the coder judged:

  • 👍 valid — scripts/session-e2e.sh:16265: BEP_HI_PUSHED is now set before the push runs and cleared only after the delete step succeeds. Cleanup checks git ls-remote first, so a push that wrote nothing gives no false warning.
  • 👍 valid — scripts/session-e2e.sh:16284: bep_hi_proxy_vars captures the env exec, returns 1 when the exec fails or prints no PATH line, and shows its stderr. Both callers now fail the case on that return.
  • 👍 valid — scripts/session-e2e.sh:16171: bep_hi_activate adds the box name to BEP_HI_SIDS before the activate, so cleanup destroys a box that a failed activate made. On success the id replaces the name. All five activate calls in the three cases use it.

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.

@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@minimal-foundry minimal-foundry Bot added the review:approved minimal-review approved the current head label Nov 6, 2026
@norrietaylor norrietaylor left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gate passed at 83beb3f under the standing gate-4 rule. BEP-087 stays open until the three cases pass on the macOS VM lane (#2500).

@norrietaylor
norrietaylor added this pull request to the merge queue Nov 6, 2026
Merged via the queue into main with commit 601d4d1 Nov 6, 2026
36 checks passed
@norrietaylor
norrietaylor deleted the agent/2858-host-address-boxes-reach-github-end-to-end branch November 6, 2026 19:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review:approved minimal-review approved the current head

Projects

None yet

Development

Successfully merging this pull request may close these issues.

T122 — Host-address boxes reach GitHub, end to end

1 participant

0