Skip to content

attestFreshDatastore names os migrate value-shapes as the remedy for every contradicted id that is not files-to-references — with a third creation-attested id the ternary is a wrong remedy on a path nothing reaches yet #16067

Description

@claude

Filed unassigned by the dev executing #15710 (branch claude/issue-15710-notification-event-migration-ledger-claims), as an out-of-scope observation. ⛔ Not fixed in that PR: it is a different defect class from the card (a remedy-text mapping, not the ledger-claim matrix), so it is filed rather than ridden.

What was observed

packages/platform-objects/src/system/migration-flag.ts, attestFreshDatastore: when this boot has already admitted a value that contradicts a migration's contract, the id is not attested and the operator is told how to close the gate on real evidence:

'Fix the data, then run `os migrate ' + (id === FILE_REFERENCES_MIGRATION_ID ? 'files-to-references' : 'value-shapes') + ' --apply` to close it on real evidence (ADR-0104).'

The remedy is a two-way ternary over an array that, after #15710, has three members: adr-0030-notification-event now iterates through the same loop, and for it the ternary would name os migrate value-shapes --apply — a command that has nothing to do with that migration. The ADR-0030 cut-over has no os migrate command and no self-check; what a run of it may claim is documented on NOTIFICATION_EVENT_MIGRATION_ID in packages/spec/src/system/migration.zod.ts.

Why it is not a live defect today (measured on 35819dff2)

The contradiction branch is entered only when engine.valueShapeViolationsAdmitted() carries the id. The engine (packages/objectql/src/engine.ts) tallies admitted violations keyed by FILE_REFERENCES_MIGRATION_ID and VALUE_SHAPES_MIGRATION_ID only, so the third id never reaches the ternary. It is a wrong answer sitting on an unreachable path — an observation, not a regression, hence finding and no priority.

What would make it reachable, and the shape of a fix

Any future tally keyed by another id, or a fourth creation-attested member that does have its own os migrate command. Suggested shape: replace the ternary with an explicit id → remedy mapping that is total over the ids that CAN be contradicted (today the two ADR-0104 ids), and have the loop treat an id without a value-shape contract as never-contradictable instead of falling into the value-shapes arm — so a new member cannot inherit a remedy by default. A pin that feeds a contradiction for a non-ADR-0104 id and asserts the warning does not name value-shapes would hold it.

Re-check

git grep -n "files-to-references' : 'value-shapes'" -- packages/platform-objects/src/system/migration-flag.ts
git grep -n "valueShapeViolationsAdmitted" -- packages/objectql/src/engine.ts
git grep -n "NOTIFICATION_EVENT_MIGRATION_ID" -- packages/spec/src/system/migration.zod.ts

Dedup: REST /search/issues answers 403 through this container's proxy (by design), so this was one targeted MCP search_issues, with a control on the same channel returning #15710 first for its own title. Nearest neighbours, neither this: #4891 (showcase seed data: URIs blocking attestation, closed), #15490 (value-shapes finding detail text). Related: #15710 (the ruling that added the third member), #4769 (the contradiction path itself).


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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions