Repository navigation
[P3] Generalise the lint rule surfaces axis to an open N-surface dimension (#4463 P1 introduced a closed two-value one) #7443
Description
Activity
Triage audit — reclassified
pm:queue→pm:blocked(Blocked-by: #7220), routeddomain:spec-tooling.- Landing verified at
origin/main@d13ce33:packages/lint/src/authoring-rules.ts:167—AUTHORING_SURFACES = ['cli', 'runtime-publish'] as const, the closed two-value axis exactly as described; wiring pinned byauthoring-rule-wiring.test.ts:572. Landing ispackages/lint's contract-gate toolchain ⇒domain:spec-tooling(same lane as [finding] The fourviews[]visibility-predicate rules are CLI-only — a Studio/REST/MCPviewwrite bypasses all of them; if they move to runtime-publish, they must move together #7220, the same rule family — 域标签词表有两个未入表条目:domain:spec-tooling(在用,文件面与 devx 完全重叠)与domain:ui(一例,与repo:objectui重复) #5469 criterion: tooling that revolves around the spec contract). - Why blocked rather than queued: the card's own appetite section says the honest question is "is there a third surface actually arriving?", and names [finding] The four
views[]visibility-predicate rules are CLI-only — a Studio/REST/MCPviewwrite bypasses all of them; if they move to runtime-publish, they must move together #7220 as the concrete instance that would supply the pull — "the two are likely one decision, not two". [finding] The fourviews[]visibility-predicate rules are CLI-only — a Studio/REST/MCPviewwrite bypasses all of them; if they move to runtime-publish, they must move together #7220 is open and itselfpm:blocked. Building an open N-surface dimension before that ruling is exactly the speculative generalisation the card warns against; blocking on [finding] The fourviews[]visibility-predicate rules are CLI-only — a Studio/REST/MCPviewwrite bypasses all of them; if they move to runtime-publish, they must move together #7220 makes the dependency machine-readable (the unlock sweep re-verifies this card when [finding] The fourviews[]visibility-predicate rules are CLI-only — a Studio/REST/MCPviewwrite bypasses all of them; if they move to runtime-publish, they must move together #7220 closes) instead of leaving a P3 speculative build sitting dispatchable in the queue. - Dedup: [finding] The four
views[]visibility-predicate rules are CLI-only — a Studio/REST/MCPviewwrite bypasses all of them; if they move to runtime-publish, they must move together #7220 (the instance, now the blocker), [runtime/metadata] 作者时规则只存在于 CLI:Studio/REST/MCP 的运行时授权面是第四扇门,26 条规则一条不跑——#4409 修完后最大的敞口 #4463 P1 / PR feat(metadata-protocol,lint): 作者时规则接到运行时写入闸门 —— 第四扇门 (#4463) #4715 (the origin) — no card requests the same generalisation. Not a duplicate. - No
target:v17— improvement-class, no release-blocking face.
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
- Landing verified at
Blocker cleared, and the evidence this card said would settle it now exists. Disposition: HOLD —
pm:blocked→pm:on-hold. ⛔ Not returned to the queue; ⛔ not escalated, because the card's own bar has been met by measurement rather than by argument.Date: 2026-08-10. Decided by:
domain:spec-toolingseat (#6018), sessionsession_01KJATVrh6V2ysutYUJigh3B, with a veto window — surfaced in the round report, reversible on one word.The blocker
Blocked-by: #7220. #7220 merged at 17:59Z as PR #7479 — the fourviews[]visibility-predicate rules moved to the runtime publish gate, together, as the maintainer ruled. Per the unlock discipline, "the upstream closed" is not "the card still holds", so the card's own face was re-measured on the merged ref.The reason: the axis got its real exercise, and needed zero new surface values
This card asked the right question of itself and named the evidence that would answer it:
Is there a third surface actually arriving? … #7220 … If those rules move, the axis gets exercised for real, and this card gains an evidence-backed reason to exist.
They moved. Measured on
origin/mainafter #7479:AUTHORING_SURFACES = ['cli', 'runtime-publish'] ← UNCHANGED, still two values last commit touching that symbol: 8dbd2a85f ← an unrelated service-analytics commit; #7220 never touched the surfaces axis surface values in use: 'cli' ×5, 'runtime-publish' ×6 runtimeTypes: ['flow'] ×6, ['view'] ×2 ← this is the axis that actually grewSo the exercise happened and produced no pull whatsoever for an open N-surface dimension. The extension the work genuinely needed landed on
runtimeTypes— an axis that is already open (a string array of metadata types, not an enum), which is why moving a whole rule family to a second metadata type cost a data edit and no structural change at all.That is the strongest possible form of the answer this card asked for: not "nobody has asked yet" (an absence), but "the one case predicted to supply the pull has now run, and it didn't".
Why hold rather than close
The question is legitimate and #4717's scope named it; dropping it silently would be worse than recording it — the card says so itself, and that reasoning still stands. What has changed is only that the appetite question now has a measured answer instead of a guess.
Restart condition (the machine-readable half of this hold): a third enforcement surface is actually arriving — i.e. something proposes a value for
AUTHORING_SURFACESbeyondcli/runtime-publish. At that moment the enum edit and its ratchet-guard consequences become concrete and this card is immediately dispatchable. ⛔ Growth inruntimeTypesdoes not restart it — that axis is already open, and #7220 is the proof.⚠️ What this hold does NOT assert: that an open dimension would be wrong, or that the two-value enum is well designed. Only that building it now would be a generalisation for a set that has had exactly two members since it was created, with the one predicted trigger having fired and not needed a third.
Generated by Claude Code
关闭(维护者指令,skills 席 2 代执行;裁决 #202 B)— 2026-09-21T03:43Z
出处三件(
SKILL.md:149 代执行他人指令,评论带出处三件)— 谁的指令:维护者,在本席(domain:skillsseat 2,session_017ETYWqMQD4qMtZzAGovWNi,席位帖 #19287)会话内的真实用户轮次。在哪说:本席会话聊天,2026-09-21,在本席呈交「停放排查」四组清单(全板 165 张停放卡:pm:blocked64 +pm:on-hold101;其中 38 张的停放条件已消失——正文与评论里Blocked-by:/Restart-when:指向的卡或 PR 全部已关或已合)之后。原话(逐字,⛔ 未翻译、未润色):「还有哪些应该解除停放的你一起排查一下」;对四组清单:「同意」。本卡属第二组「条件已消失、但是工具卡 ⇒ 按 #202 B 关闭」:本席于 2026-09-21T03:00Z 机器复核,本卡停放所指向的目标已全部关闭/合并,或其前提已不复存在;而修复落在门禁 / 脚本 / workflow / CI / 席位协议 / PM 工具面,不在产品包——按维护者裁决批次 #202 项 1 字母 B 及其修正「close, never hold」(记录于 #19457):工具卡不带
Unblocks: #N(open 产品卡)或所护已发布面的点名,即关not_planned,⛔ 不转 hold、不定 p3。两条重开条件(任一即可重开进
pm:queue·tooling):① 首行Unblocks: #N,N 为一张 open 的产品卡;② 卡面点名本修复所护的已发布面。卡上已有的测量与分析原样保留,供重开时续用。
Generated by Claude Code
Restart-when: git grep -n "AUTHORING_SURFACES" -- packages/lint/src shows a proposed third value beyond cli / runtime-publish (growth in runtimeTypes does NOT restart it — that axis is already open, per #7220)
Split out of #4717 at dispatch, per the maintainer's 2026-08-07 migration ruling. Filed by the
domain:metadataseat that landed the backend half; unassigned, and deliberately carrying nodomain:*label — routing is the triage seat's call (this lands inpackages/lint, not inpackages/metadata*).What exists today
#4463 P1 introduced, as needed rather than as a design, a closed axis on lint rules:
surfaces: ('cli' | 'runtime-publish')[]runtimeTypesandsurfaceReasonThat was not optional at the time and should not be read as speculative: it is the structural precondition for the ratchet guard — a guard cannot guard a surface that was never declared. So the axis earned its place; the question this card raises is only whether two values is the right arity.
What this card asks
Generalise it to an open N-surface dimension, so a new enforcement surface is a declaration rather than an enum edit plus the guard changes that follow it.
Per the escalation guidance, an ability that no measured consumer is asking for is exactly what should not get built on speculation. So the first question for whoever takes this is not "how" but:
Filing it because #4717's scope named it and dropping it silently would be worse than recording it — not because it is obviously due.
The adjacent card that could supply the pull
#7220 (
domain:spec-tooling, currentlypm:blocked) is the concrete instance of the same question from the other end: the fourviews[]visibility-predicate rules are CLI-only, so a Studio/REST/MCPviewwrite bypasses all of them — and its own title records the constraint "if they move to runtime-publish, they must move together". If those rules move, the axis gets exercised for real, and this card gains an evidence-backed reason to exist. Whoever grades this should read #7220 first; the two are likely one decision, not two.Related
#4463 (P1), PR #4715, #4717 (parent, now closed — its metadata half landed as
89d7b35a7), #7220 (the CLI-only visibility predicates).Blocked-by: #7220
Generated by Claude Code