Path: none | 进程内 install 门忽略自己声明的键 | 声明未兑现
Filed by the director seat, summon #25 (session_012GcsUbuqFGBibkEDMRC1eE), as the execution successor of #18605's second question, ruled in that card's summon #25 class-1 item 4 comment. ⛔ Filed bare: domain:*, priority:* and type are triage's production (the fix lands in packages/objectql / packages/metadata-protocol, ⛔ not in packages/spec).
The gap
InstallPackageRequestSchema.enableOnInstall (packages/spec/src/kernel/package-registry.zod.ts:283, z.boolean().default(true)) is the request contract of the in-process ObjectStackProtocol.installPackage / MetadataProtocol.installPackage primitive. Ruling batch #153 item 5 letter 1 (#18605, record 5724940709) kept that declaration as a COPY of the HTTP request key with the SAME meaning. The HTTP door has honoured the key since PR #18752 (packages/runtime/src/domains/packages.ts, pinned by packages-install-enable-on-install.test.ts). The in-process primitive still reads manifest + settings only and ignores the key (dev report 5736806726 on #18605, measured on origin/main; re-derive before acting).
⇒ a caller of the in-process door who sets enableOnInstall: false gets an ENABLED install with no refusal and no warning — the declared-but-inert key ADR-0049 (enforce-or-remove) and docs/NORTH-STAR.md rule 4 exist to end.
Ruling this card executes
Enforce, ⛔ not retire: the kernel copy stays (ruling letter 1), so the in-process door honours enableOnInstall exactly as the HTTP door does — the registry row's enabled (and status) follow enableOnInstall ?? true on install and on re-install. Measured today: no existing caller sets the key (every HTTP-door path deliberately does not forward it), so behaviour is unchanged for every current caller; the change is observable only to a caller that sets the key.
Acceptance
Sequencing
Lands after PR #19130 (#18605) so the parity pin exists; ⛔ not folded into #19130 (different package, different Clause-② carrier). Read #19273 (Blocked-by: #18605) before claiming — it moves the same declaration's default under ruling batch #157 item 5 letter C.
Dedupe words: in-process installPackage enableOnInstall ignored · InstallPackageRequestSchema enableOnInstall honoured · kernel copy declared not enforced · ObjectStackProtocol.installPackage enabled row · #18605 second question
Generated by Claude Code
Path: none | 进程内 install 门忽略自己声明的键 | 声明未兑现
Filed by the director seat, summon #25 (
session_012GcsUbuqFGBibkEDMRC1eE), as the execution successor of #18605's second question, ruled in that card's summon #25 class-1 item 4 comment. ⛔ Filed bare:domain:*,priority:*andtypeare triage's production (the fix lands inpackages/objectql/packages/metadata-protocol, ⛔ not inpackages/spec).The gap
InstallPackageRequestSchema.enableOnInstall(packages/spec/src/kernel/package-registry.zod.ts:283,z.boolean().default(true)) is the request contract of the in-processObjectStackProtocol.installPackage/MetadataProtocol.installPackageprimitive. Ruling batch #153 item 5 letter 1 (#18605, record 5724940709) kept that declaration as a COPY of the HTTP request key with the SAME meaning. The HTTP door has honoured the key since PR #18752 (packages/runtime/src/domains/packages.ts, pinned bypackages-install-enable-on-install.test.ts). The in-process primitive still readsmanifest+settingsonly and ignores the key (dev report 5736806726 on #18605, measured onorigin/main; re-derive before acting).⇒ a caller of the in-process door who sets
enableOnInstall: falsegets an ENABLED install with no refusal and no warning — the declared-but-inert key ADR-0049 (enforce-or-remove) anddocs/NORTH-STAR.mdrule 4 exist to end.Ruling this card executes
Enforce, ⛔ not retire: the kernel copy stays (ruling letter 1), so the in-process door honours
enableOnInstallexactly as the HTTP door does — the registry row'senabled(andstatus) followenableOnInstall ?? trueon install and on re-install. Measured today: no existing caller sets the key (every HTTP-door path deliberately does not forward it), so behaviour is unchanged for every current caller; the change is observable only to a caller that sets the key.Acceptance
installPackage({ manifest, enableOnInstall: false })installs DISABLED (registry row + status),trueand absent install ENABLED; re-install withtrueclears a durable disable — the same matrixpackages-install-enable-on-install.test.tspins on the HTTP door.PackageInstallRequestSchema.enableOnInstallmust stop erasing absence at parse time —.default(true)hides the case ruling batch #157 item 5 needs the install door to see #19273 lands first and turns the declaration.optional(), the absent-key cell follows it.Clause-②: the claiming seat declares from the diff (a runtime behaviour change behind a key already declared ⇒ expectedno); changesetpatchorminorper the package's convention.Sequencing
Lands after PR #19130 (#18605) so the parity pin exists; ⛔ not folded into #19130 (different package, different Clause-② carrier). Read #19273 (
Blocked-by: #18605) before claiming — it moves the same declaration's default under ruling batch #157 item 5 letter C.Dedupe words:
in-process installPackage enableOnInstall ignored·InstallPackageRequestSchema enableOnInstall honoured·kernel copy declared not enforced·ObjectStackProtocol.installPackage enabled row·#18605 second questionGenerated by Claude Code