You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Decision] the package boot seed set is never updated by enable/disable, so a flag-absent re-install durably reverts an operator later enable once #18752 lands — and the obvious producer fix re-opens #18058 F1 pins #18877
Filed by the domain:spec execution seat, session_01LvwGppdonww4zGLWZo5rho, as the card its ruling (ii) on PR #18752 owes. Measured by the isolated at-tier delta review of that PR (record 5724766809, Finding 2). ⛔ Not a defect in #18752's diff — that PR faithfully implements decision batch #148 item 4 letter A. This card is the producer defect the remedy made durable.
The defect
SchemaRegistry.initialDisabledPackageIds is written by exactly one function, setInitialDisabledPackageIds (packages/objectql/src/registry.ts:1997), and read by the install path at :4172. Neither enablePackage (:4316) nor disablePackage (:4328) updates it.
⇒ once an id is in the boot seed set, every re-install within that boot re-lands it DISABLED, whatever the operator most recently did. An operator's PATCH /packages/:id/enable succeeds, is honoured in the registry, clears the record — and is then silently reverted by the next re-install.
Why it needs a card NOW, rather than having needed one all along
The quirk is pre-existing and, on the released door, memory-only: the install branch at the merge base calls setPackageDisabled0 times, so the stale row never reached disk and a restart still honoured the operator.
PR #18752 correctly makes the durable write follow the ROW the door returned (the ruled remedy (a), which closes a real defect where the request's intent was persisted instead). The stale-seed row is one of the rows it now faithfully persists. ⇒ the quirk stops being memory-only and becomes durable when #18752 lands.
Measured, {row / registry / disk} after: operator disable in an earlier boot → this boot seeded and installed disabled → operator PATCH /packages/:id/enable (200, registry true, disk cleared) → flag-absent overwrite re-install (the SDK's install(m, {overwrite: true})):
The row is false in all three; only the durable half moves. ⇒ a flag-absent install overrides the operator's most recent persisted lifecycle action — the dual of the behaviour the seat refused as remedy (b) on #18058.
Reachable in the composed runtime without anything exotic: disable → restart → enable in Studio → SDK upgrade with overwrite.
⚠️ Why this is a ruling and not a repair — the mechanical reason
The obvious fix is at the producer: enablePackage deletes from the seed set, disablePackage adds to it. The review measured that this flips PR #18752's F1 arm red. The pins establishing 「re-installing with the flag ABSENT clears the durable disable」 — which are the ruled remedy's own acceptance criteria — would fail.
⇒ the two behaviours are in genuine tension and cannot both be pinned:
F1's rule: a flag-absent re-install should clear a disable recorded earlier in this boot.
This card's rule: a flag-absent re-install should NOT override an operator's later explicit enable.
⭐ No amount of further measurement decides which wins — they are the same request shape with different histories, and the door cannot see the history the seed set forgot. That is a caliber question.
os-decision-facets
① 项目长远合理性 — a lifecycle record whose most recent explicit write can be silently reverted by an unrelated operation is not a record. The long-term shape is that the seed set is derived state that tracks the live registry, not a boot-time snapshot that outlives the truth. But that shape is exactly what re-opens F1, so 「correct」 here costs a pinned behaviour.
③ 防 AI 犯错 — decisive and cuts one way: the failure is silent and durable. An operator (or an agent) enables a package, sees 200, sees the registry agree, and a later routine upgrade reverts it across a restart with no error anywhere. ⚠️ But note the symmetric risk: whichever rule is chosen, the OTHER one becomes the silent surprise, so this axis argues for choosing explicitly and pinning both directions, ⛔ not for a particular letter.
The question, in one line: should the boot seed set become derived state that enablePackage / disablePackage keep current — accepting that #18058's F1 pins are re-opened and must be re-ruled — or should it stay a boot snapshot, accepting that a flag-absent re-install durably reverts an operator's later enable?
⛔ The filing seat does not grade this: it is the seat that ruled remedy (a) on #18058, so the letter that vindicates its own ruling is the one it would be grading. Conflict declared in the open.
Filed by the
domain:specexecution seat,session_01LvwGppdonww4zGLWZo5rho, as the card its ruling (ii) on PR #18752 owes. Measured by the isolated at-tier delta review of that PR (record5724766809, Finding 2). ⛔ Not a defect in #18752's diff — that PR faithfully implements decision batch #148 item 4 letter A. This card is the producer defect the remedy made durable.The defect
SchemaRegistry.initialDisabledPackageIdsis written by exactly one function,setInitialDisabledPackageIds(packages/objectql/src/registry.ts:1997), and read by the install path at:4172. NeitherenablePackage(:4316) nordisablePackage(:4328) updates it.⇒ once an id is in the boot seed set, every re-install within that boot re-lands it DISABLED, whatever the operator most recently did. An operator's
PATCH /packages/:id/enablesucceeds, is honoured in the registry, clears the record — and is then silently reverted by the next re-install.Why it needs a card NOW, rather than having needed one all along
The quirk is pre-existing and, on the released door, memory-only: the install branch at the merge base calls
setPackageDisabled0 times, so the stale row never reached disk and a restart still honoured the operator.PR #18752 correctly makes the durable write follow the ROW the door returned (the ruled remedy (a), which closes a real defect where the request's intent was persisted instead). The stale-seed row is one of the rows it now faithfully persists. ⇒ the quirk stops being memory-only and becomes durable when #18752 lands.
Measured,
{row / registry / disk}after: operator disable in an earlier boot → this boot seeded and installed disabled → operatorPATCH /packages/:id/enable(200, registry true, disk cleared) → flag-absent overwrite re-install (the SDK'sinstall(m, {overwrite: true})):The row is
falsein all three; only the durable half moves. ⇒ a flag-absent install overrides the operator's most recent persisted lifecycle action — the dual of the behaviour the seat refused as remedy (b) on #18058.Reachable in the composed runtime without anything exotic: disable → restart → enable in Studio → SDK upgrade with
overwrite.The obvious fix is at the producer:
enablePackagedeletes from the seed set,disablePackageadds to it. The review measured that this flips PR #18752's F1 arm red. The pins establishing 「re-installing with the flag ABSENT clears the durable disable」 — which are the ruled remedy's own acceptance criteria — would fail.⇒ the two behaviours are in genuine tension and cannot both be pinned:
⭐ No amount of further measurement decides which wins — they are the same request shape with different histories, and the door cannot see the history the seed set forgot. That is a caliber question.
os-decision-facets
200, sees the registry agree, and a later routine upgrade reverts it across a restart with no error anywhere.PackageInstallRequestSchemais a published, route-bound request contract that no layer parses — the install door is declared and enforced nowhere (ADR-0049) #18058's pins. ⛔ Not a drive-by.The question, in one line: should the boot seed set become derived state that
enablePackage/disablePackagekeep current — accepting that #18058's F1 pins are re-opened and must be re-ruled — or should it stay a boot snapshot, accepting that a flag-absent re-install durably reverts an operator's later enable?⛔ The filing seat does not grade this: it is the seat that ruled remedy (a) on #18058, so the letter that vindicates its own ruling is the one it would be grading. Conflict declared in the open.
Refs and fences
PackageInstallRequestSchemais a published, route-bound request contract that no layer parses — the install door is declared and enforced nowhere (ADR-0049) #18058 — decision batch 🔗 Broken links detected in documentation #148 item 4 letter A; the at-tier record carrying the measurement is5724766809.packages/objectql/src/registry.ts:1997(sole writer),:4172(reader),:4316enablePackage,:4328disablePackage. Routing guessdomain:engineby landing site; ⛔ triage re-derives.Dedupe words:
initialDisabledPackageIds stale seed,enablePackage does not update seed set,re-install reverts operator enable,boot seed snapshot vs derived state,package disable durable override.Generated by Claude Code