Skip to content

docs(spec): 重测并改写 src/data 四处过期的 post-#5702/#5710 状态句(#6993) - #7054

Merged
os-project-manager merged 1 commit into
mainfrom
claude/issue-6993-expired-status-census
Aug 9, 2026
Merged

docs(spec): 重测并改写 src/data 四处过期的 post-#5702/#5710 状态句(#6993)#7054
os-project-manager merged 1 commit into
mainfrom
claude/issue-6993-expired-status-census

Conversation

@os-project-manager

Copy link
Copy Markdown
Collaborator

Fixes #6993

四处站点均为 #6947 命名的失效类:状态句把某个未来 issue 写成缺口,issue 落地后没人回来改句子。本 PR 每个替换数字都来自本分支上执行的测量(E20:执行,不 grep —— driver-sqlite-wasm 继承编译器、自身零 case 臂,任何文本扫描都会少算),卡片上标注「待重测」的数字一个都没有照抄。纯注释/文本改动,行为零变化。

普查 (a):$icontains + $contains 族记分板

命令:每包一个临时 vitest probe(probe-6993.census.test.ts,已删除,未随 PR 提交),fixture 两行 {id:'1',name:'ACME CORP'} / {id:'2',name:'acme corp'},在场对照 $eq:'acme corp'['2'],缺席对照 $contains:'zzz'[](所有面对照全过);完整 JSONL 输出 68 行,附于 dev 报告。

$icontains:'acme' $contains:'acme' $contains:'ACME'
driver-sql(better-sqlite3 :memory:) ['1','2'] ['2'](精确) ['1']
driver-sqlite-wasm(sql.js 引擎,继承) ['1','2'] ['2'] ['1']
driver-turso local ['1','2'] ['2'] ['1']
driver-turso remote(stub 传输,独立编译器) ['1','2'] ['2'] ['1']
driver-memory 查询路径 INVALID_FILTER/400 ['1','2'](全 Unicode 折叠) ['1','2']
driver-memory 参考匹配器 INVALID_FILTER/400 敏感(false/true)
driver-mongodb translateFilter INVALID_FILTER/400 降为 $regex+$options:'i'(硬编码仍在)
objectql having 拒(裸 Error,见普查 c) 敏感
formula matchesFilterCondition 静默 false,非拒收(已评论至 #6520) 敏感
service-analytics compileScopedFilterToSql READ_SCOPE_COMPILE_FAILED/500 fail-closed 编译为 LIKE ? ESCAPE ?(PG 上精确)

→ 五驱动中三个应答 $icontains;$contains 族在 SQL 三族精确、memory 查询路径 + mongodb 仍折叠(#6682)。

普查 (b):FILTER_TEXT_CASES 覆盖与 DEBT 行

命令:node scripts/check-driver-conformance.mjs(判据 = 各驱动 suite import 整张 case-set):FILTER_TEXT 列 ok = driver-sql / driver-sqlite-wasm / driver-turso;DEBT = driver-memory、driver-mongodb(两行,均指 #6682);合计 36 covered / 4 DEBT(其中 FILTER_TEXT 2 行)/ 0 exempt。改写正文按 E17 指向该 gate 台账(它对 import 双向 RECONCILED),不再手写「N of five」。

普查 (c):五面 $regex 拒收审计

对每面执行 { $regex:'ac.*' }{ $regex,$options }、悬空 { $options:'i' },读 code/status,并用 RETIRED_FILTER_OPERATORS[op].why 做全文包含比对:

code/status why 全文逐字
driver-sql INVALID_FILTER/400 是($regex 与 $options 各自的 why 均逐字)
driver-sqlite-wasm(继承) INVALID_FILTER/400
driver-turso local / remote INVALID_FILTER/400 是(remote 为独立 emitter,前缀 [RemoteTransport])
driver-memory INVALID_FILTER/400
driver-mongodb INVALID_FILTER/400
objectql having undefined / undefined(裸 Error)

→ 五面全部逐字打印处方;信封半边四个驱动面齐,having 缺 —— 超出本卡围栏(行为改动),已立 #7047,站点 3 的改写如实点名。

四站点改写(E22:日期化再验证 + 显式证伪标记)

  1. filter-text-conformance.ts Status 节:旧「NO backend answers this table yet / implemented by nobody / two of five / every driver carries a DEBT row」→ 引述旧句 + 「was true in the spec: $regex 按 ADR-0049 退役 + $icontains 入算子词表与 FILTER_LOGIC_CASES(#4706 裁决 B 案 · 契约半边,先行) #5701 era and has since been falsified by drivers: $regex 响亮拒收 + $icontains 各后端实现(#4706 裁决 B 案 · 驱动半边) #5702 (closed 2026-08-08) and drivers(sql family): 文本算子的大小写折叠是「方言的」而非「契约的」—— $contains 在 SQLite 过折叠、$icontains 在 PG/MySQL 过折叠 #6518 (re-verified 2026-08 … [finding] Three more expired post-#5702/#5710 status claims in packages/spec/src/data — including "$icontains … implemented by nobody" in the very file #6947's fix points @see at #6993)」,记分指向 conformance 台账;$regex 顺序约束段改为已发生的历史(plugin-auth: better-auth 的 contains 被译成裸 $regex,用户输入当正则求值 —— 且是 $regex 退役唯一挡路的生产者 #5710 已翻转生产者);@see 标签同步(5702 landed;补 6520/6682)。
  2. filter-text-conformance.test.ts 头部:旧「a standard no backend answers yet … nothing executes it」→ 「landed as … That premise was true when this file was written and has since been falsified … (re-verified 2026-08, [finding] Three more expired post-#5702/#5710 status claims in packages/spec/src/data — including "$icontains … implemented by nobody" in the very file #6947's fix points @see at #6993)」;参考求值器的论证保留(它现在仍是驱动运行之间守表的 oracle)。
  3. filter.zod.ts RETIRED_FILTER_OPERATORS 退役块:旧「Wiring them to it is drivers: $regex 响亮拒收 + $icontains 各后端实现(#4706 裁决 B 案 · 驱动半边) #5702 … Hard order: plugin-auth: better-auth 的 contains 被译成裸 $regex,用户输入当正则求值 —— 且是 $regex 退役唯一挡路的生产者 #5710 flips the producer, then drivers: $regex 响亮拒收 + $icontains 各后端实现(#4706 裁决 B 案 · 驱动半边) #5702 …」→ 「Both gates have fired since … shipped history, not pending advice」+ 普查 (c) 的逐面结果(四驱动面信封齐、having 裸 Error → objectql having 拒收 retired/unknown 算子时缺 ADR-0112 信封(裸 Error,无 code/status)—— 五个拒收面中唯一一个 #7047)。
  4. filter-text-conformance.ts $contains 族 case 注释(卡片写的 filter.zod.ts:227,实际在本文件 :227 —— 报告中已更正锚点):归属改 drivers(memory, mongodb): the $contains family still folds case — the last two backends left on the wrong side of #4706 Q2 = A #6682,事实保留 —— mongo 的 $options:'i' 折叠仍在(执行 translateFilter 验证,见表 a)。

披露的最小扩展(实施前已评论在 #6993):同文件两条 case note: 与改写正文直接矛盾,一并修正 —— 「On SQLite/turso today LIKE folds ASCII and returns both」(#6518 后为假)与「#5710 flips that producer BEFORE …」(改过去时)。仅 note 文本;filter/expected/mustMention/code 未动,pin 扫描(字面 + toMatch(/…/) 两种拼法,#6854)确认无测试钉住旧句。

渲染输入核查(逐站点,实测)

grep -rln "RETIRED_FILTER_OPERATORS|Hard order|5710 flips|implemented by nobody|no backend answers" content/docs/ → 唯一命中 content/docs/protocol/objectql/query-syntax.mdx(手写页,仅提及常量名,未引用任何过期句)。四站点均不落入 content/docs/references/**(站点 2 为测试文件、站点 4 为行内注释;站点 1/3 文本在生成树中零命中),check:docs 与全部生成物 gate 复核通过 → 无需再生成

验证

  • pnpm --filter @objectstack/spec build && check:generated10/10 生成物 gate 全绿(authorable-surface/**json-schema.manifest/**authorable-defaults/.base.jsonapi-surface/content/docs/references/** 逐字节不变 —— 验收围栏)。
  • pnpm --filter @objectstack/spec test(maxWorkers=2)→ 351 文件 / 9131 测试全过
  • pnpm --filter @objectstack/spec typecheck → OK;test-typecheck-debt.json 前后 diff 为空(58 files / 266 errors,不变)。
  • node scripts/check-nul-bytes.mjs → OK;被改文件控制字节自扫 clean。
  • 反向验证方向,先判后测:预测 —— 纯注释改动,正反两个方向都不该有红(fix(spec): stop teaching the retired ETL layer as a live retry surface in flow.zod.ts (#6630, part 2) #6753:如实说明);实测一致 —— 改动前后同套断言全绿,证据是上面三张普查表与 pin 扫描,不是某个翻红的测试。

范围外产出

Changeset:.changeset/filter-text-status-claims-remeasured.md(@objectstack/spec: patch)。

🤖 Generated with Claude Code

https://claude.ai/code/session_018ffcE95NaMJcL9XJ9VDYgk


Generated by Claude Code

…us claims (#6993)

Each of the four sites named a future issue as the gap; the issue landed;
nothing related the two (the #6947 drift class). Every replacement number
comes from a measurement executed on this branch — the five-driver /
auxiliary-face scoreboard probes, a fresh run of
scripts/check-driver-conformance.mjs, and a five-face $regex refusal audit —
never from the card's own (explicitly to-be-re-measured) numbers.

Sites, all prose-only:
- filter-text-conformance.ts Status section: "implemented by nobody" /
  "two of five" / "every driver carries a DEBT row" → measured post-#5702/
  #6518 state, wired to the gate-maintained ledger instead of hand counts.
- filter-text-conformance.test.ts header: "no backend answers yet" →
  falsified with date stamp; the reference-evaluator argument kept.
- filter.zod.ts $regex retirement block: the "hard order" future plan →
  shipped history, plus the measured per-face envelope census (#7047 for
  the one open half).
- filter-text-conformance.ts $contains-family comment: attribution moved
  from #5702 to #6682; mongo's $options:'i' fold verified still present.

Two same-file case notes contradicting the corrected sites were updated with
them (disclosed on #6993 before implementing). Behaviour untouched: no
operator added, no refusal changed, no assertion weakened; all 10 generated
artifacts verified byte-identical.

Co-Authored-By: Claude Fable 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 11:55am

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.

106 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/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)

7 release-owned page(s) also reference the affected code. These are read-only:

  • 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/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

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.

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 protocol:data size/m tests tooling

Projects

None yet

2 participants