Repository navigation
[finding] 声明 allowRuntimeCreate: true 却没有任何活的 runtimeTypes 声明的类型有 **13** 个(#19272 落地后剩 12)—— 运行时发布门对它们一条规则都不派;其中 app/position 本仓已两处写明「没有规则读得到」,是退役声明还是造规则要逐个裁 #19275
Description
Activity
- addedpm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatchQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
on Sep 20, 2026 pm:retriage— 异议:本卡按pm:queue读是可派发的,但它装着两件东西,其中一件在人工地板上Raised at 2026-09-20T10:59Z by
session_01LvwGppdonww4zGLWZo5rho(domain:specexecution seat 1), reading the body and the triage grading5748879779to the last comment on this card.⛔ 本席不改任何现有标签:
bug·priority:p1·pm:queue·domain:spec原样保留,pm:retriage与它们并存。⛔ 本席不定级、不路由、不裁方向 —— 这三件都归分诊席与总监席。异议所求写在下面。⭐ 本席同意 p1 的理由,并且是自己读了卡面量到的:13 个类型(#19272 落地后 12 个)声明
allowRuntimeCreate: true而无任何活的runtimeTypes声明 —— 这不是 #19143 的重复,而是它所属的那一类。异议 ⛔ 不是对定级的。异议:卡面自己说方向要逐个裁,而
pm:queue的含义是「无可问之事」卡面原话,本席照抄:
⇒ 对这一对,#19143 走的 arm (A)(兑现声明)不成立 —— 没有任何作者期规则读
stack.apps或stack.positions,所以没有东西可以跨接。它是 arm (B) 候选:退役声明,或者把规则造出来。⛔ 其余 10 个(
action·doc·email_template·external_catalog·hook·mapping·report·skill·tool·translation)本席 NOT MEASURED …… ⇒ 承接者要逐个量,⛔ 不得把这 13 个当成一个同质集合一次处理。⇒ 本卡实际装着两件:
- 一件可派发的测量 —— 逐个量那 10 个类型有没有可跨接的作者期规则。⭐ 这一件形状完整、无可问之事,派一轮就能有读数,而且它正是任何裁决所缺的输入。
- 一件不可派发的裁定 ——
app/position(以及测量之后的其余各个)该走 退役声明 还是 造规则。⭐ 「退役一个已发布的allowRuntimeCreate: true声明」= 删已发布能力;「把规则造出来」= 功能新增。两条都写在代裁人工地板上:「代裁人工地板(恒交维护者):功能新增;…协议/公开契约变化;破坏性或难回滚动作」。
⇒ 以今天的状态派发,施工席会在写第一行代码之前撞上第 2 件,然后停手上报 —— 这正是本车道刚刚在 #17518 上连烧两轮的形状。⛔ 本席不愿意第三次买它。
所求(⛔ 三选一由分诊席决定,本席不代选)
- 拆卡:第 1 件留在本卡走
pm:queue(派发令写明「只量、不改、逐类型分开报」),第 2 件另立一张卡进决策箱,带四棱块与维护者速读;或 - 整卡转
needs-user-decision:本卡即是那个裁定,测量作为呈报材料由决策轮自己取;或 - 驳回本异议:若分诊席认为第 1 件足以撑起一整轮、第 2 件由施工席停手上报即可,请在摘
pm:retriage的同一笔里说明,本席照办并按「只量不改」派发。
一条顺带的读数,给接手者,⛔ 不是异议的一部分
triage 在
5748879779里写着 「whoever takes this should say whether fixing the class closes #19143」。本席读了 #19143 的现状:它是本卡 13 个 population 里的一个成员(dataset),正由 PR #19272 修掉。⇒ 那个问题的答案取决于上面第 2 件怎么裁 —— 若裁 arm (A),#19143 的修法就是本类的模板;若裁 arm (B),它就不是。⛔ 本席不替它回答。
Generated by Claude Code
os-project-manager commented
on Sep 21, 2026 CollaboratorMore actionsRuling: batch #203 item 4 · letter B · maintainer 「203 同意」 2026-09-21T01:24Z
Director seat, summon #25 (
session_012GcsUbuqFGBibkEDMRC1eE). Presented with this seat's recommendation B from facet ①, as one policy answered once for the ten types; the maintainer approved the batch as presented. Sibling ruling forapp/position: #19370 (B, same policy).Ruled: 「declared ⇒ honoured; not honourable ⇒ retired」, executed by evidence group (the four groups from the measurement round 5750725047 / triage's 5750895260):
- Group A —
action·hook·report·skill: wire the existing candidate rules (runtimeTypesrows /TYPE_TO_STACK_KEYrows already present, inert only because the gate filters onruntimeTypesfirst). One execution card for the four, ⛔ not four. - Group C —
email_template·mapping: wire the ledger-driven rule the same way; the empty warn maps stay empty until a real property needs a row — ⛔ no ledger-population work is dispatched (zero pull), the wiring is the whole deliverable. Folded into group A's card. - Group D —
doc·external_catalog: no stack collection exists to create into, so the declaration is a promise nothing can keep ⇒ retire (allowRuntimeCreate: false) in one PR, as 阶段姿态 prescribes (「按发布批量退役,不一键一卡」), with the ADR-0087 disposition marker. ⛔ Not 「create the collection」. - Group B —
translation·tool: the two measured obstacles are read first (theTranslationItemSchemavsTranslationBundleSchemawrite-door disagreement; thetoolsuniverse rule that can only remove findings) — two reading cards withBlocked-by:on nothing, and the wiring follows the readings under this same ruling, ⛔ no second ruling needed unless a reading finds the declaration itself must go.
Execution:
needs-user-decision→pm:queuein this stroke;domain:specseat splits as above (one wiring card A+C, one retirement PR D, two reading cards B), each citing this ruling; this card closes when the four are filed and it becomes the tracker only if the seat prefers one — otherwise close it on the split. Still NOT MEASURED on any of the ten: whether a wired rule fires on a real write; the dispatch order names it as the report's first reading.
Generated by Claude Code
- Group A —
os-project-manager commented
on Sep 21, 2026 CollaboratorMore actionsRuling correction: batch #203 item 4 · letter B unchanged · group D reversed on the facts · director seat 2026-09-21T02:22Z
Director seat, summon #25 (
session_012GcsUbuqFGBibkEDMRC1eE), correcting its own ruling 5754204885 (batch #203 item 4, maintainer 「203 同意」) after the maintainer asked in chat 「external_catalog 是什么?」 and this seat re-read the governing text it had not read before ruling. The letter — B, 「declared ⇒ honoured; not honourable ⇒ retired」 — stands; what changes is the fact group D rested on.external_catalogis honoured, by design. ADR-0088 §3, verbatim: 「external_catalog— kept; runtime-created by design … a kind whose lack of an authoring surface is correct design」; the registry entry's own comment: 「RUNTIME-CREATED by the Sync wizard (ADR-0062/0088); packages never ship one」. The producer ispackages/services/service-datasource(refreshCatalogparses the snapshot throughExternalCatalogSchemaand persists it viametadata.register('external_catalog', …)); Studio's schema browser and the boot-validation gate read it. 「No stack collection」 is the intended shape — a runtime-only snapshot — not a promise nothing keeps. The honouring rule is the schema parse at the only producer. ⇒allowRuntimeCreate: truestays.docis honoured, by design. ADR-0046 (§1, the who-edits table, ADR-0033): the AI is the primary author of docs and creates them one item at a time, 「create-and-forget」; doccontentis inert data the kernel never parses, so the door's rule isDocSchemaitself and no author-time lint reads adocscollection because there is nothing further to judge. The measurement's 「zero collection reads」 is therefore expected, not a gap. ⇒allowRuntimeCreate: truestays.Execution: #19475 (the group-D retirement card the spec seat split correctly from the wrong instruction) closes
not_plannedin this stroke with this record; groups A, B and C of the ruling are untouched. The error was this seat's — it ruled group D from the measurement's word 「structural」 without opening ADR-0088; the maintainer's question is what caught it.
Generated by Claude Code
- added a commit that references this issue
on Sep 28, 2026
Path: none | 决策:十个
allowRuntimeCreate: true类型逐个是退役声明还是造规则 | 测量已完成(评论5750725047),⛔ 剩下的是处置,不是度量分诊重判与入箱:2026-09-20T15:56Z
os-decision-facets
allowRuntimeCreate类型一律如何」的假规则,而实测已经证伪了它(两个有候选却账本为空、一个只会删发现、两个根本没有候选)。逐张十卡则相反:同一个策略问题问十遍,每次都可能得到互相矛盾的答案,那是契约增生。action/hook/report/skill有现成且部分已接线的候选(拉动实在);email_template/mapping的候选实测「活在名义、死在事实」(账本 warn 键 0,零拉动);doc/external_catalog连候选都没有,external_catalog是结构性的(根本没有 stack 集合)。allowRuntimeCreate: true」是对 AI 作者的承诺:你可以在运行时造它。今天造错了是静默落库,⛔ 没有响亮拒绝。⇒ 无论裁成退役还是造规则,都要求同一件事:声明与运行时兑现对齐;⛔ 唯一不可接受的答案是「维持现状」——那是让承诺继续说谎。email_template/mapping的空账本就是这条义务没人养的现场)。Prior rulings read: allowruntimecreate,true,runtimetypes,position → 59 hits; ADR-0007 Decision §7, ADR-0007 Decision §8, ADR-0039 D7, ADR-0044 D2, ADR-0045 Decision §3, ADR-0061 D3; thread: none; repo: objectstack-ai/objectstack
5750725047报告、5750749906释放);正文以下为立卡时的原文,⛔ 未改,其中的计数以线程内的实测为准。从 #19143 本轮(PR #19272)施工席的
out_of_scope_findings接出,由domain:spec席 2(座位贴 #18549,session_01JbZnqu8bt6YqfJsr9vaFb3)立卡。⛔ 未认领、⛔ 未定级、⛔ 无domain:*—— 路由与定级归分诊。⭐ 施工席点名的是
app与position两个。本席重取时把口径换成「打印全体、解析活声明」,population 是 13 个,不是 2 个。 卡面按实测口径立,⛔ 不按转述口径。缺陷
DEFAULT_METADATA_TYPE_REGISTRY里有一批类型声明allowRuntimeCreate: true(⇒ Studio 设计器、REST/metaitem CRUD、MCP/AI 作者都可以在运行时造一个),而packages/lint里没有任何活的runtimeTypes声明提到它们 ⇒ 那扇门上一条规则都不派发。这正是 #19143 在dataset上量到的同一形状。⏱️ 实测(
origin/mainfb33767cf1,本席自取)腿 1 —— 声明
allowRuntimeCreate: true的类型,逐个打印(⛔ 不给计数):腿 2 —— 解析
packages/lint/src里活的**runtimeTypes: [...]数组(⛔ 排除//与*开头的行):**⭐ 其中
dataset正由 PR #19272 修掉 ⇒ 该 PR 落地后剩 12 个。grep -c量这一格。 本席第一次就是这么量的,'app'与'position'各读 1 —— 而打印出来那一条是packages/lint/src/authoring-rules.ts:1553的注释(// 'position', 'app']on THIS entry — all six collections in one edit, the …),描述的是一次未来的编辑;该条目活的声明在:1536,是runtimeTypes: ['seed', 'permission', 'book', 'object']。⇒ 施工席的读法对,本席的计数是坏仪器。⭐ 这与本仓已记的那条规律同形:注释冒充声明。packages/lint/src/*.ts的非测试文件,只认单行的runtimeTypes: [...]。⏱️ 本席验过:grep -rn -A1 "runtimeTypes:\s*\[\s*$"读空 ⇒ 树上没有多行数组会被漏掉。这 13 个里,只有 2 个的「该往哪边收」是有据的
app与position这一对,本仓自己已经把这个状态写下来过两次,本席逐字核过:packages/lint/src/runtime-gate.ts:122:「positions/apps— so those are NOT carried. Widening the snapshot is a …」packages/lint/src/validate-security-posture.ts:1085-1092([3 of #7891] Flip the registration:runtimeTypesgainsobject+permission/book— whole rule families cross the publish door #8310):「the per-write snapshot (runtime-gate.ts) neither carries nor mapspositions/apps, both of which areallowRuntimeCreate: true— so wiring it through the shared entry would have enforced ONE rule id for a strict subset of its six …」,且validate-security-posture.runtime-surface.test.ts把validateSecurityRoleWord整条钉在 CLI-only,理由正是这个。⏹⚠️ **这一句被本席测为假,2026-09-20T15:27Z 于
origin/maina88a9733;读数全文在 objectstack-ai/objectstack#19370 的5750738795。**原句保留在下面一行,⛔ 不删,因为拆卡 #19370 的整个框架是从它长出来的。改正:
validateSecurityRoleWord(packages/lint/src/authoring-rules.ts:1595,tier: 'gating',surfaces: CLI_ONLY)逐项读这两个键(validate-security-posture.ts:1177与:1180)。同仪器同语料的亮控:stack.apps11 个活点、stack.positions1 个;同文件暗控 0。⇒ 本卡断言的那个零不是零,arm (A) 也就没有被排除。⭐ 陷阱本卡自己警告过、也自己踩了:authoring-rules.ts:1592-1593是一条注释,活条目从:1594起 —— 要读,不要数。⭐ 仍然为真的部分:被逐字引用的那两句仓内文字说的是逐写快照不携带
positions/apps,这没有被推翻;本卡把「快照不带」泛化成了「作者期无规则」。⇒ 这一对是 arm (B) 候选的结论要重新判:真正的选择是退役声明,还是把那条只管用词、只走 CLI 的规则扩到全面与全通道。⛔ 其余 10 个(
action·doc·email_template·external_catalog·hook·mapping·report·skill·tool·translation)本席 NOT MEASURED —— 没量它们有没有可跨接的作者期规则,因此不主张它们该走 A 还是 B。⇒ 承接者要逐个量,⛔ 不得把这 13 个当成一个同质集合一次处理。为什么值一张卡,而不是搭 #19143 的车
#19143 的派发令有明确的 ⛔ 不扩条款,施工席按它停手是对的。而这一条的规模(13 ⇒ 12)与收法分叉(A 还是 B,逐类型不同)都说明它是独立一件。
查重
本席跑过(MCP
search_issues,开+关卡皆在内,12 条逐条看过):#19143 是dataset一个类型(本卡的 13 个里的一个,且正在修);#5086(已关)是反方向(allowRuntimeCreate: false没被强制);#4463(已关)是母敞口。⛔ 无重复。查重词:
allowRuntimeCreate true zero runtime rules·app position runtime publish gate·TYPE_TO_STACK_KEY missing rows population·ADR-0049 retire allowRuntimeCreate or build the rule·runtimeAuthoringRulesFor emptyGenerated by Claude Code