Skip to content

docs(spec): 补齐 preserveAudit 的 .describe(),并按实测形态重写 RLS using 的描述 (#6881, #6762) - #6918

Merged
os-project-manager merged 4 commits into
mainfrom
claude/issue-6881-6762-describe-sweep
Aug 9, 2026
Merged

docs(spec): 补齐 preserveAudit 的 .describe(),并按实测形态重写 RLS using 的描述 (#6881, #6762)#6918
os-project-manager merged 4 commits into
mainfrom
claude/issue-6881-6762-describe-sweep

Conversation

@os-project-manager

@os-project-manager os-project-manager commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

Fixes #6881
Fixes #6762

Paired 「spec-surface sweep」卡(#6243 模型) —— 两条同类问题:已发布的 .describe() 说明不足
属性上方的 TSDoc 块不进生成器,只有 .describe() 会进 content/docs/references/**,所以这两处直接决定参考文档里那一格渲染出什么。

按条目 checklist 复核,两条彼此独立、可分别裁决。


条目 1 —— #6881ExecutionContextSchema.preserveAudit 没有 .describe()

锚点(实测)packages/spec/src/kernel/execution-context.zod.ts:356(卡上写 ~:356,实测一致)

口径对齐的两处已合入站点(读过,不另造第三种拼法)

站点 借用的词汇
packages/spec/src/data/field.zod.tsFieldSchema.readonly(PR #6823 「Exempt on the UPDATE path ONLY」、「On INSERT the exemption does NOT apply (#6640)」、whitelist = 审计/时间戳族 + 作者声明的业务 readonly 字段
content/docs/protocol/objectql/security.mdx 的 callout(同一 PR #6823 「CREATE is stripped earlier, at the DataProtocol ingress,whose only exemption is context.isSystem」、「the server logs a WARN … the strip still applies」

即落到描述里的规则:豁免仅在 UPDATE 路径成立;INSERT 侧只认 context.isSystem,非 system 的 create 请求即便携带 preserveAudit,字段仍被剥离并记 WARN。


条目 2 —— #6762rls.zod.ts using.describe() 既 under-promise 又指向正在退役的方言

锚点(实测)packages/spec/src/security/rls.zod.ts:358(打标记后现为 :364

  • Before —— 「One of the four compiler-supported forms: field = current_user.< prop >, field = 'literal', field IN (current_user.< array >), or 1 = 1.」两个方向都不准:比实际编译的,且四种拼写全是 SQL 方言(ADR-0058 D1 定其为过渡态,sqlPredicateToCel@deprecated)。
  • After —— 改为按编译器实际下推的形态描述,用规范 CEL;SQL 拼写降格为「过渡桥接」而非定义。

须实测:门实际接受什么(不照抄卡上的清单)

我自己跑了 isSupportedRlsExpression实测 ENFORCES(远宽于「四种」):

形态 样例 结果
== 对上下文值 / 字面量 organization_id == current_user.organization_id / status == 'published' ENFORCES
!= region != null ENFORCES
< <= > >= amount > 100amount <= 100 ENFORCES
incurrent_user.* 数组 assigned_to_id in current_user.team_member_ids ENFORCES
in内联字面量列表 status in ['draft', 'pending'] ENFORCES
&& / || a == 1 && b == 2a == 1 || b == 2 ENFORCES
裸 allow-all true ENFORCES
传统 SQL(经桥接) ===INin1 = 1 ENFORCES

实测 FAILS CLOSED:SQL 的 AND / OR / NOT IN / IS NULL / LIKE、算术 amount + 1 > 2、子查询、跨对象 record.a.b == 1、裸真值字段 is_active、取反 !is_active、空串。

没有换一个新的固定计数。 「四」换成「八」是同一个缺陷。描述改为讲形态(哪些算子、可否组合),把「数目」这件事整个去掉;pin 里还有一条断言明确禁止再出现固定计数。

|| 与内联字面量列表这两项是本次实测的增量发现(issue 正文只提到 &&),已写进描述。
CEL 拼写与同文件 PR #6729 落下的 check @examplestatus in ['draft', 'pending'])一致。


Lane admission —— acceptance 逐字节不变

domain:spec-surface.describe() 不参与 parsing;无任何 key / 类型 / 枚举成员 / refinement / 默认值移动。证据gen:schema 之后

$ git status --porcelain packages/spec/authorable-surface packages/spec/json-schema.manifest packages/spec/authorable-defaults packages/spec/authorable-surface.base.json
  (空 —— 零 diff)
🔒 authorable-defaults/ verified against upstream — 1308 default(s) unchanged (#4666).

packages/spec/json-schema/.gitignore:61 的构建产物,不进版本库;已确认其磁盘内容确实随本次改动重生成。)

生成产物(两条同乘一次重生成)

pnpm --filter @objectstack/spec gen:docs恰好两个受版本控制的文件变化,各一行,无附带 churn:

 content/docs/references/kernel/execution-context.mdx | 2 +-
 content/docs/references/security/rls.mdx             | 2 +-

均为生成器产出,未手改;content/docs/releases/ 未触碰。

验证 —— 方向在跑之前先预测

两条都是正向内容断言,pin 读回 schema 上的 description 并断言其必须承载的实质。

反向臂 预测 实测
A. 把原描述原样放回git checkout origin/main -- 两个 zod 文件) RED RED,13/13。条目 1 的 7 条全部对 '' 失败(正是「空单元格」缺陷本身);条目 2 的 6 条对旧 four-forms 串失败,含「不得再出现固定计数」那条抓到字面量 four
B. anti-vacuity:两处都设为 .describe('') RED,且须由非空臂抓到 RED,13 failed / 46 passed。两条目的「is present and non-empty」臂各自触发;而条目 2 的「does not re-close the set」臂出现在失败列表里 —— 它在 ''空洞通过,这正是非空臂存在的理由。

按 idiom 而非逐字断言:改写自由(用 toMatch 交替式),丢失实质不自由。
pin 覆盖检索时同时搜了转义正则拼法toMatch(/…/))而不只字面量(#6854 的教训)—— 两处此前均无既有 pin。

门的行为半边不重复 pin:packages/formula/src/rls-predicate.test.ts:46-67 已经钉住 isSupportedRlsExpression 的红/绿线,本 PR 只钉「散文与之相符」,避免同一事实两处钉。

结果

  • pnpm --filter @objectstack/spec test348 files / 8967 tests passed(合入 origin/main 之后、以及加标记之后各复跑一次)
  • pnpm --filter @objectstack/spec typecheck → 通过
  • pnpm lintcheck:generatedcheck:docscheck:authorable-surfacecheck:api-surfacecheck:spec-changescheck:upgrade-guidecheck:skill-refscheck:doc-authoringcheck:docs-audit-scopecheck:adr-anchorscheck:nul-bytes → 全部 exit 0
  • test-typecheck-debt.json 账本(@ts-expect-error 退役 pin 在 packages/spec 里是幽灵检查:tsconfig 把 **/*.test.ts 排除出唯一的 tsc --noEmit #5286 ratchet):前后均为 58 file(s) / 266 error(s),文件 sha256 b5e1c38e… 逐字节未变 —— 两处新 pin 不带 tsc 错误。

范围 —— 刻意留在范围外的相邻问题,已立卡 #6919

⛔ 只有这两条修复,无搭车。相邻问题已作为正式 GitHub issue 立卡:#6919(未指派;finding + domain:spec-surface,无 pm:queue —— 观察类归档,不进派发池)。不是 PR 评论:合入后评论就不再是任何人会看的地方。

#6919 记录的是同一句话的两处副本,其中一处是我在复核期间新实测到的,且已发布

位置 是否进生成器 现状
rls.zod.ts 属性级 TSDoc(:296-354 ❌ 不进(gen:docs 只渲染 .describe() 与模块级 docblock) 「Exactly four forms compile」「no support for AND/OR/NOT、= 以外的比较算子」
rls.zod.ts:79 模块级 docblock —— 逐字渲染到 content/docs/references/security/rls.mdx:79 「A small, fixed expression grammar (equality, set-membership, always-true)」

第二行是本 PR 没有动、但值得分诊优先看的一处:合入后 rls.mdx 同一张渲染页上会同时有 :79 的旧三项说法和 :174 已改正的 using 行 —— 自相矛盾落在已发布面上。之所以仍未动它:派发卡把条目 2 限定为 .describe() 字符串,改它会额外改动一个已发布页面、超出本 PR「恰好两文件各一行」的证据面。按纪律记录、交分诊,不自行扩面。

本 PR 就近做了一件事:给 TSDoc 那段打 ⚠️ STALE 标记,不是重写。 改之前两处一致地错,改之后会互相矛盾 —— 而读源码者(常是 AI,ADR-0033)先撞上的是那段更长、更像权威的语法规范。标记把「两条互相矛盾的断言」降级为「一条断言 + 一句诚实警告」,指向 #6919,一行成本,不破坏 per-item 复核模型。重写那 60 行语法规范散文(连同 5 条 SQL 方言 @example)是 #6919 自己的卡。

实测确认标记不进生成器:加入后 content/docs/references/** 零 diff —— 这也再次印证了 TSDoc 那半是观察类。

Changeset:.changeset/describe-preserve-audit-and-rls-using.md@objectstack/spec: patch)。


🤖 Generated with Claude Code

https://claude.ai/code/session_018ffcE95NaMJcL9XJ9VDYgk

claude added 2 commits August 9, 2026 04:08
, #6762)

两条同类的 spec-surface sweep:已发布的 `.describe()` 说明不足。属性上方的
TSDoc 块不进生成器,只有 `.describe()` 会进 `content/docs/references/**`,
所以这两处直接决定参考文档里那一格渲染出什么。纯文本改动 —— 没有 key、
类型、枚举成员、refinement 或默认值变动,acceptance surface 逐字节不变
(authorable-surface/、json-schema.manifest/、authorable-defaults/ 三者
 gen:schema 后零 diff)。

#6881 —— ExecutionContextSchema.preserveAudit
此前是裸声明,语义只写在上方块注释里,于是 references/kernel/
execution-context.mdx:69 的描述列渲染为空。现在补上描述,并按 #6640 收窄
后的契约措辞,与已合入的两处(FieldSchema.readonly、protocol/objectql/
security.mdx 的 callout,均出自 PR #6823)保持同一口径:豁免仅在 UPDATE
路径成立;INSERT 侧在 DataProtocol ingress 更早剥离,只认 context.isSystem,
非 system 的 create 即便携带 preserveAudit 仍被剥离并记 WARN。

#6762 —— RowLevelSecurityPolicySchema.using
此前宣称「四种编译器支持的形式之一」且四种拼写全是 SQL 方言,两个方向都不准:
实测 isSupportedRlsExpression 之下 `!=`/`<`/`<=`/`>`/`>=`、对内联字面量列表
的 `in`、`&&`、`||` 与裸 `true` 都真正生效(比宣称的宽);而 ADR-0058 D1 定
CEL 为规范方言、sqlPredicateToCel 标 @deprecated(指向正在退役的方言)。
改为按能被下推的形态描述 —— 不重新数一个固定数目,换一个同样错的计数是同一
个缺陷 —— 并把 SQL 拼写降格为过渡桥接(`=`→`==`、`IN`→`in` 仍接受;SQL 的
AND/OR/NOT IN/IS NULL/LIKE 不在桥接内,fail-closed)。

两处各加了一条读回 description 的 pin,按 idiom 而非逐字断言(改写自由,
丢失实质不自由),并各带一条 anti-vacuity 非空断言。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ffcE95NaMJcL9XJ9VDYgk
@vercel

vercel Bot commented Aug 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 9, 2026 5:18am

Request Review

@github-actions github-actions Bot added the size/m label Aug 9, 2026
@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec.

113 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/agents.mdx (via @objectstack/spec)
  • content/docs/ai/skills-reference.mdx (via @objectstack/spec)
  • content/docs/ai/skills.mdx (via @objectstack/spec)
  • content/docs/api/client-sdk.mdx (via @objectstack/spec)
  • content/docs/api/environment-routing.mdx (via @objectstack/spec)
  • content/docs/api/error-catalog.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-client.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-server.mdx (via @objectstack/spec)
  • content/docs/api/index.mdx (via @objectstack/spec)
  • content/docs/automation/approvals.mdx (via @objectstack/spec)
  • content/docs/automation/connectors.mdx (via @objectstack/spec)
  • content/docs/automation/flows.mdx (via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx (via packages/spec)
  • content/docs/automation/hooks.mdx (via @objectstack/spec)
  • content/docs/automation/index.mdx (via @objectstack/spec)
  • content/docs/automation/webhooks.mdx (via @objectstack/spec)
  • content/docs/automation/workflows.mdx (via @objectstack/spec)
  • content/docs/concepts/architecture.mdx (via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx (via packages/spec)
  • content/docs/concepts/index.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-driven.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-lifecycle.mdx (via packages/spec)
  • content/docs/concepts/north-star.mdx (via @objectstack/spec)
  • content/docs/data-modeling/analytics.mdx (via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx (via @objectstack/spec)
  • content/docs/data-modeling/external-datasources.mdx (via @objectstack/spec)
  • content/docs/data-modeling/field-types.mdx (via @objectstack/spec)
  • content/docs/data-modeling/fields.mdx (via @objectstack/spec)
  • content/docs/data-modeling/formulas.mdx (via @objectstack/spec)
  • content/docs/data-modeling/index.mdx (via @objectstack/spec)
  • content/docs/data-modeling/objects.mdx (via @objectstack/spec)
  • content/docs/data-modeling/queries.mdx (via @objectstack/spec)
  • content/docs/data-modeling/schema-design.mdx (via @objectstack/spec)
  • content/docs/data-modeling/seed-data.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation-rules.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation.mdx (via @objectstack/spec)
  • content/docs/deployment/cli.mdx (via @objectstack/spec)
  • content/docs/deployment/tenancy-modes.mdx (via @objectstack/spec)
  • content/docs/deployment/troubleshooting.mdx (via @objectstack/spec)
  • content/docs/deployment/validating-metadata.mdx (via @objectstack/spec)
  • content/docs/getting-started/build-with-claude-code.mdx (via @objectstack/spec)
  • content/docs/getting-started/common-patterns.mdx (via @objectstack/spec)
  • content/docs/getting-started/examples.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-reference.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx (via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx (via @objectstack/spec)
  • content/docs/kernel/cluster.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/auth-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/cache-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/data-engine.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/index.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/metadata-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/storage-service.mdx (via @objectstack/spec)
  • content/docs/kernel/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/data-service.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/email-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/examples.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/queue-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/sharing-service.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/sms-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/storage-service.mdx (via @objectstack/spec)
  • content/docs/kernel/services-checklist.mdx (via @objectstack/spec)
  • content/docs/kernel/services.mdx (via @objectstack/spec)
  • content/docs/permissions/authorization.mdx (via @objectstack/spec)
  • content/docs/permissions/permission-sets.mdx (via @objectstack/spec)
  • content/docs/permissions/permissions-matrix.mdx (via @objectstack/spec)
  • content/docs/permissions/positions.mdx (via @objectstack/spec)
  • content/docs/permissions/rls.mdx (via @objectstack/spec)
  • content/docs/permissions/sharing-rules.mdx (via @objectstack/spec)
  • content/docs/permissions/system-context.mdx (via packages/spec)
  • content/docs/plugins/adding-a-metadata-type.mdx (via @objectstack/spec)
  • content/docs/plugins/development.mdx (via @objectstack/spec)
  • content/docs/plugins/index.mdx (via @objectstack/spec)
  • content/docs/plugins/packages.mdx (via @objectstack/spec)
  • content/docs/protocol/backward-compatibility.mdx (via @objectstack/spec)
  • content/docs/protocol/diagram.mdx (via packages/spec)
  • content/docs/protocol/kernel/config-resolution.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/http-protocol.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/index.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx (via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/query-syntax.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/schema.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/security.mdx (via packages/spec)
  • content/docs/protocol/objectql/state-machine.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/actions.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/concept.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/layout-dsl.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/record-alert.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx (via @objectstack/spec)
  • content/docs/releases/implementation-status.mdx (via @objectstack/spec)
  • content/docs/releases/index.mdx (via @objectstack/spec)
  • content/docs/releases/v12.mdx (via @objectstack/spec)
  • content/docs/releases/v13.mdx (via @objectstack/spec)
  • content/docs/releases/v16.mdx (via @objectstack/spec)
  • content/docs/releases/v17.mdx (via @objectstack/spec)
  • content/docs/releases/v9.mdx (via @objectstack/spec)
  • content/docs/ui/actions.mdx (via @objectstack/spec)
  • content/docs/ui/apps.mdx (via @objectstack/spec)
  • content/docs/ui/create-vs-edit-form.mdx (via @objectstack/spec)
  • content/docs/ui/dashboards.mdx (via @objectstack/spec)
  • content/docs/ui/field-grouping-and-order.mdx (via @objectstack/spec)
  • content/docs/ui/forms.mdx (via @objectstack/spec)
  • content/docs/ui/index.mdx (via @objectstack/spec)
  • content/docs/ui/public-data-collection.mdx (via @objectstack/spec)
  • content/docs/ui/setup-app.mdx (via @objectstack/spec)
  • content/docs/ui/translations.mdx (via @objectstack/spec)
  • content/docs/ui/views.mdx (via @objectstack/spec)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

claude added 2 commits August 9, 2026 04:35
PR #6918 修好了 `using` 的 `.describe()`,但同属性上方 45 行处的 TSDoc 块
(`:313`「Exactly four forms compile」)仍是旧说法。改之前两处一致地错,改
之后两处互相矛盾 —— 而读源码的人(常常是 AI,ADR-0033)先撞上的是那段更长、
更像权威的语法规范,没有任何信号提示下方那一行 `.describe()` 才是当前事实。

这里只加标记,不重写:重写那 60 行语法规范散文(连同 5 条 SQL 方言的
`@example`)是 #6919 自己的卡,塞进这张两条目 sweep 卡会破坏其 per-item
复核模型。标记把「两条互相矛盾的断言」降级为「一条断言 + 一句诚实警告」,
直到真正的修复落地。

该块不进生成器(gen:docs 只渲染 `.describe()` 与模块级 docblock),已实测
确认:加这段标记后 content/docs/references/** 零 diff。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ffcE95NaMJcL9XJ9VDYgk
PM 复核裁定:该行与属性级 TSDoc 性质不同,应并入本 PR。

`packages/spec/src/security/rls.zod.ts:79` 的
「A small, fixed expression grammar (equality, set-membership, always-true)」
是**模块级** docblock,会逐字渲染到 content/docs/references/security/rls.mdx:79
—— 与属性级 TSDoc(不进生成器,留给 #6919)不同,它是已发布面。

不改的话,本 PR 合入后同一张渲染页会自相矛盾:`:79` 说三项,`:174` 是按实测
改正的 using 行,而读者先撞上 `:79`。

改法与 `.describe()` 同一口径:讲能被下推的形态、canonical CEL,⛔ 不换一个
新的固定计数(「三」换「八」是同一个缺陷)。实测依据:比较算子全套、对
`current_user.*` 数组与内联字面量列表的 `in`、`&&`/`||` 均真正下推;其余
fail-closed。

现在 rls.mdx 相对 origin/main 恰好两行变化,且页内无残留旧说法。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018ffcE95NaMJcL9XJ9VDYgk
@os-project-manager
os-project-manager marked this pull request as ready for review August 9, 2026 05:40
@os-project-manager
os-project-manager added this pull request to the merge queue Aug 9, 2026
@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

⛔ merge queue 构建失败 — 先分诊,再决定要不要重排

队列构建 31297338477 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集),
所以失败的测试可能在本 PR 没碰过的包里 —— 那不是重排能修的。每次盲目重排都会让排在后面的所有 PR 重建一轮。

失败的 job(日志抽取,best effort):

  • Test Core (3/3) — 失败步骤: Run this shard's tests

    �[41m�[1m FAIL �[22m�[49m src/commands/database-driver-allowlist.pin.test.ts�[2m > �[22m#6860 — --database-driver allowlist agrees with resolveStorageDefinition�[2m > �[22mos start�[2m > �[22moffers e
    �[41m�[1m FAIL �[22m�[49m src/commands/database-driver-allowlist.pin.test.ts�[2m > �[22m#6860 — --database-driver allowlist agrees with resolveStorageDefinition�[2m > �[22mos dev�[2m > �[22moffers eve
    �[41m�[1m FAIL �[22m�[49m src/commands/database-driver-allowlist.pin.test.ts�[2m > �[22m#6860 — --database-driver allowlist agrees with resolveStorageDefinition�[2m > �[22mos start�[2m > �[22mparses e
    �[41m�[1m FAIL �[22m�[49m src/commands/database-driver-allowlist.pin.test.ts�[2m > �[22m#6860 — --database-driver allowlist agrees with resolveStorageDefinition�[2m > �[22mos dev�[2m > �[22mparses eve
    

历史信号:

  • 本 PR 过去 24h 无队列失败记录(首次)。
  • 过去 24h 队列共有 9 个失败构建(不含本次)。

分诊清单:

  1. 失败测试在本 PR 改动的包里 → 真回归,修 PR。
  2. 失败测试与本 PR 无关 → 在其他 PR 的同类评论里搜同名测试;出现过 ⇒ flaky 实锤,开 issue 修/隔离那条测试。修好前重排只会再烧一轮全队列。
  3. 两者都不是 → 可能与同组 PR 语义冲突;等前面的 PR 落地或失败出队后再重排一次即可,不要连续重排。

Generated by Claude Code · merge-queue-triage workflow (#4859)

Copy link
Copy Markdown
Collaborator Author

队列失败分诊 —— 与本 PR 无关,⛔ 暂不重排。完整分析在 #6935同类评论

简述,因为这两张是同一件事的两个观测点:

本 PR 只改 packages/spec 的两处 .describe() 与一处模块 docblock,外加两条 pin 与生成产物。失败的是 packages/cli/src/commands/database-driver-allowlist.pin.test.ts,够不到。

决定性的一点:本席的另一张 PR #6935 在一次独立的队列构建里红在完全相同的四条断言上(本 PR build 31297338477,#693531297316580)。两张 PR 文件面完全不同(#6935 折的是 ai/tool.zod.ts / data/object.zod.ts 的错误映射),唯一共同点是都不碰 packages/cli

两次独立构建、同一组失败、两个无关的 diff ⇒ 排除「某一张 PR 造成的回归」。

因此不重排: 两张都中,说明触发条件与 diff 无关,重排只会再烧一轮全队列然后红在同一处。对照今晚的 #6847 —— 那次重排一次即过,但判据是同批的 #6846 跑同一套全量套件并合并成功,存在绿的对照;这次没有。

本席正在独立探针里跑该钉在干净 main 上的结论,以区分「main 已坏、影响所有排队 PR」与「同批语义冲突」。拿到读数前不动,拿到后若是前者会立卡并通知维护者(归 domain:cli)。


Generated by Claude Code

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

Labels

documentation Improvements or additions to documentation size/m tests tooling

Projects

None yet

2 participants