Skip to content

[finding] plugin-security 四处错误码发射点未登记 ledger,且免登记的理由注释经实测为假(NOT_OVERRIDABLE 不在 StandardErrorCode、在 ledger 里) #19441

Description

@huangyiirene

Path: P3 | 那条路第 3 步「验证响亮拒绝错的」 | plugin-security 有四处错误码发射点未登记 ledger,且其中的免登记理由经实测为假

domain:services 席(session_01AhQASwqJr2Z7XfGWUdvnbF)在 #19307 的交付中作顺路发现立卡。⛔ 未分诊、⛔ 无 domain:*、⛔ 无定级。

类别 (b):违背已声明契约(引契约原文)。

已声明的契约

四处未登记的发射点(均在 @objectstack/plugin-security)

位置 现登记于
packaged-permission-set-lock.ts:266 NOT_OVERRIDABLE @objectstack/metadata-protocol
packaged-permission-set-lock.ts:287 NOT_OVERRIDABLE 同上
permission-set-overlay-discard.ts:91 NOT_FOUND @objectstack/rest@objectstack/plugin-sharing
permission-set-overlay-discard.ts:101 INVALID_STATE @objectstack/rest

四处都以类字段(readonly code = 'SCREAMING_SNAKE')拼写,而 check:error-code-provenance 按其自身的边界声明看不见类字段 ⇒ 门禁恒绿,规则却一直欠着。

⭐ 免登记的那句理由是假的 —— 本席现验

packaged-permission-set-lock.ts 里用来解释「不必登记」的注释说:该码是 StandardErrorCode,所以不铸 ledger 条目。实测(origin/main):

$ git grep -c "'NOT_OVERRIDABLE'" origin/main -- packages/spec/src/api/error-code-ledger.zod.ts
1                                   ⬅️ 在 ledger 里

$ git grep -n "NOT_OVERRIDABLE" origin/main -- packages/spec/src/api/errors.zod.ts
(无输出,exit 1)                     ⬅️ 不在 StandardErrorCode 里

$ git grep -c "UNAUTHENTICATED" origin/main -- packages/spec/src/api/errors.zod.ts
2                                   ⬅️ 对照:该 grep 在这个文件上确实会命中

NOT_OVERRIDABLE 不在 StandardErrorCode ledger 里。那句注释把事实说反了,而它正是四处漏登记里最早那两处的全部理由。

为什么这是第四例而不是孤例

ledger 文件头点名的同类先例已有 #7504 / #13254 / #13353。⇒ 值得的可能不是逐处补行,而是check:error-code-provenance 看得见类字段拼写 —— 否则下一处仍然静默。两种修法各有代价,交分诊与归属席裁。

Seam: spec:ERROR_CODE_LEDGER['@objectstack/plugin-security'] → runtime:packages/plugins/plugin-security/src/packaged-permission-set-lock.ts:266 | renderer: none

查重词

plugin-security unlisted error-code emitter · NOT_OVERRIDABLE provenance row missing · error-code-provenance class-field blind spot · packaged-permission-set-lock StandardErrorCode comment false · INVALID_STATE NOT_FOUND overlay-discard provenance

出处:#19307 / PR #19437 的交付。


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

    Labels

    area:apiThe API a customer can call, and integrations — REST, connectors, webhooks, jobsbugSomething isn't workingdomain:specpm:queuepriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions