Repository navigation
ci: retire the dead A2ML validation gate (13 repos — the renamed-action population) #1010
Description
Summary
A2ML does not exist. It was killed by the ML-community name clash and is standing estate
doctrine. Yet Validate A2ML manifests is still a live, enforcing CI gate — it is
currently red in metadatastician/first-post, gossamer and paint-type, where it is one
of the checks blocking the actions.lock desync fixes.
The owner ruling (2026-09-22, selection UI) is to retire it estate-wide in one pass,
rather than clearing it per-repo as it surfaces. Clearing it three times leaves it to redden
the next PR in every other repo that carries it.
Census (measured 2026-09-22T21:07Z)
gh api "search/code?q=%22Validate+A2ML+manifests%22+org:<org>&per_page=100" \
--jq '.items[]|"\(.repository.full_name)\t\(.path)"'142 file-instances across 112 repositories — 84 in workflows, 44 in
.pre-commit-config.yaml, the remainder in docs and action definitions.
⚠ Two things the raw count hides:
- The gate is a step inside
dogfood-gate.yml, not a standalone workflow. Retiring it
means removing that step (and any job that exists only to host it) — not deleting the
workflow, which carries unrelated live checks. - Several hits are already inert and must not be touched as if live:
protocol-squisher/provenance/.github-retired/,squisher-corpus/.github-retired/,
bowtie-workbench/ci/rsr-reference/dogfood-gate.yml.disabled.
Documentation hits (Axiom.jl,typed-wasm,standards/docs/DEPENDABOT-POLICY.adoc,
007-lang/Debtfile.adoc) are prose, not gates, and are out of scope for the CI change.
Full census, 142 rows
hyperpolymath/007-lang Debtfile.adoc
hyperpolymath/accessibility-everywhere .github/workflows/dogfood-gate.yml
hyperpolymath/alloyiser .github/workflows/dogfood-gate.yml
hyperpolymath/anvomidaviser .github/workflows/dogfood-gate.yml
hyperpolymath/Axiom.jl docs/design-diary/PEPYS-DESIGN-DIARY.adoc
hyperpolymath/Axiom.jl docs/flagship-rubric.adoc
hyperpolymath/boinc-boinc .github/workflows/dogfood-gate.yml
hyperpolymath/boj-server .github/workflows/dogfood-gate.yml
hyperpolymath/bunsenite .github/workflows/dogfood-gate.yml
hyperpolymath/cloud-sync-tuner .github/workflows/dogfood-gate.yml
hyperpolymath/deed-core actions/validate/action.yml
hyperpolymath/deed-core actions/validate/README.adoc
hyperpolymath/deed-ecosystem validate-action/action.yml
hyperpolymath/developer-ecosystem affinescript-ecosystem/affinescript-vite/.pre-commit-config.yaml
hyperpolymath/developer-ecosystem affinescript-ecosystem/rattlescript/.pre-commit-config.yaml
hyperpolymath/developer-ecosystem .github/workflows/dogfood-gate.yml
hyperpolymath/dotmatrix-fileprinter .github/workflows/dogfood-gate.yml
hyperpolymath/echidna .github/workflows/dogfood-gate.yml
hyperpolymath/echidna .pre-commit-config.yaml
hyperpolymath/excel-economic-numbers-tool .github/workflows/dogfood-gate.yml
hyperpolymath/explicit-trust-plane .github/workflows/dogfood-gate.yml
hyperpolymath/.git-private-farm ci-deadlock-report.tsv
hyperpolymath/.git-private-farm dispatch-templates/seed/dogfood-gate.yml
hyperpolymath/grim-repo .github/workflows/dogfood-gate.yml
hyperpolymath/gv-clade-index .github/workflows/dogfood-gate.yml
hyperpolymath/hesiod-dns-map .github/workflows/dogfood-gate.yml
hyperpolymath/heterogenous-mobile-computing .github/workflows/dogfood-gate.yml
hyperpolymath/hybrid-automation-router .github/workflows/dogfood-gate.yml
hyperpolymath/hypatia .github/workflows/dogfood-gate.yml
hyperpolymath/hyperpolymath.github.io .github/workflows/dogfood-gate.yml
hyperpolymath/hyperpolymath .github/workflows/dogfood-gate.yml
hyperpolymath/ideas-to-alphas .github/workflows/dogfood-gate.yml
hyperpolymath/ideas-to-alphas .pre-commit-config.yaml
hyperpolymath/idrisiser .github/workflows/dogfood-gate.yml
hyperpolymath/im-docs .github/workflows/dogfood-gate.yml
hyperpolymath/ipfs-overlay .github/workflows/dogfood-gate.yml
hyperpolymath/iseriser .github/workflows/dogfood-gate.yml
hyperpolymath/jaffascript .pre-commit-config.yaml
hyperpolymath/kaldor-iiot .github/workflows/dogfood-gate.yml
hyperpolymath/kea .github/workflows/dogfood-gate.yml
hyperpolymath/kitchenspeak .github/workflows/dogfood-gate.yml
hyperpolymath/krl .pre-commit-config.yaml
hyperpolymath/laminar .github/workflows/dogfood-gate.yml
hyperpolymath/laniakea .github/workflows/dogfood-gate.yml
hyperpolymath/lithoglyph .pre-commit-config.yaml
hyperpolymath/live-files .github/workflows/dogfood-gate.yml
hyperpolymath/llm-grace .github/workflows/dogfood-gate.yml
hyperpolymath/lustreiser .github/workflows/dogfood-gate.yml
hyperpolymath/maa-framework .github/workflows/dogfood-gate.yml
hyperpolymath/metadata-grammar .github/workflows/dogfood-gate.yml
hyperpolymath/methodologies .github/workflows/dogfood-gate.yml
hyperpolymath/natsci-studio .github/workflows/dogfood-gate.yml
hyperpolymath/natsci-studio .pre-commit-config.yaml
hyperpolymath/neurophone .github/workflows/dogfood-gate.yml
hyperpolymath/neurophone .pre-commit-config.yaml
hyperpolymath/nexia-list .github/workflows/dogfood-gate.yml
hyperpolymath/nextgen-databases .github/workflows/dogfood-gate.yml
hyperpolymath/nextgen-typing .pre-commit-config.yaml
hyperpolymath/otpiser .github/workflows/dogfood-gate.yml
hyperpolymath/panic-attack .github/workflows/dogfood-gate.yml
hyperpolymath/panic-attack .pre-commit-config.yaml
hyperpolymath/panll .pre-commit-config.yaml
hyperpolymath/panoply ci/.pre-commit-config.yaml
hyperpolymath/plasma-parser-writer .github/workflows/dogfood-gate.yml
hyperpolymath/polyglot-formalisms-gleam .github/workflows/dogfood-gate.yml
hyperpolymath/polyglot-i18n .github/workflows/dogfood-gate.yml
hyperpolymath/polysafe-gitfixer .github/workflows/dogfood-gate.yml
hyperpolymath/preference-injector .github/workflows/dogfood-gate.yml
hyperpolymath/protocol-squisher provenance/.github-retired/dogfood-gate.yml
hyperpolymath/protocol-squisher provenance/.pre-commit-config.yaml
hyperpolymath/proven-servers .github/workflows/dogfood-checks.yml
hyperpolymath/proven-tests-and-benches .pre-commit-config.yaml
hyperpolymath/rattlescript .pre-commit-config.yaml
hyperpolymath/reasonably-good-token-vault .github/workflows/dogfood-gate.yml
hyperpolymath/recon-silly-ation .pre-commit-config.yaml
hyperpolymath/robodog-defensive-systems-lab .github/workflows/dogfood-gate.yml
hyperpolymath/robot-vacuum-cleaner .github/workflows/dogfood-gate.yml
hyperpolymath/rpa-elysium .github/workflows/dogfood-gate.yml
hyperpolymath/sanctify-php .github/workflows/dogfood-gate.yml
hyperpolymath/sdp-hkdf-deployment .github/workflows/dogfood-gate.yml
hyperpolymath/social-media-tools .github/workflows/dogfood-gate.yml
hyperpolymath/somethings-fishy .pre-commit-config.yaml
hyperpolymath/squisher-corpus .github-retired/dogfood-gate.yml
hyperpolymath/standards docs/DEPENDABOT-POLICY.adoc
hyperpolymath/statistikles .github/workflows/dogfood-gate.yml
hyperpolymath/supernorma .github/workflows/dogfood-gate.yml
hyperpolymath/the-nash-equilibrium .github/workflows/dogfood-gate.yml
hyperpolymath/the-nash-equilibrium .pre-commit-config.yaml
hyperpolymath/tree-navigator .github/workflows/dogfood-gate.yml
hyperpolymath/trope-checker .machine_readable/root-allow.txt
hyperpolymath/twingate-helm-deploy .github/workflows/dogfood-gate.yml
hyperpolymath/typed-wasm docs/wiki/Phase-0-Status.md
hyperpolymath/unified-dataset-vocab .github/workflows/dogfood-gate.yml
hyperpolymath/universal-chat-extractor .github/workflows/dogfood-gate.yml
hyperpolymath/universal-extension-format .github/workflows/dogfood-gate.yml
hyperpolymath/universal-language-server-plugin .github/workflows/dogfood-gate.yml
hyperpolymath/verisimdb-data .github/workflows/dogfood-gate.yml
hyperpolymath/verisimdb .github/workflows/dogfood-gate.yml
hyperpolymath/vocarium .pre-commit-config.yaml
hyperpolymath/voyage-enterprise-decision-system .github/workflows/dogfood-gate.yml
metadatastician/boj-server-mk2 .github/workflows/dogfood-gate.yml
metadatastician/boj-server-mk2 .pre-commit-config.yaml
metadatastician/bowtie-workbench ci/.pre-commit-config.yaml
metadatastician/bowtie-workbench ci/rsr-reference/dogfood-gate.yml.disabled
metadatastician/burble .github/workflows/dogfood-gate.yml
metadatastician/burble .pre-commit-config.yaml
metadatastician/cadastra .github/workflows/dogfood-gate.yml
metadatastician/cadastra .pre-commit-config.yaml
metadatastician/chronicles-of-slavia .github/workflows/dogfood-gate.yml
metadatastician/chronicles-of-slavia .pre-commit-config.yaml
metadatastician/common-signal .github/workflows/dogfood-gate.yml
metadatastician/common-signal .pre-commit-config.yaml
metadatastician/consent-aware-web .github/workflows/dogfood-gate.yml
metadatastician/consent-aware-web .pre-commit-config.yaml
metadatastician/enaction-engine .github/workflows/dogfood-gate.yml
metadatastician/enaction-engine .pre-commit-config.yaml
metadatastician/enterglide-ncc-137-k ci/.pre-commit-config.yaml
metadatastician/first-post .github/workflows/dogfood-gate.yml
metadatastician/first-post .pre-commit-config.yaml
metadatastician/gossamer .github/workflows/dogfood-gate.yml
metadatastician/gossamer .pre-commit-config.yaml
metadatastician/harvard-dehallucinator .github/workflows/dogfood-gate.yml
metadatastician/harvard-dehallucinator .pre-commit-config.yaml
metadatastician/paint-type .github/workflows/dogfood-gate.yml
metadatastician/paint-type .pre-commit-config.yaml
metadatastician/_pathroot .github/workflows/dogfood-gate.yml
metadatastician/_pathroot .pre-commit-config.yaml
metadatastician/planer-1 ci/.pre-commit-config.yaml
metadatastician/pong-ping ci/.pre-commit-config.yaml
metadatastician/pong-ping .github/workflows/dogfood-gate.yml
metadatastician/project-ovine .github/workflows/dogfood-gate.yml
metadatastician/project-ovine .pre-commit-config.yaml
metadatastician/sim-public-relations .github/workflows/dogfood-gate.yml
metadatastician/sim-public-relations .pre-commit-config.yaml
metadatastician/sr71-blackglider .github/workflows/dogfood-gate.yml
metadatastician/sr71-blackglider .pre-commit-config.yaml
metadatastician/stapeln .github/workflows/dogfood-gate.yml
metadatastician/stapeln .pre-commit-config.yaml
metadatastician/stealth-glider-ecosystem ci/.pre-commit-config.yaml
metadatastician/svalinn .pre-commit-config.yaml
metadatastician/tardis-rule-disruption ci/.pre-commit-config.yaml
metadatastician/x15-rocket-glider ci/.pre-commit-config.yaml
Acceptance criteria
- No workflow in either org runs a step named
Validate A2ML manifests, nor any step
that validates.a2ml/REGISTRY.a2mlartefacts. Verified by re-running the census
query above and finding zero hits under.github/workflows/. - Every removal is paired with its
actions.lockconsequence in the same commit. If
removing the step orphans auses:ref, the lock entry goes in the same commit; if a
whole workflow is removed, its lock key goes too. A workflow present in the lock but
absent from disk, and a workflow on disk absent from the lock, are both fatal —
each yieldsjobs=0/startup_failurefor every workflow in the repo. .pre-commit-config.yamlhooks are retired in the same pass, so a contributor's
local hook does not enforce a format CI no longer knows about.- No check is turned green by weakening it. No
continue-on-error: true, no downgrade
of an error to a warning, noif: false. The step is removed, not silenced. Repair the
defect, never mute the diagnostic. first-post#14,gossamer#174andpaint-type#73each lose the
Validate A2ML manifestsred and are re-measured afterwards; the remaining reds in
first-post#16,gossamer#176andpaint-type#83are updated to strike this line.- Inert paths in the note above are left untouched and listed as deliberately skipped.
Why this is not just tidying
A gate enforcing a format that does not exist can only ever do one of two things: pass
vacuously, or block correct work. It is currently doing the second, to three PRs, in a
campaign about CI correctness.
🤖 Generated with Claude Code
Activity
[-]Retire the A2ML validation gate estate-wide (105 instances, 79 repos) — a live gate enforcing a dead format[/-][+]Retire the A2ML validation gate estate-wide (142 instances, 112 repos) — a live gate enforcing a dead format[/+]ci: retire the dead A2ML validation gate from the dogfood gate
ci: retire the dead A2ML validation gate from the dogfood gate
ci: retire the dead A2ML validation gate from the dogfood gate
hyperpolymath commentedon Sep 22, 2026
Scope correction, measured: the actionable population is 13 repos, not 142/112
The census that opened this issue grepped for
a2mlgenerally. That selector conflates three unrelated populations, and acting on it literally would have deleted live validation in 69 repos. Re-measured across all 84 live-workflow repos by what eacha2ml-validatejob actually executes, not by what it is named:uses: hyperpolymath/a2ml-ecosystem/validate-action@maindeed-ecosystem; the Actions runner refuses a renamed action repo outright. Could only ever fail. ← the ruling's real target; swept, see below.find … \( -name '*.a2ml' -o -name '*.deed' \), thenbash .github/hooks/validate-a2ml.shuses: hyperpolymath/deed-ecosystem/validate-action@<sha>first-post,gossamer— landed in #14 / #174The trap that produced the wrong number
Population B's job is already named
Validate DEED manifests, but a step inside it is still namedValidate A2ML manifests, and the hook is still calledvalidate-a2ml.sh(whose own header reads "Scans for .a2ml and .deed files and validates"). A selector phrased "every repo carryingValidate A2ML manifests" therefore matches B. The.a2ml -o .deedpredicate there is a deliberate mid-migration accommodation (standards #837).Rule, for anyone repeating this: classify by what the job EXECUTES, never by what it is NAMED.
The discriminator that confirms A-only is right
The ruling's own wording is remove the workflow/job and its
actions.lockentry. Only Population A has such an entry — B calls no external action at all, and C's entry points at the live successor. The ruling's language fits exactly these 13.Swept — 13 PRs open
Each PR removes four coupled things in one commit (GitHub compares lock↔YAML by literal string, so a split would kill startup): the
a2ml-validatejob; its key indogfood-summary'sneeds:; the scorecard's A2ML block, table row andMAX=6→5; and the lock reference plus its now-orphandependencies:record.hyperpolymath/proven-serversmetadatastician/boj-server-mk2metadatastician/cadastrametadatastician/common-signalmetadatastician/consent-aware-webmetadatastician/harvard-dehallucinatormetadatastician/paint-typemetadatastician/_pathrootmetadatastician/pong-pingmetadatastician/project-ovinemetadatastician/sim-public-relationsmetadatastician/sr71-blackglidermetadatastician/stapelnRemoval, not silencing — no
continue-on-error, noif: false. Every commit is signed. A post-transform guard refuses any push that would leave the lock and the YAML disagreeing.⚠ One policy question this surfaced — your call, not blocking
Retiring A leaves those 13 repos as the only ones in the estate with no manifest-validation job at all, while their 69 siblings run the DEED validator. The 15 Population-C repos and the dispatch seed both show the one-line alternative: re-point the same job at the successor —
You ruled retire without that fact in front of you, so you should see the choice rather than discover it. Retirement is reversible — a later PR adds the C-shape job back — so the sweep has not waited on this. Say the word and I will convert the 13 from removal to migration.
Retraction
I previously noted that the dispatch seed re-propagates the dead gate into every newly dispatched repo. That is wrong.
hyperpolymath/.git-private-farm→dispatch-templates/seed/dogfood-gate.ymlpinsdeed-ecosystem/validate-action@f7a40a4d, correctly, with the comment "Canonical repository identity after the A2ML -> DEED rename." It propagates the successor. Nothing re-seeds the defect.Out of scope here
.pre-commit-config.yamla2ml references need the same classification before anyone treats them as retire-scope — they almost certainly call B's livevalidate-a2ml.shhook.validate-a2ml.sh,*.a2mlin thefindpredicate) is cosmetic. It wants a rename, which is a separate change from a removal, and renaming a job orphans every open PR against it.🤖 Generated with Claude Code
https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm
[-]Retire the A2ML validation gate estate-wide (142 instances, 112 repos) — a live gate enforcing a dead format[/-][+]ci: retire the dead A2ML validation gate (13 repos — the renamed-action population)[/+]hyperpolymath commentedon Sep 22, 2026
Recurrence risk on this sweep: 11 of these 13 repos carry
required_signatures, where an unsigned CodeRabbit push turns the whole PR intostartup_failurewith no check run to show for it. Booked with three arms in #1019.🤖 Generated with Claude Code
https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm
ci: retire the dead A2ML validation gate (#7)
ci: retire the dead A2ML validation gate (#7)
ci: retire the dead A2ML validation gate from the dogfood gate
ci: retire the dead A2ML validation gate (#10)
ci: retire the dead A2ML validation gate (#26)
ci: retire the dead A2ML validation gate (#24)
ci: retire the dead A2ML validation gate (#29)
ci: retire the dead A2ML validation gate (#90)
ci: retire the dead A2ML validation gate (#75)
ci: retire the dead A2ML validation gate (#18)
ci: retire the dead A2ML validation gate (#20)
ci: retire the dead A2ML validation gate (#89)
fix(registry): regenerate the RSR source_hash that #1072/#1075 left s…
fix(registry): regenerate the RSR source_hash that #1072/#1075 left s…
chore: retire the A2ML spec registry and its gates (#1161) (#1213)