Skip to content

feat(core): LiteKernel.use() enforces the declared plugin contract, converged with ObjectKernel (#16721 step 2) #22685

feat(core): LiteKernel.use() enforces the declared plugin contract, converged with ObjectKernel (#16721 step 2)

feat(core): LiteKernel.use() enforces the declared plugin contract, converged with ObjectKernel (#16721 step 2) #22685

Triggered via pull request September 8, 2026 08:55
Status Success
Total duration 53s
Artifacts

pr-automation.yml

on: pull_request
Check PR Size
18s
Check PR Size
Check Changeset
51s
Check Changeset
Auto Label
15s
Auto Label
Fit to window
Zoom out
Zoom in

Annotations

1 notice
Check Changeset: .changeset/litekernel-enforces-plugin-contract.md#L0
ADR-0087 exemption (no-migration-prescription): An accept-set narrowing performed entirely at the runtime registration path: `PluginSchema` is READ by `LiteKernel.use()` now, exactly as `ObjectKernel.use()` has read it since the `kernel.use()` enforcement release — the schema itself is not changed. No metadata key, spec symbol, Zod schema, object definition or stored representation is added, removed or given a different name, so `objectstack migrate meta` has nothing to visit and there is no tombstone to mint. Stored metadata is untouched; what moves is which plugin OBJECTS the second kernel accepts, and every object it newly refuses was already refused by the first. The channel that reaches an affected plugin author is the refusal itself, which names the offending key at `use()` and is more precise than a ledger line — and which value a refused key should carry is authoring intent no ledger entry can decide.