You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Comments and docs outside spec still restate the four-step locale ladder that PR #30601 replaces with resolveLocaleAmong's five steps #30617
Filing gate: ① stale prose at named locations, found by the contract review of PR #30601 (card #30538, comment 6665489168, should-fix S3). ⛔ Not a claim.
Business reason. PR #30601 puts both server resolvers on one ladder, resolveLocaleAmong in @objectstack/spec/system: exact, case-insensitive, the same platform locale table language (platformLocaleTagOf, so zh-TW / zh-HK / zh-MO reach zh-Hant), base language, first registered variant. The places below restate the old four steps (no table step). Each is still true for the four-locale tables it describes today, so nothing misbehaves, but a reader who adds a zh-Hant table there is told zh-TW lands on the first zh-* entry.
Where (at PR #30601's head 9f692b76; the review's reading)
packages/objectql/src/engine-validation-messages.ts :172-173, and the header of engine-validation-locale-negotiation.test.ts :12
docs/qa/platform-checklist/areas/integration-system.json, the acceptance[3] item
Wanted
Each restatement names resolveLocaleAmong (or the resolver it calls) and its five steps, or says the table step only adds answers for the table's aliases. Comment, docs and checklist text only; no behaviour change. Changesets per package as the gate asks (comment-only edits in unpublished sources need none).
Claim: PM loop round 1 · 2026-11-05T21:53Z
Session: session_016WV4cytQjG9X1CrCgytUM5
Account: os-elon-musk (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-30617-locale-ladder-prose
Worktree: objectstack-issue-30617
Domain: domain:server
Seat: domain:server#3
File surface: comment, docs and checklist text only, at the card's named places (located by symbol on origin/main): packages/objectql/src/engine-validation-messages.ts and the header of engine-validation-locale-negotiation.test.ts, packages/services/service-automation/src/engine.ts, packages/plugins/plugin-auth/src/idp-locale-claim.ts and organization-mfa-enrollment-guard.ts, packages/plugins/plugin-email/src/template-loader.ts, content/docs/ui/translations.mdx, docs/qa/platform-checklist/areas/integration-system.json (acceptance[3]); root .changeset/ files only if a gate asks. ⛔ skills/** (#30603 carries it), any behaviour change (stop on breach; explain in the report)
Container & model: S, mode:subagent, model: default (dispatch-gates --tier: no path-derived mandate; floor sonnet · default opus · ceiling fable), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6666549824
Premise: holds — the serial wait was on PR #30601, merged; the dev re-reads each named place on origin/main and drops any that no longer restates the four-step ladder
Serial constraints cleared: open PR #30459 (#30391) also edits content/docs/ui/translations.mdx; different section (plural labels), the later lander merges main. No other open PR names these files (19 open non-mailbox PRs read at claim time)
{
"issue": 30617,
"status": "done",
"branch": "claude/issue-30617-locale-ladder-prose",
"pr": "https://github.com/objectstack-ai/objectstack/pull/30694",
"session": "session_016WV4cytQjG9X1CrCgytUM5",
"premise_still_valid": true,
"summary": "Seven files: the four-step locale-ladder restatements in objectql (engine-validation-messages.ts, the negotiation test header), service-automation engine.ts, plugin-auth organization-mfa-enrollment-guard.ts (module doc + copyLocaleFor doc), plugin-email template-loader.ts, content/docs/ui/translations.mdx and the email-template-render checklist acceptance[3] (clause + verify; revision 15 to 16 with a history row) now name resolveLocaleAmong and its five steps, or say the table step only adds answers for the table's aliases. Comment/docs/checklist text only, no behaviour change. Dropped: plugin-auth idp-locale-claim.ts already names resolveOfferedLocale and the five steps on origin/main b77c160a. Head e5703af2, +39/-16.",
"tests": "No code change, so no test run owed. node scripts/check-platform-checklist.mjs exit 0 (OK, 360 items). Scoped eslint --no-inline-config on the five changed .ts files exit 0 at e5703af2; whole-repo pnpm lint left to CI. check-nul-bytes exit 0.",
"gates": "dispatch-gates --commands at e5703af2: 87 derived. 80 exit 0; 7 exit 3 NOT MEASURED (prerequisite not met: check-plugin-teardown-shape --self-test needs an unshallow clone; lint check:doc-formula-expressions and check:doc-security-posture, spec check:skill-examples, check:docs-transcript-drift, check:dual-build-cjs-loads, check:lean-entry-closure need builds). check:type-check-debt hit the 400s local timeout on the first sweep (exit 124), then re-ran unwrapped: exit 0. --ran reconcile: 87 accounted, 80 run, 7 NOT-MEASURED, 0 UNRUN. The PR body was written before that re-run and still says type-check-debt NOT MEASURED; the seat can correct that line. CI check-runs: in_progress at report time.",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "2 — relay pr_create (PR #30694, skip-changeset label) and relay comment (this report); plus one git push (not REST)",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": [
"carrier: none · noted, not filed — packages/spec/src/stack.zod.ts defineStack email-template floor warning still prints the four-step list (exact, case-insensitive, base language, variant expansion); spec, outside this card. Dedupe words: stack.zod emailTemplates floor warning locale ladder"
]
}
Landed · 2026-11-05T23:30Z · PR #30694 merged through the queue as 92cb3d95be. ACCEPT 6671358621.
Reading
Value
PR state
merged, closed this card via Fixes #30617
Check-runs at e5703af2
38 success, 17 skipped, 0 failed
pm:dispatched removed; the card is closed. Out of scope, noted on the PR: packages/spec/src/stack.zod.ts's defineStack email-template floor warning still prints the four-step list (spec-lane prose, true for today's tables).
Activity
objectstack-fleet commentedon Nov 5, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p3 ·
domain:server· 2026-11-05T18:56Z⛔ Not a claim.
zh-Hant. p3 as suggested, serial after PR fix(spec,core): resolve locales through the platform table's read aliases, so a zh-TW / zh-HK reader gets zh-Hant #30601.Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:server#3 · os-elon-musk · session_016WV4cytQjG9X1CrCgytUM5
Claim: PM loop round 1 · 2026-11-05T21:53Z
Session:
session_016WV4cytQjG9X1CrCgytUM5Account:
os-elon-musk(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-30617-locale-ladder-proseWorktree:
objectstack-issue-30617Domain:
domain:serverSeat:
domain:server#3File surface: comment, docs and checklist text only, at the card's named places (located by symbol on
origin/main):packages/objectql/src/engine-validation-messages.tsand the header ofengine-validation-locale-negotiation.test.ts,packages/services/service-automation/src/engine.ts,packages/plugins/plugin-auth/src/idp-locale-claim.tsandorganization-mfa-enrollment-guard.ts,packages/plugins/plugin-email/src/template-loader.ts,content/docs/ui/translations.mdx,docs/qa/platform-checklist/areas/integration-system.json(acceptance[3]); root.changeset/files only if a gate asks. ⛔skills/**(#30603 carries it), any behaviour change (stop on breach; explain in the report)Container & model:
S,mode:subagent,model: default(dispatch-gates --tier: no path-derived mandate; floor sonnet · default opus · ceiling fable),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6666549824
Premise: holds — the serial wait was on PR #30601, merged; the dev re-reads each named place on
origin/mainand drops any that no longer restates the four-step ladderSerial constraints cleared: open PR #30459 (#30391) also edits
content/docs/ui/translations.mdx; different section (plural labels), the later lander mergesmain. No other open PR names these files (19 open non-mailbox PRs read at claim time)objectstack-fleet commentedon Nov 5, 2026
domain:server#3 · os-elon-musk · session_016WV4cytQjG9X1CrCgytUM5
os-dev-report
{ "issue": 30617, "status": "done", "branch": "claude/issue-30617-locale-ladder-prose", "pr": "https://github.com/objectstack-ai/objectstack/pull/30694", "session": "session_016WV4cytQjG9X1CrCgytUM5", "premise_still_valid": true, "summary": "Seven files: the four-step locale-ladder restatements in objectql (engine-validation-messages.ts, the negotiation test header), service-automation engine.ts, plugin-auth organization-mfa-enrollment-guard.ts (module doc + copyLocaleFor doc), plugin-email template-loader.ts, content/docs/ui/translations.mdx and the email-template-render checklist acceptance[3] (clause + verify; revision 15 to 16 with a history row) now name resolveLocaleAmong and its five steps, or say the table step only adds answers for the table's aliases. Comment/docs/checklist text only, no behaviour change. Dropped: plugin-auth idp-locale-claim.ts already names resolveOfferedLocale and the five steps on origin/main b77c160a. Head e5703af2, +39/-16.", "tests": "No code change, so no test run owed. node scripts/check-platform-checklist.mjs exit 0 (OK, 360 items). Scoped eslint --no-inline-config on the five changed .ts files exit 0 at e5703af2; whole-repo pnpm lint left to CI. check-nul-bytes exit 0.", "gates": "dispatch-gates --commands at e5703af2: 87 derived. 80 exit 0; 7 exit 3 NOT MEASURED (prerequisite not met: check-plugin-teardown-shape --self-test needs an unshallow clone; lint check:doc-formula-expressions and check:doc-security-posture, spec check:skill-examples, check:docs-transcript-drift, check:dual-build-cjs-loads, check:lean-entry-closure need builds). check:type-check-debt hit the 400s local timeout on the first sweep (exit 124), then re-ran unwrapped: exit 0. --ran reconcile: 87 accounted, 80 run, 7 NOT-MEASURED, 0 UNRUN. The PR body was written before that re-run and still says type-check-debt NOT MEASURED; the seat can correct that line. CI check-runs: in_progress at report time.", "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "0", "api_writes": "2 — relay pr_create (PR #30694, skip-changeset label) and relay comment (this report); plus one git push (not REST)", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "carrier: none · noted, not filed — packages/spec/src/stack.zod.ts defineStack email-template floor warning still prints the four-step list (exact, case-insensitive, base language, variant expansion); spec, outside this card. Dedupe words: stack.zod emailTemplates floor warning locale ladder" ] }objectstack-fleet commentedon Nov 5, 2026
domain:server#3 · os-elon-musk · session_016WV4cytQjG9X1CrCgytUM5
Landed · 2026-11-05T23:30Z · PR #30694 merged through the queue as
92cb3d95be. ACCEPT 6671358621.Fixes #30617e5703af2pm:dispatchedremoved; the card is closed. Out of scope, noted on the PR:packages/spec/src/stack.zod.ts'sdefineStackemail-template floor warning still prints the four-step list (spec-lane prose, true for today's tables).