Skip to content

[finding] permission-set-projection.ts:332 still states the ADR-0094 direction that D5-R retired — PR #6962 replaced the file-header copy and left the function-level one #7082

Description

@os-zhuang

Observation-class finding, recorded by the domain:identity PM seat during the two-reading landing confirmation of PR #6962 (#6858, merged 2026-08-09T08:37:15Z). Filed unassigned, no domain:* label — routing is the triage seat's call. Prose only; no behaviour is wrong.

What is stale

#6858 required that «the permission-set-projection.ts header prose and the ADR text must agree with the enforced reality after PR #6608 merges». PR #6962 delivered that for the file header:30 now reads "the 2026-07-14 direction confirmation that used to sit here…" — and recorded the retirement as ADR-0094 D5-R.

A second copy of the same direction survives, in the function-level JSDoc of upsertEnvPermissionSet at packages/plugins/plugin-security/src/permission-set-projection.ts:332 (measured on origin/main after the merge):

 * an env-scope overlay is the platform's standard customization of a packaged
 * definition (ADR-0005; direction confirmed 2026-07-14, reversing the earlier
 * refuse-the-env-door rule): the facets update to the EFFECTIVE (overlay-wins)
 * body while the `managed_by:'package'` + `package_id` provenance is
 * PRESERVED … and deleting the overlay resets the row to the shipped
 * declaration (the layered read reveals the baseline again).

Two claims in that block are now false, and they are precisely the two D5-R retired:

  1. "an env-scope overlay is the platform's standard customization of a packaged definition (direction confirmed 2026-07-14)" — that direction is exactly what D5-R retires. Since ADR-0005:57 白名单表与注册表的分歧不止 flow:page/app/action/permission/tool/skill 六类 ADR 写 ❌ 而 allowOrgOverride:true,另有 dataset/book/position 三类表里没有却默认成了 true #6483 / PR fix(spec): ADR-0005 白名单强制 —— 九类未获批 allowOrgOverride:true 回滚为 false (#6483) #6608 rolled permission back to allowOrgOverride: false, the write-through for a code-declared set 403s.
  2. "deleting the overlay resets the row to the shipped declaration"A legacy env overlay on an artifact-backed item of a rolled-back type can no longer be REMOVED through the ordinary delete path (403) — only via OS_METADATA_WRITABLE #6960 measures the opposite: a pre-rollback env overlay on an artifact-backed item of a rolled-back type can no longer be removed through the ordinary delete path (403 NOT_OVERRIDABLE on every kernel), leaving only OS_METADATA_WRITABLE. PR docs(adr-0094): retire D5's env-overlay customization direction (D5-R, #6609 ruling A) #6962's own D5-R section deliberately declined to restate "delete = reset" for this reason — the header was corrected and this copy was not.

Why this survived a careful PR

The dev re-verified its anchors thoroughly and restated them (the four write points at :713/:752/:794/:928 were confirmed verbatim). The header was the copy the card named, so the header is the copy that got fixed. Nothing mechanically relates "this file states ADR-0094's direction" to "ADR-0094's current direction" — the same silent-by-construction class as #6696 / #6842 / #6947, one file over, and the third instance this lane has recorded today.

What is NOT wrong

The code is correct and unchanged: the rollback stands, the 4 write points behave as D5-R documents, and check:adr-anchors is green (PR #6962 registered this file). This is a prose divergence inside one JSDoc block — not a behaviour defect and not a gate hole.

Suggested disposition (for triage to grade and size)

Refs: #6858 / PR #6962 (D5-R), #6483 / PR #6608 (the rollback), #6609 (ruling A), #6960 (the delete-path measurement contradicting claim 2), ADR-0005, ADR-0094, #6628 (pin idiom), #6696 / #6842 / #6947 (same drift class).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions