8000 T67 — Move the reserved local range to the design's 127.0.64.0/24 by minimal-foundry[bot] · Pull Request #1761 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

T67 — Move the reserved local range to the design's 127.0.64.0/24 - #1761

Merged
norrietaylor merged 2 commits into
mainfrom
agent/1726-move-the-reserved-local-range-to-the-design-s-12
Sep 30, 2026
Merged

norrietaylor merged 2 commits into
mainfrom
agent/1726-move-the-reserved-local-range-to-the-design-s-12

Conversation

@minimal-foundry
Copy link
Copy Markdown
Contributor

T67 — Move the reserved local range to the design's 127.0.64.0/24

slice: S3
kind: task
covers: NET-010, NET-127
size: S
est: 40 code, 120 tests
executor: agent
difficulty: routine
model: standard
diagnostics: the daemon log's slice line names the new range
observability: unchanged; the range shows in the existing slice and answerer log lines
layers:
- switch:
- crates/switch/src/lib.rs: RESERVED_LOCAL_RANGE and the default address plan carry 127.0.64.0/24; the slice tests follow
test: cargo nextest run -p switch loopback_slices_disjoint_per_switch
- daemon:
- crates/minimald/src/net/dns.rs: reads the range from the switch crate and drops its own copy
- crates/minimald/src/net/answerer.rs: the host-answerable tests use addresses in the new range
- crates/minimald/src/server.rs: the slice-log tests and their literals follow
- crates/minimald/src/sessions.rs: the doc comment names the new range
test: cargo nextest run -p minimald host_zone_a_answers_confined_to_local_addresses
test: cargo nextest run -p minimald each_box_gets_own_loopback_address
produces: none
consumes:
- crates/switch/src/lib.rs
proof: The reserved local range every published loopback address is allocated from is the design's 127.0.64.0/24, in the switch crate's address plan and everywhere the daemon reads it, with the answerer, the loopback slices and the resolver advisory all naming that range.
depends on:
- blocked by #1633

Proof

The reserved local range every published loopback address is allocated from is the design's 127.0.64.0/24: the switch crate's RESERVED_LOCAL_RANGE and default address plan now carry it (slices tile 127.0.64.0-127.0.64.255 eight /27s at a time), the daemon's zone re-exports and doc comments name it, the host-answerable guard and its tests accept exactly that block, the slice-log and session-start probe lines print it, the resolver advisory's naming surface reports it, and the session e2e accepts answers from it. Previously every one of those named 127.64.0.0/24, a different block of the loopback /8.

Notes from the agent: Out-of-layer files I had to touch, all forced by the constant's move — literals and an acceptance pattern of the old block, not new behavior: crates/switch/src/loopback.rs (bind-probe tests' first-refusal literals), crates/minimald/src/rpc.rs (the probe stand-in and the session-start probe line's summary literal), crates/minimal/src/resolver.rs (the naming-surface and bundle-probe record literals), scripts/session-e2e.sh (the case that accepts a native resolution; the old pattern would have failed every e2e run against the new range). The third test line cannot pass on this tree: no test named each_box_gets_own_loopback_address exists anywhere in the workspace, and no layer line of this task adds one. NET-010's verify test belongs to the task that lands its publish path — LoopbackAllocator::allocate has no caller by design ('#[allow(dead_code)] // The publish path (NET-129/NET-010) is another task's', crates/minimald/src/sessions.rs) and its harness requires host-global allocation separate from any daemon's own state, which the current per-daemon allocator is not. I did not write a placeholder under that name: it would pin the per-daemon allocator design the spec's harness explicitly rules out, and would falsely mark NET-010 green. The address half this tree does support is covered by loopback_slices_disjoint_per_switch (switch) and loop…[truncated]

Tests

line exit tail
cargo nextest run -p switch loopback_slices_disjoint_per_switch 0 Applying loadouts: default Running task runtime-implement-test-0 in session task-runtime-implement-test-0-53c9... Compiling switch v0.0.1 (/home/runner/.local/state/minimal/sessions/03c3a/tree/crates/switch) Finished 'test' profile [unoptimized] target(s) in 2.45s ──────────── Nextest run ID
cargo nextest run -p minimald host_zone_a_answers_confined_to_local_addresses 0 Applying loadouts: default Running task runtime-implement-test-1 in session task-runtime-implement-test-1-9cce... Compiling args v0.0.1 (/home/runner/.local/state/minimal/sessions/69903/tree/crates/args) Compiling ot v0.0.1 (/home/runner/.local/state/minimal/sessions/69903/tree/crates/ot) C
cargo nextest run -p minimald each_box_gets_own_loopback_address 4 Applying loadouts: default Running task runtime-implement-test-2 in session task-runtime-implement-test-2-848f... Compiling stdlib v0.0.21 (/home/runner/.local/state/minim 8000 al/sessions/06dcd/tree/crates/stdlib) Compiling version v0.7.0 (/home/runner/.local/state/minimal/sessions/06dcd/tree/crate

Verify

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

Out of scope

These files are outside the task's layers:, so this PR is a draft:

  • crates/minimal/src/resolver.rs
  • crates/minimald/src/rpc.rs
  • crates/switch/src/loopback.rs
  • scripts/session-e2e.sh

Closes #1726

The design (18-spec-box-networking §7.1) puts the reserved local range
published addresses come from at 127.0.64.0/24; the constant carried
127.64.0.0/24, a different block of the same loopback /8. Move the
definition and the default plan's slice tests to the design's block,
and with them the bind-probe tests' literals, which name the range the
same constant feeds.
Every reader of the moved range followed it to 127.0.64.0/24: the
zone's and the slice-octet docs restated the block they re-export from
the switch constant, the host-answerable tests and their outside cases
now pin the /24's new boundary, the slice-log and session-start probe
tests carry the new literals, the min CLI's naming-surface record and
bundle probe record do too, and the session e2e's accepted-resolution
pattern accepts the new block's addresses. No behavior changes here:
the code already reads the one definition, which commit 1 moved.
@coderabbitai
coderabbitai Bot commented Sep 30, 2026 •
Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

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

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: fe5e8dd7-d0b7-4efe-95b7-3dadad741e40

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

Comment @coderabbitai help to get the list of available commands.

@minimal-foundry
minimal-foundry Bot commented Sep 30, 2026 •
Copy link
Copy Markdown
Contributor Author

Approved: no findings at cf37cee5930b.

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: git log shows the two PR commits (fix(switch), test(minimald,minimal)) sit directly on the pre-PR head and only move the constant; the range was introduced by the immediately prior commit (#1725).

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

@minimal-foundry minimal-foundry Bot added the review:approved minimal-review approved the current head label Sep 30, 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.

Reviewed against the T67 plan block: pure move of the reserved local range to the design's 127.0.64.0/24, every carrier reads the switch constant, no old-range literal remains at the head. The out-of-layer files are literals forced by the moved constant. The third test line's exit 4 is the plan block naming NET-010's verify test, which no layer of this task adds; that test belongs to T14.

@norrietaylor
norrietaylor enabled auto-merge (squash) September 30, 2026 04:08
@norrietaylor
norrietaylor merged commit 5e2b46e into main Sep 30, 2026
34 checks passed
@norrietaylor
norrietaylor deleted the agent/1726-move-the-reserved-local-range-to-the-design-s-12 branch September 30, 2026 04:25
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.

T67 — Move the reserved local range to the design's 127.0.64.0/24

1 participant

0