Skip to content

Action: a tia-report input that runs selection-misses (#46) - #48

Closed
SebHenn wants to merge 2 commits into
mainfrom
feat/46-action-tia-report
Closed

SebHenn wants to merge 2 commits into
mainfrom
feat/46-action-tia-report

Conversation

@SebHenn

@SebHenn SebHenn commented Oct 25, 2026

Copy link
Copy Markdown
Owner

Closes #46.

cifail selection-misses (#44, shipped in 0.4.0) was CLI-only. The action now takes a tia-report: <path> input.

What it does

  • When tia-report is set, the action runs selection-misses --json --tia <report> <log> in a second docker run, over the same reports as the analysis. args belongs to analyze/gate, so it is not passed on.
  • A Candidate selection misses section goes into the step summary and the PR comment. Test names and messages are in code spans, and the hint points at dotnet tia explain.
  • A new output, selection-misses, holds the count. It is empty when the check could not run.
  • With fail: true, a miss fails the step like any other negative result: exit 1 when the analysis itself passed. exit-code is still the analysis's own code.
  • Sometimes the check cannot run: the report is missing (no PR artifact, or it expired), the report is unusable, log has no JUnit/TRX, or the image is older than 0.4.0. Then the step prints a ::warning:: and the section says Not checked: , quoting cifail's own message. That is never a silent "no miss", and it never fails the step on its own.
  • The report is bind-mounted on its own, so a path under runner.temp or an absolute github.workspace path works too.

Docs

  • README: the input, the output and a new Test-selection misses (dotnet-tia) subsection. The subsection shows the two-job workflow: the PR runs SebHenn/dotnet-tia with report: and uploads the report; the run on main finds the merged PR's run and downloads the report.
  • CHANGELOG under Unreleased, plus a CLAUDE.md note on the invariants.

Tests
docker-smoke's "Run the action's own step script" now also runs the script, as the runner does, with tia-report set. The JUnit failure in that test matches a rule, so only the miss can fail the step:

  • With the tia report outside the workspace and fail: true: the step fails, the section and the list item render, selection-misses=1 and exit-code=0.
  • With a missing report: the step warns, the section says "Not checked", selection-misses is empty and the step exits 0.

There is no Docker on my machine, so I ran this whole CI step locally with real libjq and a fake docker that runs the locally built CLI. All assertions passed, along with the other cases: no miss, unusable report, log-only input, and tia-report unset.

🤖 Generated with Claude Code

SebHenn and others added 2 commits October 25, 2026 22:10
When tia-report is set, the action also runs `cifail selection-misses`
over the JUnit/TRX reports in `log`, adds a "Candidate selection misses"
section to the step summary and PR comment, and exposes the count as
the selection-misses output. With fail: true a miss fails the step.

A check that cannot run (report missing or unusable, no test report in
log, an image without the command) warns and says "Not checked", with
the output left empty: never a silent "no miss", never a red step on
its own. The report is mounted on its own, so a path outside the
workspace works. The README documents the two-job workflow.

Closes #46

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A plain run: step is bash -e without pipefail, so `if step | tee`
tested tee's status and the miss-fails-the-step check could never pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@SebHenn

SebHenn commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

Superseded by #47, which resolved #46.

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.

Action: a tia-report input that runs selection-misses

1 participant