Skip to content

docs(platform-objects): refresh stale pages.* exclusion comment - #8861

Merged
hotlong merged 1 commit into
mainfrom
claude/issue-8828-pages-exclusion-comment-refresh
Aug 15, 2026
Merged

docs(platform-objects): refresh stale pages.* exclusion comment#8861
hotlong merged 1 commit into
mainfrom
claude/issue-8828-pages-exclusion-comment-refresh

Conversation

@hotlong

Copy link
Copy Markdown
Contributor

Fixes#8828

What

app-nav-translation-parity.test.ts carries a block comment above its
default-locale describe explaining why pages.* is out of that file's
walk. Two sentences went stale once PR #8826 merged (05:47:13Z on
2026-08-15) and closed the card that comment was pointing at:

  • That leaves the third of this bundle with no source comparison in ANY locale, en included — no longer true. check:app-nav-i18n now compares
    all three pages.* entries against the composed page metadata in the
    default locale.
  • Tracked as #8764; the gate that can see those pages is check:app-nav-i18n, which already boots the real composition — a
    forward reference to a card that is now closed.

This PR is a comment-only refresh, following the four bounded moves from
triage:

  1. Kept the structural explanation — the reason pages.* is out of
    this walk (the sources live in @objectstack/cloud-connection /
    @objectstack/mcp, packages platform-objects does not and must not
    depend on) is unchanged.
  2. Replaced the stale "no source comparison" sentence with a pointer
    to the assertion that now exists, in
    packages/cli/scripts/check-app-nav-i18n.mjs, and named specifically
    what it checks (the en copy of pages.* — label, description, and
    every page:header title/subtitle — against the composed page
    metadata, verbatim, default locale only).
  3. Retired the Tracked as #8764 forward reference.
  4. Preserved the honest remainder: per-locale coverage of those
    pages.* keys in zh-CN / ja-JP / es-ES remains unasserted
    anywhere in this repo — I read check-app-nav-i18n.mjs end to end to
    confirm this before writing the sentence; the gate's own coverage
    verdict (missingLabels) walks merged Setup nav ids, not the
    pages.* bundle, and its pages.* verdict (defaultLocalePageDrift)
    is explicitly gated to the default locale only (DEFAULT_LOCALE = 'en').

No behaviour, gate, or assertion change. Test count is unchanged (only
comment lines 182-193 of the file moved).

Verification, at HEAD fe920978a

pnpm --filter '@objectstack/platform-objects^...' build EXIT=0
pnpm --filter '@objectstack/platform-objects' test -- --maxWorkers=2
Test Files 22 passed (22)
Tests 394 passed (394)
pnpm --filter '@objectstack/platform-objects' typecheck EXIT=0
pnpm check:query-options-erasure
✓ query-options-erasure ratchet holds: 67 unswept non-test site(s) in
17 file(s), none new.
pnpm check:type-check-coverage
check-type-check-coverage: OK — 64/77 workspace packages type-checked
(plus the root), 13 in the DEBT ledger, 1 exempt.
pnpm exec turbo run build --filter='./packages/*' --filter='./packages/*/*'
70 successful, 70 total
pnpm check:type-check-debt --re-measure
check-type-check-coverage --re-measure: OK — 33 ledger entr(ies)
re-measured in 164.3s, 1926 raw tsc error(s) total, none above its
recorded number.
(Informational only, pre-existing and unrelated to this change: the
re-measure surfaces a lowerable @objectstack/lint TEST_DEBT entry
(recorded 20, measured 19) and 1 raw error sitting below its recorded
ceiling elsewhere — both pre-date this PR and are outside its file
surface, so left untouched per scope.)
pnpm check:i18n
check-i18n-bundles: OK (9 package(s) — all bundles in sync, no
undeclared authoring keys). platform-objects: in sync (8 bundle(s)).
node scripts/check-nul-bytes.mjs
OK (scanned 5861 text file(s) -- 5861 tracked, 0 untracked-not-ignored;
skipped 5 binary; no raw ASCII control bytes).

Gate families re-derived against the actual changed path with
node scripts/pm/dispatch-gates.mjs: no family names this path in its own
source; the two convention-triggered families named by the dispatch
prompt (test-file edit; i18n-extract.config.ts-owning package) are exactly
the ones the derivation surfaces — no additional family implicated.

Notes


Generated by Claude Code

app-nav-translation-parity.test.ts's block comment above the default-locale
describe still said pages.* had "no source comparison in ANY locale" and
tracked the gap as #8764. PR #8826 closed that: check:app-nav-i18n
(packages/cli/scripts/check-app-nav-i18n.mjs) now asserts the `en` copy of
pages.* against the composed page metadata verbatim.
Keep the structural explanation (the sources live in packages
platform-objects must not depend on), replace the stale sentence with a
pointer to the gate that now covers it, retire the closed-issue forward
reference, and state plainly what still isn't covered: per-locale
(zh-CN / ja-JP / es-ES) coverage of those pages.* keys remains unasserted
anywhere in the repo.
Comment-only change; no behaviour, gate, or test-count change.
Fixes#8828
@hotlonghotlong added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 15, 2026 — with Claude
@vercel

vercelBot commented Aug 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredAug 15, 2026 11:42am

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

No hand-written docs reference the 0 changed package(s). ✅

@hotlong
hotlong marked this pull request as ready for review August 15, 2026 11:45
@hotlong
hotlong enabled auto-merge August 15, 2026 11:45
@hotlong
hotlong added this pull request to the merge queueAug 15, 2026
Merged via the queue into main with commit e6ad48bAug 15, 2026
31 checks passed
@hotlong
hotlong deleted the claude/issue-8828-pages-exclusion-comment-refresh branch August 15, 2026 12:13
akarma-synetal pushed a commit to akarma-synetal/framework that referenced this pull request Aug 17, 2026
…the source string (objectstack-ai#8765) (objectstack-ai#8877)
* fix(platform-objects): stale hand-authored translations fall back to the source string (objectstack-ai#8765)
Ruled Option B: record the source hash at translation time; a hash mismatch
marks the translation stale, and stale falls back to the source text.
The apps/dashboards/pages half of this package's i18n is hand-authored, and
every gate over it judges presence or ownership — a stale VALUE satisfies all
of them. A source-string edit therefore left zh-CN / ja-JP / es-ES serving the
previous translation under a fully green build.
Each translated locale now ships a <locale>.source-hashes.ts table recording,
per leaf, the digest of the en source string it was translated from;
setup.translation.ts compares them when assembling the served bundle and
substitutes the source string for any leaf whose source has moved.
- missing hash is legacy-trusted, not stale (backfilled once, so nothing
degraded on landing)
- updating one translation's value AND hash recovers that locale alone
- substitution rather than deletion, so no key set moves and no gate turns a
translation lag into a red build
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XeQRiAa7vYRVX5Fog7Zby8
* docs(platform-objects): qualify objectstack-ai#8861's pages.* clause now that those keys carry staleness (objectstack-ai#8765)
PR objectstack-ai#8861 landed the sentence "per-locale coverage of those pages.* keys in
zh-CN / ja-JP / es-ES remains unasserted anywhere in this repo" while this
change was in flight. The coverage half stays true; the freshness half does
not — those leaves now carry recorded source hashes like every other
hand-authored leaf, so a pages.* source edit makes the three translated copies
fall back to the source string.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XeQRiAa7vYRVX5Fog7Zby8
---------
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/sskip-changesetPR has no user-facing published change; bypasses the changeset gatetests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

platform-objects: the pages.* exclusion comment in app-nav-translation-parity.test.ts goes stale once the parity gate lands

2 participants

@hotlong@claude