Repository navigation
Commit 1fa4800
fix(skills-ratchet): evals/** leave the priced population; the standing 「先削重复,余额按实测提高」 ruling is the gate-recognised raise path (#27984)
<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} -->
_Requested by **Elon** · [project
thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9DTLhQCwVvdRpp73qJuJinJN)_
domain:skills#2 · os-elon-musk · session_016WV4cwV7T5pwdsjZBGP4Uv
Fixes #27847
Ruling-ref: 6513306068
## What changes
One file, `scripts/check-skills-token-ratchet.mjs`, implementing ruling
record 6513306068 (letter B) as worded, and nothing else about the gate:
1. **`evals/**` leaves the PRICED population.** A new population 1b,
EVAL FIXTURES (`skills/<name>/evals/**`, decided by path alone through
`isEvalFixture()`), takes the generated-file treatment of #12392:
measured, printed per file as `(eval fixture)` and in a new `eval
fixtures (measured, not ratcheted)` subtotal, counted into the `bundle
total (whole shipped tree)`, never ratcheted. The 28 eval rows leave
`CEILINGS` with their row comments. A `CEILINGS` row on an eval path is
red, exactly as on a generator-owned file, with the ruling named in the
refusal.
2. **The standing path.** The header's discipline section and the
over-ceiling refusal name the 2026-10-27 ruling 「A:先削重复,余额按实测提高」 as the
one gate-recognised raise path for teaching text (`SKILL.md`,
`rules/**`, `guides/**`, hand-authored `references/**`): a PR whose diff
shows deletion of restatement in the same file and whose body quotes
that ruling (or record 6513306068) may move the row by the measured
remainder, pinned AT the measurement, with no per-card ruling; a raise
with no deletion shown and no ruling quoted stays red. As #23606 B did
for the `.claude/**` line ratchet, the script reads neither diffs nor
rulings: the conditions are author-facing text that the seat's
contract-review record checks against.
3. **Self-test.** 18 new cases, floor 79 → 97: the eval-fixture
predicate in both directions (a nested `evals/**` path is one;
`SKILL.md`, a rule, a reference, `skills/README.md`, a `rules/evals/`
path and a bare `evals/` outside `skills/` are not), an eval fixture
with no row is green and says measured-not-ratcheted, a row on one is
red naming the ruling, no row names an eval path, the real tree has eval
fixtures, the walk still measures them, the report counts them into the
bundle total and not into the ratcheted subtotal and prints their
subtotal; and the refusal text carries the ruling id, the
same-file-deletion condition, the AT-the-measurement pin and the
no-deletion-no-ruling red.
Not changed: the walk, the counting convention, the stamp-line
exclusion, the generator-owned boundary and its tripwire, every teaching
row, `check:skill-eval-tokens` and the eval self-consistency rule. No
rule text restates "a raise needs a ruling id per raise" for this gate
(`.claude/**`, `skills/README.md`, `AGENTS.md` grepped for the ratchet,
`天花板`, `token ceiling`): `triage-duties.md` L102 says a ceiling raise
「仍需明确字句」, which the quoted standing ruling is, so the rule text is
untouched.
## Why
The ratchet priced `evals/**`, which no customer session loads
(`skills/README.md` layout: evals are 「used by maintainers to score the
skill, inert (but harmless) in consumer installs」; `git grep -c "evals/"
origin/main -- 'skills/*/SKILL.md'` → 0), so an eval owed under #26369 B
blocked on a ceiling that protects nothing a customer pays for, and
every measured raise waited on a per-card ruling although the maintainer
had already ruled the payment path on 2026-10-27 (quoted 40 times in the
row comments). #26940 cost about 20 hours and three seats for +154
tokens. The maintainer ruled B on #27847 (record 6513306068, 「其他同意」).
Confidence gap carried into the dispatch, checked: no harness reads
`evals/*.json` into an authoring context. Readers on `origin/main`
`9cd54faa`: `scripts/check-skills-token-ratchet.mjs` (this gate),
`ui/scripts/check-skill-eval-tokens.mjs` (maintainer scoring),
`scripts/pm/bare-root-worklist.mjs` (a comment naming the folder),
`skills/README.md` (the layout). No SKILL.md, rule, guide or reference
points at an eval file.
Serial: PR #27922 (#26940) edits one eval row in this file and still
waits on its Tier H approval, so this PR is based on `main`; that row
(`skills/objectstack-formula/evals/cel-predicates-formulas.json`) leaves
the priced population in this diff. If #27922 lands first, this branch
rebases onto it and the row still leaves.
## Verification
- `node scripts/check-skills-token-ratchet.mjs --self-test` → `97 cases
pass`, exit 0. Ablated once per pin: the predicate forced to `false` → 9
cases red and the gate red on 28 unpriced files; a `CEILINGS` row on
`skills/objectui/evals/testing.json` → `no ceiling names an eval
fixture` red and the gate red with the eval-fixture refusal; the
standing-path text reverted to the old sentence → the 5 standing-path
cases red.
- `node scripts/check-skills-token-ratchet.mjs` → exit 0: `56 authored
bundle file(s) within their ceilings; 10 generator-owned file(s) and 28
eval fixture(s) measured, not ratcheted`. Bundle total 219351 before and
after (main's script run on the same tree prints 219351); `ratcheted
(authored)` 180861 / 189813, `eval fixtures` 27188.
- `pnpm check:ratchet-remedy-authority` exit 0 (this gate still
classified as marking the expanding remedy `⛔ MAINTAINER-ONLY`); `eslint
--no-inline-config` on the file clean; `node
scripts/check-commit-card-trailers.mjs --range origin/main..HEAD` exit
0.
- Gates: `node scripts/pm/dispatch-gates.mjs --commands` derived 32
families on `cc1daeea` (fresh checkout after `pnpm install
--frozen-lockfile --ignore-scripts`); every one ran with its exit code
captured before any pipe: 32 run, 32 exit 0, 0 NOT MEASURED; `--ran`
reconciliation: `32 derived famil(ies) accounted for — 32 run, 0
NOT-MEASURED`; re-derived after the commit, still 32. Among them:
`check-skills-token-ratchet` and its `--self-test`,
`check:ratchet-remedy-authority`, `check:scripts-symbol-anchors`,
`check:self-test-wired`, `check:pm-dispatch-gates`, `check:nul-bytes`.
No package source changed, so no package test or typecheck is owed; the
11 changeset-dependent families do not apply (`skip-changeset`).
Clause-②: no
Metadata-protocol: none
## Human Minimum
- [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic.
(No spec change.)
- [x] 2. Every name I added uses the casing for its kind.
- [x] 3. No formatter ran; eslint on the edited file passes (full `pnpm
lint` left to CI).
- [x] 4. One issue, one branch off an up-to-date `main`, one pull
request.
- [x] 5. No published package changes (`scripts/**` only), so no
changeset; `skip-changeset` declared on the create; both declaration
lines are filled in above.
- [x] 6. `packages/spec` not touched.
- [x] 7. No hand edits to `content/docs/references/`,
`packages/*/CHANGELOG.md` or `content/docs/releases/`.
- [x] 8. Title, body and comments are in English.
- [x] The *Before Submitting* list in CONTRIBUTING.md is done.
## 维护者速读
- 改了什么:`scripts/check-skills-token-ratchet.mjs` 一个文件。evals/**
退出计价总体(仍量、仍打印进 bundle 总量,28 行从 CEILINGS 删除,给 eval 文件加行即红);表头与超限拒绝文案把你
10-27 裁的「A:先削重复,余额按实测提高」写成门禁认可的唯一抬高路径(同文件可见删复述 + PR 正文引裁决 ⇒
按实测余额抬、钉在实测;没删没引仍红);自测加 18 钉。
- 为什么改:按 #27847 裁决 B(6513306068)原话实现;分诊要求门禁不作其他改动,已遵守。
- 风险与回滚:不动走法、计数口径、版本戳排除、生成文件边界与任何教学行;bundle 总量前后都是 219351。回滚即 revert 本
PR。
- 先看:表头〈The ratchet discipline〉第三条与〈populations〉的 1b;再看 `verdict()` 的
eval 分支与超限文案。
- 两分钟验证:`node scripts/check-skills-token-ratchet.mjs --self-test` 预期 `97
cases pass`;`node scripts/check-skills-token-ratchet.mjs` 预期末行 `56
authored … 10 generator-owned … 28 eval fixture(s)`,exit 0。
- 需要你做的:本 PR 欠契约复审(席位记录);落地档位按登记册在 PR 时读出(分诊定 Tier H),由席位按该档位落地。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_016WV4cwV7T5pwdsjZBGP4Uv
Co-authored-by: Claude <noreply@anthropic.com>1 parent 6d5c021 commit 1fa4800
1 file changed
Lines changed: 148 additions & 358 deletions
0 commit comments