refactor(meshstack/noop): take the runner's GCP project from test_context - #288
refactor(meshstack/noop): take the runner's GCP project from test_context#288JohannesRudolph wants to merge 2 commits into
Conversation
Scorecard Check
📊 meshstack-hub Module Scorecard
📋 Per-Module Category SummaryScore per category per building block.
Core Structure — some checks failingBasic module file structure and documentation — applies to 1 modules
Core Structure — Summary
Integration — ✅ all passingmeshstack_integration.tf conventions — applies to 1 modules
Integration — Summary
AWS Backplane — not applicableAWS automation principal conventions (WIF or cross-account StackSet) — applies to 0 modules No applicable modules. Azure Backplane — not applicableAzure UAMI-based automation principal conventions — applies to 0 modules No applicable modules. GCP Backplane — not applicableGCP workload-identity-federation automation principal conventions — applies to 0 modules No applicable modules. STACKIT Backplane — not applicableSTACKIT WIF-based automation principal conventions — applies to 0 modules No applicable modules. Testing — ✅ all passingEnd-to-end test coverage — applies to 1 modules
Testing — Summary
|
428de2f to
3653c03
Compare
|
This pull request is automatically being deployed by Amplify Hosting (learn more). |
3653c03 to
c7f6d0e
Compare
…text The runner e2e module read its GCP project from TF_VAR_gcp_project_id. That is an environment fact the smoke-test harness already publishes in test_context (fixtures.gcp.project_id), and keeping it as an env var means it is wired in two places that nothing checks against each other — which is how this test broke silently once already. The harness keeps the Actions variable wired only because this module declares the root variable, so dropping it here is what lets that go too. The meshStack endpoint stays a root variable: it is not secret either, but the harness does not publish it in test_context yet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Record the rule the change above follows: an e2e module takes every environment fact from test_context, and only secrets arrive as TF_VAR_*. Secrets stay the exception because GitHub masks values one by one, so they cannot ride in a single grab-bag object. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
c7f6d0e to
1103dd9
Compare
The
meshstack/nooprunner e2e module reads its GCP project fromTF_VAR_gcp_project_id. That is anenvironment fact the smoke-test harness already publishes in
test_contextasfixtures.gcp.project_id, and keeping it as an env var means it is wired in two places nothingchecks against each other — which is how this test broke silently once already.
The
e2e-testskill records the rule: ane2e/module takes every environment fact fromtest_context, and only secrets arrive asTF_VAR_*(GitHub masks values one by one, so a secretcannot ride in the grab-bag).
Rebased 2026-09-07
This PR was opened as the hub half of a stacked rollout whose harness PRs were later closed in favour
of a different design, which has since merged. Rebased onto that design and reduced to the half that
still applies:
gcp_project_id→test_context.fixtures.gcp.project_id— kept. The fixture field alreadyexists on the harness side, so this has no prerequisite. The harness workflow still exports the
Actions variable and says in a comment that it does so only because this module declares the root
variable, so merging this is what lets that go.
meshstack_endpoint→test_context.meshstack_endpoint— dropped. That field was to be addedby one of the closed harness PRs and does not exist; the endpoint travels the secret pipe today. The
variable keeps a comment saying it should move once the harness publishes it.
The pointer to a harness rule that never landed is gone.
Verification
tofu validateon the runner module, withTF_VAR_test_contextsupplied (itsconst hub.git_refmakes the variable necessary at validate time, not just init), and
pre-commit runon the touchedfiles.
The e2e run itself is verified by a single-module dispatch:
gh workflow run smoke-test.yml -f module=meshstack/noop -f meshstack_hub_ref=refs/pull/288/head.Follow-ups
TF_VAR_gcp_project_idline and theGCP_PROJECT_IDActions variable once thismerges.
meshstack_endpointin the fixtures state output — it is not secret, so by thatdesign's own rule it belongs in the state pipe rather than the secret pump. Then this module's last
TF_VAR_*fixture can go too.🤖 Generated with Claude Code