ABSoW zero = confirmed not-built (2026-07-30)

Decision: as_built_qty == 0 is a confirmed value — “scope line not built” (the ABSoW proposal remove_line/zero action) — not an absent one. Only None/empty mean “unconfirmed”. (entirely-api db7c87d)

Consequences:

  • invoice-service validate_invoice_readiness counts zeroed lines as confirmed (_absow_confirmed). Previously ab != 0 made any modified line zeroed by a scope change block invoicing forever (“as-built quantity needs confirmation before invoicing” — hit on VAB-9002).
  • cert-generation cert_data_service excludes confirmed-not-built lines from cert packages entirely (_confirmed_not_built) instead of rendering 0-qty rows in Section 3.
  • Billing of zeroed lines on per-inspection desk-review invoices is NOT auto-suppressed — remove via the persisted invoice remove_items override (as done for VAB-9002’s superseded 13 LF R/R beam line).

Origin: VAB-9002 (192 Weston Hall Rd) — as-built changed 13 LF R/R main beam to 6 LF sistered beam; proposal #15 zeroed the R/R line, which then blocked invoicing and rendered a 0-qty Section 3 row.