Skip to content

[campaign] Python residual cleanup — ~45 estate-authored .py files remain (banned) #309

@hyperpolymath

Description

@hyperpolymath

Finding

Per estate language policy (CLAUDE.md, [[feedback_estate_lang_policy_2026_05_25]]):

Python: Fully banned, no exceptions (SaltStack exception removed 2026-01-03)

A 2026-05-30 estate-wide scan finds ~45 estate-authored `.py` files still in the tree (after excluding vendored upstream content: Rust `target/`, OPAM deps, Lean `.lake/`, MCP `servers/`, HOL/lua-filters/file/repos-monorepo/linguist/hyperpolymath-archive, proven-servers/bindings/python/ consumer-binding carve-out).

Estate-authored residual

Repo / area File Notes
(root) organize_mfa_files.py Personal one-off script
email-octad-experiment 5 scripts (agda-*-probe.py, storage-ratio-probe.py) Migrate to Julia/Idris2
cloud-sync-tuner nautilus-extension/cloud_sync_overlay.py Nautilus extension — host-required Python; consider carve-out
protocol-squisher examples/, docs/samples/, crates/.../scripts/ (6 files) Examples/docs — consumer demo? carve-out candidate
svalinn tools/mvp/svalinn_gate.py Should migrate to Rust
universal-language-server-plugin clients/sublime/UniversalConnector.py Sublime extension — host-required; carve-out
the-nash-equilibrium src/core/main.py Core source — migrate
julia-libraries / julia-ecosystem 4 pytorch-comparison scripts Migrate to Julia
social-media-tools/dipstick smtp_autoconfig.py, virtuoso_adapter.py Migrate to Rust/Julia
servers (MCP) 4 test files Likely vendored upstream MCP servers; check
infrastructure-automation/ansible reflexive_reporter.py Ansible plugin — host-required; carve-out
isers/julianiser examples/data-pipeline/pipeline.py Example — consumer demo?
idaptik idaptik-contracts/tools/codegen.py Codegen tool
ssg-collection 2 SSG engines (terrapin-ssg.py, milk-ssg.py) Migrate to AffineScript/Rust
developer-ecosystem/iser-tools julianiser/examples/data-pipeline/pipeline.py Example (mirror)

Recommended carve-outs

Following the V-lang/TS/RS pattern (consumer bindings + host-required extensions exempt), propose:

  1. Sublime / Nautilus / Ansible extensions — host-loaded Python is contractual. Add **/sublime/, **/nautilus-extension/, **/ansible/plugins/ to a Python carve-out list in standards CLAUDE.md.
  2. examples/ / docs/samples/ — consumer demos showing how a binding is called from Python. Add **/examples/, **/docs/samples/ to carve-out.
  3. Everything else (~10-15 files) — real migration work. Top of mind: email-octad-experiment (5 probes), the-nash-equilibrium/src/core/main.py, svalinn/tools/mvp/, ssg-collection/ssg-fixes/poly-ssg/engines/* (2 SSG engines).

Recommended action

  • Phase 1: Update standards CLAUDE.md to add the carve-outs above (single PR, formalises de facto state).
  • Phase 2: Per-repo migrate the ~10-15 estate-authored residual files. Mostly small scripts — Julia/Rust/AffineScript rewrites feasible 30 min/file.

Out of scope

  • Vendored Python (HOL, lua-filters, file, linguist, repos-monorepo, hyperpolymath-archive, Z3 build artefacts) — never migrate
  • proven-servers bindings/python/ — consumer-language carve-out per estate policy
  • standards/a2ml-templates state-scm-to-v2.py — already noted at standards#307 (.scm→.a2ml convergence)

Refs [[feedback_estate_lang_policy_2026_05_25]] (policy), [[feedback_python_saltstack_absolute_no_questions]] (Python absolute)

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