Skip to content

The boundary, root and corpus harnesses run in CI - #1650

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
the-harnesses-run-in-ci
Oct 1, 2026
Merged

Rafael-SOWNet merged 1 commit into
masterfrom
the-harnesses-run-in-ci

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

#1256 asked whether the property harnesses should live in this repository, and you moved it to 2.6.0, which I read as yes. This is the first part: the three harnesses whose criterion is already "a defect, and nothing else".

harness asks fails on
BoundCheck does Simplify keep the value at the boundary: across a branch cut, off the real line, outside a principal interval, at a pole any disagreement
RootCheck is the root set complete, on polynomials built from known factors a missing root, a returned value that is not a root, an exception
CasBench does a corpus of problems with known answers still solve, every answer verified (an integral by differentiating it back) a wrong answer, an exception
  • Where they live. Sources/Tests/Harnesses, as console projects beside AotSmokeTest. They are not in the solution and dotnet test does not pick them up.
  • How CI runs them. .github/workflows/Harnesses.yml runs them on every change under Sources/AngouriMath, one step each, so a red run names the harness. It uploads their reports either way.
  • What is not a failure. A timeout fails none of them, because a shared runner is slower than the machine a budget was set on. An unsolved corpus problem is coverage, not a defect.
  • Reports. Each report says which commit it measured. It goes to HARNESS_REPORTS when that is set, and otherwise beside the projects, where git ignores it.

Measured on master e8446b65: BoundCheck 948 shapes and 0 disagreements; RootCheck 596 of 596 clean; CasBench 120 of 121 solved, 0 wrong. They take about six seconds together, all exit 0, and the reports name e8446b65.

Negative control: with one expected limit made wrong in CasBench's corpus, it exits 1. It was reverted before committing.

CLAUDE.md said every harness lives outside the repository, and now names these three.

The rest come in later parts, as each gains a criterion that fails on a defect rather than on a known finding. canoncheck, confluence and propcheck report known findings today, so they need a recorded baseline, the way the corpus gate records verdicts. crashcheck, simpsweep, rulecheck and egraph take one to four minutes each, which is more a nightly job than a per-change one.

Part of #1256.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

Three of the measurement harnesses move into Sources/Tests/Harnesses as console
projects that dotnet test does not pick up, and .github/workflows/Harnesses.yml
runs them on every change to the library, one step each, uploading their
reports. Each fails on a defect and on nothing else:

- BoundCheck: any value Simplify changes at a boundary point.
- RootCheck: a missing root, a returned value that is not a root, an exception.
- CasBench: a wrong answer, an exception. An unsolved problem is coverage.

A timeout fails none of them, since a shared runner is slower than the
machine a budget was set on. All three are clean on master, together in about
six seconds. A report goes to HARNESS_REPORTS when that is set, otherwise
beside the projects, where git ignores it, and names the commit it measured.

Part of #1256.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
@Rafael-SOWNet Rafael-SOWNet added this to the 2.6.0 milestone Oct 1, 2026
@Rafael-SOWNet
Rafael-SOWNet merged commit 3c1cf28 into master Oct 1, 2026
28 checks passed
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.

1 participant