Skip to content

Language policy: scripts/abi-ffi-gate.py is Python (banned) — migrate or document an exemption #170

Description

@hyperpolymath

Summary

The governance / Language / package anti-pattern policy job fails on verisimiser (seen on PR #167, run 28286708330). Pre-existingscripts/abi-ffi-gate.py is a Python file, and Python is fully banned estate-wide. Surfaced here for the master scheduler. (I added zero .py files in PR #167; this predates it.)

What the check reports (verbatim)

❌ Python files detected - Python is fully banned — use AffineScript/Rust/SPARK/Julia (SaltStack carveout removed 2026-01-03)
scripts/abi-ffi-gate.py
   (declare an exemption via .hypatia-ignore or an inline
    '# hypatia:ignore cicd_rules/banned_language_file' pragma if intentional)

Options

  1. Migrate (policy-preferred). Rewrite scripts/abi-ffi-gate.py in an allowed language — Bash/POSIX (it's a CI gate script, likely a good fit), or Rust/Julia/AffineScript — and update any workflow/recipe that invokes it. Per CLAUDE.md, "Python is fully banned, no exceptions," so migration is the policy-correct path.
  2. Document an exemption (only if migration is genuinely blocked): add a .hypatia-ignore entry or an inline # hypatia:ignore cicd_rules/banned_language_file pragma with a rationale + unblock condition. This is a policy decision for the owner, not something to apply unilaterally.

Proposed actions

  • Decide migrate vs. exempt (owner).
  • If migrate: port scripts/abi-ffi-gate.py → Bash/Rust/Julia and rewire its caller; verify the ABI↔FFI gate still works.
  • If exempt: add the documented exemption with rationale + unblock condition.

Scope note

Likely a one-off in this repo, but if other -iser repos carry the same abi-ffi-gate.py, prefer a shared migration tracked in hyperpolymath/standards.


Filed from a Claude Code cloud session as a follow-up to PR #167 (merged). Surfaced for the master scheduler.

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

    documentationDocs, prose, diagrams, READMEs, ADRs

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions