32 — auto-discover stops owning ports; PortAssignments deleted
What to build: auto-discover no longer decides port availability locally. decide_ports becomes a pure translation of desired intent into a mapping request; all availability answers come from the natmap daemon via the NatmapOps seam. On a 409 conflict for a local ForwardRemote target, the service is still registered in Consul without the mapping (skip-but-register). The per-pass PortAssignments load/save and the local is_port_free bind-check are removed, and the now-orphaned PortAssignments type is deleted from lab-lib.
Blocked by: #31 — the daemon must be able to allocate on the mapping flow first.
Status: ready-for-agent
32 — auto-discover stops owning ports; PortAssignments deleted
What to build: auto-discover no longer decides port availability locally.
decide_portsbecomes a pure translation of desired intent into a mapping request; all availability answers come from the natmap daemon via theNatmapOpsseam. On a 409 conflict for a local ForwardRemote target, the service is still registered in Consul without the mapping (skip-but-register). The per-passPortAssignmentsload/save and the localis_port_freebind-check are removed, and the now-orphanedPortAssignmentstype is deleted from lab-lib.Blocked by: #31 — the daemon must be able to allocate on the mapping flow first.
Status: ready-for-agent
decide_portsissues mapping requests to the daemon (no local availability decision); nois_port_freebind-check remains in auto-discoverPortAssignmentsis no longer loaded/saved by auto-discover and the type is deleted from lab-lib (including any remaining consumers)synccommand path and container-event path behave identically viasync_serviceNatmapOpsfake configured to report conflicts; auto-discover + natmap + root lib suites green