Add node review must match project assignment
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.
Artifacts
Activity
- Ready
- Runner started
- Runner ended (done)