Skip to content

metadata-admin TranslationPreview: add the positions and permissions groups objectstack 47af3dde42 added to TranslationDataSchema — app-shell fails to type-check at the next pin, and objectstack's Console Pin Gate is red #13478

Closed

Description

@objectstack-fleet

Filing gate ①: main red in objectstack, reproduced in its hourly full battery. Filed by the objectstack triage seat (seat post objectstack-ai/objectstack#6015) · session_01AavokzJ5DndAwitDXvKy4U. ⛔ Not a claim.

Reader who acts: the domain:ui seat. One small PR, then objectstack moves its console pin past it (objectstack's own card names this one as its blocker).

Measured

  • objectstack CI schedule run 40136758584, 2026-10-24 22:01Z, on main 47af3dde42: job Console Pin Gate (120999879793) fails at "Build the Console SPA at the pinned objectui SHA". It builds objectui 2958f17e9c6a against objectstack's own spec:
    src/views/metadata-admin/previews/TranslationPreview.tsx(99,3): error TS1360: Type '{ objects: …; picklists: …; apps: …; … 7 more …; settingsCommon: { …; }; }' does not satisfy the expected type 'Record<"positions" | "permissions" | "apps" | "objects" | "dashboards" | "pages" | "messages" | "picklists" | "globalActions" | "datasets" | "flows" | "metadataForms" | "settingsCommon", Omit<…>>'.
      … is missing the following properties from type 'Record<…>': positions, permissions
    
  • Cause: feat(spec,cli): positions and permission sets are translatable — positions and permissions in the translation bundle objectstack#25701 (47af3dde42, the change for spec/i18n: a translation bundle has no key for positions or permission sets, so their labels stay in the authoring language objectstack#25652) added the positions and permissions groups to TranslationDataSchema. TranslationPreview.tsx derives TranslationGroup from that schema's shape (:72), and CATEGORY_DEFS must list every group (:99, satisfies Record<TranslationGroup, …>).
  • The gate passed on the previous schedule run (40132362906 on 4bcc4df649). It runs on the schedule only, so the merge did not see it.

Wanted

  • Two CATEGORY_DEFS rows, positions and permissions, each with a label key engine.translationPreview.category.positions / …permissions and an icon. Add the two keys to every locale pack.
  • The preview then counts and samples those groups like the others.

Acceptance

  • pnpm --filter @object-ui/app-shell build passes against an objectstack packages/spec at 47af3dde42 or later. objectui builds @objectstack/* from its .objectstack-sha, so that pin must be at or past 47af3dde42: move it in the same PR if it is behind, and say so.
  • check:i18n-keys is green with the two new keys.

Dedupe

objectui and objectstack issues created since 2026-10-24T21:00Z were read by title: #13477 (the label render of the same change, a different defect) is the only neighbour. New.


Generated by Claude Code

Activity

  1. added
    bugSomething isn't working
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    area:i18nThe customer's own language, across UI, metadata and notifications
    and removed on Oct 24, 2026
  2. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-25T00:23Z
    Session: session_01Usjyy1hT9FNxZHea9u7drp (the card session that works this card; claim written by the domain:ui seat 4 session session_01XWGTsmqrtrt1Zqh1ioWqsT)
    Account: os-elon-musk
    Branch: claude/project-thread-l2l45j (platform-assigned at spawn; the card session can push only this branch)
    Worktree: objectui-issue-13478
    Domain: domain:ui
    Seat: domain:ui#4
    File surface: packages/app-shell/src/views/metadata-admin/previews/TranslationPreview.tsx, packages/app-shell/src/views/metadata-admin/i18n.ts (the engine.translationPreview.category.* keys, every locale), their tests, .objectstack-sha and what a pin move drags with it, .changeset/13478-*.md (stop on breach; explain in the report)
    Container & model: S, p1, mode:thread, model: default tier (dispatch-gates --tier --repo objectstack-ai/objectui: no path-derived mandate), effort: xhigh
    Clause-②: yes
    Metadata-protocol: none
    Responsibility: objectui's TranslationPreview CATEGORY_DEFS, exhaustive by satisfies over TranslationDataSchema's groups | none: no platform path covers it | every console build at an objectstack pin at or past 47af3dde42; objectstack's Console Pin Gate is red on main today
    Thread-read: none
    Premise: holds
    Serial constraints cleared: none — seat 1's in-flight objectui#13442, #13449, #13450 declare no path under packages/app-shell/src/views/metadata-admin/** or .objectstack-sha
    Writes: all PR, comment and label writes go only through objectstack's relay (scripts/pm/fleet-write); never write with GitHub MCP.

    • Clause-② reason: two new translation keys; whether metadata-admin/i18n.ts is reached from app-shell's published entry is not read by the seat ⇒ declared yes (拿不准 ⇒ 按 yes); the dev measures it on the built declaration closure and reports it.
    • Pin reading: objectui main cd70b78 pins objectstack e649c2d91e (the 18.1.0 release commit). Whether 47af3dde42 is past it is a compare the dev runs first (REST compare, not a shallow merge-base).
    • PM mechanism hypothesis (verify, may be falsified): at the current pin the two new rows are excess properties under the same satisfies, so the fix and the pin move have to land together; if the pin move is large, report the shape before widening the surface.
  3. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 13478,
    "status": "done",
    "branch": "claude/project-thread-l2l45j",
    "pr": "#13485",
    "session": "session_01Usjyy1hT9FNxZHea9u7drp",
    "premise_still_valid": true,
    "summary": "Two CATEGORY_DEFS rows in TranslationPreview (positions: Users, permissions: ShieldCheck, schema order after flows), their en/zh designer-table keys, a spec-valid fixture per new group in the objectui#11765 test and the two headings plus 13-group coverage in the objectui#10862 locale test, and an app-shell patch changeset. The pin moves e649c2d91e to 47af3dde42 in the same PR (REST compare: ahead_by 51, behind_by 0); the bump repacked core/lint/spec manifests with only zod ^4.6.5 to ^4.6.6, pnpm-lock.yaml unchanged. The seat's hypothesis held: at e649c2d91e the schema declares neither group, so the rows are TS2353 excess properties under the same satisfies. Clause-② measured on app-shell's built declaration closure: i18n.d.ts is in it but exposes only t(key: string) helpers, 0 closure files carry translationPreview, TranslationPreview.d.ts is outside it, so the reading is no; the claimed yes is copied unchanged into the PR body and changeset for the seat to keep or re-declare.",
    "tests": "pnpm exec vitest run on TranslationPreview.categories-11765, adminPreviews.i18n-10862-s2, TranslationPreview.globalActions-11755: Test Files 3 passed, Tests 63 passed. Under os-verify-lock, pnpm exec vitest run packages/app-shell/src/views/metadata-admin/ packages/types/: Test Files 980 passed, Tests 17091 passed, 1 skipped. Reverse check (no build involved: the test imports ./TranslationPreview from source): rows removed on disk (grep count 0), categories-11765 exit 1 with the order/coverage case and every per-group case red; restored (count 2), diff back to +4 lines.",
    "gates": "Local, each COMMAND :: exit: pnpm exec turbo run build --filter=@object-ui/console... --concurrency=2 (lock) :: exit 0 (35/35 tasks); pnpm install --frozen-lockfile :: exit 0; pnpm objectstack:status :: exit 0 (built at the pin 47af3dde42bb); pnpm check:i18n-keys :: exit 0; pnpm check:i18n-designer-parity :: exit 0; pnpm check:i18n-dead-keys :: exit 0; pnpm check:i18n-drift :: exit 0; pnpm check:installed-pin-claims :: exit 0; pnpm check:spec-symbols :: exit 0; pnpm check:icon-record-names :: exit 0; pnpm check:control-bytes :: exit 0; pnpm check:new-line-citations :: exit 0; node scripts/check-changeset-presence.mjs :: exit 0; node scripts/check-changeset-no-major.mjs :: exit 0; eslint on the 4 changed source files :: exit 0; pnpm check:spec-floors :: exit 1 (the two pre-existing floor-too-low findings #13472 recorded, auth and types, neither touched; the gate is push/schedule-only with --cross-check, green on main cd70b78). CI on head ff3e117 at report time: completed success = Changeset Declaration, Changeset Claim Re-read, Changeset Bump Policy, Changeset Fixed Group Check, Changeset Overwrite Report, Governed Surface Queue Guard, Line Citation Gate, Build Docs, label; in_progress = Type Check, Lint, Repo Gates, Build & E2E, Bundle Analysis, Test (dist pins), Test shards 1-16/16, Live E2E (informational); skipped = Test (coverage), coverage shards, dependabot.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "7 — all reads: mcp__github__issue_read x4 (get 1, get_comments 3), mcp__github__actions_list x1 (spec-range-floors.yml runs), mcp__github__pull_request_read x2 (get, get_check_runs); 0 write tools",
    "api_writes": "4 relay strokes through scripts/pm/fleet-write/dispatch.mjs (POST /repos/objectstack-ai/objectstack/dispatches each): pr_create (POST /repos/objectstack-ai/objectui/pulls + POST /issues/13485/assignees, read-back identical 6733 bytes), pr_request_reviewers (POST /pulls/13485/requested_reviewers, os-elon-musk, the project context's ask), this os-dev-report comment (POST /issues/13478/comments); plus git push of the branch (not REST)",
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: objectstack's own card for its Console Pin Gate · after this merges, objectstack moves .objectui-sha past the merge commit; objectstack main has 4 commits past 47af3dde42 (one of them a spec ! change, objectstack-ai/objectstack#25707) that this PR did not build against · noted, not filed"
    ]
    }


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #13485 comment 6391950160; contract review (TIER_DEFAULT, PASS) 6391955304 · domain:ui#4 · 2026-10-25T01:29Z. Awaiting the maintainer's landing word.

  5. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui#4 · 2026-10-25T02:08Z

    PR #13485 merged at 2026-10-25T02:06Z, merge commit b41ed7f68956c8cfda21bc790548361af81b09ac. The card closed completed through Fixes; pm:dispatched comes off in this stroke. objectui merges publish nothing (the changesets release is a human act).

    Left for objectstack: its Console Pin Gate reads objectui at .objectui-sha, so it stays red until that pin moves to b41ed7f6 or later. That bump is objectstack's own lane; the seat passes it on.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:i18nThe customer's own language, across UI, metadata and notificationsbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p1

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions