Repository navigation
test: pin CONTRIBUTING.md's just build section to the recipe and the PR gates - #1321
hivecommons-hive[bot] wants to merge 1 commit into
Conversation
…e PR gates CONTRIBUTING.md makes two claims about `just build` that nothing reads: it enumerates the thirteen validate:* scripts the Justfile build recipe runs, and it states the recipe is not the "Validate repository" and "Lint repository" PR gates, naming the five commands a contributor must run as well. Both are prose describing files the prose never references. tests/dev-environment.test.mjs pins the recipe to the workflows, but only through a validate:-prefixed filter and only against the Justfile; tests/contributing-e2e-setup.test.mjs pins the e2e setup instructions, not this section. So a validator added to the Justfile, or a check added to either gating job, leaves the section describing the repository as it used to be -- and the second claim is the only place the repository tells a contributor how to get a green check on the first push. This is the drift-by-omission class already closed three times here: #1193 for the coverage thresholds (after #1037 and #1169/#1189), tests/audit-gate.test.mjs for the SECURITY.md allowlist, and tests/dev-environment.test.mjs for the Node major. The validator list is asserted as set equality rather than one-way. The siblings' rule -- documenting more than CI runs is never the bug -- fits a doc stating a minimum; this bullet is an enumeration of a recipe body, so a script named but not run is as wrong as one run but omitted. The gate list stays one-way. Both searches are scoped to the bullet and the paragraph rather than the whole file, so a name surviving in an unrelated section cannot hold an assertion green. Every comparison is a pure function of the three documents, and eleven fixtures drive them: four prove the guard goes red on the drift it claims to catch, and the rest drive the "update this test" paths so a restructured document is reported rather than crashed on. Parity holds exactly at this commit, so nothing in CONTRIBUTING.md, the Justfile or any workflow changes -- this only pins them. Verified: 15 tests pass, the full unit suite is green (2388 passed, 0 failed), prettier is clean, and the new file measures 100.00% lines / 100.00% regions, taking the all-files region ratio from 96.17% to 96.20%. Signed-off-by: quality <quality@hive.kubestellar.io>
|
Important Held for human review by the hive's ACMM level gate. This PR was opened by the "quality" agent while Hive policy required a human checkpoint for that agent. Non-outreach agents are held at ACMM L3–L5; the Hive will keep the |
|
Supersession sweep found that this PR's claimed issue is already closed by another merged PR.
this PR also claims another issue that is still open. A human should decide whether to close this PR. This comment is edited in place by the supersession sweep; it is not duplicated. |
Test Improvement
Adds
tests/contributing-just-build-parity.test.mjs, pinning thejust buildsection of CONTRIBUTING.md to the two things it describes and never references.CONTRIBUTING.md makes two claims nothing in the repository reads:
validate:*scripts theJustfilebuildrecipe runs;test:unit:coverage:check,check:format,check:spelling,check:markdown,check:audit.tests/dev-environment.test.mjspins the recipe to the workflows, but only through avalidate:-prefixed filter and only against theJustfile;tests/contributing-e2e-setup.test.mjspins the e2e setup instructions, not this section. So a validator added to theJustfile, or a check added to either gating job, leaves this section describing the repository as it used to be — and claim 2 is the only place the repository tells a contributor how to get a green check on the first push.This is the drift-by-omission class already closed three times here: #1193 for the coverage thresholds (after #1037 and #1169/#1189),
tests/audit-gate.test.mjsfor the SECURITY.md allowlist, andtests/dev-environment.test.mjsfor the Node major.Design notes
tests/contributing-e2e-setup.test.mjs.test:unit:coverage:checkwas unnamed.check:linksis correctly out of scope:check-links.ymlis weekly/dispatch only and deliberately does not gate PRs (CI workflow gaps: flaky-run traces are never uploaded and check:links never runs (needs human: workflow edits) #1188). Build aliases (build/build:production) are excluded too, since the recipe ends in the build step under its own alias.The guard is shown to go red
Every comparison is a pure function of the three documents, so the fixtures can prove it fails on the drift it claims to catch — the standard
tests/e2e-coverage-gate.test.mjssets ("a ratchet nobody has seen go red is indistinguishable from one that always passes"). Four fixtures cover the drift itself:undocumented: ['validate:newly-added']phantom: ['validate:awards']test:unit:coverage:check (run by the "validate" job)check:newly-added (run by the "lint" job)The remaining fixtures drive the "update this test" paths, so a restructured document is reported rather than crashed on three frames down.
Verification
npm run test:unit:coverage:checkpasses;npx prettier --checkclean.92cede9, soCONTRIBUTING.md, theJustfileand every workflow are untouched. This PR adds one file and changes nothing else.Related Issue
Closes #1320
Filed by quality agent (hold-gated mode). Human review required.
— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88 requested_by=@mrbobbytables