8000 T119 — Box names keep answering across a reboot and a second VM · Issue #2700 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

T119 — Box names keep answering across a reboot and a second VM #2700

Closed

Description

@norrietaylor

Task

slice size difficulty model who estimated lines
names survive a reboot and a second VM L needs care strongest an agent 720 (360 code, 360 tests)

After a Linux host restarts, <name>.min.internal resolves without running min finalize-install again, and a second named VM's boxes resolve beside the default VM's on every activation.

Covers:

  • NET-027
  • NET-122

Layers:

  • hook:
    • crates/minimal/src/resolver.rs: the Linux names steps install a root-owned systemd unit that re-creates the minzone0 link and its resolvectl settings on every boot after systemd-resolved starts, the undo removes it, and the names verdict reads the unit's absence as a missing part of the item (L2)
    • crates/minimal/src/cmd/finalize_install.rs: the names item names the missing boot unit in its summary
    • cargo nextest run -p minimal finalize_install_names_missing_items_and_runs_the_script
    • cargo nextest run -p minimal finalize_install_undo_removes_what_the_step_installs
    • cargo nextest run -p minimal finalize_install_refuses_another_users_service
    • cargo nextest run -p minimal linux_zone_link_restored_at_boot
  • answerer:
    • crates/minvmd/src/net/answerer.rs: a VM host daemon that finds the answerer port held waits a bounded window for the holder's interim channel and registers into it, instead of reporting the port held with no channel; exactly one node holds the port when two start together (minimal#2629)
    • crates/minvmd/src/control.rs: the answerer status read reports starting until the node's first publish is acknowledged, so an activation never reads a registration in flight as a failure
    • cargo nextest run -p minvmd second_vm_registers_into_the_running_holder
    • cargo nextest run -p minimald two_daemons_route_hostnames_concurrently

Waits on:

  • assumes OQ1 (one host DNS user per machine, the current behaviour; host setup refuses on a host whose installed service names another user)
Plan block
### T119 — Box names keep answering across a reboot and a second VM
  slice: S19
  kind: task
  covers: NET-027, NET-122
  size: L
  est: 360 code, 360 tests
  executor: agent
  difficulty: needs care
  model: strongest
  diagnostics: `min finalize-install --show` lists the boot unit as missing when it is absent, with the content "box names stop resolving after a restart until `min finalize-install` runs again", pinned by finalize_install_names_missing_items_and_runs_the_script; the minvmd log names which node holds the answerer port and which registered into it
  observability: one info line when the boot unit re-applies the resolver link, in the system journal; one info line per node registration and one warn line when a node waits past its bound for the holder's channel
  layers:
    - hook:
      - crates/minimal/src/resolver.rs: the Linux names steps install a root-owned systemd unit that re-creates the `minzone0` link and its `resolvectl` settings on every boot after systemd-resolved starts, the undo removes it, and the names verdict reads the unit's absence as a missing part of the item (L2)
      - crates/minimal/src/cmd/finalize_install.rs: the names item names the missing boot unit in its summary
      test: cargo nextest run -p minimal finalize_install_names_missing_items_and_runs_the_script
      test: cargo nextest run -p minimal finalize_install_undo_removes_what_the_step_installs
      test: cargo nextest run -p minimal finalize_install_refuses_another_users_service
      test: cargo nextest run -p minimal linux_zone_link_restored_at_boot
    - answerer:
      - crates/minvmd/src/net/answerer.rs: a VM host daemon that finds the answerer port held waits a bounded window for the holder's interim channel and registers into it, instead of reporting the port held with no channel; exactly one node holds the port when two start together (minimal#2629)
      - crates/minvmd/src/control.rs: the answerer status read reports starting until the node's first publish is acknowledged, so an activation never reads a registration in flight as a failure
      test: cargo nextest run -p minvmd second_vm_registers_into_the_running_holder
      test: cargo nextest run -p minimald two_daemons_route_hostnames_concurrently
  produces: none
  consumes: none
  proof: After a Linux host restarts, `<name>.min.internal` resolves without running `min finalize-install` again, and a second named VM's boxes resolve beside the default VM's on every activation.
  depends on:
    - assumes OQ1 (one host DNS user per machine, the current behaviour; host setup refuses on a host whose installed service names another user)

Activity

  1. added
    kind:taskA task the plan skill rendered; the body carries ## Task
    size:L500 to 900 net lines; one PR, and the ceiling
    model:strongestThe strongest model available: unknown ground, or large work that needs care
    on Oct 28, 2026
  2. minimal-foundry commented on Oct 28, 2026

    @minimal-foundry
    Contributor

    Done. #2722 merged.

    branch agent/2700-box-names-keep-answering-across-a-reboot-and-a-s · epic #1437 · PR #2722

    round outcome job
    1 pushed 99a97919
    2 changed nothing: Revise round 2. I changed nothing this round. The failed checks are test-kvm, ci-linux-kvm-success, await-kvm and ci-macos-success. The macOS failures only follow the KVM lane: await-kvm says the mac c134b052

    Updated 2026-10-29T01:40:28.239Z.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind:taskA task the plan skill rendered; the body carries ## Taskmodel:strongestThe strongest model available: unknown ground, or large work that needs caresize:L500 to 900 net lines; one PR, and the ceiling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0