Identity-lane half of the #7070 split (promotion executed by the triage seat per the split plan recorded on that card, 2026-08-09). The contract half is done: #6523 / PR #7068 converged 36 contract signatures onto the full ExecutionContext. This card widens the implementation-side annotations in the identity lane so the casts the narrow type forced become deletable.
File face (verified on origin/main @ 445a0c2)
| file |
SharingExecutionContext refs |
packages/plugins/plugin-sharing/src/sharing-service.ts |
21 |
packages/plugins/plugin-sharing/src/sharing-rule-service.ts |
8 |
packages/plugins/plugin-sharing/src/exec-context-seam.testkit.ts |
3 |
packages/plugins/plugin-audit/src/comment-access-hooks.ts |
2 |
The double-cast specimen, re-verified live: exec-context-seam.testkit.ts:106 — return { ...authz, isSystem: false } as unknown as SharingExecutionContext; — the helper resolves a REAL resolveAuthzContext envelope and then has to force it into the narrow type to hand it to the service.
Scope boundary (both inherited from #7070)
No user-visible defect: values are complete at runtime (the #6523 family's damage was type-side). No compiler pressure will surface this — PR #7068 measured the dependents-direction typecheck green — which is why it is queued deliberately.
Part of #7070 (progress view). Sibling: services half (#7135). Refs: #6523, PR #7068, #6206 (ruling), #6430 / PR #6511.
Identity-lane half of the #7070 split (promotion executed by the triage seat per the split plan recorded on that card, 2026-08-09). The contract half is done: #6523 / PR #7068 converged 36 contract signatures onto the full
ExecutionContext. This card widens the implementation-side annotations in the identity lane so the casts the narrow type forced become deletable.File face (verified on
origin/main@445a0c2)SharingExecutionContextrefspackages/plugins/plugin-sharing/src/sharing-service.tspackages/plugins/plugin-sharing/src/sharing-rule-service.tspackages/plugins/plugin-sharing/src/exec-context-seam.testkit.tspackages/plugins/plugin-audit/src/comment-access-hooks.tsThe double-cast specimen, re-verified live:
exec-context-seam.testkit.ts:106—return { ...authz, isSystem: false } as unknown as SharingExecutionContext;— the helper resolves a REALresolveAuthzContextenvelope and then has to force it into the narrow type to hand it to the service.Scope boundary (both inherited from #7070)
organizationIdspellings stay out — per [#5852 契约半边]HierarchyScopeContext未声明organizationId/tenantId哪个权威 —— producer 只填一个、consumer 只读另一个,两边都「符合契约」 #5858 /check:org-identifierthat vocabulary has its own history; this card is annotation widening + redundant-cast deletion only.SharingExecutionContexttype itself rides whichever of the two split halves lands second. finding:SharingExecutionContext是同族第四个窄 enforcement 契约类型(sharing / approval / report 三个服务共用),#6206 裁决的「不留 per-site 子集」默认尚未覆盖它 #6523 deliberately left it exported and documented as migration residue precisely to keep these files compiling; once both halves land, it becomes removable — the second-lander deletes it (or files the one-line follow-up if cross-lane timing makes that cleaner).No user-visible defect: values are complete at runtime (the #6523 family's damage was type-side). No compiler pressure will surface this — PR #7068 measured the dependents-direction typecheck green — which is why it is queued deliberately.
Part of #7070 (progress view). Sibling: services half (#7135). Refs: #6523, PR #7068, #6206 (ruling), #6430 / PR #6511.