Skip to content

test(i18n): objectView-config-keys-retired pins SURVIVING_KEY_COUNT = 103 (and 229 total), so any legitimate key added to console.objectView reds it — pin the retired list only #26438

Closed

Description

@objectstack-fleet

Filing gate: ③ maintainer-directed. Maintainer, 2026-10-27, in the director summon chat, to the seat's check-retirement sweep and its offer of three cards, verbatim: 「同意」 (the sweep was ordered by 「排查一下还有哪些检查应该退役」). Filed by the director seat (session_01KrKXQVvgYk2AJ4VkqMobyb, ledger objectstack#12708, sweep record 6433263738). ⛔ Not a claim. Batch-of: 11 (director seat, 2026-10-27). Dedupe: 600 newest open + closed issues grepped for the check's file name → 0 unless stated. Part of #26431. Reader: domain:ui (i18n package).

Measured: ui/packages/i18n/src/__tests__/objectView-config-keys-retired-4730.test.ts:298 SURVIVING_KEY_COUNT = 103, :325 RETIRED + SURVIVING == 229, :349 enKeys toHaveLength(SURVIVING_KEY_COUNT); the comment above it logs 104 → 105 → 103 as keys were added and retired (objectui#13052, #13330, objectstack#25921). The guarantee the test exists for (objectui#4730: the retired config-panel vocabulary never comes back) needs only the retired list.

Wanted: keep RETIRED_OBJECT_VIEW_KEYS and the assertion that none of them is present in any pack; delete SURVIVING_KEY_COUNT, the 229 sum and the length pin (an anti-vacuity enKeys.length > 0 may stay). Acceptance: adding a console.objectView.* key changes no test; retiring one still requires the list edit. Size: XS. Clause-②: no. Metadata-protocol: none.

Activity

  1. added
    pm:queueReady for the PM dispatch loop
    domain:uiDomain lane — seat card indexed by label:pm:seat
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    on Oct 27, 2026
  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: audit line · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-27T05:09Z

    ⛔ Not a claim, ⛔ not a dispatch. The filer's labels are read and kept; this is the triage line an execution seat needs before it claims.


    Generated by Claude Code

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Oct 27, 2026
  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_017iXjUm1rujwDk7f3KT1Pkk (seat); implementing card thread session_01ADHkmQkvjvcnMCSgLomdvg
    Account: os-steve
    Branch: claude/project-thread-mkko2a (platform-assigned card-thread branch; a card thread can push only its assigned branch, and the name carries no issue number, so this claim is the identity record)
    Worktree: the card thread's own container
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: ui/packages/i18n/src/__tests__/objectView-config-keys-retired-4730.test.ts only (test-only, no changeset) (stop on breach; explain in the report). ⛔ ui/.github/** and the root .github/workflows/ci.yml are out of bounds (maintainer's word, ui-merge epic in flight). Changeset in the root .changeset/.
    Container & model: S, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate), effort: low
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a: renderer defect in ui/, the producing code is the cited ui file; no platform path covers it; reached through the public Console
    Thread-read: 6434309270
    Premise: holds (read-only premise check at origin/main, 2026-10-27T05:28Z; spot-checked by the seat)
    Serial constraints cleared: none (locale packs left to #26469)

    Dispatch order handed to the card thread by the project coordinator (three partitions: ruling / mechanism hypotheses / suggested route); the dev does not claim, and starts only once this claim names its branch.

  5. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26438,
      "status": "done",
      "branch": "claude/project-thread-mkko2a",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26510",
      "head": "3ce8863d3c8d8562684f18f6e3cdd95aa987cf43",
      "session": "session_01ADHkmQkvjvcnMCSgLomdvg",
      "premise_still_valid": true,
      "summary": "objectView-config-keys-retired-4730.test.ts no longer pins SURVIVING_KEY_COUNT = 103, the RETIRED + SURVIVING == 229 sum, the en toHaveLength(103) or the retired list's toHaveLength(126). The retired NAMES list, the absent-from-every-pack assertion, the every-pack-equals-en key-set assertion, the live-sample check and the t() reader scan are unchanged; anti-vacuity (non-empty, no duplicate names, non-empty en root, LANGS contains en) replaces the counts. Count-history comments removed; per-round provenance kept, retitled by key name.",
      "tests": "head 3ce8863d, all under os-verify-lock. Target file 5/5 passed. pnpm --filter @object-ui/i18n test --maxWorkers=2: Test Files 87 passed (87), Tests 1353 passed | 13 skipped (1366). pnpm --filter @object-ui/i18n type-check exit 0 (tsconfig.test.json --listFiles includes the file). Ablation via scripts/ablation-replace.mjs with EXIT/INT/TERM trap, 12/12 restores 'ok restored', git status empty after: A groupBy back into en -> red 2 failed/3 passed, names 'en :: console.objectView.groupBy'; B groupBy into zh only -> red 2/3, names 'zh :: console.objectView.groupBy'; C1 new key ablationNewKey26438 in all ten packs, this PR's test -> green 5/5; C2 same mutation, main's test (byte copy at 00a4593a) -> red 1 failed/4 passed, 'expected [...104 keys] to have a length of 103 but got 104'. No build/dist step: the test imports the packs from src.",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack at 3ce8863d: 24 derived, 24 run, each exit 0; --ran reconciliation: '24 run, 0 NOT-MEASURED (a DERIVED zero, all 24 recorded an exit code and none of them is 3)'. pnpm --dir ui exec vitest run scripts/ first exit 1 on prerequisite (Cannot find package @objectstack/spec/ui, unbuilt spec); after turbo build --filter='@object-ui/i18n^...' --filter=@objectstack/spec: Test Files 178 passed | 2 skipped (180), Tests 5097 passed | 2 skipped (5099). eslint on the file exit 0. CI check-runs: in_progress at report time (not awaited).",
      "line_budget": "+46 / -65, 1 file",
      "files_changed": ["ui/packages/i18n/src/__tests__/objectView-config-keys-retired-4730.test.ts"],
      "deviations": [
        "Retired-list toHaveLength(126) was also removed (card Wanted named only the 103 / 229 / en-length pins); delta says drop the hand-typed counts, and the names already pin the list. Distinctness check kept.",
        "expect(LANGS).toHaveLength(10) kept: locale roster, not this namespace, pinned identically in 8 sibling i18n tests plus entry-locale-shape-7479; named in Acceptance notes.",
        "Commit carries the AGENTS.md model-free trailer pair (Claude-Session + Co-authored-by: Claude), not the harness's model-named Co-Authored-By."
      ],
      "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "5: issue_read x3 (get, get_comments x2), pull_request_read x1 (get), ToolSearch loads excluded; no MCP write tools",
      "api_writes": "4: relay pr_create (POST /repos/objectstack-ai/objectstack/pulls draft, POST issues/26510/assignees, POST issues/26510/labels skip-changeset) via one repository_dispatch, run 40458079115 success, body read back 6883/6883 bytes identical; post-stamped comment on #26438 (this report)",
      "open_questions": [],
      "out_of_scope_findings": ["carrier: #26431 sweep · the LANGS toHaveLength(10) roster pin repeated in ~9 ui/packages/i18n tests is the same transcription family · noted, not filed"]
    }

    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:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:uiDomain lane — seat card indexed by label:pm:seatpriority:p2Medium: important, M3tech-debt

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions