Repository navigation
docs(changeset): the read-rate banner and its hook are not exported from the package entry (objectui#10913) - #10954
Conversation
…rom the package entry (objectui#10913) The pending 9954-read-rate-banner changeset said `useReadRateReading` and `ReadRateBanner` are exported from `@object-ui/app-shell`. The package entry names neither: its named re-exports from the hooks and layout sub-barrels leave both out, and `exports` addresses only `.` and `./styles.css`. The sentence now says neither is exported and that a host reaches the banner through `ConsoleShell`, which mounts it. The frontmatter is byte-identical. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DuWo5bdP9SdVebamn99GGk
Contract reviewServed-tier: Scope: PR objectui#10954, card objectui#10913. One commit on ① Derived judgmentsThe new sentence, "Neither is exported from the package entry; a host reaches the banner only through
② Semver levelDeclared bumps unchanged: ③ Boundary flags
Defects found: none. Implemented-by: VERDICT: PASS Generated by Claude Code |
Fixes #10913
Clause-②: no
Supersedes PR objectui#10949, which was re-cut to drop a model-named commit trailer: this head
d28ba66c9(base5c94589f0) carries the same diff (stable patch-id2e6c60c1for both commits), so the measurements below, taken at1df262efb, carry over, and the changeset gates andcheck-control-byteswere re-run on this head with exit 0.What this does
The pending changeset
.changeset/9954-read-rate-banner.mdsays thatuseReadRateReadingandReadRateBannerare exported from@object-ui/app-shell. The package entry exports neither of them. A pending changeset is published verbatim into the CHANGELOG at the next release, so this sentence would ship false. An author who read it and imported either name would get a module-not-exported error.The fix edits that one sentence, as triage
5865850392execution note 1 directs:@object-ui/app-shell."ConsoleShell, which mounts it."The sentence before it already says the banner is "mounted in
ConsoleShell", so the paragraph now says both things triage asked for. The wording follows the sibling entry.changeset/10439-storage-usage-banner.mdfrom PR objectui#10910, which says "Neither banner is exported from the package entry." The frontmatter is byte-identical: the md5 of the frontmatter block is968447afat base3b469c8eaand at head.git diff --numstatgives 2 insertions and 1 deletion in this one file. The only other change is the line wrap of the replaced sentence.Premise, re-measured at base
3b469c8ea(still true atorigin/main5c94589f0, which changed none of these files)packages/app-shell/src/index.ts:grep -c ReadRategives 0. As a control,grep -c ConsoleShellon the same file gives 2, so the instrument does read the entry. The entry imports named members from./hooks/index.jsand./layout/index.js. It has noexport *from either, and neither named list includes the read-rate hook, its types,classifyReadRate, or the banner. The two sub-barrels do list the pair, but nothing outside the package can address them.packages/app-shell/package.jsonexportsmaps only.and./styles.css.ConsoleShellrenders the privateConsoleShellProviders, and that component mountsReadRateBannerbesideImpersonationBannerandStorageUsageBanner. Outside tests,ConsoleShell.tsxis the only module that importsReadRateBanner.ConsoleShellitself is exported from the entry.main, and release PR objectui#5400 is still open.No new changeset, and why the edit is in place
check-changeset-presencesays none is owed: the diff touches.changeset/only.check-changeset-overwriteis report-only. It lists this file as a pre-existing changeset that was modified, with the declared packages identical at base and head (@object-ui/app-shell: minor,@object-ui/i18n: minor). That is its case 2, a deliberate prose correction. The precedents PR objectui#10828 and PR objectui#10891 got the same report-only reading and landed with no new changeset.changeset-polarity-censussays the same in its own output: "ROTTED and BORN FALSE take opposite repairs".Gates (at head
1df262efb, hand-derived frompackage.jsonand.github/workflows/, each exit captured by redirect-then-status)node scripts/check-changeset-presence.mjsnode scripts/check-changeset-claims.mjsnode scripts/check-changeset-overwrite.mjsnode scripts/check-changeset-no-major.mjsmajorbump.node scripts/check-changeset-fixed.mjsnode scripts/check-pending-changeset-literals.mjsnode scripts/check-control-bytes.mjsnode scripts/check-new-cross-file-line-citations.mjsnode scripts/check-spec-symbol-derivation.mjsnode scripts/check-installed-spec-pin-claims.mjs.changeset/, so it was run for completeness only)node scripts/check-governed-queue-guard.mjs --test(the one path)Tests. These ran from the repo root, under the shared verify lock, at head
1df262efb. The set is everyscripts/__tests__test file that names.changeset, derived withgit grep -l(24 files), plus the suites of the other scripts that read.changeset/(9 files). Result: Test Files 33 passed (33), Tests 1451 passed (1451), lockVERDICT command-exit 0.No package test or type-check was run, and none is owed: the diff touches no package, and no gate above reads
dist/. TheSpec Main Shape Gateand the rest of CI run on the PR.Session of this run:
https://claude.ai/code/session_01DuWo5bdP9SdVebamn99GGk(thedomain:uiseat #1 dispatch, dev subagent).Generated by Claude Code