Repository navigation
Commit af4f8ee
docs(pm-dispatch): record the dequeue actor, the footer surface axis and objectui's label stripper (#19734)
Fixes #19343, fixes #19179, fixes #19404
Clause-②: no
Four platform-fact rows were dispatched for one file,
`.claude/skills/pm-dispatch/references/platform-readings.md`. Each row's
premise was
re-read on the base before writing. **Two of the four were already
covered on the base**
and are reported as falsified rather than restated; the other two are
recorded, plus two
in-place corrections. The ceiling was not raised.
## Premise reading per row (measured on `origin/main`, before any edit)
| card | premise | evidence on the base |
|:--|:--|:--|
| #19343 | **partly valid** | the headline fact was already there: `:16`
states the SUCCESS sequence carries `removed_from_merge_queue`, `:17`
gives the disambiguator (no `merged` after it, PR still open). The
branch-listing refinement was also already there: `:63` (`只在存在时有意义`)
plus `:64` and `:44`. **Uncovered delta: the actor** — `grep
github-merge-queue` returned 0. That delta is what this PR adds. |
| #19390 | **valid** (footer half) | `:345` covers `PATCH /pulls` on a
PR; `:414` covers the issues route on a real issue. The measured cell —
the issues route aimed at a **pull request** — was absent. |
| #19404 | **FALSIFIED** | both halves already on the base. Channel:
`:125` `job 日志只有 MCP 取得回,REST 侧转 blob 存储`, with the general form at
`:122` and the action form at `:123`. Self-bound Routine: `:457`
`自绑唤醒的是已存在的会话、工具已加载`. |
| #19179 | **valid** | `grep -E 'labeler|sync-labels'` returned 0. The
general read-back discipline exists at `:244`/`:245`, but the named
objectui mechanism did not. |
## What changed (6 insertions, 5 deletions, one file)
Recorded:
- **`:348` (new)** — the footer append follows the SURFACE, not the
route: an issues-route
body PATCH aimed at a pull request takes the same +58 bare-footer
append, and leaves the
draft bit alone. `:414` is scoped to a real issue in the same edit, so
the pair now states
which axis it varies on.
- **`:245` (new)** — objectui's labeler runs with `sync-labels: true`,
so the PR label set is
recomputed wholesale from the diff's paths and a hand-applied label dies
on the next push;
re-applying loses the same race again, which is why the row says not to.
Corrected in place (0 net lines):
- **`:17`** — both queue exits carry `github-merge-queue[bot]`, so the
actor discriminates
nothing. This is the one piece of #19343 the file lacked.
- **`:304`/`:305`** — the old pair read `get_job_logs 无论 tail_lines ...
⇒ 两者都答不了到底挂在哪`,
which is exactly the misreading #19404 was filed about. Scoped to
`tail_lines` and corrected:
with `return_content` the whole log came back. The REST-leg clause
retired into `:125`, which
already carries it.
## Line budget — the ceiling is not raised
- before **468** / ceiling **469**; after **469** / ceiling **469**. The
ratchet row is untouched.
- Paid for by retiring one **provable duplicate**: old `:64` `⛔
它的缺席不是任何方向的读数。`
Its fact is stated twice more in the same file — `:63`
`gh-readonly-queue/* 只在存在时有意义`
(only meaningful when present, i.e. absence says nothing) and `:44`
`ref 缺席只作旁证,⛔ 永不承载结论`.
- Every line is within the file's own 120-byte cap, enforced by
`scripts/pm/check-skill-line-ratchet.mjs` (table rows are structurally
exempt and this file's
table-row pin is 0, so the rows are bullets). Widest line after the
edit: 0 lines over 120 bytes.
## Gates — 20 derived families, 20 run, 0 NOT-MEASURED
Derived with `node scripts/pm/dispatch-gates.mjs --repo
objectstack-ai/objectstack --commands`
(no hand-written path list) and reconciled with `--ran`, re-run on the
final head `3bfd45c32`
after merging `origin/main`:
- `✓ dispatch-gates --ran: 20 derived famil(ies) accounted for — 20 run,
0 NOT-MEASURED (a DERIVED zero — all 20 recorded an exit code and none
of them is 3).`
- `✓ check-skill-line-ratchet: ...platform-readings.md is 469 lines
(ceiling 469; headroom 0).`
- `pnpm check:pm-skill-id-lint :: exit 0` and `pnpm check:nul-bytes ::
exit 0`.
- `pnpm --filter @objectstack/lint run check:doc-formula-expressions`
first exited **3 —
PREREQUISITE NOT MET**, which its own text says measured nothing. Built
its two declared
prerequisites through the shared verify lock, re-ran, exit **0**.
Recorded as measured, not
as a failure.
- Control-character self-scan over the changed file: 0 hits.
`skip-changeset` is correct and measured, not assumed: of **70**
non-private manifests (all 70
declare `files[]`), **0** have a package root containing the changed
path; positive control
`packages/spec/package.json` is contained by exactly 1 published root,
so the instrument fires.
## Scope notes (filed, not fixed here)
- **#19390 remains open deliberately** — hence `Part of`, not a closing
keyword. Its footer half is
recorded here, but the card also carries a second measured reading that
is still absent from the
file (`grep merge_commit_sha` ⇒ 0, lit control `grep -c auto_merge` ⇒
3): a queued open PR's
`merge_commit_sha` names an anticipated commit that is not on main and
may never be. Closing the
card would hide that half from every open-only filter, which `:445`
warns about. The seat decides.
- **#19404 remains open** — its premise is falsified above, and per the
dispatch a card whose row is
already covered is not closed by the dev. The `:304`/`:305` correction
it motivated is included
anyway, because the old wording actively produced the error the card
describes.
- The file states both `红窗里 draft 翻转 ... 照常走 ccr REST,⛔ 不为它们守候`
(`:145`/`:146`) and
`⛔ 满余额不放行 undraft:同分钟满额而 ccr 路 429` (`:163`, with `:49`/`:50`). A seat
could act
wrongly on either. Noted, not touched — resolving it needs a measurement
this card did not take.
- Two further duplicate pairs were found but **not** retired, because
retiring either would orphan a
neighbouring line that refines it: `:253`/`:318` (the MCP read path
swallowing angle-bracket
fragments inside inline code spans) and `:260`/`:322` (counting empty
inline code spans as the
discriminator). Left for a seat that can judge the collateral.
## Deviations, declared
- The dispatch asked each row to carry **the source card number**. It
cannot:
`scripts/pm/check-skill-id-lint.mjs` scans every `.md` under
`.claude/skills/pm-dispatch/`
including `references/`, reds on `/#[0-9]{3,}/`, and the file carries 0
such tokens today.
Card numbers were omitted; measurement dates were kept where they are
load-bearing, matching
the file's existing style. The gate passes.
- The dispatch's first line named all four cards. Two were dropped from
it on the evidence above.
- Commit trailers use the repository's **model-free** pair, as AGENTS.md
requires and the pre-push
hook enforces.
Tier S governed surface (`.claude/**`): opened as a draft and left that
way — not marked ready,
auto-merge not armed. `check-governed-merges.mjs --pr` reading is in the
report comment on #19343.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01Wnstp2kTth7sGXfr8fXypc)_
---
_Generated by [Claude Code](https://claude.ai/code)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 342808c commit af4f8ee
1 file changed
Lines changed: 6 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
64 | | - | |
65 | 64 | | |
66 | 65 | | |
67 | 66 | | |
| |||
243 | 242 | | |
244 | 243 | | |
245 | 244 | | |
| 245 | + | |
246 | 246 | | |
247 | 247 | | |
248 | 248 | | |
| |||
301 | 301 | | |
302 | 302 | | |
303 | 303 | | |
304 | | - | |
305 | | - | |
| 304 | + | |
| 305 | + | |
306 | 306 | | |
307 | 307 | | |
308 | 308 | | |
| |||
345 | 345 | | |
346 | 346 | | |
347 | 347 | | |
| 348 | + | |
348 | 349 | | |
349 | 350 | | |
350 | 351 | | |
| |||
411 | 412 | | |
412 | 413 | | |
413 | 414 | | |
414 | | - | |
| 415 | + | |
415 | 416 | | |
416 | 417 | | |
417 | 418 | | |
| |||
0 commit comments