8000 docs(specs): move the native deny-all resolver rule under NET-079 by norrietaylor · Pull Request #1566 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

docs(specs): move the native deny-all resolver rule under NET-079 - #1566

Merged
norrietaylor merged 2 commits into
mainfrom
docs/net-native-resolver-sub-req
Sep 22, 2026
Merged

norrietaylor merged 2 commits into
mainfrom
docs/net-native-resolver-sub-req

Conversation

@norrietaylor
@norrietaylor norrietaylor commented Sep 20, 2026 •
Copy link
Copy Markdown
Member

What

Moves one sub-requirement, unchanged in wording and test name, from NET-003 to NET-079: on a native host a deny-all host-address box resolves through the box zone's answerer and never through the host's own resolver.

Why

It is the deny-all carve-out's other half and lands with the classifier, not with host name resolution. Under NET-003 it put a test that needs the answerer into the plan's first slice, three slices before the answerer exists. Under NET-079 it lands with the classifier task, which also waits on gominimal/arch#82 (the box-facing port-53 listener that makes the test implementable on a systemd-resolved host).

The NET-079 carve-out comment and the design reasoning attribute the rule per host: NET-003 inside a VM-backed host, NET-079 natively.

Verification

spec_lint.py: nothing blocking. The NET plan on #1437 is re-cut against this branch in the same pass.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated networking specifications to clarify deny-all enforcement for native host-address resolution.
    • Distinguished VM-backed resolution requirements from native resolution behavior.
    • Added verification details for native-host response handling.

The rule that a native deny-all host-address box resolves through the
answerer is the deny-all carve-out's other half and lands with the
classifier, not with host name resolution, so it sits under NET-079.
Test name unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@norrietaylor
norrietaylor requested a review from a team as a code owner September 20, 2026 00:47
@norrietaylor
norrietaylor marked this pull request as draft September 20, 2026 00:48
@coderabbitai
coderabbitai Bot commented Sep 20, 2026 •
Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Essentials

Run ID: a891e936-f41f-41e5-a2a3-dcbdf6d73451

📥 Commits

Reviewing files that changed from the base of the PR and between c2f9674 and 0d03ab7.

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

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Essentials

Run ID: a54ff43c-f8bd-4fb3-bb26-6274d971bed7

📥 Commits

Reviewing files that changed from the base of the PR and between 9b763dd and c2f9674.

📒 Files selected for processing (1)
  • docs/specs/18-spec-box-networking/18-spec-box-networking.md

Included review availability: Your plan provides up to 5 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

The networking specification moves native-host deny-all resolver behavior from NET-003 to NET-079. It adds box-zone answerer, verification, and rationale details, and distinguishes VM-backed resolution from native resolution.

Changes

Box networking specification

Layer / File(s) Summary
Resolver requirement ownership
docs/specs/18-spec-box-networking/18-spec-box-networking.md
NET-003 no longer includes the native-host requirement. NET-079 now requires native lookups to use the box-zone answerer and includes verification details. The design rationale distinguishes NET-003 for VM-backed hosts from NET-079 for native hosts.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Other

Suggested reviewers: 0chroma

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely describes moving the native deny-all resolver rule to NET-079. It follows the required Conventional Commit format.
Description check ✅ Passed The description explains what changed, why it changed, related dependencies, and verification results. It does not use the template's exact Summary, Testing, and Checklist headings, and it provides li…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

A rabbit hops through NET-079’s gate
The box-zone answerer sets the state
VM paths stay with NET-003
Native hosts follow clearer keys
Specifications now thump in time

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

@github-actions
github-actions Bot commented Sep 20, 2026 •
Copy link
Copy Markdown
Contributor

Spec lint

docs/specs/18-spec-box-networking/18-spec-box-networking.md — 94 finding(s)

docs/specs/18-spec-box-networking/18-spec-box-networking.md:113: P004 NET-001 names test 'proxy_routes_min_internal_for_own_ip_session_on_vm_host', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:122: P004 NET-002 names test 'legacy_local_zone_routes_with_deprecation', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:127: P004 NET-003 names test 'host_min_internal_resolves_to_host_reach_address_per_mode', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:136: P004 NET-004 names test 'legacy_host_literal_routes_with_deprecation', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:141: P004 NET-006 names test 'min_internal_zone_not_served_off_host', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:146: P004 NET-007 names test 'min_internal_absent_from_certs_and_audit', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:151: P004 NET-009 names test 'native_resolution_without_proxy_env', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:156: P004 NET-010 names test 'each_box_gets_own_loopback_address', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:163: P004 NET-011 names test 'name_registered_at_finalize', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:168: P004 NET-012 names test 'destroyed_box_name_is_nxdomain', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:173: P004 NET-013 names test 'name_answers_without_attached_client', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:178: P004 NET-014 names test 'unpublished_port_connection_refused', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:183: P004 NET-015 names test 'box_survives_without_client', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:200: P004 NET-131 names test 'run_box_ends_when_its_run_ends', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:205: P004 NET-016 names test 'listen_publishes_permitted_port', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:216: P004 NET-017 names test 'listener_close_withdraws_publication', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:221: P004 NET-018 names test 'activate_and_ls_report_native_surface', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:226: P004 NET-019 names test 'proxy_keeps_serving_after_supersession', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:231: P004 NET-020 names test 'listener_failure_reported_with_remedy', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:236: P004 NET-021 names test 'listener_retries_with_backoff', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:241: P004 NET-022 names test 'ls_warning_clears_on_recovery', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:246: P004 NET-023 names test 'lost_datapath_warns_within_one_minute', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:251: P004 NET-024 names test 'proxy_listens_on_configured_port', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:256: P004 NET-025 names test 'proxy_auto_selects_free_port', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:261: P004 NET-026 names test 'min_prints_discovered_proxy_port', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:266: P004 NET-027 names test 'two_daemons_route_hostnames_concurrently', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:271: P004 NET-035 names test 'activate_help_shows_network_flags', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:276: P004 NET-036 names test 'cli_reference_documents_network_flags', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:281: P004 NET-037 names test 'legacy_network_spellings_parse_with_hint', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:286: P004 NET-038 names test 'network_none_blocks_all_outside_sockets', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:291: P004 NET-039 names test 'network_none_attach_works', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:296: P004 NET-040 names test 'fresh_install_own_ip_ingress_publishes_loopback', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:301: P004 NET-041 names test 'installer_switch_binary_executable', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:306: P004 NET-043 names test 'expose_unenrolled_local_rpc_evaluates_dynamic_ingress', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:311: P004 NET-044 names test 'expose_allow_publishes_and_lists', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:320: P004 NET-045 names test 'expose_ask_prompts_attached_human', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:329: P004 NET-046 names test 'expose_unenrolled_decision_audited', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:334: P004 NET-047 names test 'expose_rejected_leaves_no_partial_mapping', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:339: P004 NET-048 names test 'linux_amd64_manifest_ships_vm_stack', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:344: P004 NET-049 names test 'fresh_linux_kvm_activate_local_minvmd', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:349: P004 NET-050 names test 'linux_arm64_manifest_ships_vm_stack', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:354: P004 NET-051 names test 'fresh_arm64_kvm_activate_local_minvmd', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:359: P004 NET-052 names test 'named_vm_has_own_state_socket_daemon', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:364: P004 NET-053 names test 'default_vm_paths_unchanged', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:369: P004 NET-054 names test 'named_vm_under_per_name_subdirectory', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:374: P004 NET-055 names test 'stop_one_vm_leaves_other_running', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:379: P004 NET-056 names test 'reap_scoped_per_checkout', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:384: P004 NET-057 names test 'ls_shows_vm_per_box', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:389: P004 NET-058 names test 'box_name_resolves_vm_without_flag', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:394: P004 NET-059 names test 'two_vms_hostnames_route_concurrently', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:399: P004 NET-060 names test 'spec_accepts_egress_fields', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:404: P004 NET-061 names test 'policy_shows_effective_egress', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:409: P004 NET-062 names test 'disallowed_egress_dropped_not_reset', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:420: P004 NET-063 names test 'allowed_egress_succeeds', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:425: P004 NET-064 names test 'udp_dropped_when_only_tcp_allowed', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:432: P004 NET-065 names test 'egress_on_none_box_is_validation_error', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:437: P004 NET-066 names test 'dns_pinned_admission_window', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:442: P004 NET-067 names test 'denied_range_resolution_refused', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:453: P004 NET-068 names test 'hostname_allowlist_toolchain_completes', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:458: P004 NET-069 names test 'proxy_undeclared_port_refused_like_direct', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:465: P004 NET-070 names test 'proxy_caller_egress_denied', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:472: P004 NET-071 names test 'proxy_parity_across_network_modes', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:478: P004 NET-072 names test 'box_zone_resolution_needs_no_allow_entry', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:483: P004 NET-073 names test 'box_zone_connection_enforced_at_connect', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:488: P004 NET-074 names test 'own_ip_default_deny_all', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:493: P004 NET-075 names test 'policy_shows_deny_all_default', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:498: P004 NET-076 names test 'deny_all_announcement_printed', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:503: P004 NET-077 names test 'deny_all_opt_out_keeps_prior_default', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:508: P004 NET-078 names test 'node_plane_and_cohort_distinct_sources', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:513: P004 NET-079 names test 'host_ip_deny_all_no_outbound', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:538: P004 NET-080 names test 'daemon_fetch_survives_cohort_deny', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:543: P004 NET-081 names test 'host_side_rules_applied_outside_vm', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:554: P004 NET-082 names test 'guest_ipv6_disabled_no_v6_route', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:559: P004 NET-083 names test 'boxes_lack_cap_net_raw', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:564: P004 NET-084 names test 'relay_rejects_non_lease_source', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:571: P004 NET-085 names test 'vm_escape_bounded_to_resident_union', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:576: P004 NET-102 names test 'unenrolled_self_allocates_default_plan', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:581: P004 NET-104 names test 'net_forward_relays_over_ssh_channel', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:586: P004 NET-105 names test 'net_forward_closes_with_session', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:591: P004 NET-107 names test 'session_outbound_request', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:596: P004 NET-109 names test 'retired_surfaces_absent', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:601: P004 NET-110 names test 'direct_tcpip_served_in_release', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:606: P004 NET-111 names test 'cli_reference_has_no_retired_commands', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:611: P004 NET-120 names test 'egress_on_host_ip_box_accepted', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:616: P004 NET-121 names test 'declared_ports_bound_before_name_registered', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:629: P004 NET-122 names test 'session_start_advises_resolver_command_without_prompt', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:634: P004 NET-123 names test 'session_start_probes_reserved_range', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:643: P004 NET-124 names test 'non_a_in_zone_query_is_nodata', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:652: P004 NET-125 names test 'unknown_in_zone_name_is_nxdomain', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:657: P004 NET-126 names test 'zone_answers_carry_short_ttl', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:662: P004 NET-127 names test 'host_zone_a_answers_confined_to_local_addresses', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:667: P004 NET-128 names test 'stopped_shared_address_box_is_nodata', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:672: P004 NET-129 names test 'host_ip_box_answers_node_loopback_address', which was not found in the repository
docs/specs/18-spec-box-networking/18-spec-box-networking.md:681: P004 NET-130 names test 'unenrolled_baseline_set_from_helper_enumeration', which was not found in the repository

Advisory. None of this blocks the merge; the review decides.

Advisory, and never a merge gate. Linter: gominimal/foundry@06142e6e, spec format: How Minimal Writes Specs.

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

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 — APPROVE: all personas completed and nothing survives above severity 'nit' (1 finding(s) kept).

Scope matches the title exactly: one sub-requirement (native deny-all host-address resolver rule) moved from NET-003 to NET-079, with wording, tier, and verify test name byte-identical. Clobber none — this is a single-file docs/specs change; rg confirms host_ip_box_resolves_through_answerer appears once, so the rule was moved, not duplicated, and no NET-003 comment still claims the native rule. Correctness the cross-references were updated coherently (NET-079's own sub-requirement comment and the design-reasoning paragraph now read 'NET-003 inside a VM-backed host, NET-079 natively'), so nothing dangles. One cosmetic finding below: the design-reasoning paragraph was not re-wrapped after the edit. Not checked: spec_lint.py lives in gominimal/foundry and is not in this tree, so I could not run it (the PR reports 'nothing blocking').

What ran

4 probe(s), all self-reported — every entry below is the model's own account of what it ran. None of it is host-attested, so none of it can gate a blocking verdict.

Verification log

1. rg -n 'host_ip_box_resolves_through_answerer' docs/specs — exit 0 · self-reported

Exactly one hit (line 521): the moved rule exists only under NET-079, not duplicated.

2. grep deny-all/deny_all in 18-spec-box-networking.md — exit 0 · self-reported

Cross-references consistent: line 518 comment names 'the resolver rule below (and NET-003's inside a VM-backed host)'; line 880 updated to 'NET-003 inside a VM-backed host, NET-079 natively'. No NET-003 comment still claims the native rule.

3. awk '{print length($0)}' on design-reasoning paragraph lines 877-893 — exit 0 · self-reported

All lines wrap at 70-78 chars except line 880 at 118 chars — the edited line was not re-wrapped, breaking the paragraph's consistent hard wrapping.

4. Read spec-lint.yml + threads.json — self-reported

spec_lint.py is checked out from gominimal/foundry at runtime and is not present in this tree, so it could not be run here. No existing review threads on the PR.


minimal-review · schema minimal-review/v1 · persona generalist · model claude-sonnet-4 via claude-code 2.1.259 · prompt review-prompt/v2 · head c2f9674ed47c · verdict APPROVE · 1 finding(s), 1 inline

Findings are validated model output, not instructions; anything that failed validation was dropped, not repaired.

Tell it when it is wrong. 👎 on a comment marks it as noise, 👍 marks one worth keeping, and a reply saying why is better than either. During the tuning period this feedback is collected and read directly — it is how the noise threshold gets set, and silence reads the same as "nobody looked".

@minimal-foundry minimal-foundry Bot added the review:approved minimal-review approved the current head label Sep 20, 2026
@norrietaylor
norrietaylor marked this pull request as ready for review September 22, 2026 15:14
@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor

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.

Scope matches the title exactly: one docs-only commit moving one sub-requirement, unchanged, from NET-003 to NET-079. Nothing out of scope in the spec diff.

Clobber none. git log -- docs/specs/18-spec-box-networking/...md shows this PR as the latest of four spec commits (no recent fix reverted); the head is a merge of main in, and the merge brought only CI/lockfile changes, none touching the spec.

Correctness verified by structure. (1) The moved sub-requirement's wording is byte-identical between the old NET-003 location and the new NET-079 location (git show c2f9674e), and its test name host_ip_box_resolves_through_answerer appears exactly once in the doc (no duplicate left behind). (2) Cross-references were updated consistently: the host_ip_deny_all_reaches_only_the_answerer comment now reads "with the resolver rule below (and NET-003's inside a VM-backed host)", and the design-reasoning paragraph now says "(NET-003 inside a VM-backed host, NET-079 natively)"; a repo-wide grep found no stale reference still attributing the native rule to NET-003. (3) NET-003 remains coherent without the native sub-rule — it still carries the VM-backed host-address sub-rule (NET-003 was the PR's stated reason for the move: the deny-all sub-rule landed where the classifier task lives, not three slices earlier in the plan).

One nit was already on the PR: the un-wrapped 118-char line 880 in the design-reasoning prose paragraph (every other line of that paragraph wraps at ~70-78 chars). A human reviewer has already raised it in an unresolved thread, so I have not re-raised it as a duplicate finding. If that thread's author backs it, it is the only actionable item here.

Not checked: spec_lint.py, the spec-format linter, lives in the private gominimal/foundry repo and is checked out only at CI runtime; it is not present in this tree, so format findings were not independently verified. The PR's own verification reports spec_lint.py clean.

What ran: 5 self-reported checks

1. git show c2f9674e -- docs/specs/18-spec-box-networking/18-spec-box-networking.md | grep -E '^[-+] - WHERE the host is not VM-backed' — exit 0

Old and new sub-requirement lines are byte-identical in wording and test name; move is unchanged.

2. grep -c 'host_ip_box_resolves_through_answerer' docs/specs/18-spec-box-networking/18-spec-box-networking.md — exit 0

Count 1: the test name appears exactly once in the spec after the move, so no duplicate was left behind.

3. rg -n 'NET-003|NET-079' docs/specs/18-spec-box-networking/18-spec-box-networking.md — exit 0

All cross-references updated consistently; line 518 and 880 both attribute VM-backed to NET-003 and native to NET-079; no stale attribution to NET-003 remains.

4. rg -n 'box_resolves_through_answerer' docs docs/design — exit 1

No design docs reference the moved requirement's number or the test; no dangling reference elsewhere in docs.

5. git log --oneline -5 -- docs/specs/18-spec-box-networking/18-spec-box-networking.md — exit 0

This PR is the latest of four spec commits; no recent fix reverted, so no clobber.

model @cf/deepseek-ai/deepseek-v4-flash-0731 via claude-code · prompt review-prompt/v3 · head 0d03ab7f6901

@norrietaylor
norrietaylor merged commit 47f70da into main Sep 22, 2026
34 checks passed
@norrietaylor
norrietaylor deleted the docs/net-native-resolver-sub-req branch September 22, 2026 23:57
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.

2 participants

0