You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A declared app capability token is still refused at the everyone anchor: describeHighPrivilegeBits's consumers pass no declaredCapabilities (PR #17811 landed the spec predicate only) #18535
Filed by the domain:skills seat (session_01Gqi43smmqjJ5sUrhfoPeKu, 2026-09-16T21:1xZ) from the #17359 dispatch's premise check. ⛔ Not graded, ⛔ not routed — domain:*, type and priority:* are the triage seat's; type: Bug is prefilled because the violated contract is ruled. Dedupe words at the end.
packages/spec/src/security/high-privilege.ts (PR feat(spec): an app-declared capability token is not a platform system permission at the everyone anchor #17811, d5c91dd6, merged 2026-09-14T04:19Z): describeHighPrivilegeBits(def, context?: AnchorBindingContext) excuses a systemPermissions name only when context.declaredCapabilities carries it; the platform floor is absolute; 「a caller that cannot enumerate the stack's declared capabilities ... omission refuses」.
What is measured on origin/main1e496f97 (2026-09-16T21:11Z)
git grep -n 'describeHighPrivilegeBits(' origin/main -- packages/plugins/plugin-security/src packages/lint/src (tests excluded) → packages/plugins/plugin-security/src/security-plugin.ts:3585const offending = boot ? describeHighPrivilegeBits(boot) : null; — the boot refusal bindBaselineToEveryone passes NO context. The dispatched dev read three more consumers with no context: security-plugin.ts:5475, suggested-audience-bindings.ts:961, packages/lint/src/validate-security-posture.ts:771 (the security-anchor-high-privilege rule) — reported, re-verify the spelling at the fix.
PR feat(spec): an app-declared capability token is not a platform system permission at the everyone anchor #17811's own changeset says so: 「No shipped behaviour moves in this release … the plugin-security boot refusal and the lint security-anchor-high-privilege rule pass the declared list in a follow-up」. No open card names that follow-up: domain:services 48, domain:spec 99, domain:devx 100, security 19 open cards read by title+body for declaredCapabilities / AnchorBindingContext / describeHighPrivilegeBits → 0 hits (2026-09-16T21:11Z).
⇒ Today a permission set with isDefault: true that grants an app token the stack DECLARED under capabilities: is still refused at boot (warning, no binding) and by lint (error) — the exact shape #17189 was filed on (hotclm#11), now declared-≠-enforced: the ADR and the spec say it binds, the consumers say it does not.
What is asked
Wire the declared list into the consumers in the ruled order — the boot refusal and the lint rule pass { declaredCapabilities } read from the stack's capabilities: declarations (boot: the sys_capability rows with managed_by: 'package'; lint: the stack's declaration list), with the platform floor unchanged — and pin it: a declared app token on the isDefault set binds and lints clean, an undeclared name and a platform capability still refuse. The consumer for hotclm's unlock is release-installable, per #17189's own criterion.
Filed by the
domain:skillsseat (session_01Gqi43smmqjJ5sUrhfoPeKu, 2026-09-16T21:1xZ) from the #17359 dispatch's premise check. ⛔ Not graded, ⛔ not routed —domain:*,typeandpriority:*are the triage seat's;type: Bugis prefilled because the violated contract is ruled. Dedupe words at the end.The contract, ruled and landed in the spec
capabilitywithscope: 'org'counts as a high-privilege bit, so a set carrying only app capability tokens cannot bind to theeveryoneanchor #17189,docs/adr/0090-permission-model-v2-concept-convergence.md:249, PR docs(adr): ADR-0090 D5 offending bits are platform system permissions, not any systemPermissions #17814 merged 2026-09-13T15:12Z): theeveryone-anchor offending list is 「平台系统权限;带 package provenance 的应用声明 capability 令牌不计」.packages/spec/src/security/high-privilege.ts(PR feat(spec): an app-declared capability token is not a platform system permission at the everyone anchor #17811,d5c91dd6, merged 2026-09-14T04:19Z):describeHighPrivilegeBits(def, context?: AnchorBindingContext)excuses asystemPermissionsname only whencontext.declaredCapabilitiescarries it; the platform floor is absolute; 「a caller that cannot enumerate the stack's declared capabilities ... omission refuses」.What is measured on
origin/main1e496f97(2026-09-16T21:11Z)git grep -n 'describeHighPrivilegeBits(' origin/main -- packages/plugins/plugin-security/src packages/lint/src(tests excluded) →packages/plugins/plugin-security/src/security-plugin.ts:3585const offending = boot ? describeHighPrivilegeBits(boot) : null;— the boot refusalbindBaselineToEveryonepasses NO context. The dispatched dev read three more consumers with no context:security-plugin.ts:5475,suggested-audience-bindings.ts:961,packages/lint/src/validate-security-posture.ts:771(thesecurity-anchor-high-privilegerule) — reported, re-verify the spelling at the fix.git grep -n -E 'declaredCapabilities|AnchorBindingContext' origin/main -- packages/plugins/plugin-security/src packages/lint/src(tests excluded) → 0; control: the predicate file carriesdeclaredCapabilities3 times.domain:services48,domain:spec99,domain:devx100,security19 open cards read by title+body fordeclaredCapabilities/AnchorBindingContext/describeHighPrivilegeBits→ 0 hits (2026-09-16T21:11Z).⇒ Today a permission set with
isDefault: truethat grants an app token the stack DECLARED undercapabilities:is still refused at boot (warning, no binding) and by lint (error) — the exact shape #17189 was filed on (hotclm#11), now declared-≠-enforced: the ADR and the spec say it binds, the consumers say it does not.What is asked
Wire the declared list into the consumers in the ruled order — the boot refusal and the lint rule pass
{ declaredCapabilities }read from the stack'scapabilities:declarations (boot: thesys_capabilityrows withmanaged_by: 'package'; lint: the stack's declaration list), with the platform floor unchanged — and pin it: a declared app token on theisDefaultset binds and lints clean, an undeclared name and a platform capability still refuse. The consumer for hotclm's unlock is release-installable, per #17189's own criterion.Downstream
isDefault→everyonebinding rule (after #17189) #17359 / PR docs(skills): teach the isDefault everyone baseline and its app-capability rule in objectstack-data security.md #18531 (the publishedskills/**guidance that says the declared token may ride on the default set) is parkedpm:blockedon this card: 「文档应该以实际实现为准」.capabilitywithscope: 'org'counts as a high-privilege bit, so a set carrying only app capability tokens cannot bind to theeveryoneanchor #17189's consumer hotclm#11 keeps its seven-per-position workaround until this lands AND ships.查重词
describeHighPrivilegeBits·declaredCapabilities·AnchorBindingContext·bindBaselineToEveryone·security-anchor-high-privilegeGenerated by Claude Code