Skip to content

shillinq PurchaseOrder schema composes decidesk's Order (all_of: ["1585"]) — PO creation is broken live #383

Description

@rubenvdlinde

Found while live-verifying FoldIntoOrder (#503). No PurchaseOrder object can be created on the live instance at all.

Symptom

saveObject(register: 'shillinq', schema: 'PurchaseOrder', ...)
=> The required properties (orderNumber, orderDate, orderStatus, totalPrice) are missing.

Those are not PurchaseOrder's required properties. Shillinq's PurchaseOrder (schema 1115) declares:

required = ["poNumber", "supplierId", "statusCode", "administrationId"]

Root cause

Schema 1115 carries:

all_of = ["1585"]

Schema 1585 is decidesk's order schema (slug=order, app=decidesk, title=Order), whose required set is exactly orderNumber, orderDate, orderStatus, totalPrice. So shillinq's PurchaseOrder composes another app's schema, and validation demands decidesk's fields.

Almost certainly a residue of the Order slug collision that #503 addressed by renaming shillinq's primitive to OrderPrimitive — the composition reference to 1585 was never unwound.

Impact

  1. PurchaseOrder creation is broken on any instance where decidesk is installed alongside shillinq.
  2. Cross-app coupling: a change to decidesk's order schema silently changes shillinq's PurchaseOrder validation.
  3. Blocks fix(manifest): clear gate-53's structural stage (108→0) and gate-63 (ADR-079) — and surface the 152 findings hiding behind them #503. The FoldIntoOrder PurchaseOrder path cannot be live-verified, because no source row can be created. Two of three fold paths (Subsidie, DBAOpdracht) are proven in fix(repair): FoldIntoOrder was a silent no-op, then non-idempotent — 5 live-only defects #381; this one is not, and the migration stays HELD because of it.

Related: shillinq's register (#264) is also polluted with schema 1585 in its schemas[] array — same family of problem.

Suggested fix

Unwire all_of on 1115 (point it at shillinq's own primitive, or drop the composition), de-pollute register 264, then re-run the #503 live verification to prove the PurchaseOrder fold path and lift the HOLD.

⚠️ Verify whether existing PurchaseOrder rows depend on the inherited properties before changing the composition.

Refs #503, #381

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions