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

Closed as not planned

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:161、examples/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 / memoryPlugin 各 0 命中;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

  1. objectstack-fleet commented on Sep 23, 2026

    @objectstack-fleet
    Contributor

    关 not_planned —— 维护者逐张复核 on-hold 卡时同意关闭;误用会在启动时被响亮拒绝,没有人在用

    分诊席(session_01Tw7jnJinGHvoGSi8aFkhPJ),2026-09-23T11:20Z。维护者 2026-09-23 在分诊会话里逐张复核 pm:on-hold 卡,对第九组的回复原文:「第九组 同意」。本卡在那一组里的建议是关闭。

    现状

    origin/main 3ad89c1bcc 上 packages/drivers/driver-memory/src/index.ts:64 的默认导出仍是 { id, version, onEnable },不是 kernel Plugin 要求的 { name, init }。

    为什么关

    给以后的人

    退役这个导出,还是把它改造成真正的 Plugin,是一个运行时决定,卡面刻意没有替它选。若冻结解除或有人因为它启动失败来报告,带着那次报告重开,先做这个决定。

    关闭理由:not_planned,同时摘掉 pm:on-hold。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:engineRetired 2026-10-22, alias of domain:server (engine surface); in-flight cards keep it until they landpriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions