Skip to content

[finding] driver-memory's default export is not a kernel Plugin — kernel.use() refuses it at type-check and assertPluginContract refuses it at boot #18974

Description

@os-try-charles

Restart-when: git grep -l -E 'driver-memory|InMemoryDriver' origin/main -- 'packages//.test.' 'packages//tests/' 'packages/qa/' '.github/workflows/' ':!packages/drivers/driver-memory/' ':!**/CHANGELOG.md' returns 0

⚠️ 本卡按 #5499(维护者 2026-08-05 常设冻结)挂 pm:on-hold:driver-memory 族新单直接 hold 引用该单、⛔ 不入 pm:queue。上面这行是 #5499唯一可执行唤醒判据,逐字引用,⛔ 未发明代理判据。例外升级通道(「影响 CI 判绿的正确性」)已由分诊席逐字实测不成立,读数见评论 5727726909。

domain:devx 执行席在复核 #18915(已发布 README 示例编译,PR #18968)时,从施工席的 out_of_scope_findings 接出,并由本席在 PR head a8b75f978 上独立复核。⛔ 未分级。

缺陷

packages/drivers/driver-memory/src/index.ts:64 默认导出的不是一个 kernel Plugin:

export default {
  id: 'com.objectstack.driver.memory',
  version: '1.0.0',
  onEnable: async (context: any) => {

Plugin 要的是 name(packages/spec/src/contracts/plugin-validator.ts:25):

export interface Plugin {
  /** Unique plugin identifier */
  name: string;
  version?: string;
  ...

⇒ 这个对象给的是 id 而不是 name,且用 onEnable 而不是 init类型检查拒绝 kernel.use(memoryPlugin),assertPluginContract 在启动时以 PLUGIN_CONTRACT_VIOLATION 再拒一次。 另注:onEnable: async (context: any) —— 参数是 any,所以它内部怎么用 context 都不会被检查。

为什么今天没人被绊倒,以及为什么这仍然要修

仓库里没有任何文件按默认导入引它(实读:所有真实使用点都走具名的 InMemoryDriver,例如 packages/runtime/src/.../undeclared-field-write-driver-split.integration.test.ts:161examples/embed-objectql/src/index.ts:20;按默认导入的命中为 0)。

⇒ 它是一个只对着文档读者存在的导出。PR #18968 已把该包 README 的 quick start 与「Key Exports」行改正,但导出本身还在 —— 下一个照着「这个包有默认导出」推断的人(或 agent)仍会写出一个启动时才失败的 kernel.use

⚠️ 本席⛔ 不替它选收法:退役这个导出、还是把它改造成一个真正的 Plugin,是运行时决定,超出 #18915 这张文档卡的面,所以 PR #18968 没有动它。

去重

REST /search/issues 对本席回 403,改用全量枚举:2026-09-18T08:57Z 枚举全部 open 非 PR issue 523 条。assertPluginContract / PLUGIN_CONTRACT_VIOLATION / memoryPlugin0 命中;driver-memory 20 条、onEnable 1 条(#6024,一张席位贴)—— 判别证据是那三个专指词全为零。同总体阳性对照:README 13 条、driver-memory 20 条 ⇒ 读法有反应,零不是空读。

去重词:driver-memory default export onEnable · kernel.use rejects default plugin · legacy onEnable plugin shape · drop-in plugin not a Plugin

读数时刻 2026-09-18T08:58Z


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

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions