fix(publish-runtime): align cascade list to 4 supported runtimes - #2556
Conversation
The cascade `TEMPLATES` list in publish-runtime.yml had drifted from
manifest.json:
Currently dispatches to: claude-code, langgraph, crewai, autogen,
deepagents, hermes, gemini-cli, openclaw
manifest.json supports: claude-code, hermes, openclaw, codex (after
PR #2536 pruned to 4 actively-supported)
Two consequences of the drift:
1. `codex` (added in PR #2512, supported in manifest) was never in the
cascade — fresh runtime publishes did NOT trigger a codex template
rebuild. Codex stayed pinned to whatever runtime version it last saw
at its own image-build time.
2. langgraph/crewai/autogen/deepagents/gemini-cli — deprecated, no
shipping images, no working A2A — were still receiving cascade
dispatches. Wasted API calls and (worse) green CI on dead repos
masks "this template is dead, stop maintaining it."
Now matches manifest.json workspace_templates exactly. Surfaced during
RFC #388 (fast workspace provision) prior-art audit.
Long-term fix is to derive TEMPLATES from manifest.json so this can't
drift again — captured as a Phase-1 invariant in RFC #388. This commit
is the data fix only; structural fix lands with the bake pipeline.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Self-review (five-axis, code-review-and-quality skill)Correctness ✓ — Cascade list matches Readability ✓ — 6-line comment answers the WHY (hardcoded list, why these 4, why not auto-derived) that future readers would ask; matches the file's existing explanatory-comment convention. Architecture ✓ — Doesn't change the mechanism, only the data. Structural manifest↔cascade gate is correctly deferred to RFC #388 Phase 1 ("don't bundle" per round-1 reviewer guidance). Security ✓ — No secrets, no new inputs, no trust-boundary changes. Performance ✓ (net positive) — 4 dispatches instead of 8 halves cascade tail latency and saves 4 wasted GH API calls per publish. Verification
Findings (informational, not blocking)FYI: Pre-existing fragility at lines 347–351 — if all dispatches fail (e.g., token narrowed to no-permission), job warns but exits 0. Token-missing is already gated (lines 314–323 hard-fail on push), but a partially-narrowed token would silently warn forever. Worth a separate follow-up issue. Nit: Comment cites RFC #388 in molecule-controlplane (private) from this public repo. Cross-repo private→public link works for org members but is opaque to external readers. Consider mirroring the structural-fix tracker into molecule-core too. Not blocking. VerdictApprove. Definitely improves overall code health. Already approved + queued; this comment is for the record. |
The cascade-list-vs-manifest drift gate (PR #2556's behavior-based test) caught my previous-commit cascade additions as 'extra-in-cascade'. Manifest is the source of truth — restoring there. All 5 templates have successful publish-image runs in the past 24h (verified before the cascade fix), and continuous-synth-e2e defaults to langgraph as its primary canary. None deprecated. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
The cascade
TEMPLATESlist atpublish-runtime.yml:330had drifted frommanifest.json:claude-code, langgraph, crewai, autogen, deepagents, hermes, gemini-cli, openclaw(8)claude-code, hermes, openclaw, codex(4)Two consequences of the drift:
codexwas never in the cascade — added to manifest in feat: register codex runtime + runtime native-MCP design docs #2512 but the cascade list wasn't updated. Fresh runtime publishes did not trigger a codex template rebuild; codex stayed pinned to whatever runtime version it last saw at its own image-build time. Likely root cause of any "codex stuck on stale runtime" symptoms.langgraph, crewai, autogen, deepagents, gemini-cli) — pruned from manifest by chore(manifest): prune to 4 actively-supported runtimes #2536 — were still receiving cascade dispatches. Wasted API calls, and green CI on dead repos masks "this template is dead, stop maintaining it."After this PR,
TEMPLATES="claude-code hermes openclaw codex"matchesmanifest.jsonworkspace_templates exactly.Surfaced during the RFC #388 (fast workspace provision) prior-art audit.
Long-term
The data fix alone leaves the underlying drift hazard — manifest changes still need a manual cascade-list update. RFC #388 captures the structural fix (derive
TEMPLATESfrommanifest.jsonso this can't drift again) as a Phase-1 invariant of the bake pipeline. Don't bundle that here — keep this PR focused on the immediate data correction.Test plan
python3 -c "import yaml; yaml.safe_load(...)")🤖 Generated with Claude Code