Repository navigation
[CI] Fix builtin capability fallback for --all on clean hosts #410
Copy link
Copy link
Closed
Description
Outcome
Restore a completely green Renderflow default branch by making the canonical --all dry-run path resolve from the built-in capability registry on a clean Ubuntu host, without conflating registered, policy-allowed, provider-available, and selected capabilities.
Observed live baseline
Reproduced from the merged main baseline at 1eafaf54d33a984377a7a3e327ee87382da73307.
- Main CI run: https://github.com/egohygiene/renderflow/actions/runs/34775426178
- Failing job:
build-and-test/Test - Regression:
test_all_without_transforms_uses_builtin_capability_registry - Clean-run diagnostic:
target selection resolved to no available branches; inspect the artifact-forest plan or relax provider/policy constraints - The adjacent target-specific fallback test passes.
- The failure is host-dependent: a developer machine with Pandoc installed can hide it.
The current planner first expands all_reachable against the policy-filtered built-in graph, then removes every optional branch whose provider is unavailable. On a clean host without Pandoc, every Markdown derivative is removed before an inspectable dry-run plan can be returned.
Scope
- Make
renderflow build --all --dry-runwith a valid config and no transforms file resolve through the built-in capability registry on a clean Ubuntu-like host. - Preserve truthful unavailable/blocked branch reporting in the artifact forest and diagnostics.
- Preserve the target-specific blocked-provider fallback behavior.
- Preserve execution preflight: an unavailable external provider must not be reported as installed or executed successfully.
- Add deterministic regression coverage that does not depend on the developer host's installed tools.
- Keep the canonical planner, execution evidence, schemas, docs, and provider contracts coherent.
- Do not weaken CI, skip the test, install Pandoc merely to hide the regression, or expand product scope.
Acceptance criteria
- The clean-host
test_all_without_transforms_uses_builtin_capability_registryregression passes. -
--all --dry-runreturns machine-readable canonical plan evidence even when every policy-allowed derivative requires an unavailable external provider. - The plan distinguishes registered/policy-allowed branches from provider-available selected branches and records unavailable branches honestly.
- A non-dry-run attempt still fails closed at provider preflight when required providers are unavailable.
- Existing target-specific fallback coverage remains green.
- Tests cover zero available branches and mixed available/unavailable branches without relying on PATH contents.
-
cargo fmt --all -- --check, strict workspace Clippy, build, the complete workspace test suite, generated docs/schema checks, conformance, package checks, and relevant manual smoke tests pass. - Required GitHub Actions checks are green on the PR and resulting
mainbefore closure.
Relationships
- Follow-up to [CI] Restore green main after Clippy and generated-doc drift #407 and PR fix(pipeline): restore validation baseline #408.
- Contributes to [EPIC] Finish the flow suite and prove production-ready orchestration flow#11.
- Preserves the artifact-forest/provider-availability contract tracked by Roadmap: universal artifact forest, maximal Renderflow profile, and Flow orchestration readiness #367.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
fix(planner): preserve unavailable all-target plans
szmyty commentedon Sep 14, 2026
Implementation ready for review
PR #411 fixes the clean-host
--allplanning regression without presenting unavailable external providers as installed.Evidence pins:
main:1eafaf54d33a984377a7a3e327ee87382da733071af3168966c4bda646806c1228d3958e6a7561d6fix/all-clean-host-fallback-410The planner now partitions policy-allowed targets by provider availability. If every allowed branch is unavailable, dry-run retains blocked branches so the plan remains inspectable; normal execution still fails preflight before any step or output. The CLI regression forces an empty
PATH, and a second test proves non-dry execution persists a failed, zero-step, zero-output run. Pure planner tests cover mixed availability, zero availability, and required exact-target fallback.All hosted checks are green:
The green CI run includes strict Clippy, build, complete tests, package validations, installer smoke, bundled examples, and web checks. The focused hermetic conformance corpus also passed. No gate was weakened.
Leave this issue open until #411 is reviewed, merged, and the resulting
mainCI run is green.docs(cli): clarify builtin graph planning
fix(planner): preserve unavailable all-target plans
docs(cli): clarify builtin graph planning
szmyty commentedon Sep 14, 2026
Final review head
The PR now includes the bounded documentation correction for transform-free built-in graph planning. Final head:
9a83038fd90f82c49ddf438497445c59a116abe1; final tree:edbaf6c6a87fcb03e3c8cd600822dd9bbc666358.All final-head workflows are green:
The commit metadata and PR body use
Refs #410, not an automatic close keyword. Keep #410 open through maintainer review, merge, and the required green resulting-mainCI confirmation.