Skip to content

Extract the manifest naming-convention gate into a shared action (platform + platform-template both carry a copy)Β #609

Description

@devantler

πŸ€– Generated by the Daily AI Engineer

Evidence

The same manifest naming gate now exists independently in two repos β€” the holistic-review extraction signal:

  • platform: scripts/validate-naming.py (also a portfolio scripting-stack violation β€” bash/Go only, never Python)
  • platform-template: scripts/validate-naming.sh (bash port, added by platform-template#77 for platform-template#66)

The two will drift (the template port already had to diverge on its cr_dir_paths and exempt lists), and every future GitOps repo (gitops-tenant-template instances, new platforms) re-copies one of them.

Audience & impact

Every GitOps-shaped repo in the portfolio: divergent naming conventions and duplicated gate maintenance; the platform copy also blocks the portfolio Python ban from closing.

Hypothesis

One shared implementation in devantler-tech/actions (composite action; Go per the bash-first-Go-when-it-grows rule β€” the bash port is already ~250 lines) with per-repo config (CR-folder list, one-per-file exemptions) keeps all consumers on identical conventions and retires the platform's Python script.

Success signal

platform + platform-template both consume the shared action; validate-naming.py deleted from platform; zero per-repo gate copies remain.

Smallest useful change

Port the gate to Go inside devantler-tech/actions as validate-naming (inputs: config file path), with the template's bash version as the behavioural reference (it has a known false-negative fix the Python may lack: doc parsing must handle files with no leading ---).

Acceptance criteria

  • Composite/Go action validate-naming in this repo, config-driven (CR dirs, exemptions).
  • platform consumes it and deletes scripts/validate-naming.py.
  • platform-template consumes it and deletes its bash copy.
  • Both repos' CI still red on a seeded violation (RED/GREEN proof).

Rough size: M

Metadata

Metadata

Assignees

No one assigned

    Fields

    No fields configured for Feature.

    Projects

    Status
    πŸ“₯ Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions