Skip to content

fix(meshstack/manual): compute outputs from API, enable SINGLE_SELECT/STATIC inputs#198

Merged
grubmeshi merged 1 commit into
mainfrom
feature/manual-bbd-computed-outputs
Jun 10, 2026
Merged

fix(meshstack/manual): compute outputs from API, enable SINGLE_SELECT/STATIC inputs#198
grubmeshi merged 1 commit into
mainfrom
feature/manual-bbd-computed-outputs

Conversation

@grubmeshi

Copy link
Copy Markdown
Collaborator

What

Adapts the meshStack Manual reference building block to the manual-outputs
change in terraform-provider-meshstack#176, and resolves the long-standing TODO that kept the SINGLE_SELECT / STATIC inputs commented out.

  • Remove the version_spec.outputs block — for manual building blocks the backend derives one output per input (ManualBuildingBlockCreationModule: assignment type NONE, with SINGLE_SELECT/MULTI_SELECT/LIST translated via ManualIOTypeTranslation). With feature/azure uami vs spns #176 the provider treats version_spec.outputs as computed and reconciles it from the API, so configuring it caused "Provider produced inconsistent result after apply".
  • Enable the single_select (SINGLE_SELECT) and static_note (STATIC) inputs that the TODO had disabled. The backend mirrors them (SINGLE_SELECTSTRING), so they no longer break the apply.
  • e2e: supply single_select as a user input and assert its mirrored STRING output.
  • Docs: update the building block README and the BBD description to reflect that every input is mirrored to an output (with type translation) and that outputs are computed.

Why the TODO is now resolved

The TODO referenced "new element single_select/static_note has appeared" in version_spec.outputs. Root cause: the backend always derived outputs from all inputs, but the provider expected the configured outputs to match exactly. Confirmed in meshfed-release:

  • ManualBuildingBlockCreationModule.performImplementationTypeSpecificLogic → one output per input.
  • ManualIOTypeTranslation.translateIOTypeToOutputSINGLE_SELECTSTRING, MULTI_SELECT/LISTCODE.

#176 adapts the provider to this (computed outputs), so the inputs can be enabled.

Dependency

Requires the meshstack provider ≥ 0.21.1 (carries #176). The module keeps the conventional ~> 0.21.0 pin (minor-pinning per AGENTS.md), which resolves to the latest patch at apply time — merge after provider v0.21.1 is released.

Validation

  • terraform fmt ✅, ci/validate_modules.sh ✅, terraform validate (module root + e2e) ✅
  • pre-commit hooks (fmt / docs / validate modules / whitespace) ✅

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Scorecard Check

Scorecard run on commit 39385feca746b60ae122fc2db6c5adaad5ed2ebb relative to origin/main

📊 meshstack-hub Module Scorecard

Generated: 2026-06-10 | Modules scanned: 1 | Categories: 5

📋 Per-Module Category Summary

Score per category per building block. n/a = category does not apply to this module.

Module Overall Core Structure Integration Azure Backplane STACKIT Backplane Testing
meshstack/manual 🟡 76% 🟡 50% 🟢 92% n/a n/a 🟡 67%

⚠️ 1 module has failing checks — failing categories are expanded below.

Core Structure — some checks failing

Basic module file structure and documentation — applies to 1 modules

Module Score 📦 🔗 📋 📝 🖼️ 📌 🔒
meshstack/manual 🟡 50%

Core Structure — Summary

Emoji Criterion Coverage Status
📦 buildingblock/ directory exists 1/1 🟢 100%
🔗 meshstack_integration.tf present 1/1 🟢 100%
📋 buildingblock/APP_TEAM_README.md present (no-integration fallback) n/a
📝 buildingblock/README.md with YAML front-matter 1/1 🟢 100%
🖼️ buildingblock/logo.png included 0/1 🔴 0%
📌 buildingblock/versions.tf present 0/1 🔴 0%
🔒 Provider versions use minimum constraint (>=) 0/1 🔴 0%
Integration — some checks failing

meshstack_integration.tf conventions — applies to 1 modules

Module Score 🏷️ 🏢 📤 🔌 📎 🔀 📋 🏷️ 📖 📝 📊 🚫
meshstack/manual 🟢 92%

Integration — Summary

Emoji Criterion Coverage Status
🏷️ variable "hub" in integration 1/1 🟢 100%
🏢 variable "meshstack" in integration 1/1 🟢 100%
📤 building_block_definition output exposed 1/1 🟢 100%
🔌 meshcloud/meshstack in required_providers 1/1 🟢 100%
📎 backplane source uses var.hub.git_ref 1/1 🟢 100%
🔀 ref_name uses var.hub.git_ref 0/1 🔴 0%
📋 version_spec.draft uses var.hub.bbd_draft 1/1 🟢 100%
🏷️ BBD metadata.tags forwards var.meshstack.tags 1/1 🟢 100%
📖 BBD readme field present 1/1 🟢 100%
📝 BBD readme starts with plain-text description (no heading) 1/1 🟢 100%
📊 BBD readme has shared responsibility table (✅/❌) 1/1 🟢 100%
🚫 No documentation_md output in backplane 1/1 🟢 100%
Azure Backplane — not applicable

Azure UAMI-based automation principal conventions — applies to 0 modules

No applicable modules.

STACKIT Backplane — not applicable

STACKIT WIF-based automation principal conventions — applies to 0 modules

No applicable modules.

Testing — some checks failing

End-to-end test coverage — applies to 1 modules

Module Score ⚙️ 🧪
meshstack/manual 🟡 67%

Testing — Summary

Emoji Criterion Coverage Status
⚙️ backplane/ directory (optional tier) 0/1 🔴 0%
🧪 e2e/ test directory exists 1/1 🟢 100%
e2e/ contains .tftest.hcl files 1/1 🟢 100%

@jannymeshi

jannymeshi commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

📋 Janny has linked this PR to the Feature Shipping Tracker #1344: Fix Manual Building Block Output Type Handling (SINGLE_SELECT / MULTI_SELECT).

This PR addresses DoD items 6 & 7 (reference examples updated, e2e smoke test for SINGLE_SELECT mirrored output). It was originally noted as blocked on meshcloud/terraform-provider-meshstack#176, but that planned PR was superseded by meshcloud/terraform-provider-meshstack#197 (merged, shipped as v0.21.1+) — the blocker is resolved.

[edited: corrected cross-repo PR references to use owner/repo#NNN format; clarified #176 superseded by #197]

@aws-amplify-eu-central-1

Copy link
Copy Markdown

This pull request is automatically being deployed by Amplify Hosting (learn more).

Access this pull request here: https://pr-198.d1o16zfeoh2slu.amplifyapp.com

…ECT/STATIC inputs

Manual building blocks have their outputs derived from the inputs on the
backend (ManualBuildingBlockCreationModule: one output per input, assignment
type NONE, with SINGLE_SELECT/MULTI_SELECT/LIST translated to output-compatible
types). Configuring version_spec.outputs to mirror the inputs caused "Provider
produced inconsistent result after apply" — the documented TODO that kept the
single_select and static_note inputs commented out.

terraform-provider-meshstack #176 makes version_spec.outputs computed for manual
building blocks. Remove the outputs block (now reconciled from the API) and
enable the previously-blocked SINGLE_SELECT and STATIC inputs, which the backend
now mirrors (SINGLE_SELECT -> STRING). The e2e now supplies single_select and
asserts its mirrored output. Requires the meshstack provider >= 0.21.1.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@grubmeshi grubmeshi force-pushed the feature/manual-bbd-computed-outputs branch from 4b91fbe to d7d1121 Compare June 10, 2026 07:07
@grubmeshi grubmeshi merged commit 1110d46 into main Jun 10, 2026
2 of 3 checks passed
@grubmeshi grubmeshi deleted the feature/manual-bbd-computed-outputs branch June 10, 2026 07:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants