8000 T152 — host.min.internal reaches only the design's openings, end to end by minimal-foundry[bot] · Pull Request #3028 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

T152 — host.min.internal reaches only the design's openings, end to end - #3028

Merged
norrietaylor merged 3 commits into
mainfrom
agent/2946-host-min-internal-reaches-only-the-design-s-open
Nov 5, 2026
Merged

norrietaylor merged 3 commits into
mainfrom
agent/2946-host-min-internal-reaches-only-the-design-s-open

Conversation

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

T152 — host.min.internal reaches only the design's openings, end to end

slice: S21
kind: integration
covers: none
size: M
est: 80 code, 140 tests
executor: agent
difficulty: routine
model: standard
diagnostics: a person reads the case's output and the daemon logs on the host, which carry each refused flow with its rule
observability: the case prints each request, its target and its status
layers:
- e2e:
- scripts/session-e2e.sh: adds the case host_exposures_follow_the_table, which writes a [host-exposures] entry to the client config.toml, checks that a box naming host.min.internal reaches it and one that does not is refused, removes the entry and checks the next flow is refused
test: ./scripts/session-e2e.sh host_exposures_follow_the_table
produces: none
consumes: none
proof: On a VM host, a flow from any box to host.min.internal reaches only the design's openings, and the node alone also reaches the node-plane baseline set there.
depends on:
- blocked by #2689
- blocked by #2936
- blocked by #2937
- blocked by #2990
- blocked by #2938

Proof

On a VM lane, ./scripts/session-e2e.sh host_exposures_follow_the_table prints each request to host.min.internal:18157 with its curl exit and HTTP status. A box that names host.min.internal is refused before a [host-exposures] entry opens the port. It fetches the marker while the entry is in config.toml, and it is refused again after the entry is removed. A box that does not name the host is refused while the entry holds. minvmd's log on the host shows each host-gate refusal under the host-alias rule. The node-plane baseline half of the proof is not shown by this case (see notes).

Notes from the agent: Not verified end to end: this box has no KVM, so the case stopped at its gate and recorded NOT RUN. It needs a run on the KVM or macOS lane with MINVMD_GVPROXY_BIN set. The case is in the forced-VM list at th 8000 e top of the script, so a run with no environment selects the VM provider, in the same way as the other VM-only cases. It runs in the whole-lane order after min_internal_names_through_proxy. It uses port 18157, and it adds its entry under the lane's existing [host-exposures] header (a second header is not valid TOML). Teardown puts back the saved config.toml. Proof gap: the proof sentence also says that the node alone reaches the node-plane baseline set at host.min.internal (NET-158). The layer note does not ask for that check, and the case does not drive it. The built-in baseline names no endpoint at the alias ('the built-in categories name no endpoint at the host alias' in crates/minvmd/src/net/baseline.rs), and no box can send with the node identity. The minvmd unit test host_alias_admits_baseline_for_node_plane_only carries that half. The refusal of the box that does not name the host comes from its relay in the guest. The case prints the guest console's host-alias lines for that refusal but does not assert them. It asserts the minvmd host log only for the two host-gate refusals. The case covers own-address boxes only, not the host-address cohort.

Tests

line exit tail
./scripts/session-e2e.sh host_exposures_follow_the_table 0 KVM lane at a148509 (job 126990375512): host_exposures_follow_the_table OK (host.min.internal:18157 refused with no entry, reached with the entry from the box that names the host, refused from the box that does not, and refused again once the entry is removed). The minvmd log: lines show rule_matched="host-alias" at port 18157 for the legs before the entry and after its removal.

Verify

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

Residuals

  • #3037: the node-plane baseline and the host-address cohort halves of design section 7.1 have no end-to-end proof.

Closes #2946

Add the session e2e case host_exposures_follow_the_table. On a VM lane it
serves a marker on the host loopback, and checks four flows to
host.min.internal at that port:

- a box that names the host is refused while no entry opens the port;
- the case adds a [host-exposures] entry, and the same box reaches it;
- a box that does not name the host is refused while the entry holds;
- the case removes the entry, and the next flow is refused.

Each request prints its target, curl exit and HTTP status. The two host
gate refusals are asserted from minvmd's log on the host. A native lane
reports the case NOT RUN.
@coderabbitai
coderabbitai Bot commented Nov 5, 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: d1638eb8-18e9-4549-a98e-5fafa1dda3d9

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 5, 2026 •
Copy link
Copy Markdown
Contributor Author

Approved: every review thread resolved at a14850917451.

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

Nothing to do.

@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 — No findings.

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

@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: CONDITIONS · 3 conditions · the full ruling

The case maps onto §7.1 lines 248 to 251, and it is in the right place. The revocation leg cannot pass on a run shorter than a minute. The gate logs one host-alias line per source and rule per 60 s, and the same box already logged a line in the leg before the entry. C1 gives two fixes: a separate box for the first leg, or a 61 s wait. The only leg is NOT RUN at this head, and C2 asks for a green VM-lane run. The two proof gaps in the PR body need a filed issue (C3).

Ruled at 77c6dae against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.

Comment thread scripts/session-e2e.sh Resolved
Comment thread scripts/session-e2e.sh Resolved
Comment thread scripts/session-e2e.sh Resolved
@minimal-foundry minimal-foundry Bot added the review:approved minimal-review approved the current head label Nov 5, 2026
minvmd logs one host-alias refusal per source and rule per 60 s, so the
same box's refusal after the entry is removed wrote no new line on a
fast run. The case now waits until 61 s pass since the first refusal.
@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 1 of 10 on a failed check suite, pushed as a14850917451.

line exit tail
./scripts/session-e2e.sh host_exposures_follow_the_table 0 ::group::host.min.internal reaches only the [host-exposures] table, from a box that names the host (NET-156, NET-160, NET-161) host_exposures_follow_the_table: NOT RUN (no writable /dev/kvm: a Linux VM boots on KVM and this host has none) ::endgroup:: session e2e: 1 case(s) NOT RUN: host_exposures_f

Verify min task run agent-verify passed.

Review threads the coder judged:

  • 👍 valid — scripts/session-e2e.sh:23261: The revocation leg now sleeps until 61 s pass since the box's first logged refusal, so the gate's 60 s per-source window cannot hide the second host-alias line.
  • 👎 invalid — scripts/session-e2e.sh:23073: The code at this line is correct: with no writable /dev/kvm the case must record NOT RUN. This coder box has no /dev/kvm and no gvproxy, so I cannot run it here, and the runner writes the PR body. The test-kvm lane on this push is the run that gives the exit and the tail.
  • 👎 invalid — scripts/session-e2e.sh:23055: No code change can fix this. The finding asks for a new GitHub issue that covers the node-plane baseline gap and the host-address cohort gap, and for a link to it in the PR body. This session has no gh credential and does not write the PR body. A person must file the issue.

On a KVM or macOS VM lane with MINVMD_GVPROXY_BIN set, the case shows that a box that names host.min.internal is refused at a port that no [host-exposures] entry opens. The same box reaches the marker while the entry is in force, and a box that does not name the host is refused. The first box is refused again after the entry is removed, and minvmd logs each refusal at the host gate with its rule. The node-plane baseline half is not driven end to end. The minvmd unit test host_alias_admits_baseline_for_node_plane_only carries it. This session did not observe the VM run.

Notes from the agent: Revise round 1. Fixed C1: the last leg now waits until 61 s pass since the first refusal, because minvmd's DropLimiter logs one line per source and rule per 60 s. I could not run the case here: this box has no /dev/kvm and no MINVMD_GVPROXY_BIN, so the test line exits 0 with the case NOT RUN. The directive's test-kvm log excerpt does not show which step failed. The C1 false failure is a likely cause, but I did not confirm it. The KVM lane must re-run to show the result. C2 and C3 ask for things that a person or the runner must do: a VM-lane run recorded in the PR body, and a new issue for the node-plane baseline gap and the host-address cohort gap. I have no credential to file issues or edit the PR body.

@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: 3 unresolved threads — minimal-arch[bot] scripts/session-e2e.sh:23261, minimal-arch[bot] scripts/session-e2e.sh:23073, minimal-arch[bot] scripts/session-e2e.sh:23055. No findings.

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

@minimal-foundry minimal-foundry Bot removed the review:approved minimal-review approved the current head label Nov 5, 2026
@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: CONDITIONS · 1 condition · the full ruling

The case follows §7.1 lines 248 to 251, and the new 61 s wait fixes the revocation leg. That leg needs the wait because minvmd logs one host-alias refusal per source each 60 s. The case did not run on any host yet. It printed NOT RUN, and a NOT RUN leg is not a pass. Run the case on the KVM or macOS lane, and put that output in the PR's Tests table (C1). Then the change conforms.

Ruled at a148509 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 — approved

Verdict APPROVE — every review thread is resolved; @norrietaylor closed the last one. The review of a14850917451 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.

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

Read at a148509. The KVM lane ran host_exposures_follow_the_table and it passed, with the host-alias lines for both refusal legs. The two gaps have an owner in the issue named under Residuals. Arch's condition is met by that run, as the owner accepted.

@minimal-foundry minimal-foundry Bot added the review:approved minimal-review approved the current head label Nov 5, 2026
@norrietaylor
norrietaylor added this pull request to the merge queue Nov 5, 2026
Merged via the queue into main with commit c509b4c Nov 5, 2026
35 of 36 checks passed
@norrietaylor
norrietaylor deleted the agent/2946-host-min-internal-reaches-only-the-design-s-open branch November 5, 2026 04:02
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.

T152 — host.min.internal reaches only the design's openings, end to end

1 participant

0