Uh oh!
There was an error while loading. Please reload this page.
docs(citations): re-anchor the eight ADR-0057 D10 citations to the framework's ADR-0124 D1 (#5701) - #5842
Merged
Conversation
…amework's ADR-0124 D1 (#5701) The eight sites cite `ADR-0057 D10` for "the server enforces; client-side gating is a usability courtesy". That decision is "Setup-nav surfacing follows the capability (ADR-0029 K2); the object stays open" — nav-entry tiering, not enforcement location. The rule they invoke is decided by the framework's ADR-0124 D1 (Accepted 2026-08-18). The anchor is derived from an authority, not chosen: framework ADR-0057 carries a note aimed at exactly this citation — "If a citation of `ADR-0057 D10` brought you here looking for that rule, ADR-0124 is where it is decided." Comment text only; `git diff -U0` carries zero non-comment lines. The "framework numbering; this repo's own ADR-0057 is an unrelated document" parenthetical retires with the number it disambiguated — this repo has no ADR-0124 (its own series stops at 0059) — while the "the framework's ..." possessive stays, so every site still says whose numbering it means. `packages/data-objectstack/src/appAccessProbe.test.ts` is left byte-untouched: it cites the same decision for the capability/service-gating case that decision genuinely does decide. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EuPCi56cnGyykygi3z9w4m
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
os-zhuang
marked this pull request as ready for review
August 23, 2026 14:55
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #5701
Re-anchors the eight citations of "the server enforces; client-side gating is a usability
courtesy" from the framework's
ADR-0057 D10to the framework'sADR-0124 D1— therecord that actually decides that rule.
Why the old anchor is wrong
Framework
ADR-0057D10 decides "Setup-nav surfacing follows the capability(ADR-0029 K2); the object stays open" — nav-entry tiering, not enforcement location. The
rule these eight sites invoke is decided by framework
ADR-0124 D1, "The server isthe enforcement point; client-side gating is a usability courtesy" (Accepted 2026-08-18).
The new anchor is derived from an authority, not chosen. Framework
ADR-0057carries anote aimed at precisely this citation:
#5699 addressed the repo-ambiguity half of this defect — saying whose ADR numbering the
citation meant — and deliberately left the anchor half untouched. This is that half.
The eight sites
packages/app-shell/src/views/RecordDetailView.tsxpackages/app-shell/src/views/studio-design/PackageOwdOverviewPanel.tsxpackages/app-shell/src/views/studio-design/StudioDesignSurface.tsxpackages/plugin-detail/src/useRecordEditable.tspackages/plugin-detail/src/useRecordEditable.test.tsxpackages/plugin-grid/src/hooks/useRecordCrudVerdicts.tspackages/react/src/hooks/useCapabilityGate.tspackages/core/src/evaluator/fieldRules.ts— one of the two derivation authorities, which #5699 was correctly fenced out of because it already carried the framework qualifier; it pointed at the same wrong decisionComment text only.
git diff -U0carries zero non-comment added or removed lines(8 files, +19 / −23).
The wording, and what retires with the number
No third phrasing was invented. The form now shipping is the
fieldRules.tsauthority's,with the anchor moved:
The disambiguating parenthetical #5699 shipped — "framework numbering; this repo's own
ADR-0057 is an unrelated document" — retires with the number it disambiguated. It
warned about a collision specific to
0057; this repository has noADR-0124at all (itsown series stops at
0059), and frameworkADR-0124records that a fresh, unambiguousnumber was chosen precisely so citations of it would not need such a warning. The
the framework's …possessive stays at every site, so each one still says whose numberingit means — which was #5699's actual fix.
Three comment tails were re-wrapped where the shorter citation left a ragged line
(
StudioDesignSurface.tsx,useRecordCrudVerdicts.ts,useCapabilityGate.ts). Onepre-existing odd wrap inside the same re-wrapped paragraph —
it means "holds/nothing" and gates normallyinuseCapabilityGate.ts— was joined rather than leftdangling next to fresh text.
Deliberately NOT touched
packages/data-objectstack/src/appAccessProbe.test.ts— byte-untouched. It citesD10for "an app gated by an absent optional service", which the capability /service-gating family
D10genuinely does decide. It is correct as it stands. Thesplit here is per-site and was read, not pattern-matched: a blanket
grep -l | xargs sedwould have corrupted this file.rest-server'sfilterAppForUser, the dashboardrequiresServicegates) are the familyD10reallydecides. Not this repo's to change.
CHANGELOG.mdentries (10 lines across 8 packages). Historical releaserecords; they are not rewritten after the fact.
.changeset/adr-0057-d10-citation-attribution-5202.md— QualifyADR-0057 D10as the framework's numbering at seven live citation sites #5699's own still-unreleasedchangeset, which accurately narrates what Qualify
ADR-0057 D10as the framework's numbering at seven live citation sites #5699 did. Rewriting another change's recordto match a later change would make it false. Both entries compile into the same release
in chronological order.
Enumeration — before and after, with controls
grep -rn "ADR-0057 D10"repo-wide, same pipeline every time.5da00846368e0b9957The 12 survivors that are not live source are the 10
CHANGELOG.mdlines and the 2 linesinside #5699's changeset, listed above. The 2 remaining live-source hits are
appAccessProbe.test.ts:25(correct, out of scope) anddocs/adr/0036-field-conditional-rules.md:91, which #5843 moves.Composition of the two PRs, measured rather than asserted:
→ with both PRs landed, the sole surviving live-source
ADR-0057 D10citation is theone that is correct.
Controls on the same pipeline, so a broken grep cannot read as a clean sweep:
positive —
"absent optional service"still returns 3 hits, including the untouched probetest; negative — a sentinel string returns 0.
Verification — all at
68e0b9957pnpm exec vitest run(7 targeted files, repo root,--maxWorkers=2)Test Files 7 passed (7)·Tests 95 passed (95)type-check, 5 affected packagesDone,0×error TScheck-changeset-presence.mjs✅ 8 source file(s) of 5 released package(s) changed, and this change declares 1 changeset(s)check-control-bytes.mjs✅ check-control-bytes: OK (scanned 4856 tracked text file(s); skipped 85 binary)eslinton the 8 touched files,--format json0errors,136warnings — identical to the same 8 files at base: deltaerrors +0, warnings +0The suites cover all eight touched files: every one is imported and executed by at least one
of them, which is what actually catches a malformed comment edit.
type-checkfirst ran red withTS6305 … packages/types/dist/index.d.ts has not been built— the fresh-worktree false red. Re-run after building the dependency closure withthe caret-suffix filter form (
pnpm --workspace-concurrency=2 --filter '@object-ui/core^...' build,one per affected package); the numbers above are from the built closure.
Lint narrowing, declared. Repo-wide
pnpm lintwas not run locally; CI runs the farmregardless. The narrowing to 8 files is a measurement, not a gap:
eslint.config.jsenablesno type-aware linting (no
parserOptions.project, noprojectService), so a file'sverdict depends only on its own text plus the config — this diff changes neither the config
nor any file outside the eight, so no untouched file's verdict can move. File count
8isread from eslint's own
--format jsonoutput.Nothing to ablate. These are comment-only changes with no behavioural leg — there is no
mutation that would make a test fail differently. Staging a decorative reverse-verification
would be theatre; the before/after enumeration above is the evidence.
Companion PR
docs/adr/0036-field-conditional-rules.md:91— the wording all eight of these derive from,carrying the same misattribution — moves in #5843 because
docs/adr/**is agoverned surface that stops at draft for human merge. Bundling it here would make eight
ordinary code changes wait on a human for no reason.
Generated by Claude Code