docs(getting-started): quick-reference 计数改 (N of M schemas),并把真实参考目录纳入门 (#6530) - #7302
Conversation
…录纳入门 (#6530) 按 maintainer 2026-08-08 的 Option C 裁决实施。 原来的 `(N schemas)` 是**自指**的:N 只与它自己下面那张表比对,与 content/docs/references/{category}/ 的真实面之间没有任何门在看。#6530 实测出 `## Data Protocol (17 schemas)` 之上是一个发布 29(今日 30)个 schema 页的目录, 其中 13 个页在整张页面上没有任何一行 —— 而门一直是绿的,并且永远会是绿的。 13 个标题一律改为 `(N of M schemas)`:N 仍是本表行数,M 是该分类目录实际发布的 参考页数(`.mdx` 去掉 index.mdx)。表继续保持策展子集 —— 一个把 30 个 data 页 全镜像过来的 quick reference 就不 quick 了 —— 但措辞不再读作总数,且 N < M 这个 正常状态从此有门在看。 今日 main 上全部 13 个 M 重新实测(未复用 08-08 的表):只有 data 动了,29 → 30, 因为 e2798fa(#6345 / PR #6910)在 08-09 新增了 driver-turso.mdx。这正是这道门 值得有的证据 —— 两天,一格漂移,原来的自指门看不见。 跨切规则(裁决要求随行): - 每一行都必须有链接。Shared 的 `Connector Auth` 原来是**裸名无链接**,现在指向 /docs/references/integration/connector —— 那个文件在 src/shared/,但 `@objectstack/spec/shared` 并不发布它,它经 `@objectstack/spec/integration` 到达消费者,build-docs.ts 的 `integration:` 注释与 scripts/lib/root-index.ts 都写明了这一点(后者还把 `shared/connector-auth.zod.ts` 这类行点名为缺陷类)。 Key Schemas 一并从未发布的 ConnectorAuthConfig 改为已发布的 ConnectorInstanceAuth。 - 三行指向 references/ 之外的行统一带 `↗` 标记(UI 的 Widget Contract、Kernel 的 Events、Shared 的 Connector Auth)。标记就是 N 与 M 的对账口:带标记的行算进 N, 但不是 M 里的那些页。门双向校验 —— 未标记的行必须指向本小节自己的分类目录下 一个真实存在、且不与别行重复的页;指向别处的行必须带标记;带标记却指回自己 目录的行也红,否则标记会悄悄从覆盖率里减掉一页。 - 分类级策展写在页面上而不是留作默认:新增 `## Categories Without a Section` 一节,写明 references/studio/(3 页)与 references/contracts/(0 页,只剩一个 meta.json)为何没有小节;门同样读这张表,任何分类目录必须要么有小节、要么在 这里被声明,不能两者都是、也不能两者都不是。 门的自测从 9 例扩到 22 例。第 3 例是反空转的那一例:页面内部自洽、只有目录不符, 删掉 M 断言后它实测归零(4 条断言全红),即 #6530 记录的"永远绿"状态。第 18/20 例 对分类级覆盖扫描做同样的反向验证。 Claude-Session: https://claude.ai/code/session_01F8q5J1MQyocgtNspb15fSn Co-authored-by: Claude <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
|
PM 验收:实质 ACCEPT,门禁 HOLD。 05:3xZ 时 27 项检查零 failure,但 下列每一条都是我在 head 重测纪律 —— 派单的硬约束兑现了,而且抓到了真东西派单里禁止复用 08-08 那张测量表。13 个 M 值我逐个重算,全部吻合,其中一个变了: 其余 12 个:ui 16 / kernel 31 / system 37 / ai 11 / api 28 / automation 13 / security 5 / identity 5 / cloud 11 / integration 1 / shared 8 / qa 1,与实测一致。 三处最容易出事的地方,都没出事
表外三行
我自己跑的四次验证反向 A 是关键:它证明这道门看的是真实目录而不是自己,而且真的会拦 CI(退出码 1)。 待办三项 Generated by Claude Code |
|
门禁已全部报到:27 项全 success/skipped,零 failure( dev 报告随后到达,与我上一贴的独立复核逐条吻合,并补上了两件我没做的:
那条被裁决下放给 dev 的规则,我认可裁决说「 另一种写法(N 只数目录内的行 ⇒ 记在这里是因为它是一次有代价的取舍而非顺手决定:两种读法都能自圆其说,dev 把理由同时写进了 PR 正文和脚本头注,后人要推翻它有据可依。 顺带发现按纪律处置
合入后 #6530 收卡清 Generated by Claude Code |
Fixes #6530
按 maintainer 2026-08-08 的 Option C 裁决实施(「接受你的建议」):表继续保持策展子集,但措辞携带真相,且漂移进门。
一、今日
main上重新实测的 13 个 M(未复用 08-08 的表)content/docs/references/是自动生成的,两天里有过合并,所以按调度要求在今日main(397e731a5)上重新按集合实测:一行只有当它链接进该分类目录时才算覆盖了那个页。index.mdx)datauikernelsystemaiapiautomationsecurityidentitycloudintegrationsharedqa无小节的分类:
studio3 页、contracts0 页(目录里只剩一个meta.json)。所有指向目录内的行都指向真实存在的页 —— 今日无死链。data29 → 3008-09 新增了
driver-turso.mdx,data的未覆盖页也从 12 变成 13。两天,一格漂移,而原来的自指门全程报绿 —— 这就是这道门值得有的直接证据。其余 12 个 M 与 08-08 一致。二、页面改了什么
13 个标题一律改为
(N of M schemas),例如## Data Protocol (17 of 30 schemas)。N= 本表行数(原来的自指校验原封不动保留,读者数一遍表格就能验证);M=content/docs/references/{category}/实际发布的参考页数(.mdx去掉index.mdx)。N小于M是正常且被门检查的状态。AI 的 11/11、Integration 与 QA 的 1/1 这三个完整索引照实写成 11 of 11 / 1 of 1,ca602727d那次刻意补全因此被保留成事实而不是巧合。三行指向
references/之外的行统一带↗标记,并把「Connector Auth 裸名无链接」这一条修掉:/docs/protocol/objectui/widget-contract,加↗/docs/kernel/events,加↗,并在 Purpose 里说明references/kernel/把同一面拆成六个events-*页/docs/references/integration/connector,加↗;Key Schemas 从未发布的ConnectorAuthConfig改为已发布的ConnectorInstanceAuth新增
## Categories Without a Section,把分类级策展写在页面上:studio(3 页,Studio 自己的编辑器面,不是 app 声明的协议)与contracts(0 页)。我选定的规则(N、M 与
↗的对账口)调度要求我自己判定「指向
references/之外的行如何与 M 相互作用」,并把规则写进 PR 与脚本注释。选定的是:理由:另一种写法(
N只数指向本目录的行,UI 写成10 of 16)能让「N of M」成为字面精确的覆盖率陈述,但代价是读者数一遍表格得到 11、标题却写 10 —— 那恰恰是本单要消灭的那种「标题里的数字对不上眼前的东西」,只是方向反过来。而且裁决给的样例17 of 29中的 17 就是行数。所以保留「N = 行数」,把精度交给↗标记 + 顶部图例,并让门双向强制这个标记(见下)。Connector Auth的落点不是随手挑的,仓内有两处白纸黑字:packages/spec/scripts/build-docs.ts的integration:段注释:「connector-authremoved at build-docs.ts 的 schema→页面索引按「裸名字」全局建表,同名跨 category 的 schema 会被归到错误的页面 #4696 ——integration/has no such file; the fiveConnectorInstance*Authschemas reach this entry point throughintegration/connector.zod.ts, and are documented there now.」packages/spec/scripts/lib/root-index.ts把「ashared/connector-auth.zod.tsrow for a file@objectstack/spec/shareddoes not publish」直接列为一类缺陷。即:该文件在
src/shared/,但 shared 桶不发布它(shared/index.ts没有它的 barrel 行),它经connector.zod.ts再导出到@objectstack/spec/integration,参考文档就落在 Connector 页上(connector.mdx里ConnectorInstanceAuth等五节实测存在)。所以这一行既不是「等一个待写的新页」,也不该留在 Shared 里当裸名。三、门改了什么
scripts/check-quick-reference-counts.mjs保留原有全部检查,新增:content/docs/references/{category}/的真实页数比对。/docs/references/{category}/。这让 [finding]quick-reference.mdx的协议索引与packages/spec现状漂移:三处小节计数不符 + connector-auth 有 schema 无参考页 #6319 的原始缺陷(行迁移到了错误的小节)从「靠计数发现」升级为「靠链接发现」—— 迁移后的行会让小节指向两个分类,门点名两个。↗;带↗却指回自己目录的行也红(否则标记会悄悄从覆盖率里减掉一页)。references/下每个分类目录必须要么有小节、要么在## Categories Without a Section里被声明(且声明的页数与真实页数一致)—— 不能两者都是,也不能两者都不是;声明了一个不存在的目录同样红。(N schemas)拼法不再被当作计数标题(会落进「protocol 标题却没有计数」的结构错误),所以本次迁移无法被一个标题一个标题地悄悄回退。自测从 9 例扩到 22 例。
四、反向验证(反空转,方向事先预测:红)
裁决要求「至少一条新用例在 M 断言被删掉时变红」。删掉
checkPage里declaredTotal !== pages.length那一段后:第 3 例的构造正是「页面内部完全自洽、只有目录不符」(
(3 of 9 schemas),catalog 里 4 页),所以断言被删后它实测归零 —— 就是 #6530 记录的那个「永远绿」状态。方向与预测一致。同样对分类级覆盖扫描做了一次(把那段
for循环短路):另外把新门跑在改动前的页面上(
git show origin/main:...),得到 15 条 finding(13 个旧标题 + 「没有任何计数小节」+「缺 Categories Without a Section 块」),确认迁移是被强制的而不是只被建议的。五、跑过的命令(逐字)
仓内断链门是
check-links.yml(lychee--offline,advisory lane)。新增的/docs/references/studio与/docs/references/integration/connector与本页既有链接同形(本页 Search Tips 已有/docs/references/data这类目录式链接),lychee.toml里include_fragments = "none",所以新增的#categories-without-a-section锚点不参与解析。六、Changeset
不加 changeset,改用
skip-changeset标签。 本 PR 只动content/docs/与根scripts/,两者都不随任何已发布包出货。仓内先例一致:本门的创建 PR #6357(bbd2d8d3d,改动.github/workflows/lint.yml+content/docs/+package.json+scripts/)与同族的 #6519(ebc2baf16,只改本页)都没有 changeset。Generated by Claude Code