Skip to content

docs: post-#834 pass — workflow names, merge gating, zero-check policy - #985

Merged
thekevinbot merged 4 commits into
mainfrom
claude/tackle-932-4sxof0
Aug 20, 2026
Merged

thekevinbot merged 4 commits into
mainfrom
claude/tackle-932-4sxof0

Conversation

@thekevinbot

@thekevinbot thekevinbot commented Aug 20, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #932

Docs-only. The code half of the post-#834 cleanup — just preflight reading the deleted conventions.yml — landed separately as #983, and this PR deliberately does not touch it.

Item 1 — retire the pre-#834 workflow names

conventions.yml, python-test.yml, ts-test.yml, rust-test.yml are gone; the docs still routed readers to them. Renamed to their surviving homes across AGENTS.md, all three named reference docs (testing-conventions-ci.md, testing-gates.md, e2e-attestation.md), plus internals/distcheck/README.md, the justfile recipe comments and a testing-conventions.toml comment — same stale names, and a contributor reading just --list hits those first.

Added the caller-job table to testing-conventions-ci.md, so "which workflow runs this gate" is answerable without grepping .github/workflows. The eight caller job ids survived the split unchanged, which is why check-run names did too — worth stating, since it's the non-obvious part.

Historical mentions of conventions.yml are kept where they're describing what #861 changed.

Items 2 + 3 — merge gating, rewritten against what actually runs

Staler than the issue assumed. AGENTS.md was already off Mergify (#950), but it taught pre-sleep: 30 / minimum-checks: 0 / timeout: 45 as the gate's tuning knobs — and pr-monitor@v1 has none of those inputs. github-token is the entire surface; the rest were removed upstream when the action stopped guessing. Ours sat inert until 3d248a0 dropped them as such. So the documented failure modes described machinery that was not running.

What v1 actually does: willfire evaluates the workflow files against the PR's base, changed files and head to predict the exact run set, and the gate is a set comparison — yellow while a predicted run is missing or unfinished, red on a bad conclusion, red on a run nothing predicted.

Item 3's premise inverted, and I documented the reversal rather than the request. The issue asked to write down "a path-filtered workflow still in flight does not hold the gate". Under prediction the opposite holds: it was predicted, so it is required, and it holds the gate pending. Zero-check-merge is still the policy, but it is now a derived verdict (the gate reads the same files GitHub does) rather than the accepted blind spot it was under check-counting.

Item 3 also said to cross-reference #862. That's closed not_planned, so pointing at it would send readers to a dead end — documented instead that prediction subsumes most of what it would have checked.

Note on size: the rewrite pushed AGENTS.md past the 40k limit its own line 13 declares. Split the operational half into agents/reference/pr-monitor.md, following the convention the file already uses for four other references. AGENTS.md ends at 36,479 — smaller than the 36,884 it started at.

Item 4 — READMEs

Recorded in AGENTS.md and agents/reference/changelog-migrations.md that a package README needs a changelog fragment: READMEs ship in all three published artifacts, which is why release-ci.yml keeps them while excluding fragment dirs, and why _is_exempt omits them. No code change — the gate is correct as written. #834's spec row amended in a comment.

Item 5 — #885

Amended in a comment: the publisher is docs-release.yml, not docs-deploy.yml. The underlying fix already landed in #967, and I verified the asymmetry is fully closed — neither docs workflow lists MIGRATIONS.md, and docs-ci.yml now carries its own self-path.

Why comments and not body edits for items 4 and 5: the GitHub MCP issue_read returns bodies HTML-entity-escaped and lossy — it silently drops HTML-ish text, including the VitePress include directive in #885. Writing a fetched body back would have destroyed content in a closed issue.

Rebased onto #983

#983 merged while this was open and touched two of the same files. Resolution:

  • internals/checks/README.md and the preflight recipe comment — fix(checks): derive preflight's gate matrix from every workflow that calls testing-conventions #983 made the same correction with better knowledge (it documents --conventions, and the new internals-checks-integration job). Took its version wholesale; this PR no longer touches that README.
  • The justfile's other four stale names (python-test.yml / ts-test.yml in the distcheck recipes, conventions.yml in e2e-attest-python and test-packaging) did not conflict and are still needed, so they are restored in 5bc9a39.
  • That commit also names --conventions in AGENTS.md's preflight line, since the line enumerates the other two options.

Verified the resulting claim rather than asserting it — dirsql-checks preflight --dry-run on the rebased tree derives exactly 40 gate pairs across 8 scan roots in 6 workflows, which is what both AGENTS.md and the justfile now say (48 total lines, less the 4 uv-sync + 4 declared-deps backstop pairs documented separately).

Follow-up filed, deliberately not fixed here

#982 — the docs still name a single-file e2e-attestation.json in ~8 places, but attestations are per-branch receipts under e2e-attestations/<branch>.json. AGENTS.md contradicts itself on this. It's a different drift (the receipts change, not the #834 split), so folding it in would have widened this PR.

E2E Verification

N/A - docs only

No source under packages/** or plugins/** changed. The internals/distcheck/README.md edit sits outside any --scope, so no attestation stales.

Changelog / Migrations

  • Changelog fragment added for each changed package — not required: no packages/<pkg>/ or plugins/<pkg>/ source touched; every commit carries a skip-changelog: reason
  • Migration fragment added — not required: documentation only, no behavior change

No PARITY.md change — no SDK public API touched.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KcNqe44kvgP5mBRr9LjQcE

claude added 4 commits August 20, 2026 19:40
deleted conventions.yml, but the docs still routed readers to files that
no longer exist -- conventions.yml, python-test.yml, ts-test.yml,
rust-test.yml. Names them by their surviving homes instead, and adds the
caller-job table so "which workflow runs this gate" is answerable
without grepping .github/workflows.

skip-changelog: docs and CI comments only, no package source

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KcNqe44kvgP5mBRr9LjQcE
The PR Monitoring section still taught pre-sleep, minimum-checks and
timeout as the gate's tuning knobs. pr-monitor@v1 removed all three when
it stopped guessing: willfire now predicts the exact run set from the
workflow files, and github-token is the whole input surface. Ours had
been passing the removed inputs inertly until they were dropped, so the
documented failure modes described machinery that was not running.

Records the zero-check-merge policy the anchor removal left unwritten,
now that prediction makes it a derived verdict rather than an accepted
blind spot -- including the corollary that reversed: a path-filtered
workflow in flight does hold the gate, because it was predicted.

The rewrite outgrew AGENTS.md's 40k budget, so the operational half
moves to agents/reference/pr-monitor.md alongside the other extracted
references. AGENTS.md ends up smaller than before.

skip-changelog: docs only, no package source

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KcNqe44kvgP5mBRr9LjQcE
#834's path-filter spec listed README.md with the root prose files as
free. The gate disagrees on purpose -- _is_exempt omits READMEs, since
they ship in the PyPI long-description, the npm tarball and the crate,
and release-ci.yml keeps them in its triggers for the same reason. The
maintainer decision during that stack's final review was to keep the
gate and correct the rules text, which nothing had done.

skip-changelog: docs only, no package source

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KcNqe44kvgP5mBRr9LjQcE
The recipe comments still routed readers to python-test.yml, ts-test.yml
and conventions.yml for the distcheck jobs, the python e2e-verify gate and
the packaging gate. Same four retired files as the rest of this branch,
and a contributor reading `just --list` hits these before any reference doc.

Also names `--conventions`, which #983 added while this branch was open, in
AGENTS.md's preflight line -- that line enumerates the other two options, so
omitting it reads as though it does not exist.

skip-changelog: docs and recipe comments only, no package source

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KcNqe44kvgP5mBRr9LjQcE
@thekevinbot
thekevinbot force-pushed the claude/tackle-932-4sxof0 branch from 402111b to 5bc9a39 Compare August 20, 2026 19:46
@thekevinbot
thekevinbot merged commit ba30b97 into main Aug 20, 2026
19 checks passed
@thekevinbot
thekevinbot deleted the claude/tackle-932-4sxof0 branch August 20, 2026 19:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs: post-#834 pass

2 participants