Skip to content

behold triggers CI pipelines as the (prod) apply executor + correlates runs to their stacks — one layer #61

Description

@lex00

Idea (deferred — captured from a design conversation)

Today behold's apply (M3) runs chant run --components itself (fine for local mode against Floci). But outside local mode, the CI pipelines are what do the apply — GitLab CI runs the generated per-component pipeline. So behold's role in prod is to trigger the pipeline and observe the resulting deployment, presenting the CI pipeline and the AWS deployment as one layer (the epic's thesis: the component DAG read two ways).

The shape (three distinct things, not two)

  1. CI projection (static — what a pipeline would do) — stage / needs: / run-command per component. Already built (M1.2: CI projection facet per component #58): a per-component facet on the DAG. One layer. ✓
  2. CI run status (a pipeline executing now) — jobs running/passed/failed. Should color the same DAG exactly like live AWS status does (M1.1: live AWS status per component, on Floci #57), because jobs = components by name (the existing join key). Still one layer.
  3. CI run timeline (temporal detail — retries, logs, durations) — belongs in a separate run surface (like M3's structured-progress panel / the lanes view), not smeared on the spatial DAG.

The unifying principle: apply is executor-agnostic (a target concern, M2)

  • Local target → behold runs chant run --components itself (M3, done).
  • Prod target → behold triggers the CI pipeline; the pipeline's job events stream back as the same structured progress (jobs↔components by name); the same live-status join colors the same DAG.
  • behold stays the control plane (trigger + correlate pipeline→stacks) — it never applies to prod directly.

Concrete first slice (local, provable today)

behold triggers a GitLab pipeline via gitlab-ci-local against Floci (already the "Bring up GitLab CI" path in the M5 substrate strip), parses the run's job status, and colors the component DAG by live job status — so you can graph the pipeline and watch it run, correlated to the stacks it deploys. Then generalize the dial's "apply" to dispatch by target (local chant run vs trigger-CI).

Prereqs / relates to

Deferred for now — the local, single-target flow is solid; this is the multi-target / CI-driven-apply evolution.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions