Skip to content

generate per-component workflows; single-component output unchanged #283

Description

@joshua-temple

Problem / why

The generator must emit per-component workflow files for a manifest that declares components
while leaving single-component output byte-identical. The synthesized default component (no
components: block) keeps the existing filenames (orchestrate.yaml, promote.yaml, ...);
declared components get per-component files. This issue establishes the per-component file
scaffolding; the per-component triggers and version wiring are completed in V3.

Scope

This PR does:

  • Set the multi-component generator path: fan generation out over the declared components in
    internal/generate/command.go, choosing a per-component output filename (for example
    orchestrate-api.yaml, orchestrate-web.yaml) and a component-scoped config per component.
  • Keep the single-component path emitting the existing single set of files with the existing
    names, byte-identical. The default component never produces orchestrate-default.yaml.
  • Confirm GeneratedFileMarker orphan detection (internal/generate/marker.go) works across
    the per-component files (it already supports multiple cascade-owned files).

This PR does NOT:

  • Wire each component file's on.push.paths from component triggers, or per-component version
    math (V2 / V3 do that).
  • Touch promotion file generation (P2).

Files / areas touched

  • internal/generate/command.go - multi-component per-component file fan-out and filenames.
  • internal/generate/generator.go - per-component config emission.
  • internal/generate/marker.go - confirm multi-file orphan detection.

Tests and coverage required

  • Generator unit tests: a two-component manifest emits two orchestrate files.
  • A byte-stability test that single-component generated workflows are unchanged.
  • actionlint-clean assertion on the generated multi-component workflows.

Acceptance criteria

  • A multi-component manifest emits one orchestrate file per component.
  • Single-component generated workflows are byte-identical to current output.
  • Generated multi-component workflows are actionlint-clean.

Dependencies

Blocked by F1 and F2.

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

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions