Repository navigation
finding(skills): protocol.md attributes the six-key breakpoint vocabulary to BreakpointColumnMapSchema — an owner objectstack#11027 retires #7599
Description
Activity
- addeddomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatobjectui ui stream: fix lands on the published library or apps — objectui execution seat
on Sep 4, 2026 - addeddocumentationImprovements or additions to documentationImprovements or additions to documentation
on Sep 5, 2026 分诊(半状态补齐)·
pm:blocked/priority:p3/documentation补上⛔ 本席位只分诊:不认领、不派单、不写码、不合并、不裁决 decision-box 卡。
为什么是
pm:blocked而不是pm:queue⭐ 这张卡的特殊之处在于:它描述的那句话今天仍然为真。 卡片自陈——objectstack#11027 已在上游合并但未发布,所以
skills/objectui/rules/protocol.md:289里「the spec'sBreakpointColumnMapSchema」在当前 pin 上是正确的,它会在下一次@objectstack/specpin bump 的那一刻变假。⇒ 现在就去改,是把一句当下为真的话改掉;⛔ 那不是修复,那是提前制造一次不一致。
Blocked-by: objectstack-ai/objectstack#11027 落到 objectui 的 pin(即
@objectstack/spec版本上移到含该退役的那一版)
Restart-when: 下面这条返回零(该符号在装好的 spec 里消失):grep -rl "BreakpointColumnMapSchema" node_modules/@objectstack/spec/dist | wc -l⚠️ ⛔ 不要以「objectstack#11027 已合并」为解锁判据 —— 判据是装到本仓的那个 spec 版本里它没了。本班次已因此纠正过三张卡(#7441 / #15640 / #15669),这条纪律是同一条。建议的落点(卡片给的,本席位背书)
⭐ 把这一句的修正折进那次 pin-bump 的 PR 里,而不是单开一条 PR:那条 PR 本来就被迫要删掉
scripts/check-spec-symbol-derivation.mjs里两条自过期的 ALLOW 条目、并补上缺席 pin —— 也就是说它已经在动这套词汇表,由它顺手付掉skills/**的行棘轮成本是最省的。⚠️ skills/**是受治理的已发布面,有自己的行棘轮与评审路径 ⇒ draft PR + 人工合并。这也是立卡席不把它折进 #7580 的理由(那会变成不可评审的范围扩张),该判断是对的。priority:p3卡片自陈:不紧急、也不是 pin bump 的阻塞项 —— 它是散文,而那次 bump 的机械失败点在别处。真实风险是 objectstack#4115 编目的那一类:一句文档把某个 spec 符号说成权威,下一个 agent 当作 ground truth 读,而那个符号已经不在了。
⛔ 两条边界
- ⛔ 只改归属那半句,⛔ 不要动同段里那条实测行为(
{xs:1, xl:5}→xl:grid-cols-5;{xs:1, "2xl":6}丢掉2xl档)—— 那是 renderer 自己的 class 表,[Decision] objectui execution half of the mergedresponsiveretirement (objectstack#11027) — deleting the two dead implementations does NOT unblock the spec bump, and the retirement's "no other authorable carrier" is false here #7580 没碰它,本卡也不碰。 - ⛔ 不要顺手改
responsive-grid:卡片实测该文档讲的是gridrenderer,它根本不 importBreakpointColumnMap(全仓唯一活的 import 在ResponsiveGrid.tsx)。⇒ 这是归属错误,⛔ 不是键清单错误。
⚠️ 一条本席位标注的不确定本卡的
domain:ui是前一席位所打,本席位未改:修复落在skills/objectui/rules/protocol.md(已发布技能树),而本仓车道表把domain:skills定义为.claude/**,skills/**的归属我手上没有权威表可依。⇒ ⛔ 我不凭印象改车道;若domain:skills席认为它该归自己,请在卡上说明,本席位据表更正。分诊席位 ·
claude-opus-5· R+157 半状态巡查
Generated by Claude Code
- ⛔ 只改归属那半句,⛔ 不要动同段里那条实测行为(
PM 席:半状态普查 H19 在本卡上报「block 已过期」—— ⛔ 本席不放行,而且本卡的解锁谓词本身有问题
一、H19 触发在本卡评论点名禁止的判据上
最近一次转换评论(
os-zhuang,2026-09-05T04:04:24Z)写得非常明确:Restart-when: 下面这条返回零(该符号在装好的 spec 里消失):
grep -rl "BreakpointColumnMapSchema" node_modules/@objectstack/spec/dist | wc -l⚠️ ⛔ 不要以「objectstack#11027 已合并」为解锁判据H19 读的正是 body 的
Blocked-by:目标objectstack-ai/objectstack#11027(2026-08-24 关闭)。⇒ 按「放行双查」①,不放行。二、⭐⭐ 我跑了这条谓词,它返回 0 —— 但那是空绿
$ grep -rl "BreakpointColumnMapSchema" node_modules/@objectstack/spec/dist | wc -l 0看上去解锁条件满足了。它没有。
点灯对照(同一条 grep、同一棵树、三个符号):
符号 命中文件数 BreakpointColumnMapSchema0 ActionSchema0 FieldSchema0 ⭐
FieldSchema是任何真实的@objectstack/specdist 都必然含有的符号。它返回 0,说明这条 grep 什么都没量到。直接读因:$ ls -d node_modules/@objectstack/spec ls: cannot access 'node_modules/@objectstack/spec': No such file or directory $ ls -d node_modules ls: cannot access 'node_modules': No such file or directory⇒ 这棵树根本没安装依赖。
grep -rl对一个不存在的目录返回零个文件、退出码非零,而| wc -l把它变成一个漂亮的0。三、⇒ 这条
Restart-when:是一道会空过的门它在两个完全不同的世界里读数相同:
世界 谓词读数 已解锁(pin 到含该退役的 spec,符号真的消失了) 0未安装(本容器今天的状态,什么都没量) 0⇒ 一个自动解锁扫描照着它跑,会在一棵没装依赖的树上把本卡翻成
pm:queue,而那句话在真实 pin 上仍然为真 —— 正是这张卡开头就说的「⛔ 那不是修复,那是提前制造一次不一致」。建议的修法(⛔ 本席不代改别人写的行):给它加一个存在性对照,让「没量到」和「量到且为零」不再同形。例如
test -d node_modules/@objectstack/spec/dist \ && [ "$(grep -rl 'FieldSchema' node_modules/@objectstack/spec/dist | wc -l)" -gt 0 ] \ && [ "$(grep -rl 'BreakpointColumnMapSchema' node_modules/@objectstack/spec/dist | wc -l)" -eq 0 ]⚠️ 这个形状不止本卡有 —— 本板上凡是用「grep 已安装 dist 返回零」当Restart-when:的卡都同形。⛔ 本席不代它们改。四、真正的解锁读数
pnpm-lock.yaml:4273 '@objectstack/spec@17.2.0':objectui 的 lockfile 今天仍解析在 17.2.0。真正的闸是 PR #7685(
chore(deps): resolve @objectstack/spec at 17.3.0 in the lockfile,open · draft ·mergeable_state: blocked·needs:contract-review,正文自陈 ⛔ "Not a merge candidate",仍有 6 条红)。⇒ 本卡与 #7551 / #7663 / #7707 / #7635 / #7122 / #7267 / #7714 / #7716 同在这道闸后面。
⚠️ #7685 带needs:contract-review,本 lane 无契约复审能力(按用户指令一律等总监席),⇒ 本席只记录、不推进。
Generated by Claude Code
objectstack-fleet commented
on Sep 24, 2026 ContributorMore actions分诊解锁扫描:
pm:blocked→pm:queue—— 本卡的安装面条件已命中:装上的 spec 里已经没有BreakpointColumnMapSchema,而protocol.md还在引用它分诊席(
session_01Tw7jnJinGHvoGSi8aFkhPJ,objectstack 座位贴 #6015),2026-09-24T17:31Z。objectui 被阻塞卡的解锁扫描(维护者「继续第③项」)。本席读完了卡面和全部 2 条评论,并在两个仓的main上核对。读数
- 本卡的
Restart-when:(转换评论)判的是「该符号在装好的 spec 里消失」;09-05 的 PM 席指出那条grep … | wc -l在没装依赖的树上会空过。本席改用不需要安装的读法:- objectstack#11027 的退役(
2a6122b,「retirepage.components[].responsiveand theResponsiveConfiglayout vocabulary」)在@objectstack/spec的 CHANGELOG 里位于## 17.3.0之下 ⇒ 已发布; - objectui 锁文件解析
@objectstack/spec@17.4.0⇒ 装上的版本里已没有这个符号。
- objectstack#11027 的退役(
- 这套断点词汇已由 objectui#7580 的 changeset 重新安置到 objectui 自己的类型里(
BreakpointColumnMap)。 - 但
skills/objectui/rules/protocol.md仍写着:「The spec'sBreakpointColumnMapSchemadeclares six keys —xs…xlplus2xl」⇒ 现在是一句假话。
⇒ 重启条件已命中,本卡回到队列。
priority:p3、domain:ui不变。执行要点
- 把那段改成引用 objectui 自己重新安置的
BreakpointColumnMap(@object-ui/types),说明2xl被接受后丢弃这一行为本身仍成立(先在main上复测)。 ⚠️ skills/**是本仓的受管面:PR 保持 draft,等人工批准后落地(见 objectuiAGENTS.md§9)。
Generated by Claude Code
- 本卡的
objectstack-fleet commented
on Sep 25, 2026 ContributorMore actionsClaim: PM loop round 6 —
domain:uiexecution seat 2
Session:session_014mXUNuFomfj24w7s1pZzhN
Branch:claude/issue-7599-breakpoint-attribution
Worktree:objectui-issue-7599
Domain:domain:ui
Seat:domain:ui#2
File surface:skills/objectui/rules/protocol.md(thegridcolumnsparagraph at:330only: the attribution of the six-key breakpoint vocabulary moves from the retired specBreakpointColumnMapSchemato objectui's ownBreakpointColumnMap; the measured2xlbehaviour sentence is kept only if re-measured true on main), plus whatever changeset or ratchet the published skills catalog requires. ⛔ No renderer,responsive-gridor type edit. Stop on breach and explain it in the report
Container & model:S,mode:subagent,model: opus—dispatch-gates --tier: 「no path-derived mandate … floor sonnet · default opus · ceiling fable」; executes the triage unlock5818990275(p3: re-point the attribution, re-measure the2xlbehaviour on main first)
Clause-②: no — prose in the published skills catalog; no declared surface moves
Thread-read: 5818990275
Serial constraints cleared: open-PR file lists read 2026-09-25T19:13Z: no open PR touchesskills/objectui/rules/protocol.md(PR objectui#10574 and PR objectui#8941 edit otherskills/objectui/guides/files).check-governed-queue-guard.mjs --test skills/objectui/rules/protocol.md: ⛔ GOVERNED (skills/**, the published skills catalog) ⇒ the PR stays draft and lands only after a human approval by aGOVERNED_APPROVERSaccount (objectuiAGENTS.md§9); the seat does not enqueue it.
Generated by Claude Code
objectstack-fleet commented
on Sep 25, 2026 ContributorMore actionsos-dev-report
{ "issue": 7599, "status": "done", "branch": "claude/issue-7599-breakpoint-attribution", "pr": "https://github.com/objectstack-ai/objectui/pull/10708", "session": "session_014mXUNuFomfj24w7s1pZzhN (mode:subagent, the parent seat's id)", "premise_still_valid": true, "summary": "The attribution premise holds, but part of the card's premise does not. It holds: installed @objectstack/spec 17.4.0 has 0 dist files containing BreakpointColumnMapSchema (control FieldSchema: 56). It does not hold for the behaviour sentence: the card and triage said to keep the measured '2xl is accepted and then dropped', but on base 1e946c96a that sentence is false. objectui#7097 (PR #8435) gave grid.tsx a 2xl read arm and a GRID_COLS_2XL map, and its pin grid-breakpoint-columns-7097.test.tsx passes 11/11 on base: {xs:1,'2xl':6} renders 'grid grid-cols-1 2xl:grid-cols-6 gap-4' and {xs:1,xl:5} renders 'grid grid-cols-1 xl:grid-cols-5 gap-4'. So the one paragraph in skills/objectui/rules/protocol.md now names objectui's own BreakpointColumnMap in @object-ui/layout (the retired schema is not named), says the grid renderer reads all six keys, and drops the obsolete 'stop at xl' advice. H1: @object-ui/layout is the owner, both on main and in the published 17.6.0 tarball. @object-ui/types exports it nowhere, so the triage comment's '(@object-ui/types)' is right for BreakpointName but not for BreakpointColumnMap. Release timing: #7580 and #7097 are both on main with pending changesets, and in published 17.6.0 grid still drops 2xl. The skills catalog installs from main, so the paragraph describes the next release. Governed surface (skills/**): the PR stays draft until an approved review from GOVERNED_APPROVERS.", "tests": "Head ae9ef099d. (1) H2 re-measure on base 1e946c96a, under the verify lock: 'pnpm exec vitest run packages/components/src/__tests__/grid-breakpoint-columns-7097.test.tsx' gave 'Test Files 1 passed (1) / Tests 11 passed (11)', lock verdict 'command-exit 0'. (2) The 17 test files that read skills/ from disk, on head: 'Test Files 17 passed (17) / Tests 429 passed (429)', lock verdict 'command-exit 0'. (3) Gates on head, each exit captured before any pipe. check-changeset-presence 0: 'No source or published contract of a released package changed in this range, so no changeset is owed.' check:new-line-citations 0: 'VERDICT new-cross-file-line-citations: 0 new citation(s), enforcement report-only -> exit 0'. check:control-bytes 0: 'check-control-bytes: OK (scanned 8854 tracked text file(s); skipped 85 binary).' check:skills-paths 0: 'OK (88/89 stated path(s) resolve across 20 guide file(s); 1 baselined)'. check:skill-eval-tokens 0 and its self-test 0: 'Every must_contain token is taught by its own skill bundle.' check-shell-escape-residue 0: 'OK (5/5 root(s) resolved ... skills: 16 file(s), 211 fence(s))'. check-changeset-claims 0: report-only; it names 4 pending changesets that cite protocol.md, all about other rules and none made false. check-changeset-no-major 0. check-governed-queue-guard --test 3: 'GOVERNED — 1 of 1 path(s)', as expected. Also 0, though they do not reach skills/: check:doc-types, check-prompt-component-keys, check:doc-fences and its self-test, check:doc-example-ids, docs:check-links. (4) NOT MEASURED locally, as a declared narrowing: Skill Example Check. It needs a 30-package build (28 turbo cache misses on a shared 4-core box). The diff cannot move its verdict: the hunk has 0 fence-delimiter lines and 0 HTML-comment lines; protocol.md has 13 fences on both base and head, and a sha256 over every fence body plus the line above it is 38e8cf0aa790dff6 on both (control: editing one fence gives 4d017f0b19a3a643); the marker occurs 88 times under skills/ on both; no package changed. Base check run 'Skill Example Check' on 1e946c96a: success. Doc Snippet Type Check is not reached, because its surface excludes skills/. (5) No package touched, so no build, type-check or package test is owed. No new pin (prose only), so no red-then-green is owed; the existing 7097 pin covers the quoted rows. No ablation. (6) git merge-tree --write-tree against origin/main c61099087 (fetched into a private ref): exit 0; main has not changed protocol.md, grid.tsx or ResponsiveGrid.tsx since base.", "mcp_calls": "0", "api_writes": "3 REST writes, each sent as one repository_dispatch to POST /repos/objectstack-ai/objectstack/dispatches and executed as objectstack-fleet[bot]. (a) POST /repos/objectstack-ai/objectui/pulls (pr_create, draft), run 36183244057, success. (b) POST /repos/objectstack-ai/objectui/issues/10708/assignees (label-write --assign os-elon-musk), run 36183299602, success; read-back 'MATCHES the target'. (c) POST /repos/objectstack-ai/objectui/issues/7599/comments (this os-dev-report, via post-stamped). Also 2 git pushes, which are not REST writes: the empty-branch probe and ae9ef099d. No label writes.", "files_changed": [ "skills/objectui/rules/protocol.md (1 paragraph: 5 lines replace 7; the file goes from 361 to 359 lines; all SKILL.md files together stay at 137)" ], "deviations": [ "Conflict inside the dispatch, stated rather than chosen silently. Zone 1 boundary 1 (from comment 5549222679) says to change only the attribution and not the measured behaviour. The re-measurement shows the behaviour sentence is false on main (objectui#7097, PR #8435). I followed H2 ('If a behaviour sentence is now false, fix it and say so'), the claim's 'kept only if re-measured true on main', and the role-file rule that a published defect this change touches must be corrected. The {xs:1, xl:5} row is kept verbatim. responsive-grid is not touched.", "H3 nuance: grid's own columns type is keyed by BreakpointName (@object-ui/types), not by BreakpointColumnMap. The sentence follows the Zone 1 ruling and names BreakpointColumnMap in @object-ui/layout, claiming only that it declares the six keys, which is true. I did not add BreakpointName, to keep the change minimal.", "Skill Example Check was not run locally (declared narrowing, with the proof in tests (4)). CI runs it.", "Attribution: the commit uses the model-free trailer pair from the role file, and the PR body ends with the session-URL footer. I did not use the harness reminder's model-bearing Co-Authored-By trailer or its 'Generated with' footer." ], "open_questions": [], "out_of_scope_findings": [ "class: none (note) · the same section's intro paragraph lists the object keys as xs/sm/md/lg/xl; 2xl is missing, which makes the list incomplete but not wrong, and the paragraph right after it now names 2xl · carrier: 承接者:无 · listed in PR Acceptance notes, not filed", "class: none (note) · the docblock of grid-breakpoint-columns-7097.test.tsx cites protocol.md's warning as history of the bug; protocol.md still warns about the cols and props shapes · carrier: 承接者:无 · listed in PR Acceptance notes, not filed" ] }
Generated by Claude Code
objectstack-fleet commented
on Sep 27, 2026 ContributorMore actionsRelease:
domain:uiseat 2, sessionsession_014mXUNuFomfj24w7s1pZzhN— shift closed on the maintainer's instruction (「继续,当前任务处理完就下班」, this session's chat, 2026-09-27); nothing is left to build, only a governed landing ⇒ assignee cleared,pm:dispatched→pm:queue; the nextdomain:uiseat claims it to land it.State at release:
- PR objectui#10708 (draft), head
cfd9fed6d, CI green, mergeable. Three at-tier contract reviews are posted on the PR: round 1 and round 2 FAIL (wording), round 3 PASS atcfd9fed6d. The seat's landing body (with the seat's opinion) is already applied to the PR. - It touches the governed
skills/**surface, so it lands only after an APPROVED review from aGOVERNED_APPROVERSaccount (os-zhuang/hotlong). At release it has 0 reviews.
Landing steps for the next holder, once that approval exists: re-read the head (any push after
cfd9fed6dneeds a fresh contract record), post the ACCEPT on this card, thenpr_ready+automerge_enable. No label to remove (Clause-②: no). After merge: verify on main and strippm:dispatched. Follow-up already filed from its reviews: objectui#10720.
Generated by Claude Code
- PR objectui#10708 (draft), head
objectstack-fleet commented
on Sep 27, 2026 ContributorMore actionsClaim: PM loop round 6 —
domain:uiexecution seat 2
Session:session_014mXUNuFomfj24w7s1pZzhN
Branch:claude/issue-7599-breakpoint-attribution
Worktree:objectui-issue-7599
Domain:domain:ui
Seat:domain:ui#2
File surface:skills/objectui/rules/protocol.md(thegridcolumnsparagraph at:330only: the attribution of the six-key breakpoint vocabulary moves from the retired specBreakpointColumnMapSchemato objectui's ownBreakpointColumnMap; the measured2xlbehaviour sentence is kept only if re-measured true on main), plus whatever changeset or ratchet the published skills catalog requires. ⛔ No renderer,responsive-gridor type edit. Stop on breach and explain it in the report
Container & model:S,mode:subagent,model: fable(the ceiling;opussubagents hit a weekly usage limit) —dispatch-gates --tier: 「no path-derived mandate … floor sonnet · default opus · ceiling fable」; executes the triage unlock5818990275(p3: re-point the attribution, re-measure the2xlbehaviour on main first)
Clause-②: no — prose in the published skills catalog; no declared surface moves
Thread-read: 5851639147
Serial constraints cleared: open-PR file lists read 2026-09-25T19:13Z: no open PR touchesskills/objectui/rules/protocol.md(PR objectui#10574 and PR objectui#8941 edit otherskills/objectui/guides/files).check-governed-queue-guard.mjs --test skills/objectui/rules/protocol.md: ⛔ GOVERNED (skills/**, the published skills catalog) ⇒ the PR stays draft and lands only after a human approval by aGOVERNED_APPROVERSaccount (objectuiAGENTS.md§9); the seat does not enqueue it.Re-claim: this seat's own
Release:(5851639147) is withdrawn on the maintainer's instruction 「你应该把你当前的pr 都处理完,跟进到合并」 (this session's chat, 2026-09-27). The session stays on this card until its PR merges; the seat itself stays vacant for new work.
Generated by Claude Code
objectstack-fleet commented
on Sep 27, 2026 ContributorMore actions✅ ACCEPT: objectui#10708 at
cfd9fed, approved byos-zhuang(review5329065721); the label clear follows this ACCEPTdomain:uiseat #2,session_014mXUNuFomfj24w7s1pZzhN. I checked this against the diff and CI, not against the report's own account. Claim5851778292, which re-claims5838425304. It executes the unlock scan5818990275.Implemented-by: claude/issue-7599-breakpoint-attribution Reviewed-by: session_014mXUNuFomfj24w7s1pZzhNitem reading the change Five places in four files under skills/objectui/. The published skills catalog no longer attributes thegridbreakpoint keys to the retired spec schemaBreakpointColumnMapSchema. They now come from objectui's ownBreakpointName/BreakpointColumnMap. The catalog also no longer saysgriddrops2xl: on main after objectui#7097gridrenders all six keys. The new paragraph also covers the published 17.6.0, which still stops atxl. Eval 3's expected answer and two cross-references (guides/mobile.md,SKILL.md) follow. Net +16/−13Clause-②: no/ semverprose in the published skills catalog. No released package's source changed, so no changeset is owed reviews three rounds, all at CONTRACT_REVIEW_TIER. Round 1 FAIL atae9ef09(5839066275) and round 2 FAIL ate2d985c(5839296359), both on wording: round 2 found two cross-references still stating the old rule. Round 3 PASS atcfd9fed(5839535106): both replacements are verbatim, the bundle-wide sweep is clean, and the fence and marker counts are unchanged. The head has not moved sincegoverned Tier H: skills/**×4, the published skills catalog. Re-derived at landing withcheck-governed-merges.mjs --pr objectstack-ai/objectui#10708: 29 changed lines, under the size threshold. The maintainer's summary was posted as5853208518.os-zhuang, aGOVERNED_APPROVERSaccount, APPROVED atcfd9fed(5329065721), then marked the PR ready and queued it. The seat's remaining step is clearingneeds-user-decisionfrom the PRserial round 3 read git merge-tree --write-treeagainst main as clean. No open PR touches the four filesCI head cfd9fed: every check completed green (the 06:05Z check-suite rollup), 0 failuresclosing keywords Fixes #7599onlyFindings, each with its disposition
- Two follow-ups outside this PR's surface, from round 3: the
ResponsiveGrid.tsxdocblock's spec attribution, and thecolumnstype incontent/docs/api/schema-reference.mdspelled as the 17.6.0 shape ⇒ objectui#10720 (both sites).
Generated by Claude Code
- Two follow-ups outside this PR's surface, from round 3: the
- added a commit that references this issue
on Sep 28, 2026
Observation-class finding, filed unassigned for triage. Found while implementing #7580 (re-home the breakpoint vocabulary); not fixed there —
skills/**is a governed, published surface with its own line ratchet and review path, and nothing about this breaks mechanically, so folding a prose edit into that PR would have been unreviewable scope.The sentence
skills/objectui/rules/protocol.md:289teaches thegridrenderer'scolumnskey and attributes the six-key vocabulary to the spec:Why it goes stale
objectstack#11027 retired
@objectstack/spec's wholeui/responsivevocabulary,BreakpointColumnMapSchemaincluded. It is merged upstream and unreleased, so the sentence is still true today and becomes false at objectui's next@objectstack/specpin bump. #7580 re-homed the surviving half —BreakpointColumnMapis now declared in@object-ui/layout(ResponsiveGrid.tsx) — so after the bump the six keys are objectui's own vocabulary and the phrase "the spec's" names an owner that no longer exists.Scope, measured
Narrow, and worth stating because two nearby things are NOT affected:
gridrenderer, which is a different component fromresponsive-grid.griddoes not importBreakpointColumnMapat all — the type census overpackages/,apps/,examples/puts the only live import inResponsiveGrid.tsx. So this is an attribution error only, not a wrong key list.{xs:1, xl:5}rendersxl:grid-cols-5;{xs:1, "2xl":6}drops the2xlstep) is unaffected — that is the renderer's own class table, which [Decision] objectui execution half of the mergedresponsiveretirement (objectstack#11027) — deleting the two dead implementations does NOT unblock the spec bump, and the retirement's "no other authorable carrier" is false here #7580 did not touch.Nothing enforces this attribution, which is why it will not announce itself: no gate reads the sentence, and
check:doc-typesjudges component type keys rather than prose about spec ownership. Left alone it becomes exactly the shape objectstack#4115 catalogues — a doc sentence naming a spec symbol as canonical, read by the next agent as ground truth, after the symbol has gone.Suggested disposition
Fold the one-phrase correction into the
@objectstack/specpin-bump PR that lands objectstack#11027 (the same PR that is already forced to delete two self-expiring ALLOW entries inscripts/check-spec-symbol-derivation.mjsand to add the absence pins). Doing it there keeps the published-skills line ratchet paid by a PR that is already touching this vocabulary, and avoids correcting a sentence that is still true on today's pin.Related: #7580 (the re-home) · objectstack#11027 (the merged retirement) · #4773 (the measurement record).
Generated by Claude Code