fix(ci): a cited path has to name a file that is there - #74
Conversation
|
Warning Review limit reachedNext included review available in 39 minutes. View limit detailsLimit details: You’ve used the included review currently available. Your 74 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (3)
Comment |
Workflow source detectedPR #74 now has valid workflow source context (origin=review_followup). No linked GitHub issue is required for this PR. |
Automated Status SummaryHead SHA: 03eaed2
Coverage Overview
Coverage Trend
Top Coverage Hotspots (lowest coverage)
Low Coverage Files (<50.0%)
Updated automatically; will refresh on subsequent CI/Docker completions. Keepalive checklistScopeNo scope information available Tasks
Acceptance criteria
|
|
Workflow state fingerprint for Agents Gate Followups. Do not edit. |
|
Scope note on what this PR's own CI does and does not prove. Green, and the four checks that matter ran rather than skipped: But Basis for confidence in the meantime, absent a live run:
It will be exercised for real by the next PR that touches |
7230021 to
355ca80
Compare
The pin file #60 added cited docs/ci/LINT_BASELINE.md; the file it added is docs/CI_LINT_BASELINE.md. docs/ci/ is the Workflows repo layout and does not exist here, so the only pointer telling a reader to re-measure the baseline before bumping a pin led nowhere. test_ci_gate_config.py read that file CONTENTS thoroughly and its PROSE not at all, which is where the defect lived. test_every_cited_repo_path_resolves requires every repo-relative docs/, scripts/ or tools/ path cited in the two config files this repo OWNS to resolve. Scoped to those two: pr-00-gate.yml yields six findings that are all correct as written, and a test that cries wolf gets waived. The upstream marker is per PARAGRAPH, not per line, because the prose wraps. Deliberate break -> revert: restoring the original citation failed with "autofix-versions.env paragraph at line 23 cites docs/ci/LINT_BASELINE.md"; reverting gave a cmp-clean file and 12 passed. A third fix was dropped as redundant: #73 landed byte-identical backplane-conformance.yml text from the same upstream template while this was open. Floor re-measured six times as the base moved under this one-line change (402 -> 402 -> 407 -> 407 -> 411 -> 415, each +1). verify.py green on the 0d661e3 rebase: 408 passed, 0 failed, 0 skipped, 84/84 selftests, 5/5 gates; fast checks re-run on each later base (12 passed, 416 collected, ruff and black clean) with the full suite left to CI. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
355ca80 to
9bb2213
Compare
Two follow-ups to #60, found while independently verifying that PR from a separate session. A third was dropped as redundant — see below.
1. The pin file's pointer to the baseline led nowhere
.github/workflows/autofix-versions.env:24citeddocs/ci/LINT_BASELINE.md. The file #60 added isdocs/CI_LINT_BASELINE.md— this repo'sdocs/is flat;docs/ci/is the Workflows repo's layout and does not exist here.ruff.tomlandpr-00-gate.ymlboth cite the correct path, so this was the one outlier of three.It matters more than a typo because of what that paragraph is for: it is the sole instruction telling the next person to re-measure the baseline before bumping a pin, which is the coupling that stops a silent tool upgrade from widening the rule set behind the recorded counts. A pointer to a file that is not there reads as verified.
2. A citation now has to name a file that is there
test_ci_gate_config.pydefends the pin file's contents thoroughly — that it exists, pins exactly, and that its versions match the recorded baseline. Nothing read its prose, which is where the defect in (1) lived.test_every_cited_repo_path_resolvescloses that: every repo-relativedocs/,scripts/ortools/path cited in the two config files this repo owns must resolve.Scoped deliberately to
autofix-versions.envandruff.toml. I measured the alternative: scanningpr-00-gate.ymltoo adds six findings, and all six are correct as written —scripts/check_issue_consistency.pysits behindhashFiles(...) != ''with an explicit named-skip branch,scripts/ledger_validate.pybehind a.agentsexistence check, anddocs/ci/WORKFLOWS.mdis an upstream path. That file is synced from upstream anyway. A test that cries wolf six times gets waived, so it is not scanned, and the docstring says why.The upstream marker is scoped per paragraph, not per line, because the prose wraps:
docs/ci/WORKFLOWS.mdis quoted three lines below the sentence that says whose doc it is. Per-line matching false-positived there.Deliberate break -> revert (performed, not asserted)
Restoring the original citation:
Reverting restored a byte-identical file (
cmp-clean) and all 12 passed. The assertion discriminates on the real defect, not on a rephrasing of it.Dropped: the backplane guard, because #73 landed it first
This branch also carried a fix for
backplane-conformance.yml, whoseemit-reference-runjob had failed on all 9 of its runs across four unrelated branches, dying onpip install -e .with nopyproject.toml. #73 merged byte-identical text from the same upstream template while this was open, so that hunk is gone from this diff rather than re-asserted. Recording it because the finding is still worth having on the record:stranske/Workflowsmainalready guarded that install, with a comment naming this exact failure mode. Filing it would have filed an already-fixed bug.CONFLICTINGand stale.Verification
That full run is from the
0d661e3rebase. The branch was then re-based onto0593eeb(#62), which touches neither of these two files, and the fast checks were re-run there:test_ci_gate_config.py12 passed, 412 collected,ruff check .clean,black --line-length 100 --check .196 files unchanged, at the exact pinnedruff 0.16.4/black 26.5.1. The full suite on that last base is left to CI, which is the authoritative environment..verify-floor.json: 411 -> 412, exactly the one new test, rationale appended by hand. No ceiling moved — the test reads committed files only, so it runs on a bare runner and in CI, and in the exec-mirror layout it skips through the samerequire_checkout()gate as its siblings.The floor was re-measured five times, never carried forward
bd6da2e402 →ddb0928402 →fc1fd42407 →0d661e3407 →0593eeb411, each +1 with this test. Main moved six times in the ~2 hours this one-line change was open, and two of those overlapped it directly: #73 duplicated the backplane hunk, and #69 edited this very test file in a different region. Each rebase re-applied onto the new base's version rather than overwriting it — #69 had rewritten a neighbouring test's message, and appending to my stale copy would have silently reverted that.Worth naming for whoever hits it next: now that
collectedis an EQUALITY (#56, and correctly so — a floor let silently-uncollected tests through, and every entry above it in that note records the floor being found below reality), those two lines are a serialization point that care alone does not win. The number is only knowable on the merge result. If it starts costing real time, the durable fix is to have CI runverify.py --update-flooron the merge commit: that keeps the equality and removes the race, instead of asking each author to hand-record a number a concurrent merge invalidates.