Skip to content

Cross-cutting governance reds surfaced by the actions.lock cure — 9 classes across 17 PRs (incl. a live gate for the retired A2ML) #994

Description

@hyperpolymath

Summary

The actions.lock desync campaign (#968) has landed its cure: 6 PRs merged, 5 more are green
with auto-merge armed. What remains red on the other 17 PRs is, with very few exceptions, not
lockfile damage and not caused by those PRs
. It is a set of estate-wide governance checks that
were already failing
and only became visible once the lock cure revived the workflows that run
them.

This is the expected shape. Per the standing stopping rule a pre-existing red is an issue with
acceptance criteria, never a merge blocker — this is that issue for the cross-cutting classes.
Each affected repo also gets its own triage issue listing its own reds, linked back here.

Measured distribution (17 red PRs, 2026-09-22)

n failing check reading
10 lint-workflows often twice per repo — a matrix leg, so ~6 repos
9 governance / Workflow security linter also red on several main branches
9 Hypatia family — Hypatia neurosymbolic scan (5), scan / … (2), hypatia / … (2) four different check names for one scanner
5 governance / Allowlist Preflight the actions allow-list
3 Validate A2ML manifests ⚠ see below
3 governance / Guix packaging policy (Nix retired)
2 SonarQube
2 governance / Validate Hypatia Baseline
2 analyze (actions, none) CodeQL

Long tail, one repo each: Validate K9 contracts, Validate DEED manifests, scan / gitleaks,
openssf-compliance, estate-audit, estate-rules, check, core-fill-tests,
extension-build, GSBot build…, governance / Check Workflow Staleness,
governance / Language / package anti-pattern policy, Analyze (actions).

⚠ Three things worth a decision rather than a fix

1. Validate A2ML manifests is a live gate for a system that does not exist.
It is failing on gossamer#174, cadastra#51 and first-post#14. Standing estate doctrine is
that A2ML is dead — killed by the ML-community name clash. A gate that validates manifests for
a retired format is not something to repair; the likely correct action is to remove it. I have
not removed anything: that is a call for the owner, not a triage fix.

2. The Hypatia scanner reports under four different check names.
Hypatia neurosymbolic scan, scan / Hypatia Neurosymbolic Analysis,
hypatia / Hypatia Neurosymbolic Analysis, governance / Validate Hypatia Baseline. A ruleset
requires a check by exact context name, so four spellings means four separate required-check
entries to keep in step, and renaming any of them orphans every open PR that predates the rename.
Worth converging on one name — deliberately, with the PRs rebased, not casually.

3. governance / Workflow security linter is red on main too in at least
awesome-nickel and julia-professional-registry. A check that is red on main cannot be used to
judge a branch; it measures the estate, not the change.

Acceptance criteria

  • AC1 — For each of the 9 classes above, one determination is recorded: fix, retire the
    gate
    , or accept with a documented exemption. A class may not stay undetermined.
  • AC2 — Validate A2ML manifests has an explicit owner ruling (retire vs keep). If retired, it
    is removed from the 3 repos and from the estate template in the same change.
  • AC3 — The Hypatia check-name question is settled: either one canonical context name with every
    affected open PR rebased onto it, or an explicit decision to keep the four names, with the
    reason written down.
  • AC4 — Every check currently red on main is listed, with the date it went red. Nothing is
    required of a branch that its base does not satisfy.
  • AC5 — No class is closed by adding continue-on-error, by demoting a failure to a warning, or
    by dropping the check from the required set without AC1's determination. Repair or retire;
    never mute.

Scope note

This issue does not block any campaign PR. The lock cure is independently verified: the gate
kills a mutant that deletes a locked uses: entry, and the previously-dead workflows now execute.
A red here is a workflow getting its first real measurement in months, which is the cure
working, not a regression.

Related: #968 (campaign roll-up), #993 (lock policy + the pin bump), #987 (phantom blob pins).

🤖 Generated with Claude Code

https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    cicdCI/CD: workflows, actions, lockfiles, pins, runners, release gatesgovernancePolicy, rulesets, standards, compliance, and their enforcementrefactorRestructuring that preserves observable behaviour

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions