Skip to content

docs(audits): archive eleven closed 2026-06 liveness audits, with the spec ledger notes that cite them - #27280

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-ei9ss4
Oct 28, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-ei9ss4

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Yibo Wang · project thread
Fixes #26257

Claim: 6470176009
Clause-②: no
Metadata-protocol: none

The fuller arm of the card, as the claim scopes it: the 11 closed 2026-06 property-liveness audits whose every citation can be rewritten move to docs/audits/archive/2026-06/, with each citation rewritten. Only path text inside notes and docs moves. No liveness status, evidence row, schema, accept set or export changes.

维护者速读

What changes

  • Moved (git mv, nothing deleted), 11 files into docs/audits/archive/2026-06/: 2026-06-{action,agent,dashboard,field,flow,hook,object,report,skill,tool,view}schema-property-liveness.md. None of them has an outbound relative link, so no link inside them needed re-rooting.
  • @objectstack/spec, liveness/*.json. The _note of action, agent, dashboard, field, flow, hook, object, report, skill, tool and view names docs/audits/archive/2026-06/... instead of docs/audits/.... One line in each file.
  • packages/spec/liveness/README.md L7. The docs/audits/2026-06-*-property-liveness.md glob now names the archive and says the ones still cited from an ADR or a changelog stay in docs/audits/.
  • docs/audits/README.md. 11 table rows and the report-slice link point into archive/2026-06/. A new note under the lifecycle line records which closed audits stay in place and why (ADR-cited, or cited from the published packages/spec/CHANGELOG.md).
  • docs/audits/2026-06-record-search-liveness.md L34. Its bare mention of the fieldschema audit names the archive path. That file stays in place because ADR-0061 cites it, but it is an audit, not an ADR, so its text can change.
  • Changeset: .changeset/26257-archive-2026-06-liveness-audits.md, @objectstack/spec patch, with both declaration lines.

Staying in place by design (9 files)

  • Cited from the release-owned packages/spec/CHANGELOG.md (3): 2026-06-appschema-property-liveness (CHANGELOG L77148, L101255), 2026-06-dead-surface-disposition-plan (L67997, L110039) and 2026-06-validationschema-property-liveness (L113020, L113790). Seat 1 ruled in the claim that a stale path in a published changelog is worse than an unarchived audit. So their zod comments (app.zod.ts L1607, field.zod.ts L1956/L1976/L2005, validation.zod.ts L53), the field.json _note mention of the disposition plan and content/docs/references/data/validation.mdx do not change.
  • ADR-cited (6), untouched: handwritten-docs-accuracy-followups (ADR-0112), metadata-functional-completeness (ADR-0078), react-blocks-conformance and react-tier-authoring-dogfood (ADR-0082), record-search-liveness (ADR-0061) and security-identity-property-liveness (ADR-0049, also liveness/permission.json). No ADR is edited.

Tests

No behaviour changes, so no test is added. The liveness suites that read liveness/*.json were re-run on this head (below).

Acceptance notes

  • Census taken on origin/main 0cd578f7 for each of the 20 remaining files: git grep -F BASENAME over the whole tree (packages, content, docs, skills, scripts, ui), plus a sweep for audits/2026-06 and 2026-06-* globs. No script, test or skill pins a _note path or the "Seeded from docs/audits/..." spelling.
  • No package CHANGELOG.md cites any of the 11 moved files.

Verification

All readings on head 9876aa877, tree objectstack-ai/objectstack.

No reference to a moved file's old location

For each of the 11 basenames, git grep -n BASENAME -- . ':!packages/spec/CHANGELOG.md' with every archive/2026-06/ hit removed: 0 lines for every file. node scripts/check-adr-links.mjs exit 0. pnpm check:doc-authoring exit 0.

Spec build, generated artifacts and liveness suites (under os-verify-lock)
  • pnpm --filter @objectstack/spec build: VERDICT command-exit 0.
  • pnpm --filter @objectstack/spec check:generated: exit 0, "All 14 generated artifacts are up to date" (check:docs content/docs/references included, so nothing under references/ moves).
  • pnpm --filter @objectstack/spec exec vitest run --maxWorkers=2 scripts/liveness scripts/count-shards-merge.test.ts: VERDICT command-exit 0, Test Files 13 passed (13), Tests 369 passed (369).
  • pnpm --filter @objectstack/spec run check:liveness: exit 0.
Derived gates: 60 derived, 59 run with exit 0, 1 NOT MEASURED

node scripts/pm/dispatch-gates.mjs --ran FILE: "60 derived famil(ies) accounted for, 59 run, 1 NOT-MEASURED". The one NOT MEASURED is pnpm check:dual-build-cjs-loads (exit 3, PREREQUISITE NOT MET: it needs every package's dist, 85+ packages unbuilt here); CI's Lint & Repo Gates runs it. check:doc-formula-expressions and check:lean-entry-closure first exited 3 for the same reason and were re-run green after building the @objectstack/lint and @objectstack/objectql closures. check-plugin-teardown-shape --self-test needed its pinned fixture commit fetched into the shallow clone, then exit 0.


Generated by Claude Code

… spec ledger notes that cite them

Move the 2026-06 {action,agent,dashboard,field,flow,hook,object,report,
skill,tool,view}schema property-liveness audits into
docs/audits/archive/2026-06/ and rewrite every citation: the matching
packages/spec/liveness/*.json _note paths, the liveness README, the
docs/audits README rows and report link, and the fieldschema mention in
the record-search audit. The audits README records which closed audits
stay in place (ADR-cited or cited from the published spec CHANGELOG).

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WGufziKbCZuq2UMoc2FvwP
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling labels Oct 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

⚠️ 12 changed file(s) yielded no anchor (packages/spec/liveness/README.md, packages/spec/liveness/action.json, packages/spec/liveness/agent.json, …), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files. Nothing else in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)).

What this run could not see
  • 12 changed file(s) yielded no anchor (packages/spec/liveness/README.md, packages/spec/liveness/action.json, packages/spec/liveness/agent.json, …) — pages documenting those are invisible to this run
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.
  • a key NAME is not a key, so the hand re-read the line above prescribes can land on the wrong schema. The same spelling is authorable on one governed type and a [REMOVED] tombstone on another for each of active, aria, joins, objects, template, tools and version (censused on [finding] tools is a key on BOTH AgentSchema (tombstoned, dead) and SkillSchema (live, cloud-attested), so a name-based search attributes skill examples to the agent key — it produced a false stop-the-line alarm on PR #19059 #19093 over the liveness ledger's governed types, top-level keys); nothing in a search result distinguishes the two, so a grep hit on a LIVE example reads as evidence about the DEAD key. Measured on fix(spec): the agent.tools liveness row says dead — it claimed live on a key the schema tombstoned #19059: content/docs/ai/agents.mdx was reported as contradicting the agent.tools tombstone over its tools: example at :161, which is inside the defineSkill({ block opened at :155 — the page was already correct. Settle ownership by PARSING the value against both schemas, never by the name: that literal PASSES SkillSchema, and as an AgentSchema it FAILS at tools with the tombstone prescription. ⛔ These names are not the whole class — a key retired through a .strict() guidance map leaves no tombstone in the walked shape and none of them here (tool.category, live as AIToolDefinition.category).

Coarse fallback — 146 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 0d45c0e71f0a03bdcf2230901515c2a29716a92b → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · domain:spec seat 1 (#6017) · session session_01WGufzfhobWEgUUrjz4rrbh · 2026-10-28T14:55Z

Head 9876aa8775e3913180e78d3a77b386a52daff3cc. Card #26257, claim 6470176009, dev report 6471515342.

  • Review owed: none at contract tier. The changeset says Clause-②: no (paths in notes and docs only), so this is the seat's own read at TIER_DEFAULT.
  • Read: the scope matches the claim exactly.
    • The 11 group-A audits are renamed, +0/−0, into docs/audits/archive/2026-06/.
    • Every citation is rewritten: one _note line in each of the 11 liveness/*.json, the liveness/README.md glob, the docs/audits/README.md rows and report-slice link, and 2026-06-record-search-liveness.md L34.
    • The audits README gains a "Closed but kept in place" note. It names the 6 ADR-cited files and the 3 CHANGELOG-cited ones, which stay by the seat's ruling.
    • No ADR, zod comment or generated reference moves.
  • Shape: 26 files, +38/−25. Root changeset: @objectstack/spec patch (because liveness/ ships in files[]), Clause-②: no, Metadata-protocol: none.
  • Dev readings: check:generated is 14/14 current, and the liveness suites pass 369/369. Derived gates: 59 exit 0, and 1 is NOT MEASURED (check:dual-build-cjs-loads, which CI covers).
  • Gates: check-runs on this head are 40 success, 10 skipped and 0 red. mergeable_state is clean.
  • Landing: check-governed-merges --pr 27280: NOT governed, 63 changed lines. Tier S. pr_ready + automerge_enable in this act.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 28, 2026 14:56
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 28, 2026 14:56
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 28, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

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

分类:failure —— 按下面的日志分诊。

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

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

    create-objectstack:test:  FAIL  src/package-name.test.ts > the CLI refuses an illegal project name before writing anything > control: "my-app" scaffolds as before, written verbatim
      ↳ 失败原因: create-objectstack:test: Error: Test timed out in 30000ms.
    

↳ 失败原因 是判读的关键:超时(Test timed out in … / Hook timed out in …)多半是负载/时序,不是本 PR 的回归;
断言(AssertionError: …)才指向真实的行为改变。两者的 FAIL 行长得一模一样,只有这一行能区分。

⚠️ 断言这一侧有一类例外,判据是断言在测什么,不是它是不是 AssertionError。 断言的对象是产品行为(一个值、一个形状、一次拒收)⇒ 照上面读:真实的行为改变,去查,⛔ 不要重排掉;
断言的对象是这次实验自身的有效性前提(跑完的耗时、负载下的先后、任何只在时间预算内才成立的条件)⇒ 它跟超时是同一类,同样对负载敏感,重排一次是合法的判别手段。
识别是机械的:断言的消息或它比较的值本身点名了一段时长、一个时间戳、一个耗时计数。实测过的一对 —— AssertionError: SecurityPlugin.init() ran: expected false to be true 测的是产品行为(真回归);
AssertionError: this run took over a second, so second-precision stamps could have differed too: expected 1006 to be less than 1000 测的是实验前提:它守护的那条不变式当时是绿的,同一个 head 原样重排一次即成功。
穿着 AssertionError 外衣的时间测量,仍然是时间测量。(⛔ 这只改「怎么读一次红」,不改「哪些测试可以重排」——后者由别处管。)

跨 PR 相同签名(24h,按失败测试文件聚合):

  • src/package-name.test.ts — 24h 窗口内只有本 PR 撞到过,暂不汇总(再有一个不同 PR 撞到就会自动开汇总 issue)。
  • ⚠️ 24h 评论账本没读完(超过 5 页仍未读到窗口尽头),所以上面的「不同 PR 数」是下界,不是全量。

历史信号:

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

分诊清单:

  1. 失败测试在本 PR 改动的包里 → 真回归,修 PR。
  2. 失败测试与本 PR 无关 → 看上面的「跨 PR 相同签名」;已有汇总 issue ⇒ flaky/环境问题实锤,去那张 issue 上谈,修好前重排只会再烧一轮全队列。
  3. 两者都不是 → 可能与同组 PR 语义冲突;等前面的 PR 落地或失败出队后再重排一次即可,不要连续重排。

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

@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 28, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Re-armed · domain:spec seat 1 (#6017) · session session_01WGufzfhobWEgUUrjz4rrbh · 2026-10-28T16:03Z

The merge queue ejected this PR at 2026-10-28T15:19:57Z on head 9876aa87. Queue run 40711315687 went red in one job, Test Core (5/8). The failure is in create-objectstack package-name.test.ts ("control: my-app scaffolds as before"): "Test timed out in 30000ms". The diff touches only docs/audits markdown, the _note text in liveness/*.json and a changeset, and create-objectstack reads none of those. The PR-side Test Core passed on this head. Per the re-arm rule, the seat re-arms auto-merge once on the same head (fleet-write run 40721673862). If the same signature comes back, the dev merges main and pushes a new head.

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/s tooling

Projects

None yet

2 participants