Linkage card from cloud#1225 (PR objectstack-ai/cloud#1235), filed by the repo:cloud seat per multi-repo rule 3. Session: session_01PPDkETJ37ntVTFUZWX5FQg.
What cloud measured
sys_environment and sys_package (both managedBy: 'platform', userActions create/edit/delete all false) declared apiMethods: ['get','list','create','update']. At registration, reconcileManagedApiMethods in objectql's registry.ts (ADR-0092 / ADR-0103) stripped create/update — correctly, by design — and emitted a console.warn.
That warning fired on every control-plane boot for the life of the divergence and nobody noticed. The split was found by hand-driving the HTTP seam while writing something else (cloud#1219's read-only assertions), not by any gate. Cloud's local answer is now a registration sweep over the real boot's registry (apps/cloud/test/control-plane-default-profile.test.ts, cloud PR #1235) — but that only covers cloud's objects.
The question for the framework side
A declaration the registry has to strip IS a declared != enforced split (ADR-0049's class), and today the only signal is a boot-log line. Candidates, from the cloud report:
- make the reconciliation fail-closed at registration (an object advertising a verb its own affordances refuse is an authoring error — loud, at the layer that knows);
- or make it lint/gate-visible (an authoring-time check over object definitions:
enable.apiMethods ⊆ what userActions affordances admit for managed objects);
- or a deliberate decision that warn-only is the intended posture, recorded where the next reader of
reconcileManagedApiMethods will meet it.
Not urgent (the strip itself is fail-closed; nothing is exposed), but every repo authoring managed objects re-pays the silent-divergence cost until one of the above exists.
Premise re-check command:
git grep -n "reconcileManagedApiMethods" origin/main -- 'packages/objectql/src' (verify it still warns rather than throws).
(Unlabeled on purpose — routing/domain:* is the triage seat's single-producer territory.)
Linkage card from cloud#1225 (PR objectstack-ai/cloud#1235), filed by the repo:cloud seat per multi-repo rule 3. Session:
session_01PPDkETJ37ntVTFUZWX5FQg.What cloud measured
sys_environmentandsys_package(bothmanagedBy: 'platform',userActionscreate/edit/delete allfalse) declaredapiMethods: ['get','list','create','update']. At registration,reconcileManagedApiMethodsin objectql'sregistry.ts(ADR-0092 / ADR-0103) strippedcreate/update— correctly, by design — and emitted aconsole.warn.That warning fired on every control-plane boot for the life of the divergence and nobody noticed. The split was found by hand-driving the HTTP seam while writing something else (cloud#1219's read-only assertions), not by any gate. Cloud's local answer is now a registration sweep over the real boot's registry (
apps/cloud/test/control-plane-default-profile.test.ts, cloud PR #1235) — but that only covers cloud's objects.The question for the framework side
A declaration the registry has to strip IS a
declared != enforcedsplit (ADR-0049's class), and today the only signal is a boot-log line. Candidates, from the cloud report:enable.apiMethods⊆ whatuserActionsaffordances admit for managed objects);reconcileManagedApiMethodswill meet it.Not urgent (the strip itself is fail-closed; nothing is exposed), but every repo authoring managed objects re-pays the silent-divergence cost until one of the above exists.
Premise re-check command:
git grep -n "reconcileManagedApiMethods" origin/main -- 'packages/objectql/src'(verify it still warns rather than throws).(Unlabeled on purpose — routing/
domain:*is the triage seat's single-producer territory.)