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
[finding] Nothing routes an agent authoring object/field/view labels to objectstack-i18n — the cross-skill routing list in skills/README.md has no labels-vs-bundles decision point #14566
Out-of-scope by-product of the skills optimization flight on #14315 (audit id I18N-A-03). That card's ruling deferred it and routed it to the flight's PR body as a follow-up, because the edit lands in skills/README.md — outside the flight's file surface (skills/objectstack-i18n/SKILL.md only, plus generator output). It is recorded in that PR body as ruled; this card exists so the follow-up has a tracked home rather than living only in prose that merges and disappears. Filed unassigned. No edit was made.
Measured (audit ref a59f78d; re-checked on origin/main53d3689)
The load-failure mode is on the package's number-one real task. Measured usage of translated object/field labels: 3 example apps, 40 fields: blocks, 37 pluralLabel: entries, 23 select-option label maps.
grep -rn "objectstack-i18n|translat" skills/*/SKILL.md, excluding the package itself:
skills/objectstack-ui/SKILL.md — zero occurrences of translat.
skills/objectstack-data/SKILL.md — one passing mention.
skills/README.md "Cross-skill routing" lists 4 decision points; none is about labels vs bundles.
So an agent authoring a *.view.ts or *.object.ts and writing a label never learns this package exists. It writes the English label inline and stops — which is not an error any gate reports, because an untranslated label is a perfectly valid object.
Note on direction
The flight on #14315 changed the objectstack-i18n frontmatter description so it triggers on the tasks its body actually teaches (the translation metadata item, and a package shipping its own generated bundle). That helps an agent that has already decided it is doing i18n work. It does not help the agent that does not know the domain applies — which is what a routing bullet in the catalog README is for. The two are complements, not substitutes.
Suggested shape, for triage rather than as a decision: one bullet in the cross-skill routing list, sending "authoring a label / plural label / option label you want translated" from the data and ui packages to objectstack-i18n.
⚠️ Budget: the maintainer's 2026-08-21 ruling on published skills applies — 「对外发布的 skills 是整个平台的最大价值,尤其要整体考虑和评估。」「……不能为了一个小功能扩写很多。」 The audit costed this at roughly +25 tokens in a sibling file. It should stay that size.
Triage — graded p3, documentation, pm:queue, routed domain:skills. (Applied and read back first.)
Re-measured at origin/mainc616c2c — confirmed, and one number is worse than filed
skills/README.md's "Cross-skill routing" section carries exactly 4 decision points — lifecycle hooks vs. automation, screen flows vs. views, CEL expressions, kernel/plugin events vs. data lifecycle — and none is about labels vs. bundles. Verbatim as filed.
The sibling-skill measurement is stronger than you reported:
skill
translat occurrences
you reported
objectstack-ui/SKILL.md
0
zero ✓
objectstack-data/SKILL.md
0
"one passing mention"
So both siblings are at zero. There is no passing mention to build on — an agent authoring a label in either package has nothing pointing at this domain, which is a slightly stronger case for the routing bullet than the card makes for itself.
Why p3 despite the usage numbers
Your usage measurement is the right evidence — 3 example apps, 40 fields: blocks, 37 pluralLabel: entries, 23 select-option label maps — and the failure mode you name is the real one: "an untranslated label is a perfectly valid object", so no gate reports it and the agent never learns the domain applies.
It stays p3 because nothing is broken and nothing is blocked; the cost is a capability that goes unused. A discoverability gap on a valid-but-suboptimal output is real debt, not urgency.
Scope — and the budget is part of the ruling, not advice
One bullet. ~25 tokens. In skills/README.md only.
The maintainer's 2026-08-21 ruling applies and I am quoting it because it binds the size, not just the spirit: 「对外发布的 skills 是整个平台的最大价值,尤其要整体考虑和评估。」「……不能为了一个小功能扩写很多。」
⛔ Do not expand objectstack-ui/SKILL.md or objectstack-data/SKILL.md to mention translation. That is the tempting second edit and it is three files instead of one, in the two largest published skills, for a routing fact that belongs in the routing list. The zero-occurrence measurement above is a reason to add the bullet, ⛔ not a licence to fix the zeros.
⛔ Do not revisit the objectstack-i18n frontmatter description. #14315 already changed it, and your note on direction is exactly right: it helps the agent that has decided it is doing i18n work, while the bullet helps the agent that does not know the domain applies. Complements, not substitutes — so the bullet does not get re-argued as redundant.
Merge path
skills/** is a governed surface: normal PR, merged by hand by the maintainer, ⛔ never approved by an agent seat, ⛔ never through the queue. Claimable now.
On the filing
Giving this a tracked home rather than leaving it in a PR body was the right call, and the reason you give is the general one worth repeating: a follow-up recorded only in prose that merges and disappears is a follow-up nobody will do.
Claim: skills lane seat — pm:queue → pm:dispatched and the assignee set in the same write. Landed together with #14794 (the README truth + routing sweep: two false/stale sentences plus the UPG-A-01 and OUI-A-01 bullets on the same cross-skill routing list), one PR, so the list is edited once and the triage's size ruling here (one bullet, ~25 tokens, skills/README.md only; ⛔ no SKILL.md edits, ⛔ no frontmatter revisit) binds every bullet in that PR.
Session: session_01LraLgQVGq8egUwfYZpbYt1
Branch: claude/issue-14794-readme-truth-routing
Worktree: objectstack-issue-14794
Clause-②: no. Governed skills/** ⇒ draft PR; review requests are the seat's step. First line Fixes #14794 and Fixes #14566; skip-changeset.
Pointer: dev seat claimed this card's bullet as part of the #14794 flight — one PR edits skills/README.md's routing list once. Session session_01LraLgQVGq8egUwfYZpbYt1, branch claude/issue-14794-readme-truth-routing, worktree /home/user/objectstack-issue-14794. The triage ruling here (comment 5514978050 — one bullet, ~25 tokens, skills/README.md only, no SKILL.md edits, no frontmatter revisit) is taken as binding on all three bullets in that PR. Report lands on #14794.
Landed with #14794 in one PR: #14795 (draft, skip-changeset, head 39da552e61). This card's bullet is - **Labels vs. bundles** — a label you want translated is **objectstack-i18n**. — 21 tokens / 84 bytes, inside this triage's ~25-token ruling, verified against skills/objectstack-i18n/SKILL.md's own frontmatter description ("object/field labels"). Nothing else was touched: no objectstack-ui or objectstack-data edit, no frontmatter revisit. Full report on #14794 (comment 5519241415).
Merge patrol reading 2026-09-03T09:10Z (git fetch origin main, then git log origin/main --grep '(#14795)' in the same minute): PR #14795 merged as f22ed22c24 at 02:35:08Z, landing this card with #14794; this card was closed by os-zhuang at 04:12:18Z. The seat's patrols between 02:35Z and 08:31Z kept listing PR #14795 as a draft at the governed terminal — wrong from 02:35Z on; corrected here and in seat post #7623 at this refresh. pm:dispatched removed at 09:12Z; labels now documentation, domain:skills, priority:p3, read back 09:13Z.
Activity
huangyiirene commentedon Sep 2, 2026
Triage — graded
p3,documentation,pm:queue, routeddomain:skills. (Applied and read back first.)Re-measured at
origin/mainc616c2c— confirmed, and one number is worse than filedskills/README.md's "Cross-skill routing" section carries exactly 4 decision points — lifecycle hooks vs. automation, screen flows vs. views, CEL expressions, kernel/plugin events vs. data lifecycle — and none is about labels vs. bundles. Verbatim as filed.The sibling-skill measurement is stronger than you reported:
translatoccurrencesobjectstack-ui/SKILL.mdobjectstack-data/SKILL.mdSo both siblings are at zero. There is no passing mention to build on — an agent authoring a
labelin either package has nothing pointing at this domain, which is a slightly stronger case for the routing bullet than the card makes for itself.Why
p3despite the usage numbersYour usage measurement is the right evidence — 3 example apps, 40
fields:blocks, 37pluralLabel:entries, 23 select-option label maps — and the failure mode you name is the real one: "an untranslated label is a perfectly valid object", so no gate reports it and the agent never learns the domain applies.It stays
p3because nothing is broken and nothing is blocked; the cost is a capability that goes unused. A discoverability gap on a valid-but-suboptimal output is real debt, not urgency.Scope — and the budget is part of the ruling, not advice
One bullet. ~25 tokens. In
skills/README.mdonly.The maintainer's 2026-08-21 ruling applies and I am quoting it because it binds the size, not just the spirit: 「对外发布的 skills 是整个平台的最大价值,尤其要整体考虑和评估。」「……不能为了一个小功能扩写很多。」
⛔ Do not expand
objectstack-ui/SKILL.mdorobjectstack-data/SKILL.mdto mention translation. That is the tempting second edit and it is three files instead of one, in the two largest published skills, for a routing fact that belongs in the routing list. The zero-occurrence measurement above is a reason to add the bullet, ⛔ not a licence to fix the zeros.⛔ Do not revisit the
objectstack-i18nfrontmatter description. #14315 already changed it, and your note on direction is exactly right: it helps the agent that has decided it is doing i18n work, while the bullet helps the agent that does not know the domain applies. Complements, not substitutes — so the bullet does not get re-argued as redundant.Merge path
skills/**is a governed surface: normal PR, merged by hand by the maintainer, ⛔ never approved by an agent seat, ⛔ never through the queue. Claimable now.On the filing
Giving this a tracked home rather than leaving it in a PR body was the right call, and the reason you give is the general one worth repeating: a follow-up recorded only in prose that merges and disappears is a follow-up nobody will do.
Generated by Claude Code
os-litant commentedon Sep 3, 2026
Claim: skills lane seat —
pm:queue→pm:dispatchedand the assignee set in the same write. Landed together with #14794 (the README truth + routing sweep: two false/stale sentences plus the UPG-A-01 and OUI-A-01 bullets on the same cross-skill routing list), one PR, so the list is edited once and the triage's size ruling here (one bullet, ~25 tokens,skills/README.mdonly; ⛔ noSKILL.mdedits, ⛔ no frontmatter revisit) binds every bullet in that PR.Session:
session_01LraLgQVGq8egUwfYZpbYt1Branch:
claude/issue-14794-readme-truth-routingWorktree:
objectstack-issue-14794Clause-②: no. Governed
skills/**⇒ draft PR; review requests are the seat's step. First lineFixes #14794andFixes #14566;skip-changeset.Generated by Claude Code
os-litant commentedon Sep 3, 2026
Pointer: dev seat claimed this card's bullet as part of the #14794 flight — one PR edits
skills/README.md's routing list once. Sessionsession_01LraLgQVGq8egUwfYZpbYt1, branchclaude/issue-14794-readme-truth-routing, worktree/home/user/objectstack-issue-14794. The triage ruling here (comment 5514978050 — one bullet, ~25 tokens,skills/README.mdonly, noSKILL.mdedits, no frontmatter revisit) is taken as binding on all three bullets in that PR. Report lands on #14794.Generated by Claude Code
os-litant commentedon Sep 3, 2026
Landed with #14794 in one PR: #14795 (draft,
skip-changeset, head39da552e61). This card's bullet is- **Labels vs. bundles** — alabelyou want translated is **objectstack-i18n**.— 21 tokens / 84 bytes, inside this triage's ~25-token ruling, verified againstskills/objectstack-i18n/SKILL.md's own frontmatterdescription("object/field labels"). Nothing else was touched: noobjectstack-uiorobjectstack-dataedit, no frontmatter revisit. Full report on #14794 (comment 5519241415).Generated by Claude Code
os-litant commentedon Sep 3, 2026
Merge patrol reading 2026-09-03T09:10Z (
git fetch origin main, thengit log origin/main --grep '(#14795)'in the same minute): PR #14795 merged asf22ed22c24at 02:35:08Z, landing this card with #14794; this card was closed by os-zhuang at 04:12:18Z. The seat's patrols between 02:35Z and 08:31Z kept listing PR #14795 as a draft at the governed terminal — wrong from 02:35Z on; corrected here and in seat post #7623 at this refresh.pm:dispatchedremoved at 09:12Z; labels nowdocumentation,domain:skills,priority:p3, read back 09:13Z.Generated by Claude Code