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
skills(objectstack-i18n): the group list and the bundles eval do not teach the books translation group (follow-up owed by #26690) #26820
Filing gate ①: a follow-up owed by work in flight. PR #26819 (Fixes #26690) adds a books group to the translation bundle, which translates a doc book's label and its group labels in the reader's locale. It records Skills-docs: follow-up owed — skills/objectstack-i18n/SKILL.md (the top-level group list), skills/objectstack-i18n/evals/bundles-locales-coverage.json (at its token ceiling, 0 headroom), keeping skills/** (Tier H) out of the PR. Filed by domain:spec seat 1 (#6017, session session_01WGufzfhobWEgUUrjz4rrbh). ⛔ Not a claim.
Business reason: once #26819 lands, a package that ships docs in two languages can translate the book title and the sidebar group titles. Before, only the body followed the reader's locale (HotCRM's crm_manual and friends are the first exhibit). An agent writing a zh-CN bundle from the skill does not know the books group exists. It will leave the frame in one language or invent a key under pages, and nothing teaches otherwise.
Reader who acts: the skills lane (skills/** is Tier H).
Wanted
skills/objectstack-i18n/SKILL.md: add books to the top-level group list, with one example (book label plus one group label).
Claim: PM loop round 1
Session: session_01ADHkmSrRBdu9MdC6fc33Uu
Account: os-steve (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/project-thread-9ngvro (the card thread's harness push branch, self-reported at 2026-10-28T01:41Z; the measured platform exception to claude/issue-N-slug), from origin/main7eb613c3
Worktree: objectstack-issue-26820
Domain: domain:skills
Seat: domain:skills#1
File surface:
skills/objectstack-i18n/SKILL.md: the "Top-level groups alongside objects" paragraph gains books, with one example: books.<book>.label / .description and books.<book>.groups.<group_key>.label, keyed by the group's key.
skills/objectstack-i18n/evals/bundles-locales-coverage.json: one compact case expecting the books group for a two-language manual.
Their rows in scripts/check-skills-token-ratchet.mjs.
A patch changeset for @objectstack/skills.
Nothing else (stop on breach; explain in the report).
Container & model: XS, mode:thread, model: CONTRACT_REVIEW_TIER (dispatch-gates --tier: MANDATORY — skills/**, clause ①), effort: high. Tier H (skills/**): draft PR; ⛔ the dev never readies, arms or enqueues it.
Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card (a Skills-docs: follow-up owed by PR feat(spec,rest,cli): a doc book's title and section titles are translatable — books.<name> in the translation bundle #26819)
Thread-read: 6449678084
Premise: holds. The seat re-measured on origin/main:
{
"issue": 26820,
"status": "done",
"branch": "claude/project-thread-9ngvro",
"pr": "https://github.com/objectstack-ai/objectstack/pull/27024",
"session": "session_01ADHkmPLgCH4kXgfdFGF4Z2",
"premise_still_valid": true,
"summary": "skills/objectstack-i18n/SKILL.md's top-level group list now names `books` with its three keys, read off translation.zod.ts and book.zod.ts on origin/main: books.{book}.label / .description by Book.name and books.{book}.groups.{group_key}.label by the group's stable key, with one spelled example; it says the pages localize through doc.translations and the inline book `translations` map stays retired, and the existing `os i18n extract --no-objects-only` sentence now covers the group (walkBooks in i18n-extract.ts seeds it). Eval case 9 (a two-language crm_manual book) pins books / groups / getting_started / doc.translations and refuses pages.crm_manual and sections.getting_started. Paid under 「A:先削重复,余额按实测提高」: five sentences restating rules homed in SKILL.md or their own pins were cut (227 B = 57 units, 1642 -> 1585), then the eval row was raised by the measured remainder (817 B = 205 units, 1585 -> 1790, pinned at ceil(7157/4)); SKILL.md stayed under its ceiling (5485 -> 5571 of 6333) so its row is unchanged. Patch changeset for @objectstack/skills. Draft PR, Tier H (skills/**): never readied, armed or enqueued.",
"tests": "Per-case cross-check over all 9 eval cases: every must_contain string present in its own expected_output, no must_not_contain string inside it, 0 violations; JSON.parse ok. node scripts/check-skills-token-ratchet.mjs :: exit 0 (`✓ check-skills-token-ratchet: 82 authored bundle file(s) within their ceilings`); --self-test :: exit 0 (`79 cases pass`). No package test/typecheck owed (no package source in the diff); no ablation (no tested behaviour changed).",
"gates": "local subset = the derived list: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at head cd559297 printed 63 commands; all 63 ran (the 8 dist-reading ones after turbo run build --filter='./packages/**' under os-verify-lock, VERDICT command-exit 0, 7m26s), exit codes captured before any pipe: 63/63 exit 0. --ran reconciliation: `✓ dispatch-gates --ran: 63 derived famil(ies) accounted for — 63 run, 0 NOT-MEASURED (a DERIVED zero — all 63 recorded an exit code and none of them is 3)`. Notable lines: pnpm --filter @objectstack/spec run check:skill-docs `✅ Skill docs in sync`; check:pm-skill-id-lint `104 file(s) clean`; check:nul-bytes OK; check:pm-dispatch-gates `1935 cases pass`. The full ledger is in the PR body's Verification details block. CI families: the PR's check-runs are the reading, in_progress at report time; not re-run locally. dispatch-gates --tier: both skills/** paths clause ① MANDATORY, no one-line exit.",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "4 — read-only: issue_read get_comments (#26820, claim check), issue_read get (#26820 body), pull_request_read get (#26739, serial-conflict check), pull_request_read get (#27024, draft/labels read-back)",
"api_writes": "3 — git push -u origin claude/project-thread-9ngvro; relay pr_create (PR #27024, draft, assignee os-steve, run 40618813846, read-back 11223/11223 bytes identical); this os-dev-report comment via post-stamped.mjs",
"open_questions": [
{ "question": "The SKILL.md example is a spelled key (`books.crm_manual.groups.getting_started.label`) rather than a line quoted from a shipped bundle, because neither app-crm nor app-showcase declares a `books` group yet.", "options": ["A keep the spelled key (done)", "B add a books group to a shipped example bundle in a later example-lane card and quote it then"], "recommendation": "A, because the card's file surface is the two skill files only and the key spelling is what the eval grades." }
],
"out_of_scope_findings": []
}
ACCEPT → PR #27024 · domain:skills#1 · 2026-10-28T02:09Z · Tier H; approved by os-zhuang on cd559297 and armed; contract review (≥ xhigh) requested from the director seat.
Sibling gap for this card's roster · from domain:skills#2 (session_01QSeKYmhU5KEj1nukYhp1Tg) · 2026-10-28T05:21Z — ⛔ not a claim, a one-line hand-over from PR #27088's review (#26834).
skills/objectstack-i18n/SKILL.md's top-level translation-group roster (apps, messages, globalActions, picklists, dashboards, datasets, reports, pages, flows, positions, permissions, metadataForms, settingsCommon) does not list hooks, while packages/spec/src/system/translation.zod.ts declares the nested hooks record and content/docs/protocol/kernel/i18n-standard.mdx lists hooks.{hook}.refusals.{code} (both from PR #26831, merged 2026-10-28T02:23Z); git grep hooks origin/main -- skills/objectstack-i18n/ is empty. A bundle author reading the i18n skill alone does not learn where a hook refusal's message goes. Same shape as this card's books group; the seat holding this card decides whether it rides this PR or a follow-up. Readings taken by the #26834 dev at head 1a0fb94a; the seat re-read the roster line on origin/mainfbc16563.
Landed · domain:skills#1 · session_01ADHkmSrRBdu9MdC6fc33Uu · 2026-10-28T07:53Z — PR #27024 merged through the queue (merge commit 857cd3c702, 07:52Z) on the os-zhuang approval, after the director's PASS 6458779982: objectstack-i18n teaches the books translation group (books.{book}.label / .description, groups.{key}.label) and eval case 9 pins it. The card closed by its Fixes line; pm:dispatched stripped in this act.
Activity
objectstack-fleet commentedon Oct 27, 2026
Triage: audit line · triage seat ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-27T17:58Z⛔ Not a claim, ⛔ not a dispatch.
skills/objectstack-i18n/SKILL.md+evals/bundles-locales-coverage.json; rationale: p2 → p1: it rides with thebookstranslation group (docs: a book's label and its group labels cannot be translated, so a zh-CN reader sees the book and every sidebar section in the authoring language #26690, a protocol addition, PR feat(spec,rest,cli): a doc book's title and section titles are translatable —books.<name>in the translation bundle #26819). It is that PR'sSkills-docs:follow-up.pm:queue→pm:blockeduntil feat(spec,rest,cli): a doc book's title and section titles are translatable —books.<name>in the translation bundle #26819 merges. The eval file is at its token ceiling, so the skills seat makes room inside the package.Blocked-by: #26819
Generated by Claude Code
objectstack-fleet commentedon Oct 28, 2026
Claim: PM loop round 1
Session:
session_01ADHkmSrRBdu9MdC6fc33UuAccount:
os-steve(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/project-thread-9ngvro(the card thread's harness push branch, self-reported at 2026-10-28T01:41Z; the measured platform exception toclaude/issue-N-slug), fromorigin/main7eb613c3Worktree:
objectstack-issue-26820Domain:
domain:skillsSeat:
domain:skills#1File surface:
skills/objectstack-i18n/SKILL.md: the "Top-level groups alongsideobjects" paragraph gainsbooks, with one example:books.<book>.label/.descriptionandbooks.<book>.groups.<group_key>.label, keyed by the group'skey.skills/objectstack-i18n/evals/bundles-locales-coverage.json: one compact case expecting thebooksgroup for a two-language manual.scripts/check-skills-token-ratchet.mjs.@objectstack/skills.Container & model:
XS,mode:thread,model: CONTRACT_REVIEW_TIER(dispatch-gates --tier: MANDATORY —skills/**, clause ①),effort: high. Tier H (skills/**): draft PR; ⛔ the dev never readies, arms or enqueues it.Clause-②: no
Metadata-protocol: none
Responsibility:
n/a — not a defect card(aSkills-docs:follow-up owed by PR feat(spec,rest,cli): a doc book's title and section titles are translatable —books.<name>in the translation bundle #26819)Thread-read: 6449678084
Premise: holds. The seat re-measured on
origin/main:books.<name>in the translation bundle #26819 merged (031d97a00f);translation.zod.tsL749 listsbooksand L1778–1782 declare its three keys.skills/objectstack-i18n/SKILL.md(~L169) does not namebooks.demoStaffand when to pick it overdevLogins#26302).Serial constraints cleared:
disabledReason#26983 (sameSKILL.md) merged.scripts/check-skills-token-ratchet.mjson a different row. If it lands first, mergeorigin/mainbefore the push.Lane is serial (maintainer, 2026-10-28 00:20Z), so this is the only card in flight.
objectstack-fleet commentedon Oct 28, 2026
os-dev-report
{ "issue": 26820, "status": "done", "branch": "claude/project-thread-9ngvro", "pr": "https://github.com/objectstack-ai/objectstack/pull/27024", "session": "session_01ADHkmPLgCH4kXgfdFGF4Z2", "premise_still_valid": true, "summary": "skills/objectstack-i18n/SKILL.md's top-level group list now names `books` with its three keys, read off translation.zod.ts and book.zod.ts on origin/main: books.{book}.label / .description by Book.name and books.{book}.groups.{group_key}.label by the group's stable key, with one spelled example; it says the pages localize through doc.translations and the inline book `translations` map stays retired, and the existing `os i18n extract --no-objects-only` sentence now covers the group (walkBooks in i18n-extract.ts seeds it). Eval case 9 (a two-language crm_manual book) pins books / groups / getting_started / doc.translations and refuses pages.crm_manual and sections.getting_started. Paid under 「A:先削重复,余额按实测提高」: five sentences restating rules homed in SKILL.md or their own pins were cut (227 B = 57 units, 1642 -> 1585), then the eval row was raised by the measured remainder (817 B = 205 units, 1585 -> 1790, pinned at ceil(7157/4)); SKILL.md stayed under its ceiling (5485 -> 5571 of 6333) so its row is unchanged. Patch changeset for @objectstack/skills. Draft PR, Tier H (skills/**): never readied, armed or enqueued.", "tests": "Per-case cross-check over all 9 eval cases: every must_contain string present in its own expected_output, no must_not_contain string inside it, 0 violations; JSON.parse ok. node scripts/check-skills-token-ratchet.mjs :: exit 0 (`✓ check-skills-token-ratchet: 82 authored bundle file(s) within their ceilings`); --self-test :: exit 0 (`79 cases pass`). No package test/typecheck owed (no package source in the diff); no ablation (no tested behaviour changed).", "gates": "local subset = the derived list: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at head cd559297 printed 63 commands; all 63 ran (the 8 dist-reading ones after turbo run build --filter='./packages/**' under os-verify-lock, VERDICT command-exit 0, 7m26s), exit codes captured before any pipe: 63/63 exit 0. --ran reconciliation: `✓ dispatch-gates --ran: 63 derived famil(ies) accounted for — 63 run, 0 NOT-MEASURED (a DERIVED zero — all 63 recorded an exit code and none of them is 3)`. Notable lines: pnpm --filter @objectstack/spec run check:skill-docs `✅ Skill docs in sync`; check:pm-skill-id-lint `104 file(s) clean`; check:nul-bytes OK; check:pm-dispatch-gates `1935 cases pass`. The full ledger is in the PR body's Verification details block. CI families: the PR's check-runs are the reading, in_progress at report time; not re-run locally. dispatch-gates --tier: both skills/** paths clause ① MANDATORY, no one-line exit.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "4 — read-only: issue_read get_comments (#26820, claim check), issue_read get (#26820 body), pull_request_read get (#26739, serial-conflict check), pull_request_read get (#27024, draft/labels read-back)", "api_writes": "3 — git push -u origin claude/project-thread-9ngvro; relay pr_create (PR #27024, draft, assignee os-steve, run 40618813846, read-back 11223/11223 bytes identical); this os-dev-report comment via post-stamped.mjs", "open_questions": [ { "question": "The SKILL.md example is a spelled key (`books.crm_manual.groups.getting_started.label`) rather than a line quoted from a shipped bundle, because neither app-crm nor app-showcase declares a `books` group yet.", "options": ["A keep the spelled key (done)", "B add a books group to a shipped example bundle in a later example-lane card and quote it then"], "recommendation": "A, because the card's file surface is the two skill files only and the key spelling is what the eval grades." } ], "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Oct 28, 2026
ACCEPT → PR #27024 ·
domain:skills#1· 2026-10-28T02:09Z · Tier H; approved by os-zhuang oncd559297and armed; contract review (≥ xhigh) requested from the director seat.objectstack-fleet commentedon Oct 28, 2026
Sibling gap for this card's roster · from
domain:skills#2(session_01QSeKYmhU5KEj1nukYhp1Tg) · 2026-10-28T05:21Z — ⛔ not a claim, a one-line hand-over from PR #27088's review (#26834).skills/objectstack-i18n/SKILL.md's top-level translation-group roster (apps, messages, globalActions, picklists, dashboards, datasets, reports, pages, flows, positions, permissions, metadataForms, settingsCommon) does not listhooks, whilepackages/spec/src/system/translation.zod.tsdeclares the nestedhooksrecord andcontent/docs/protocol/kernel/i18n-standard.mdxlistshooks.{hook}.refusals.{code}(both from PR #26831, merged 2026-10-28T02:23Z);git grep hooks origin/main -- skills/objectstack-i18n/is empty. A bundle author reading the i18n skill alone does not learn where a hook refusal's message goes. Same shape as this card's books group; the seat holding this card decides whether it rides this PR or a follow-up. Readings taken by the #26834 dev at head1a0fb94a; the seat re-read the roster line onorigin/mainfbc16563.objectstack-fleet commentedon Oct 28, 2026
Landed ·
domain:skills#1·session_01ADHkmSrRBdu9MdC6fc33Uu· 2026-10-28T07:53Z — PR #27024 merged through the queue (merge commit857cd3c702, 07:52Z) on theos-zhuangapproval, after the director's PASS 6458779982:objectstack-i18nteaches thebookstranslation group (books.{book}.label/.description,groups.{key}.label) and eval case 9 pins it. The card closed by itsFixesline;pm:dispatchedstripped in this act.