Repository navigation
Refuse Node runtimes at validate time and in the Render importer - #132
Merged
Merged
Conversation
shipmill-romamo
Bot
force-pushed
the
feat/114-refuse-node-runtimes
branch
from
October 27, 2026 08:39
cdb15a8 to
c5a21d9
Compare
The deploy role runs only Python with uv, so a Component with runtime.type node or pm2, or packageManager npm, pnpm or yarn, passed config validate and then failed in the role. Validate now refuses it with component_runtime_unsupported (S-002-14), and the Render importer records a Node service as an unsupported gap instead of writing such a Component (S-002-15). The schema enums keep the values as reserved. Fixes #114 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The importer reads runtime or the legacy env key; the S-002-15 test now runs both shapes and checks the Python services and their Domain of the same blueprint still import. The changelog fragment marks the validate refusal Breaking inline, as earlier 0.x entries under Changed do. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shipmill-romamo
Bot
force-pushed
the
feat/114-refuse-node-runtimes
branch
from
October 27, 2026 08:48
c5a21d9 to
c94e2f4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
cloudfall config validatenow refuses a Component whose runtime the deploy role can't run (S-002-14), and the Render importer stops writing such Components (S-002-15).sdk/src/cloudfall/validation.py: a Component withruntime.typeother thanpythonorruntime.packageManagerother thanuvfails withcomponent_runtime_unsupported, the fieldspec.runtime.typeorspec.runtime.packageManager, and a message saying only Python with uv deploys today.config validateexitsCONFIG_INVALID(80). The schema enums are unchanged and keepnode,pm2,npm,pnpm,yarnas reserved valuessdk/src/cloudfall/importer.py: a Render service withruntime: node(orenv: node) is recorded as anunsupportedgap and gets no Component, no port, and no Domain. The node branch of the runtime mapping and itsNODE_VERSIONdefault are removedBehaviour change: configs with a Node runtime that validated before are now refused. No file in
config/examples,config/testsor the test fixtures declares one (checked withgit grep), so nothing in the repo changes.Test plan
uv run pytest sdk/tests/test_importer.py sdk/tests/test_validation.py sdk/tests/test_render_api.py sdk/tests/test_inventory.py engine/tests/test_ansible_inventory.py: 48 passedtest_s002_14_reserved_runtimes_are_refused_as_config_invalid(node, pm2, npm, pnpm, yarn through the CLI),test_s002_15_node_web_service_is_a_gap_not_a_componentuv run ruff check .,uv run mypy,uv run cloudfall config validate --project config/examples: cleanFixes #114
Plan
test_s002_14_*in sdk/tests/test_validation.py), S-002-15 (test_s002_15_*in sdk/tests/test_importer.py)🤖 Generated with Claude Code