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

Labels

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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions