Repository navigation
validate: non-required kjanat/actionlint 1.17.0 parity job beside the pinned 1.7.12 (rhysd upstream inactive) - #449
Merged
seathatflowsinourveins merged 7 commits intoSep 28, 2026
Conversation
… pinned 1.7.12 rhysd/actionlint has had no commit on main since 2026-04-19 (none since 2026-06-29), its latest release is still v1.7.12, and issue #719 ("rhysd (the author) inactive") is open. Add a non-required actionlint-successor job that runs the immutable, attested kjanat/actionlint v1.17.0 release with the same download, sha256sum --check and -version/-color pattern as the required 1.7.12 step, harden-runner in audit mode first, contents: read, persist-credentials: false and the same SHA-pinned actions. The required validate job and .github/main-ruleset.json are unchanged. Local parity (evidence/artifacts/actionlint-successor-parity-20260927/): both binaries exit 0 with no diagnostics on the 18 workflows at ba1700a and on this branch, with and without the runner's shellcheck 0.9.0. Fixtures taken from rhysd v1.7.12 docs/checks.md and the v1.17.0 release notes classify the upgrade's differences (relocated shellcheck columns, removed 1.7.12 false positives, new true positives, default-on cache policies). automation.json replaces the actionlint entry's "Maintained" claim with the dated staleness facts; the selection stays 1.7.12. SOTA sources: kjanat/actionlint v1.17.0 (commit 08bb2c4f; SLSA provenance from .github/workflows/release.yml@refs/tags/v1.17.0; CHANGELOG.md and release notes), rhysd/actionlint v1.7.12 (914e7df2; docs/checks.md), actions/runner-images images/ubuntu/Ubuntu2404-Readme.md (c9dd57c6), zizmor 1.30.1. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Register the new receipt files and re-register .github/workflows/validate.yml and catalogs/foundation/automation.json through host_receipts.register_file, per the docs/lanes.md hot-file protocol (shared hot file in the branch's last commit). component_matrix.py --write and new_host_grand_list.py --write left their generated reports unchanged; scripts/validate.py passes. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… verification-order claims Repairs the three findings of the cross-family GPT-6 review of #449. 1. compare.py (P2): messages at one (filepath, line, column, kind) key were matched by membership, so a duplicated diagnostic vanished (new copy) or was counted twice as identical (old copy). They are now paired as multisets: Counter & keeps min(old, new) copies, Counter - keeps only positive differences, and elements() repeats each message by its count. Source: Python docs, collections.Counter, https://docs.python.org/3/library/collections.html#collections.Counter Reviewer probe: identical=1, only_new=0 before; identical=1, only_new=1 after. Reverse probe (old 2 copies, new 1): identical=2 before; identical=1, only_old=1 after. compare.py has no self-check or fixture test to extend. Re-run over the six retained report pairs in <scratch> at 2026-09-28T07:16:23Z: every pairing count is unchanged, each output is byte-identical to that run's recorded compare.json, and the fixture outputs are byte-identical to fixture-compare-*.json (the membership revision reproduces the same files from the same inputs). Recorded as receipt.json parity.compare_rerun; classification figures unchanged. 2. Fixture coverage (P3): claim_boundary and the README claimed an example of every class, but classification.rows has fixtures == 0 for "reworded" and "new false positive" (the receipt's own rows). Both now name the five exercised classes and the two without a fixture. 3. Verification order (P3): verification.order said every check preceded binary execution, while the receipt's window_utc.note places the attestation-count query after parity_end. The order now lists only checks with retained output dated before extraction (02:05:48Z) and the first -version output (02:05:54Z): the first pass in verification.window_utc (verify-start.txt/verify-end.txt), then 02:04:35Z-02:05:29Z tag lookups, release.yml at the signer digest, identity-pinned re-verifies and the four negative controls (retained output modification times). The 1.17.0 attestation count (output dated 02:17:41Z) and the untimed gh release view read, 1.7.12 attestation count and shellcheck chain are not claimed as preceding execution. The README heading and window sentence now match. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
The Order bullet added in the previous commit read "every table row except Immutable release, the tag lookup and the four negative controls finished before ...", which parses as if the tag lookup and the negative controls were exceptions. It now states what is not claimed first, then lists the three groups that did finish before the first binary run, matching receipt.json verification.order (the repair's source: retained output modification times, 02:04:35Z to 02:05:29Z, before extraction at 02:05:48Z and the first -version output at 02:05:54Z). README.md re-registered in manifests/evidence.json. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…e protocol Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
The upstream_status block's observed_at_utc (02:03:12Z) also covered the kjanat commit-author tally, whose source (gh api --paginate .../commits?since=2026-08-07, kjanat-commits-since-fork.json) was fetched at 2026-09-28T02:21:31Z. The tally now carries its own observed_at_utc, the README source line says so, and "242 of 253" names its scope (default-branch commits dated since 2026-08-07) in the README and claim_boundary. Residual from the repair-round verifier; the upstream figures are unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…e protocol Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins
deleted the
claude/actionlint-successor-parity-20260927
branch
September 28, 2026 08:28
This was referenced Sep 28, 2026
seathatflowsinourveins
added a commit
that referenced
this pull request
Sep 29, 2026
…nt v1.17.0 (hosted parity 25/25) (#476) * validate: swap the required actionlint step to kjanat/actionlint v1.17.0 (M2 step 3) The required validate job's actionlint step now downloads kjanat/actionlint v1.17.0 with the trial job's URL, pinned digest, sha256sum --check, extract and -version/-color pattern, still after zizmor, and the non-required actionlint-successor trial job is removed. The job keeps the workflow-level contents: read, harden-runner in audit mode first and persist-credentials: false. On every push run of validate.yml on main from b60d518 (#449) through f021926 (#469), 25 of 25, the trial job and the rhysd 1.7.12 step both succeeded (actionlint exit 0: no diagnostics). A fresh local run of the documented procedure verified the archive digest, the release checksums file and gh attestation verify -R kjanat/actionlint (exit 0; a wrong-repository control exits 1), and 1.17.0 reports 0 diagnostics on this branch's 20 workflows with and without shellcheck 0.9.0-1. catalog-freshness.yml's pin row, automation.json's actionlint interface (six lines, 2026-09-27 note kept as history) and docs/github-automation.md's install and attestation procedure (same line count) follow the pin. The present-tense claims that the pinned actionlint rejects concurrency `queue` are reworded as dated statements; no behaviour changes, and the propose-job concurrency assertion is unchanged. Receipt: evidence/artifacts/actionlint-successor-swap-20260928/. SOTA sources: kjanat/actionlint v1.17.0 (immutable release; annotated tag 2da2ceb4 -> commit 08bb2c4f; SLSA provenance signed by .github/workflows/release.yml@refs/tags/v1.17.0; docs/install.md lines 124-134, docs/usage.md lines 275-284, CHANGELOG.md lines 13 and 238), rhysd/actionlint v1.7.12 (docs/usage.md lines 181-190), zizmor 1.30.1 (.github/requirements-ci.txt). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * evidence: register the actionlint successor swap receipt Register the two new receipt files and re-register validate.yml, catalog-freshness.yml, automation.json, docs/github-automation.md and tests/test_catalog_freshness_propose.py through host_receipts.register_file, per the docs/lanes.md hot-file protocol (shared hot file in the branch's last commit). As in #449, the receipt is hash-listed in files[] with no receipts[] entry. component_matrix.py --check and new_host_grand_list.py --check passed unchanged, so neither --write ran; python3 scripts/validate.py exits 0. SOTA sources: docs/lanes.md hot-file protocol; scripts/host_receipts.py register_file; precedent b60d518 (#449). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * actionlint swap receipt: record the local negative control, narrow item 1, date the procedure's rhysd-era results (review repair) - receipt/README: local_negative_control (fixture fixtures/nc.yml.txt, zizmor 0, kjanat exit 1 with and without shellcheck); trial item 1 is closed except the shellcheck sub-claim; hosted negative control and hosted shellcheck evidence stay pending, with the reason (no --no-verify, no test edit); dated-records citation widened to docs/catalog-provenance.md L133-189. - docs/github-automation.md: one appended sentence (no new line) dating the 2026-09-20/21 results to rhysd v1.7.12's procedure. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Hot-file registration after merging main (docs/lanes.md protocol): re-register the 8 changed paths Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> --------- Co-authored-by: Scout <scout@local> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
actionlint-successorjob that runskjanat/actionlintv1.17.0 beside the required, pinnedrhysd/actionlint1.7.12. It also replaces the "Maintained" claim incatalogs/foundation/automation.jsonwith the dated staleness facts: no rhysd commit since 2026-04-19, and issue Fix skills lifecycle gates and retain skills qualification evidence #719 "rhysd (the author) inactive" is open..github/main-ruleset.jsonandcatalog-freshness.ymlare unchanged. The swap to the new pin waits for hosted parity, and the freshness row is coordinated with a peer session.ba1700ad;mainmerged in atf508ffbaper the docs/lanes.md hot-file protocol.lane:foundation..github/workflows/validate.ymlcatalogs/foundation/automation.jsontests/test_workflow_hardening.py(if touched)evidence/artifacts/actionlint-successor-parity-20260927/manifests/evidence.jsonSOTA sources
08bb2c4f). It is an immutable release. Its archive sha256620abd48…d6e5acarries SLSA and in-toto attestations signed bykjanat/actionlint/.github/workflows/release.yml@refs/tags/v1.17.0. Sources used: CHANGELOG.md and the release notes.914e7df2, docs/checks.md). Its SLSA attestation was verified.images/ubuntu/Ubuntu2404-Readme.md(c9dd57c6), for the runner's shellcheck 0.9.0..github/requirements-ci.txt).Evidence-class table
evidence/artifacts/actionlint-successor-parity-20260927/Local commands run
Decision record
The staleness facts are dated in
catalogs/foundation/automation.jsonand in the receipt.Review
codex exec -s read-only -m gpt-6-astra, effort max, on6a5f8487, 2026-09-28): changes-needed.compare.pypaired diagnostics by set membership, so duplicates vanished.8cfbdeaa,a06851f5):collections.Countermultisets.Checklist
permissions: contents: read; harden-runner in audit mode;persist-credentials: false.🤖 Generated with Claude Code