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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions