Add node review must match project assignment

Task 5056 · Done · Coder · created · updated

Two small defects in the delivered Add node / Billing surface (epic 4929, dev findings F7, F9). 1. Review lies about projects. The review step shows "Projects: None yet" (`apps/web/src/components/addNode/AddNodeDialog.tsx:875`), the order assigns only the picked projects (`apps/api/app/node_orders.py:315-333` `apply_projects`), but when the node registers, `apps/api/app/routes/nodes.py:1973` → `apps/api/app/slot_allocation.py:303-337` `auto_assign` gives it EVERY project of the org while `onboarding_active`. Observed on dev (Task 4973 report, F7). Fix: a node created through a node order carries the order's explicit project choice — skip onboarding `auto_assign` for it (an empty pick means none). Keep auto_assign for nodes that do not come from an order. 2. An hourly rental row says hourly twice: `apps/web/src/components/billing/RentalsCard.tsx:67` ("Billed hourly") and `:78` ("Hourly"). Fix: show it once, per docs/standards/ui-copy-standards.md. Out of scope: onboarding flow otherwise; the dark-theme primary contrast (app-wide, F8); the Keep-this-node two-button layout; any new setting. Done means: - Ordering a node with no projects picked during onboarding → after registration the node has 0 projects; with 2 picked → exactly those 2 — API regression test. - A node registered NOT via an order during onboarding still gets every project — existing behaviour test still passes. - An hourly rental row renders "hourly" once — web unit test. - `./dc check full` green.

Outcome

Ordered nodes now get only their picked projects while onboarding (empty = none); hourly rental row says hourly once. API+web tests added, full gate green, PR #4492 merged. Deferred: projects created mid-onboarding still reach ordered nodes.

Pull request

Artifacts

Activity

  • Ready
  • Runner started
  • Runner ended (done)