Context
workflow/cigen (shipped v0.67.0) does config-derived analyze → CIPlan → render for GitHub Actions and GitLab CI only. workflow-plugin-ci-generator v0.2.0 routes those two platforms through cigen but keeps the legacy template generators for Jenkins and CircleCI (internal/platforms/{jenkins,circleci}.go), which are NOT config-derived (they ignore the app's secrets union, phases, migrations, smoke, plugin-install needs).
Documented as out-of-scope/future in the design: docs/plans/2026-05-30-wfctl-secrets-wizard-and-smart-ci-design.md §3 non-goals; retro docs/retros/2026-05-30-...-retro.md.
Ask
Add cigen.RenderJenkins(*CIPlan) + cigen.RenderCircleCI(*CIPlan) so all four platforms are config-derived from the same CIPlan, then route the plugin's jenkins/circleci platforms through cigen (retire the templates, like GHA/GitLab in PR #18).
Renderers are mechanical emitters from the existing CIPlan model (jobs/stages, secret env refs, wfctl migrations up, plan-guard, smoke) — no Analyze change needed; the plan already carries everything.
Acceptance
wfctl ci generate --platform jenkins / circleci produce config-derived output (secret env wiring, migrations step, smoke) — verifiable like the GHA renderer's golden tests.
step.ci_generate for jenkins/circleci routes through cigen; jenkins/circleci template generators removed.
Effort: medium (2 renderers + plugin rewire + tests). No new analysis logic.
Context
workflow/cigen(shipped v0.67.0) does config-derivedanalyze → CIPlan → renderfor GitHub Actions and GitLab CI only.workflow-plugin-ci-generatorv0.2.0 routes those two platforms throughcigenbut keeps the legacy template generators for Jenkins and CircleCI (internal/platforms/{jenkins,circleci}.go), which are NOT config-derived (they ignore the app's secrets union, phases, migrations, smoke, plugin-install needs).Documented as out-of-scope/future in the design:
docs/plans/2026-05-30-wfctl-secrets-wizard-and-smart-ci-design.md§3 non-goals; retrodocs/retros/2026-05-30-...-retro.md.Ask
Add
cigen.RenderJenkins(*CIPlan)+cigen.RenderCircleCI(*CIPlan)so all four platforms are config-derived from the sameCIPlan, then route the plugin'sjenkins/circleciplatforms throughcigen(retire the templates, like GHA/GitLab in PR #18).Renderers are mechanical emitters from the existing
CIPlanmodel (jobs/stages, secret env refs,wfctl migrations up, plan-guard, smoke) — noAnalyzechange needed; the plan already carries everything.Acceptance
wfctl ci generate --platform jenkins/circleciproduce config-derived output (secret env wiring, migrations step, smoke) — verifiable like the GHA renderer's golden tests.step.ci_generatefor jenkins/circleci routes through cigen; jenkins/circleci template generators removed.Effort: medium (2 renderers + plugin rewire + tests). No new analysis logic.