Skip to content

ci(registry): canonical RegistryCI validation + name/UUID & repo-slug gate + semver policy - #41

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/axiom-jl-registry-infra-kr7t4a
Jul 1, 2026
Merged

ci(registry): canonical RegistryCI validation + name/UUID & repo-slug gate + semver policy#41
hyperpolymath merged 1 commit into
mainfrom
claude/axiom-jl-registry-infra-kr7t4a

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Makes the registry professionally validated — the two critical breakers were fixed in #40; this adds the CI + policy so future malformed changes are caught. Tier-2 of the flagship/registry hardening effort (gaps G23, G25, G29).

Changes

  • ci/validate.jl — two-layer validator:
    • Layer 1: the canonical RegistryCI.test (the checker JuliaRegistries/General uses). It distinguishes the expected non-General registry_deps gap (deps like HTTP/JSON3/Zygote registered in General) from a real tooling/API error — the latter is fatal, so a broken invocation can't silently pass.
    • Layer 2 (TOML-stdlib, independent): (a) every Deps.toml name↔UUID vs Registry.toml across all 37 packages; (b) Registry.toml/Package.toml repo slug + git remote consistency; (c) warn-only Compat.toml upper-bound advisory.
  • .github/workflows/registry-validate.yml — always-triggering CI (no on.*.paths, per the estate required-check rule); the General-registry_deps path is gated + continue-on-error (egress is restricted in-sandbox, unrestricted in Actions).
  • docs/REGISTRY-POLICY.adoc + docs/decisions/0001-…adoc — semver bump rules, mandatory upper-bounded compat, name/UUID immutability, and an auto-merge vs BDFL-review table; the first ADR (GOVERNANCE referenced docs/decisions/ which didn't exist — closes G29). GOVERNANCE.adoc links the policy.
  • tests/idris2/ValidateTest.idr — repaired 4 stale README.adoc references to README.md (README was converted to Markdown in e0903a9; this suite was never updated).

RSR Quality Checklist

Required

  • No banned language patterns (Julia validator + YAML + AsciiDoc)
  • SPDX headers on all new files (MPL-2.0 code / CC-BY-SA-4.0 docs) — verified
  • No secrets, credentials, or .env files
  • CI green — pending (draft; the new validator + existing gates will run)

As Applicable — Registry Changes

  • Per-package TOML consistency — now enforced in CI (name↔UUID + repo slug across 37 packages)
  • Registry.toml index updated for a package/version — N/A (tooling/policy only)

As Applicable — Documentation / Infra Changes

  • Policy doc + first ADR added; GOVERNANCE.adoc updated to link it

Testing

Independently re-run (not self-graded by the worker):

julia ci/validate.jl  →  VALIDATION PASSED (exit 0)
  RegistryCI layer status: expected_general_gap   (ran; 23 "failures" are all General-registry dep UUIDs, expected)
  Layer 2a: 191 name↔UUID pairs across 37 packages — 0 mismatches
  Layer 2b: Registry.toml slug "hyperpolymath/julia-professional-registry" == git remote — 0 owner mismatches
  Layer 2c: 0 unbounded Compat.toml entries

The worker also adversarially corrupted scratch copies to confirm each Layer-2 check fails (exit 1) as designed.

Residuals (tracked)

  • RegistryCI.AutoMerge bot-driven PR automation (needs a GitHub token + a scope decision on bot- vs human-executed policy rows) — noted in the ADR/policy as a follow-up.
  • The Idris2 suite content bug is fixed but the suite still isn't invoked by any workflow (no idris2 bootstrap here) — flagged honestly, not faked.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1


Generated by Claude Code

… gate + semver policy

Makes the registry professionally validated (tier-2; G23, G25, G29).

- ci/validate.jl: two-layer validator. Layer 1 runs the canonical RegistryCI.test
  (the checker JuliaRegistries/General uses); it distinguishes the expected
  non-General registry_deps gap from a real tooling/API error (the latter is
  fatal). Layer 2 adds TOML-stdlib belt-and-braces checks for the exact bug
  classes this registry hit in #40: (a) Deps.toml name<->UUID vs Registry.toml
  across all 37 packages, (b) Registry.toml/Package.toml repo slug + git remote
  consistency, (c) warn-only Compat.toml upper-bound advisory.
- .github/workflows/registry-validate.yml: always-triggering CI (no on.*.paths,
  per estate required-check rule); the General-deps RegistryCI path is gated +
  continue-on-error (egress restricted here, unrestricted in Actions).
- docs/REGISTRY-POLICY.adoc + docs/decisions/0001-...: semver bump rules,
  mandatory upper-bounded compat, name/UUID immutability, auto-merge vs
  BDFL-review table; first ADR (GOVERNANCE referenced docs/decisions/ which did
  not exist -- closes G29). GOVERNANCE.adoc links the policy.
- tests/idris2/ValidateTest.idr: repaired 4 stale README.adoc refs to README.md.

Verified locally: julia ci/validate.jl -> VALIDATION PASSED, exit 0 (RegistryCI
layer expected_general_gap; 191 name/UUID pairs 0 mismatches; repo slug matches;
0 unbounded compat). Adversarial scratch-corruption confirmed each Layer-2 check
fails as designed.

Residual: RegistryCI.AutoMerge PR-automation (needs a GitHub token; follow-up).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UPFC9YQ7g9gc3VnRox42Q1
@hyperpolymath
hyperpolymath marked this pull request as ready for review July 1, 2026 06:43
@hyperpolymath
hyperpolymath merged commit e365509 into main Jul 1, 2026
3 checks passed
@hyperpolymath
hyperpolymath deleted the claude/axiom-jl-registry-infra-kr7t4a branch July 1, 2026 06:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants