Conformance CI: fail on failed observations; pin spec with harness fixes #4
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
| # Run the link-wire-spec conformance harness against the candidate binary | |
| # (adapted from the spec repo's conformance/example-candidate-ci.yml). | |
| # | |
| # The spec repo — and the GPL reference it builds — live only in the | |
| # runner's temp directory and caches, never in this repo's tree or | |
| # artifacts (clean-room firewall; see PROVENANCE.md). The job output is | |
| # observations only. | |
| name: conformance | |
| on: | |
| push: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| env: | |
| SPEC_REPO: structuresound/link-wire-spec | |
| # The spec content this candidate targets: v0.4.0 plus the harness | |
| # fixes on the spec repo's claude/hopeful-ride-u0k49i branch (closed-loop | |
| # tempo driving). Move this pin to a release tag once one exists | |
| # (link-wire-spec issue #4) and the branch is merged. | |
| SPEC_REF: c3fa146823e284a2abc62eae59075c75d4e58f09 | |
| jobs: | |
| conformance: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout candidate | |
| uses: actions/checkout@v4 | |
| - name: Install Rust | |
| run: rustup toolchain install stable --profile minimal && rustup default stable | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Build candidate | |
| run: cargo build --release -p tactus --bin conformance-peer | |
| - name: Fetch spec + harness at pinned release (outside the workspace) | |
| run: | | |
| git init -q "$RUNNER_TEMP/link-wire-spec" | |
| git -C "$RUNNER_TEMP/link-wire-spec" remote add origin "https://github.com/$SPEC_REPO.git" | |
| git -C "$RUNNER_TEMP/link-wire-spec" fetch -q --depth 1 origin "$SPEC_REF" | |
| git -C "$RUNNER_TEMP/link-wire-spec" checkout -q FETCH_HEAD | |
| - name: Install harness dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| cmake g++ git iproute2 util-linux python3 \ | |
| jackd2 libjack-jackd2-dev portaudio19-dev libasound2-dev | |
| - name: Run conformance harness | |
| env: | |
| CANDIDATE_CMD: ${{ github.workspace }}/target/release/conformance-peer | |
| CANDIDATE_FEATURES: audio | |
| LINK_CAPTURE_WORK: ${{ runner.temp }}/link-reference | |
| run: | | |
| set -o pipefail | |
| sudo --preserve-env=CANDIDATE_CMD,CANDIDATE_FEATURES,LINK_CAPTURE_WORK \ | |
| bash "$RUNNER_TEMP/link-wire-spec/conformance/run-isolated.sh" \ | |
| | tee conformance-observations.txt | |
| - name: Upload observation log | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: conformance-observations | |
| path: conformance-observations.txt |