Skip to content

Migrate remaining Python tooling and tests to Go #2623

Description

@devantler

🤖 Generated by the Daily AI Engineer

Objective

Eliminate the remaining first-party Python scripts, validators, and test harnesses so Platform follows the portfolio-wide Bash-or-Go scripting constitution.

Current inventory

The repository still tracks Python on these first-party automation surfaces:

  • scripts/validate-embedded-json.py
  • scripts/validate-homepage-bookmarks.py
  • scripts/validate-naming.py
  • scripts/tests/test_validate_homepage_bookmarks.py
  • scripts/tests/test_refresh_flux_ghcr_auth.py
  • tracked .pyc or pycache artifacts under scripts

PR #2635 also introduced an alert-coverage test harness in Python while expanding the GHCR harness. Those additions must be replaced with native Go tests before that PR can land; they are part of this migration, not an exception to it.

Delivery shape

Port one focused surface at a time to a small Go command or native Go test package. Preserve every accepted input, diagnostic, exit code, failure-path assertion, and fail-closed safety rule before removing the superseded Python source or CI invocation. Bash remains acceptable for small direct shell-function tests; larger harnesses belong in Go.

Checklist

  • Embedded-JSON validation has an equivalent Go implementation and tests.
  • Homepage-bookmark validation has an equivalent Go implementation and tests.
  • Naming validation has an equivalent Go implementation and tests.
  • The Flux GHCR credential-bridge harness is native Go with equivalent success, failure, ordering, and rollout-race coverage.
  • Alert-coverage validation tests are native Go.
  • CI, path filters, documentation, and local examples invoke only Bash or Go.
  • No first-party .py, .pyc, or pycache artifacts remain under scripts.
  • go test -race ./..., go vet ./..., actionlint, ShellCheck, and the affected repository validators pass.
  • No validation or rollout safety rule is weakened.

Dependencies

Builds on the Go module and validator pattern introduced by #2622. The embedded-JSON validator originated in #2480. PR #2635 is the active delivery surface for the GHCR and alert-test slices.

Notes

This is an umbrella issue. Each slice should remain reviewable and may close a child issue while staying Part of #2623 until the inventory is empty.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions