Skip to content

[runner]: formalize opt-in self-hosted LV32/NI capability contract #1905

@svelderrainruiz

Description

@svelderrainruiz

Summary

Formalize a specialized, opt-in self-hosted runner capability contract for host-native LabVIEW 32-bit / NI-path lanes.

Why

The repo already has a generic self-hosted Windows contract, but the LV32/NI surfaces are still implicit and path-based. That makes host-native 32-bit execution useful but not governable.

We need a first-class capability contract so jobs can explicitly require the specialized host surface without making it the default execution surface for the repository.

Current State

  • generic self-hosted Windows jobs still route through labels like [self-hosted, Windows, X64]
  • host-native 32-bit / NI assumptions still live mostly in docs, path heuristics, and install expectations
  • template distribution work will eventually need an optional downstream capability expectation for VI History, but compare should publish the authoritative runner contract first

Goal

Define a specialized, opt-in runner capability for LV32/NI-path work that:

  • keeps hosted and generic self-hosted Windows as the default surfaces
  • makes LV32/NI-path requirements explicit and machine-readable
  • routes only the jobs that actually need the specialized host capability
  • adds health validation for the specialized host surface before jobs trust it

Likely Scope

  • document the specialized runner capability and labels
  • add a runner-label contract validator surface
  • add runner health validation for LV32/NI path availability
  • update only the workflows that truly require the specialized capability
  • keep the capability non-default and opt-in

Candidate Surfaces

  • docs/SELFHOSTED_CI_SETUP.md
  • docs/ENVIRONMENT.md
  • .github/actionlint.yaml
  • tools/Assert-RunnerLabelContract.ps1
  • selected workflows for VI History / host-native NI paths

Acceptance

  • the specialized LV32/NI runner capability is explicitly named and documented
  • the contract is validated in-repo
  • jobs that need it declare it explicitly
  • generic hosted/self-hosted jobs remain on their current default surfaces
  • no workflow silently depends on Program Files (x86) heuristics alone for LV32/NI execution

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions