Repository navigation
ci: checks.yml takes the checks, build.yml keeps the artifacts - #3090
Merged
Merged
Conversation
tic80_add_test records every target it registers and tic80-tests depends on them all, so a test added to the file is built and run without touching the workflow that builds it. A list in the job would let a new test fall out of CI silently — the registration is the source of truth for the run side already, and this makes it one for the build side too. Co-Authored-By: Claude Code <noreply@anthropic.com>
lint.yml becomes checks.yml, and the conformance job leaves build.yml for it as the tests job — which now builds the whole suite the build registers and runs it with ctest, the conformance runner keeping its own invocation so its table still reaches the job summary. release.yml reaches build.yml alone, so a release runs the artifacts and no check; the conformance job had drifted onto the tag path, where a broken measurement could fail a release that has nothing to learn from it. Co-Authored-By: Claude Code <noreply@anthropic.com>
The conformance runner's non-zero exit — the one case it has one — skipped the ctest step under the default success() condition, so the run that broke a measurement was the one without the other fifteen tests' results. The step now gates on the build's outcome alone. Co-Authored-By: Claude Code <noreply@anthropic.com>
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.
The checks and the conformance suite were two halves of one idea that had not met. The tree has a rule it wrote down twice — a check does not live where a release can be blocked by it — and the conformance suite, landed 2026-10-09 after the last tag, was riding the release path:
release.ymlreachesbuild.ymlthroughworkflow_call, so the next tag would have run it, and a broken measurement would have failed a release with nothing to learn from it. This draws the line: one workflow produces artifacts, one holds the checks.lint.ymlbecomeschecks.yml— the format and tidy jobs as they are, under the name that says what the workflow is for.The conformance job leaves
build.ymlfor it, astests— and grows: the sixteen testscmake/tests.cmakeregisters now build and run on every pull request, through the one target the file defines (tic80-tests), so a test added there needs no edit to the workflow.ctestruns the suite; the conformance runner keeps its own invocation, because ctest swallows the output of a test that passes, so its table still reaches the job summary. The configuration is unchanged — static runtime, every language, the system layer off, no display, nothing installed beyond the toolchain.build.ymlis the artifact matrix alone — thirteen jobs, its file and its name untouched; the README badge and the nightly links point at it.release.ymlis untouched too and reachesbuild.ymlalone, so no release runs a check.A registered test that fails is a failure; a conformance divergence stays a finding, as its spec says. Nothing else changes — no source file, flag, artifact or API; the one build-system addition is a convenience target that compiles nothing of its own.
Seen locally in the job's configuration: 362 build steps, 15/15 tests through ctest in 5.5 seconds, and the conformance runner exiting 0 with its table over 119 probes.
🤖 Generated with Claude Code