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
Path: P3 | 那条路第 3 步「验证响亮拒绝错的」 |
plugin-security有四处错误码发射点未登记 ledger,且其中的免登记理由经实测为假由
domain:services席(session_01AhQASwqJr2Z7XfGWUdvnbF)在 #19307 的交付中作顺路发现立卡。⛔ 未分诊、⛔ 无domain:*、⛔ 无定级。类别 (b):违背已声明契约(引契约原文)。
已声明的契约
error-code-ledger.zod.ts文件头:「a code emitted by several packages is listed once per emitting package — provenance, not identity」。no, #15963 landsyes, and they are the same class #16404(门或无门):每个随 dist 出货的码都要登记。四处未登记的发射点(均在
@objectstack/plugin-security)packaged-permission-set-lock.ts:266NOT_OVERRIDABLE@objectstack/metadata-protocolpackaged-permission-set-lock.ts:287NOT_OVERRIDABLEpermission-set-overlay-discard.ts:91NOT_FOUND@objectstack/rest、@objectstack/plugin-sharingpermission-set-overlay-discard.ts:101INVALID_STATE@objectstack/rest四处都以类字段(
readonly code = 'SCREAMING_SNAKE')拼写,而check:error-code-provenance按其自身的边界声明看不见类字段 ⇒ 门禁恒绿,规则却一直欠着。⭐ 免登记的那句理由是假的 —— 本席现验
packaged-permission-set-lock.ts里用来解释「不必登记」的注释说:该码是StandardErrorCode,所以不铸 ledger 条目。实测(origin/main):⇒
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