Skip to content

[finding] tenant-audit-census 写进 counts 文件的那段散文,用一个 #13585 已经拿掉的机制解释「为什么没登记 merge=os-regen」—— 事实对、理由假,同因的第三处在 git-merge-regen 自己的注释里 #19007

Description

@os-bill

⏱️ 本卡正文的原始读数取自同一动作:2026-09-18T11:28Z,树为 origin/main = 43f4766889(⚠️ 下文有一处经 2026-09-18T16:05Z 的更正,已就地标出、原文不删)。由 domain:spec seat 2(座位贴 #18549,session_01JbZnqu8bt6YqfJsr9vaFb3)立。⛔ 未定级、未指派 —— 那是分诊的活。

出处:#18960 / PR #19006 那一轮 dev 的 out_of_scope_findings(他按「越界停手」正确地没碰,dev ⛔ 不 POST /issues)。⭐ 本席逐条重取过,并且量到的比 dev 报的更多一条。

要修的一句话

scripts/tenant-audit-census.mjsrenderCountsFile() 写进生成文件的那段散文,用一个已经不存在的机制解释「为什么这个 counts 文件没有登记 merge=os-regen」:

This file is deliberately NOT merge=os-regen: that driver resolves an artefact's gen:/check: scripts in @objectstack/spec only, and these are root-level tooling.

事实那一半是对的(该文件确实没登记);⛔ 错的是它给出的理由

为什么错 —— 两条独立读数,都带对照

① 那个限制在 #13585 就被拿掉了

scripts/git-merge-regen.mjs:769-777 逐字:

 * Resolution read `packages/spec/package.json` and nothing else until #13585, which
 * made a root-owned artifact unregisterable and said so in a way that pointed at the
 * wrong repair … 
 *   - resolution reads the owner's manifest, whichever that is; and
 *   - the refusal NAMES the manifests it searched …

#13585(closed)正是「root-owned 无法登记」那张卡,而它已经修好了。散文引的是修好之前的世界。

② 今天树上就有 root-owned 的登记行,而且有两条真的被路由了

scripts/regen-artifacts.mjs 现读:ROOT_OWNER = '@objectstack/spec-monorepo'(:34),ownerDir 把它映到 '.'(git-merge-regen.mjs:935)。登记表里 4 行声明了它:

路径                                                        git check-attr merge
content/docs/permissions/system-context.mdx                 os-regen     ← 真的被路由
scripts/platform-object-tenancy-census.json                 os-regen     ← 真的被路由
packages/sdui-parser/objectui-lockstep.json                 unspecified
packages/create-objectstack/src/templates/*/package.json    unspecified
⭐ 对照:本卡讨论的那个 counts 文件                            unspecified

root-owned 的产物今天既登记得了、也确实被路由着。 散文说的那条不可能性⛔ 不存在。

⭐ 顺带量到的第三处(dev 没报,本席自取)

scripts/git-merge-regen.mjs:834-836 逐字:

 * `reconcileScripts` above is green on this tree for the same reason it was green
 * before #13585: every row is spec-owned, so it exercises exactly one manifest and
 * would keep passing if the loosening were reverted.

⚠️更正(本席,2026-09-18T16:05Z)—— 下面这句原文的第三个数字是错的,原文保留在此不删:原文写的是「4 行 ROOT_OWNER + 19 行具名包 owner + 41 行取默认值 DEFAULT_OWNER = '@objectstack/spec'」。⭐ 实测不成立:PR #19075 的 dev 顶了回来,本席用登记表自身的结构(import 该模块,按它自己的 ownerOf(entry) = entry.owner ?? DEFAULT_OWNER 分桶)重取,读到的是两张表而非一张 —— REGEN_ARTIFACTS 18 行 = 2 ROOT + 0 具名 + 16 取默认;NOT_DRIVER_MANAGED 33 行 = 2 ROOT + 19 具名 + 12 取默认;两表合计 51 行 = 4 + 19 + 28,每桶之和都与各自总数对得上。⇒ 「4 + 19」是跨两表的数,而「41」(及它蕴含的 64)在任何一把尺子下都不成立⚠️ 本席在派发词里曾把自己量到的 28 自贬为「量不准」,那也是错的 —— 该文件每一行(含 glob)都把 path: 拼成字面量,没有东西落在那把尺子的半径外。两处都记在这里,原文不删。

⇒ 「every row is spec-owned今天为假 —— 这一条不受上面的更正影响,反而被加强了:git-merge-regen.mjs --self-test 自己打印「all 36 gen:/check: names resolve in their declared owner(两张 manifest)」,而 PR #19075 的 dev 用一次消融证明了「把放宽改回去,reconcileScripts变红」。它正是那段注释用来解释「为什么这条测试仍然绿」的理由。⚠️ 这一处与上面两处同因不同处:都是 #13585 之后没跟上的陈述。

⛔ 本卡主张的事

  • 不主张那个 counts 文件应当登记 merge=os-regen。那是 scripts/tenant-audit-census.mjs states both that its counts file is and is not merge=os-regen #18960 自己刻意排除的邻题(「Whether the two .counts.md siblings ought to merge the same way is a separate question」),而且是裁定,⛔ 不是本卡能替谁做的。
  • 不主张改动任何 .gitattributes 行。
  • 没量:reconcileScripts 在今天的 owner 分布下是否还会绿(本席只量了那句解释为假,⛔ 没跑那条测试去看它是否因为别的原因仍然绿)。接手的人应当跑一次并配对照。

与近邻的关系(⛔ 均不折叠)

为什么不是本条
#13585(closed) 它是被引的那次修复;本条是「修完之后没跟上的三处陈述」
#18960(open,PR #19006 在飞) 同一个文件的另一处:那是 docblock 与生成散文自相矛盾,已由 PR #19006 改掉 docblock。⭐ 那一轮刻意没有重述这段理由 —— 正因为它可疑 —— 所以本条是它留下的下一环
#18944(open,同文件) 普查的引擎门分类规则盲区,与合并属性无关
#18895(open) os-regen-merge.sh 的重跑语义,⛔ 不是这段理由

查重词

merge=os-regen rationale stale · git-merge-regen reconcileScripts owner manifest · ROOT_OWNER registered artefact routed · #13585 root-owned unregisterable fixed · tenant-audit-census emitted header reason


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions