Blocked-by: #8474 (its ADR-0093 D9 recording establishes the pattern this work would repeat)
Found while implementing #8474 (PR #8529). #8474's declared surface is the default-active-org session hook only, and re-anchoring a different decision is a different change per claim — so deliberately not fixed there. Filed unassigned and unlabeled; routing and grading are the triage seat's call.
The measurement
ADR-0081 D1 / ADR-0081 D2 are cited 37 times across 22 tracked filesafter PR #8529 lands (history excluded — CHANGELOG.md and .changeset/*.md are left alone by the "keep history as history" rule).
docs/adr/0081-trusted-react-page-tier.md is the trusted kind:'react' page tier, and its Decision section is numbered 1–4 — it has no D-numbered decisions at all. So neither D1 nor D2 names anything in it.
ADR-0093's Relates to line already explains the cause, and it is not a typo:
the default-org bootstrap (`plugin-auth/src/ensure-default-organization.ts`,
referenced in code as "ADR-0081 D1" — that decision record predates this
repo's ADR series)
The label is inherited from a pre-repo decision record whose number now collides with this repo's ADR-0081. #8474 closed one claim's worth; these are the rest.
Three distinct claims, not one sweep
The label was reused for unrelated decisions, so this is not fixable by string replacement. ⛔ Each claim needs its own owning record established first.
Claim B — the ensureDefaultOrganization default-org bootstrap (ADR-0081 D1)
packages/plugins/plugin-auth/src/: auth-plugin.ts (x2), auth-plugin.test.ts, ensure-default-organization.ts, ensure-default-organization.test.tspackages/verify/src/harness.ts (x3), harness.org-context.test.tscontent/docs/permissions/sharing-rules.mdx:178 — ⚠️customer-facing, the only published-docs site- ADR-0093 is the plausible owner again (it already names the helper), but the bootstrap is a write decision, not the D9 read — it likely deserves its own D or its own record.
Claim C — the org CAPABILITY gate, not multi-org (ADR-0081 D1)
Claim D — multi-org operation is a commercial ENTITLEMENT (ADR-0081 D2, 17 sites)
packages/plugins/plugin-auth/src/tenancy-service.ts (x2), tenancy-service.test.tspackages/spec/src/security/tenancy-posture.ts, packages/cli/src/commands/serve.ts, packages/plugins/plugin-dev/src/dev-plugin.ts, packages/verify/src/harness.ts (x2)packages/qa/dogfood/test/: enterprise-organizations.ts (x3), rls-multitenant.dogfood.test.ts, authz-conformance.matrix.tsdocs/adr/0105-*:334,348 — ⚠️ another governing record, and here the citation is load-bearing: ADR-0105 argues from "ADR-0081 D2's commercial" posture and describes inverting it. ADR-0105 may well be the real owner of this claim already — worth checking before inventing a new anchor.
Why the gate stays green
pnpm check:adr-anchors verifies a cited ADR exists; 0081 does. It cannot check that the record says what the citing file claims. Confirmed green on PR #8529 with all 37 of these still in the tree.
Suggested shape (triage's call)
Per claim, not per string: establish the owning record (ADR-0105 for claim D looks likely to already exist; claims B and C probably need a recording like #8474's ADR-0093 D9), then re-point that claim's sites. Claim D is the largest and the most likely to already have a home, so it may be the cheapest first.
⚠️docs/adr/** is in scope for every claim ⇒ maintainer-merged PR (Prime Directive #14).
Dedup
Searched open issues for ADR-0081, ensureDefaultOrganization, default-org bootstrap, ADR anchor / wrong citation, and by path. Control: the same searches do return #8474, so the query reaches the corpus. Only #8474 hits, and it is scoped to the active-org stamp alone (PR #8529 states the exclusion explicitly). Related but distinct: #8386 and #8285 (same defect family — wrong-but-existing ADR anchors — different documents, both closed).
Refs: #8474 / PR #8529 · #8386, #8285 (related family, not duplicates) · ADR-0081, ADR-0093, ADR-0105
Generated by Claude Code
Blocked-by: #8474 (its ADR-0093 D9 recording establishes the pattern this work would repeat)
Found while implementing #8474 (PR #8529). #8474's declared surface is the default-active-org session hook only, and re-anchoring a different decision is a different change per claim — so deliberately not fixed there. Filed unassigned and unlabeled; routing and grading are the triage seat's call.
The measurement
ADR-0081 D1/ADR-0081 D2are cited 37 times across 22 tracked filesafter PR #8529 lands (history excluded —CHANGELOG.mdand.changeset/*.mdare left alone by the "keep history as history" rule).docs/adr/0081-trusted-react-page-tier.mdis the trustedkind:'react'page tier, and its Decision section is numbered 1–4 — it has no D-numbered decisions at all. So neitherD1norD2names anything in it.ADR-0093's Relates to line already explains the cause, and it is not a typo:
The label is inherited from a pre-repo decision record whose number now collides with this repo's ADR-0081. #8474 closed one claim's worth; these are the rest.
Three distinct claims, not one sweep
The label was reused for unrelated decisions, so this is not fixable by string replacement. ⛔ Each claim needs its own owning record established first.
Claim B — the
ensureDefaultOrganizationdefault-org bootstrap (ADR-0081 D1)packages/plugins/plugin-auth/src/:auth-plugin.ts(x2),auth-plugin.test.ts,ensure-default-organization.ts,ensure-default-organization.test.tspackages/verify/src/harness.ts(x3),harness.org-context.test.tscontent/docs/permissions/sharing-rules.mdx:178—Claim C — the org CAPABILITY gate, not multi-org (
ADR-0081 D1)packages/platform-objects/src/identity/sys-member.object.ts,sys-user.object.ts,apps/setup-nav.contributions.tspackages/spec/src/kernel/public-auth-features.ts:119docs/qa/platform-checklist/areas/identity-auth.json(x2)docs/adr/0093-*:387— D8 non-goal 2 calls thefeatures.organizationvsfeatures.multiOrgEnabledsplit "a deliberate ADR-0081-D1 distinction".defaultActiveOrgis anchored to nothing #8474 worth filing.Claim D — multi-org operation is a commercial ENTITLEMENT (
ADR-0081 D2, 17 sites)packages/plugins/plugin-auth/src/tenancy-service.ts(x2),tenancy-service.test.tspackages/spec/src/security/tenancy-posture.ts,packages/cli/src/commands/serve.ts,packages/plugins/plugin-dev/src/dev-plugin.ts,packages/verify/src/harness.ts(x2)packages/qa/dogfood/test/:enterprise-organizations.ts(x3),rls-multitenant.dogfood.test.ts,authz-conformance.matrix.tsdocs/adr/0105-*:334,348—Why the gate stays green
pnpm check:adr-anchorsverifies a cited ADR exists; 0081 does. It cannot check that the record says what the citing file claims. Confirmed green on PR #8529 with all 37 of these still in the tree.Suggested shape (triage's call)
Per claim, not per string: establish the owning record (ADR-0105 for claim D looks likely to already exist; claims B and C probably need a recording like #8474's ADR-0093 D9), then re-point that claim's sites. Claim D is the largest and the most likely to already have a home, so it may be the cheapest first.
docs/adr/**is in scope for every claim ⇒ maintainer-merged PR (Prime Directive #14).Dedup
Searched open issues for
ADR-0081,ensureDefaultOrganization, default-org bootstrap, ADR anchor / wrong citation, and by path. Control: the same searches do return #8474, so the query reaches the corpus. Only #8474 hits, and it is scoped to the active-org stamp alone (PR #8529 states the exclusion explicitly). Related but distinct: #8386 and #8285 (same defect family — wrong-but-existing ADR anchors — different documents, both closed).Refs: #8474 / PR #8529 · #8386, #8285 (related family, not duplicates) · ADR-0081, ADR-0093, ADR-0105
Generated by Claude Code