Repository navigation
Commit 21070a2
docs(qa): a verification re-run files no qa-run record; sweeps still file one per run (#24302)
Fixes #24173
Clause-②: no
Docs-only follow-up to maintainer ruling **C** on #24127 (ruling record
`6230593290`, the maintainer's choice verbatim: 「C 有问题才开卡
(Recommended)」). The checklist-test skill half merged as `b0fe9fad47`
(#24172). Three `domain:devx` documents that the skill tells its runner
to read first still said that **every** completed run files a `qa-run`
issue. A runner that obeyed them would file the record the ruling says
not to file.
## What changes (three record-filing sentences, nothing else in those
files)
| File | Before | After |
|---|---|---|
| `docs/qa/platform-checklist/RUNNER.md` (Run records, first paragraph)
| 「Every completed run — **pass or fail alike** — files **one GitHub
issue** …」 | Every completed **sweep run** (a release candidate, an area
or `all` run, or a maintainer-named target) files one `qa-run` issue.
**A verification re-run files none**: a run whose trigger is the same
PR's ledger edit of that item. Its per-item verdict table goes in the PR
body, and the item's `history` row carries the PR as its `ref`. A
`partial` / `blocked` gap goes in the PR body and in
`fixtures.knownGaps`. A product-defect `fail` is still extracted as its
own card, pointing at the PR. A stale clause is fixed in the same diff.
The sentence points at `.claude/skills/checklist-test/SKILL.md` §5,
「验证重测」. |
| `docs/qa/platform-checklist/runs/README.md` L11–12 | 「every completed
run files one `qa-run` GitHub issue」 | Every completed sweep run (same
three kinds) files one. A verification re-run files none: its evidence
is the PR body and the item's `history` row, and a `partial` / `blocked`
gap also goes in `fixtures.knownGaps`. It defers to RUNNER.md, Run
records, for the full exception. The list lead-in becomes "A sweep's
record:". |
| `docs/qa/platform-checklist/README.md` (How a release sweep works) |
「every run files one `qa-run` GitHub issue」 | 「every sweep run files
one」, plus one sentence after it: a verification re-run (triggered by
the same PR's ledger edit of that item) files no record, and its
evidence is the PR body and the item's `history` row (RUNNER.md, Run
records). |
Unchanged, per the card's boundary: RUNNER.md's title grammar (「The
record title」), its label discipline (`qa-run` and nothing else) and its
extraction obligation section. No gate is added.
## Agreement with the merged skill text (acceptance 1)
Each clause of the skill's paragraph at `origin/main` `d537a318b3`
(`.claude/skills/checklist-test/SKILL.md` L223–225, §5), set against
RUNNER.md's new sentence:
| Skill clause | RUNNER.md |
|---|---|
| 由同一 PR 对该项的清单编辑(§3)引发,⛔ 不立 `qa-run` 记录 | "A verification re-run files
none — a run whose trigger is the same PR's ledger edit of that item" |
| 逐项判定表进 PR 正文 | "Its per-item verdict table goes in the PR body" |
| 该项 `history` 行的 `ref` 指向该 PR | "the item's `history` row carries the
PR as its `ref`" |
| `partial`/`blocked` 的缺口进 PR 正文与 `fixtures.knownGaps` | "a `partial` or
`blocked` gap goes in the PR body and the item's `fixtures.knownGaps`" |
| 产品缺陷 `fail` 照常抽卡、溯源指向该 PR | "a product-defect `fail` is still
extracted as its own card, pointing at the PR" |
| 条款过期在同一 diff 修 | "a stale clause is fixed in the same diff" |
| §4: 整轮运行(发版候选、区或 `all`、维护者点名目标)恰好立一张 | "Every completed sweep run (a
release candidate, an area or `all` run, or a maintainer-named target) …
files one GitHub issue" |
## Premise re-check (on `origin/main` `d537a318b3`, with controls)
- `RUNNER.md` 「pass or fail alike」 → 1 hit (L460). Control 「The record
title」 → 1 hit.
- `runs/README.md` 「every completed run files one」 → 1 hit (L11).
Control `qa-run` → 2 hits.
- `README.md` 「every run files」 → 1 hit (L466). Control `history` → 7
hits.
- The last commit to touch the three files is `c40506aac` (#24156).
Nothing is newer: history was deepened 60 commits past the shallow
boundary to read this.
- Line-number references into these files elsewhere in the tree: none
found (`git grep` for `RUNNER.md:` / `#L` forms). Pins quoting the three
old sentences outside these files: none found (`git grep` exit 1;
control `qa-run` hits in `scripts/qa/qa-rollup.mjs`).
## Gates (local, all run at head `27ab96524`, exit captured before any
pipe)
The list is derived by `node scripts/pm/dispatch-gates.mjs --commands
--repo objectstack-ai/objectstack` from the actual diff: 13 families,
plus the watchdog that the card's acceptance names.
- `node scripts/check-ci-filter-parity.mjs`: exit 0
- `node scripts/check-closing-keyword-parity.mjs`: exit 0.
`--self-test`: exit 0
- `node scripts/check-comment-mask-corpus.mjs`: exit 0 (9472 files, 0
disagree)
- `pnpm --filter @objectstack/lint run check:doc-formula-expressions`:
exit 0
- The first attempt exited 3 (prerequisite not met: lint/formula not
built). That is not a measurement. Built under the shared lock (`turbo
run build --filter=@objectstack/formula --filter=@objectstack/lint`, 4/4
cached), then re-ran.
- `pnpm check:cross-package-test-inputs`: exit 0
- `pnpm check:doc-authoring`: exit 0
- `pnpm check:driver-memory-census`: exit 0
- `pnpm check:gitlink-declared`: exit 0
- `pnpm check:nul-bytes`: exit 0. A separate control-byte scan of the
three files found none.
- `pnpm check:platform-checklist`: exit 0 (16 areas, 327 items; traps 19
documented, 19 in use)
- `pnpm check:refd-timer-probe`: exit 0
- `pnpm check:watch-hint-literal`: exit 0
- `node scripts/check-platform-checklist-watchdog.mjs`: exit 0
- `dispatch-gates --ran` reconciliation: "13 derived, 13 run, 0
NOT-MEASURED, 0 UNRUN". All 13 carry an exit code, so the zero is
derived from them. The watchdog is recorded as outside the derivation.
No tests or ablation: this is a docs-only diff with no tested behaviour.
Families that CI alone runs are read from this PR's check-runs.
## Changeset
`skip-changeset`, measured. `docs/qa/**` sits at the repo root. The root
`package.json` is `private: true`, and no package manifest references
`platform-checklist`. Control: `git grep '"files"'` over
`packages/*/package.json` hits 74 manifests. Nothing in this diff ships
in any published tarball.
## Acceptance notes
- Ruling item 1's letter reads "files no `qa-run` record when every
clause passes" and then covers `partial` / `blocked` and the two kinds
of `fail` one by one. The merged skill states the no-record rule for
every verification re-run, with the product-defect `fail` going to a
card that points at the PR. These docs follow the merged skill text, as
acceptance 1 requires.
- README.md and runs/README.md defer to RUNNER.md for the full exception
instead of restating all of it. RUNNER.md points at the skill's 「验证重测」
paragraph.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01VwoC2RxFfgzY2eXuC7Xo6g)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 9c74d40 commit 21070a2
3 files changed
Lines changed: 20 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
463 | 463 | | |
464 | 464 | | |
465 | 465 | | |
466 | | - | |
| 466 | + | |
467 | 467 | | |
468 | 468 | | |
469 | 469 | | |
470 | 470 | | |
471 | 471 | | |
472 | | - | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
473 | 475 | | |
474 | 476 | | |
475 | 477 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
457 | 457 | | |
458 | 458 | | |
459 | 459 | | |
460 | | - | |
461 | | - | |
462 | | - | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
463 | 470 | | |
464 | 471 | | |
465 | 472 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
12 | | - | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
13 | 17 | | |
14 | 18 | | |
15 | 19 | | |
| |||
0 commit comments