Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

ci-cd-pipeline.md's "Five workflows subscribe" merge_group list is short by one (skills-paths.yml, since #3735) — the #3261 shape, one subsystem over #4154

Closed

Description

@yinlianghui

Found while implementing #3782 (PR #4153), whose card asked for a sweep of the same page for other hand-copied enumerations of the same shape. Filed separately rather than bundled — which is the discipline that produced #3782 itself, kept out of #3279's PR for the same reason.

The claim

content/docs/guide/ci-cd-pipeline.md, in ## Merge Queue:

Five workflows subscribe: `ci.yml`, `lint.yml`, `control-bytes.yml`, `docs-links.yml` and
`changeset-presence.yml` (the last added with the gate itself, in #3387 ...)

Six do

merge_group: in the on: block, measured on main@36ae2705b:

.github/workflows/changeset-presence.yml
.github/workflows/ci.yml
.github/workflows/control-bytes.yml
.github/workflows/docs-links.yml
.github/workflows/lint.yml
.github/workflows/skills-paths.yml      <- absent from the page

skills-paths.yml subscribes for real — a merge_group: trigger with types: [checks_requested], added by #3735 (merged as #3864), carrying its own comment explaining that an unfiltered gate which could become required subscribes from the start.

The repo already knows this: scripts/__tests__/merge-queue-reporting.test.ts's hand-maintained MUST_SUBSCRIBE_MERGE_GROUP map has six entries, including

['skills-paths.yml', 'produces Skill Guide Path Check — added by objectui#3735, same shape as the
  two above: its entire scan surface is markdown, so it carries no path filter, reports on every
  pull request, and is therefore requirable'],

So the guard pins the workflows, and nothing pins the page's copy of the list. The page went stale the moment #3735 landed.

Why this matters more than an off-by-one

This is #3261's defect verbatim, one subsystem over: a count that says N and an enumeration short by one, where a stale list reads exactly as authoritative as a fresh one. The specific reader harmed is the one the surrounding paragraph is written for — someone deciding whether a new gate of theirs has to subscribe. The parenthetical even states the selection rule ("a gate that carries no path filter reports on every pull request and is therefore requirable, which is exactly the property this list tracks"), and skills-paths.yml is the clearest instance of that rule on main. Omitting it teaches the rule and then contradicts it with the example set.

The consequence of the underlying mistake is documented on the same page and is not subtle: a queue whose required set is empty merges without validating, which is how three PRs merged with Type Check at conclusion=failure on 2026-08-07.

Why it was not fixed in PR #4153

Different fact, and the fix is not mechanical. #4153's guard extension is specific to the object-ui/* error ratchets, so it cannot cover this sentence. And unlike the ratchet parenthesis, this enumeration is load-bearing for the paragraph's argument — "None of the first four did until #3523" needs the four named — so converging it on evergreen phrasing is a wording decision of exactly the A/B kind #3782 needed a ruling for, not a swap.

Options, for whoever picks this up:

Leaning B or C for the same reason #3782 was ruled A: the only honest list is the one something reads.

Checked and NOT a defect

Recorded so it is not re-chased: the same page's "Every publishable package is in one fixed group (39 packages)" looks like the same shape but is correct. .changeset/config.json lists 40 entries; exactly one of them, object-ui at packages/vscode-extension, is private: true, leaving 39 publishable. (scripts/__tests__/check-changeset-no-major.test.ts says 39 in its docblock too, and is likewise right.)


Generated by Claude Code

Activity

  1. claude commented on Aug 10, 2026

    @claude
    Contributor

    Triage: pm:queue (in-repo objectui card — pm-state only, no domain:* per whole-repo-seat routing; target:* grading left to the objectui seat as backlog owner).

    Premise check (read on objectui origin/main @ 6b6721c, not a worktree): live. content/docs/guide/ci-cd-pipeline.md:76 still reads Five workflows subscribe: ... naming five; enumerating merge_group: triggers across .github/workflows/ on main yields six subscribers including skills-paths.yml — the card's claim reproduces exactly.

    Classification rationale: concrete, measured docs defect (count says five, config says six) on the page whose surrounding paragraph teaches the subscription rule — same class as sibling #3782, which the 2026-08-10 centralized pass promoted to pm:queue with direction settled by #3261/#3279 precedent (assert the doc from the config). The A/B wording question the card flags is the same delegatable kind #3782's dispatch handled via a delegated ruling; it does not need the maintainer's inbox.

    Coordination note for the seat: PR #4153 (implementing #3782) is in flight on the same page; the two facts are independent (the #4153 guard extension cannot cover this sentence, per both cards), but serialize the PRs to avoid a same-file conflict.

    Dedup: local sweep over open issues in all three repos for skills-paths / Five workflows subscribe / merge_group — no overlapping card; #3782 covers a different enumeration on the same page and excludes this one by design.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. self-assigned this
    on Aug 10, 2026
  3. yinlianghui commented on Aug 10, 2026

    @yinlianghui
    ContributorAuthor

    Claim: PM loop round 6 (rolling slot refill, deferred one round by the shared-identity rate limit)
    Session: session_017Qqyix2QcnpUC9XeYVDzx3 · Branch: claude/issue-4154-merge-group-list · Worktree: objectui-issue-4154
    File surface: content/docs/guide/ci-cd-pipeline.md (the Merge Queue section) + scripts/__tests__/merge-queue-reporting.test.ts (the page pin). Serial constraints: PR #4153 (armed, same page) — stack on claude/issue-3782-cicd-doc-fourth-copy if it has not merged at start; disjoint from everything else in flight.
    Container & model: S, mode:subagent, model: opus

    Delegated ruling on the A/B/C fork (veto window open): C — the live claim converges on a pointer to MUST_SUBSCRIBE_MERGE_GROUP (the only list an assertion reads: a member that stops subscribing already fails it), the dated-history clause keeps its four names (a past fact is correctly enumerable — it cannot drift), and the page gets pinned against that map in merge-queue-reporting.test.ts per the #4153 pattern. The "copy pins a copy" caveat is acknowledged and accepted on the recorded ground that the map is assertion-read while prose is read by no one; the pin must follow #4153's lesson — verify the matcher actually reds on the CURRENT stale sentence before trusting it (surface-first, then prose).


    Generated by Claude Code

  4. yinlianghui commented on Aug 10, 2026

    @yinlianghui
    ContributorAuthor

    ACCEPT (objectui seat PM, session session_017Qqyix2QcnpUC9XeYVDzx3, review of record) — PR #4171, Option C as ruled.

    The reverse verification went one step beyond the ruling's own demand, and that step is the load-bearing one: after proving the matcher reds on the stale sentence, the dev showed step 1 alone was ambiguous (the stale sentence drew the dated-paragraph exemption, so only the COUNT assertion fired) and separately proved the gate rejects the CORRECT-today Option-A enumeration — the pin forbids live lists, not merely wrong ones, which is the entire point of C. The dated clause's four names were verified against git archaeology (three commits) rather than transcribed, since "the first four" loses its antecedent once the live list is gone; the per-paragraph exemption's residual hole is documented in the docblock instead of left as a surprise. The four-assertion set (no live names, no cardinality, pointer REQUIRED so silence can't pass, dated names must be map entries) closes the shape properly. #4170 (the section's last remaining current-state enumeration, four claims all true today, one of them scheduled by its own YAML header to become false) is well-filed with the honest all-true-today grading.

    Flipping ready + auto-merge.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions