PASS: Runtime metadata identifies the v60 canonical-status build
PASS: OMS backend lifecycle constants are explicit canonical codes
PASS: Order GET returns canonical database status without server-side label translation
PASS: Order register persists and returns DRAFT through the shared backend constant
PASS: Order confirm validates and returns canonical lifecycle codes
PASS: OMS backend shipment projection vocabulary is explicit canonical code
PASS: Ship request requires CONFIRMED aggregate lifecycle state
PASS: Ship request also requires READY shipment projection state for ids and filter modes
PASS: Ship request no longer mixes shipment projection states into aggregate lifecycle or fabricates a lifecycle transition
PASS: Order lifecycle catalog maps canonical code through familiar label: { value:'NEW', label:'신규'
PASS: Order lifecycle catalog maps canonical code through familiar label: { value:'DRAFT', label:'작성'
PASS: Order lifecycle catalog maps canonical code through familiar label: { value:'CONFIRMED', label:'확정'
PASS: Order lifecycle catalog maps canonical code through familiar label: { value:'SHIPPED', label:'출고완료'
PASS: Order lifecycle dictionary no longer uses display labels as raw values
PASS: Frontend lifecycle catalog covers backend status DRAFT
PASS: Frontend lifecycle catalog covers backend status CONFIRMED
PASS: Frontend lifecycle catalog covers backend status ALLOCATED
PASS: Frontend lifecycle catalog covers backend status PICKING
PASS: Frontend lifecycle catalog covers backend status CHECKED
PASS: Frontend lifecycle catalog covers backend status SHIPPED
PASS: Status catalog owns select-option projection and canonical filter normalization
PASS: Order transaction command/workflow uses canonical status: from:['DRAFT']
PASS: Order transaction command/workflow uses canonical status: to:'CONFIRMED'
PASS: Order transaction command/workflow uses canonical status: allowedStatuses:['NEW','DRAFT']
PASS: Order transaction command/workflow uses canonical status: allowedStatuses:['DRAFT']
PASS: Order transaction command/workflow uses canonical status: permissionByStatus:{NEW:'oms.order.create',DRAFT:'oms.order.write'}
PASS: Order transaction policy does not use Korean display labels as machine state
PASS: Unsaved order state is an explicit client NEW code before server DRAFT
PASS: Transaction context displays catalog labels while commands receive raw canonical status
PASS: Order status search options are generated from the same catalog as Grid rendering
PASS: Route and saved-search status values are validated against the canonical shipment catalog
PASS: Order search no longer carries a second hard-coded status allow-list
PASS: Demo order detail/register/confirm use canonical lifecycle codes
PASS: Demo projection uses shipmentStatus as its single query/bulk source of truth
PASS: Demo confirm reproduces authoritative DRAFT-only transition failure
PASS: Demo detail fallback translates projection semantics into lifecycle canonical codes instead of reusing shipment state blindly
PASS: Static HTML/JS reference stores OMS statuses as canonical codes
PASS: Static reference keeps familiar labels and migrates legacy saved display values to canonical codes
PASS: Static reference separates shipment and lifecycle display semantics
PASS: Static HTML reference identifies the v60 canonical-status build
PASS: Unit contract covers raw/display separation, catalog options and invalid persisted display labels
PASS: OMS canonical status API + Grid/Filter/Workflow parity hardening v60 contract
