Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
见 reading-discipline.md 的指针行;本文是仪器的分界、授权与工具位次序。

- 硬门禁只答有确定答案的问题:受管登记表、队列守卫、CI 测试、复核记录在不在。
- 判意图的仪器(放宽 tell、半状态巡查)只印读数 ⛔ 不挡落地,误报由席位一句话推翻。
- 放宽 tell(C5)由 `scripts/pm/check-widening-tells.mjs` 印 file:line,归达档复核裁。
- 判意图的仪器(半状态巡查)只印读数 ⛔ 不挡落地,误报由席位一句话推翻。
- 放宽 tell(C5)不设仪器,Clause-② 的方向由达档复核裁。
- 只报告的仪器不配 dev:⛔ 不立卡、不派 dev、不开 PR;它的在途工作只有删除。
- 新增门禁、巡查行或棘轮须在卡上引维护者原话,⛔ 无原话不新增;首行四件恒硬。
- 工具位只有一个,先花在删除上;`dispatch-gates.mjs` 冻结,只在它喂的 workflow 坏了时碰。
Expand Down
15 changes: 1 addition & 14 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1321,19 +1321,6 @@ jobs:
- name: Contract-review record recogniser self-test
run: pnpm check:pm-record-recognisers

# Widening-tell gate self-test (#16448) — the mechanical half of the
# directional clause-② ruling (#16349), and the same split as every step
# around it: the LIVE predicate is `--pair`'s C5 row, a verdict about ONE
# pair's diff, so failing an unrelated PR's CI over it would punish the
# wrong actor. Only the offline self-test runs here.
#
# This gate has no whole-tree production run at all — its input is a DIFF
# supplied by its caller, never a file in the tree — so the `--self-test`
# invocation is the only instrument its matching rules have, which is
# exactly the family `check:self-test-wired` requires this step for.
- name: Widening-tell gate self-test
run: pnpm check:pm-widening-tells

# Prior-ruling reader self-test (#17009) — same family and the same split
# as every step around it. The LIVE read takes a card number over REST and
# searches this checkout's `origin/main`, so it is a tool a seat runs
Expand Down Expand Up @@ -1690,7 +1677,7 @@ jobs:
run: pnpm check:pm-settings-deny-roster

# Expected-skips roster self-test (#18308) — same family and the same
# split as the widening-tell and prior-ruling steps above: the LIVE read
# split as the prior-ruling step above: the LIVE read
# takes a PR head and judges its check-runs over REST, so it is a tool a
# seat runs against the PR in front of it, not a verdict about the PR
# that happens to run CI next. Only the offline self-test runs here — it
Expand Down
4 changes: 2 additions & 2 deletions docs/audits/gate-census-2026-09.md
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ Zod validation inside `packages/spec` and the runtime is the **product**, not a
| `scripts/pm/check-settings-deny-roster.mjs` | process | none (`.claude/settings.json` deny list pinned) · PM loop · origin #18218 · landed 2026-09-15 | required · whole-repo (Lint & Repo Gates) | unmeasured (landed 2026-09-15; <7 days of window coverage) | `keep (too new)` |
| `scripts/pm/check-skill-id-lint.mjs` | process | none (operative agent-protocol text cites no issue numbers) · PM loop · origin no card in header · landed 2026-08-12 | required · whole-repo (Lint & Repo Gates) | 0 in window | `retire` |
| `scripts/pm/check-skill-line-ratchet.mjs` | process | none (per-file line budget over the PM instruction surface) · PM loop · origin #5925 · landed 2026-08-10 | required · whole-repo (Lint & Repo Gates) | 0 in window (7 failure(s) only on PRs editing this file, excluded) | `retire` |
| `scripts/pm/check-widening-tells.mjs` | process | none (mechanical half of the directional Clause-② read) — only its self-test runs in CI · PM loop · origin #16349 · landed 2026-09-07 | required · whole-repo (Lint & Repo Gates) | 0 in window — only its `--self-test` runs in CI; the gate proper never judges a PR here | `retire` |
| `scripts/pm/check-widening-tells.mjs` | process | none (mechanical half of the directional Clause-② read) — only its self-test runs in CI · PM loop · origin #16349 · landed 2026-09-07 | required · whole-repo (Lint & Repo Gates) | 0 in window — only its `--self-test` runs in CI; the gate proper never judges a PR here | `retire` · **deleted 2026-10** (ruling 208; the maintainer: 「同意」) — row kept as the census record |
| `check:adr-symbol-anchors` | process | none (symbol-anchors module self-test + check-adr-symbol-anchors) · composite · `node scripts/symbol-anchors.mjs --self-test && node scripts/check-adr-symbol-anchors.mjs -…` | not in PR CI | 1 PR / 2 days (check-adr-symbol-anchors leg) | `keep` |
| `check:docs-audit-scope` | process | none (affected-docs self-test + check-audit-scope) · composite · `node scripts/docs-audit/affected-docs.mjs --self-test && node scripts/docs-audit/check-aud…` | required · whole-repo (Lint & Repo Gates) | 1 PR / 1 day (check-audit-scope leg) | `keep` |
| `check:docs-image-tag-sync` | contract | release lane: self-test of the docs image-tag version-time rewriter (run by release.yml version-pr) · `node scripts/sync-docs-image-tags.mjs --self-test` | required · whole-repo (Lint & Repo Gates); advisory (Version PR maintenance) | 0 in window — self-test only; cannot judge a PR | `keep` |
Expand Down Expand Up @@ -350,7 +350,7 @@ These nine guard the CI farm's own wiring — the required-context names, aggreg
| `scripts/pm/check-label-desc-cap.mjs` | process · 0 in window | `scripts/pm/check-label-desc-cap.mjs` | `check:pm-label-desc-cap` | lint.yml:838 | 2 |
| `scripts/pm/check-skill-id-lint.mjs` | process · 0 in window | `scripts/pm/check-skill-id-lint.mjs` | `check:pm-skill-id-lint` | lint.yml:825 | 3 |
| `scripts/pm/check-skill-line-ratchet.mjs` | process · 0 in window (7 failure(s) only on PRs editing this file, excluded) | `scripts/pm/check-skill-line-ratchet.mjs` | `check:pm-skill-ratchet` | lint.yml:817 | 3 |
| `scripts/pm/check-widening-tells.mjs` | process · 0 in window — only its `--self-test` runs in CI; the gate proper never judges a PR here | `scripts/pm/check-widening-tells.mjs` | `check:pm-widening-tells` | lint.yml:1153 | 2 |
| `scripts/pm/check-widening-tells.mjs` · **deleted 2026-10** | process · 0 in window — only its `--self-test` runs in CI; the gate proper never judges a PR here | `scripts/pm/check-widening-tells.mjs` | `check:pm-widening-tells` | lint.yml:1153 | 2 |
| `check:pm-board-snapshot` | process · 0 in window — self-test only; cannot judge a PR | `scripts/pm/board-snapshot.mjs (only if no other user; check before deleting)` | `check:pm-board-snapshot` | lint.yml:1259 | 0 |
| `check:pm-changeset-deadline-census` | process · 0 in window — self-test only; cannot judge a PR | `scripts/pm/changeset-deadline-census.mjs (only if no other user; check before deleting)` | `check:pm-changeset-deadline-census` | lint.yml:1313 | 0 |
| `check:pm-closed-card-sweep` | process · 0 in window — self-test only; cannot judge a PR | `scripts/pm/sweep-closed-cards.mjs (only if no other user; check before deleting)` | `check:pm-closed-card-sweep` | — | 0 |
Expand Down
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@
"check:pm-half-states": "node scripts/pm/check-half-states.mjs --self-test",
"check:issue-citations": "node scripts/check-issue-citations.mjs --self-test",
"check:pm-record-recognisers": "node scripts/pm/record-recognisers.mjs --self-test",
"check:pm-widening-tells": "node scripts/pm/check-widening-tells.mjs --self-test",
"check:pm-prior-rulings": "node scripts/pm/check-prior-rulings.mjs --self-test",
"check:pm-closed-card-sweep": "node scripts/pm/sweep-closed-cards.mjs --self-test",
"check:pm-stale-finding": "node scripts/pm/sweep-stale-finding.mjs --self-test",
Expand Down
8 changes: 4 additions & 4 deletions scripts/pm/check-half-states.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1333,10 +1333,10 @@ export function markerMatches(marker, text) {
* decoration is ADDED here — where a fixture and a case come with it — ⛔ never
* discovered again from a silent row.
*
* The register is `SCHEMA_PROPERTY_FORMS`' (`scripts/pm/check-widening-tells.mjs`,
* #18560): a frozen roster the detector is BUILT from, each member carrying its
* own `example`, so a form added without a fixture and a form silently dropped
* both go red instead of quietly changing what the instrument sees.
* The register is a frozen roster the detector is BUILT from, each member
* carrying its own `example`, so a form added without a fixture and a form
* silently dropped both go red instead of quietly changing what the instrument
* sees.
*
* ## What a member is, and what it is NOT
*
Expand Down
6 changes: 3 additions & 3 deletions scripts/pm/check-prior-rulings.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -212,9 +212,9 @@ import { performance } from 'node:perf_hooks';
import { fileURLToPath } from 'node:url';
import { isEntrypoint } from '../invoked-as.mjs';
// ⛔ Not copied. The board resolver and the proxy-rearm plan are ONE source in
// `check-half-states.mjs` — the same import `check-widening-tells.mjs` takes —
// so this reader and the patrol cannot come to disagree about which board is
// being read or whether this container's fetch reaches it.
// `check-half-states.mjs`, so this reader and the patrol cannot come to
// disagree about which board is being read or whether this container's fetch
// reaches it.
import { DEFAULT_SWEEP_REPO, resolveSweepRepo, proxyRearmPlan, PROXY_FLAG, PROXY_REARM_GUARD } from './check-half-states.mjs';

export const EXIT_OK = 0;
Expand Down
Loading
Loading