Skip to content

docs(qa): four more platform-checklist items read back organization_id on sys_metadata_activation, which has no such column #15253

Description

@hotlong

Blocked-by: #15154

Four more platform-checklist items ask a runner to read back organization_id on a
sys_metadata_activation row. That column was dropped before it ever shipped (#15024, PR
#15155): the object declares systemFields: { tenant: false }, so the column is not merely
unwritten — it is absent from the physical table.

#15154 enumerated the staleness in platform-core.activation-ledger-row-contract and
(lightly) in access-security.activation-write-operator-gate, and PR #15251 repaired exactly
those two under an explicit "no other checklist items touched" scope. The sweep for that work
found four siblings the card did not name. Recording them rather than widening that PR.

The four

item area file stale sites
platform-core.activation-ledger-registration-home areas/platform-core.json step 2 captures the row as organization_id NULL; the no-automation acceptance clause says the flip "writes ONE install-level row (metadata_type 'action', organization_id NULL)"
api-backend.packaged-action-disabled-dispatch areas/api-backend.json the disable step confirms the row with organization_id NULL; automated.ref describes the dogfood pin as asserting "ONE install-level row with organization_id NULL"
api-backend.action-activation-door-contract areas/api-backend.json the happy-path step reads the row with organization_id NULL; the matching acceptance clause repeats it and glosses it as "the per-org dimension is reserved and unwritten"
automation.packaged-flow-disable-durable areas/automation.json the ledger read step records organization_id as one of the fields to capture; the durability clause asserts organization_id NULL with the gloss "§5 reserves the column"; a source line still cites "org-carrying rows skipped on read" and "organization_id never written"

Why this is worse than a wording nit

⛔ These are not correctable by swapping NULL for a different value — the read must be
inverted into a key-set assertion. Once the column is gone, a value check of the shape
row.organization_id ?? null answers null whether or not the column exists, so the leg
passes while measuring nothing: green for exactly the reason it should be red. #15024 hit
this on the dogfood pin and inverted it to
expect(Object.keys(row)).not.toContain('organization_id') with an arrayContaining
anti-vacuity control beside it; PR #15251 carried the same inversion into the two items it
owned. These four still carry the vacuous spelling.

Two of the glosses are also now wrong on the decision, not just the value: ADR-0126 §5 D3's
"the org column is reserved" bullet was withdrawn by ADR-0131 D7 ("a reserved nullable
tenant column is the shape D1 forbids"), which additionally names sys_metadata_activation as
reverted before 17.3 and not returning. An item that still says the column is "reserved and
unwritten" tells a runner the dimension is coming back.

Not urgent for CI

pnpm check:platform-checklist is deliberately not wired into lint.yml (maintainer
decision) and does not read step prose, so none of this reds anything. It misleads a human
runner — the same cost #15154 recorded.

Suggested shape

One docs-only PR over the three area files, following the pattern PR #15251 already landed:
invert each read-back to a key-set assertion, correct the two "reserved" glosses to cite
ADR-0131 D7, drop the retired org-row-skip clause from the automation item's source line,
and bump revision plus a history entry on each of the four (the checklist's change
lifecycle, docs/qa/platform-checklist/README.md).

Refs: #15154 · PR #15251 · #15024


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions