Skip to content

Build and run the samples in CI, and fix the one that was already broken - #849

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
ci/run-the-samples
Aug 9, 2026
Merged

Build and run the samples in CI, and fix the one that was already broken#849
Rafael-SOWNet merged 1 commit into
masterfrom
ci/run-the-samples

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Collaborator

Closes the gap that #846 exposed: nothing in CI built anything under Sources/Samples.

Why building them is not optional

That gap is why SampleNet5 and FSharpSample stayed broken against the current release for seven months while looking healthy. They were pinned to AngouriMath 1.3.0, so they compiled against a version that still accepted integral(f, x, 1). Unpinning them in #846 was only half the fix — a sample that nothing builds will break again.

Why running them is not optional either

Both of those samples compiled cleanly and threw at runtime. A build-only job would have passed on both. The console samples are therefore run as well; each takes about two seconds.

Writing this found a third one

FSharpPlayground already used a ProjectReference, so nothing was concealing it — it is broken on master today:

FunctionArgumentCountException: integral should have exactly 4 arguments
or 2 arguments but 3 arguments are provided
   at <StartupCode$FSharpPlayground>.$Program.main@() in .../FSharpPlayground/Program.fs:line 15

Same call, integral(y + 3, y, 1). Nothing was hiding this one at all; it simply was never run. Fixed here to the two-argument form, and it now completes.

That is the argument for the job in one example: the pin explained two of the three, and the third was broken in plain sight.

What runs and what only builds

sample built run why
SampleNet5
FSharpSample
FSharpPlayground
Playground
InteractivePlayground Plotly opens a browser
AngouriMathPlot windowed application
GraphicExample windowed application

The steps go in EverythingBuild.yml, which already runs on windows-latest — so the two windowed samples compile there, which they cannot do on Linux (NETSDK1100).

Measured locally

All four console samples build and exit 0:

SampleNet5        exit=0   2s   34 lines
FSharpSample      exit=0   1s   18 lines
FSharpPlayground  exit=0   2s   36 lines   (after the fix; exit=134 before)
Playground        exit=0   1s    7 lines

YAML parses and the job resolves to nine steps.

🤖 Generated with Claude Code

Nothing built anything under Sources/Samples. That is what let SampleNet5 and
FSharpSample stay broken against the current release for seven months while
looking healthy -- they were pinned to 1.3.0, so they compiled against a
version that still accepted integral(f, x, 1).

Unpinning them in #846 was only half the fix. The other half is a job that
compiles them, because a sample nothing builds will break again.

Building is not enough either: both of those samples compiled cleanly and
threw at runtime. The console samples are therefore run as well, which takes
about two seconds each.

Writing this found a third one. FSharpPlayground already used a
ProjectReference, so nothing was concealing it -- it is broken on master
today, on the same integral(y + 3, y, 1) call, and no job noticed because no
job ran it. Fixed here to the two-argument form.

AngouriMathPlot and GraphicExample are built but not run, being windowed
applications; InteractivePlayground is built but not run because Plotly opens
a browser. The job already runs on windows-latest, so the windowed two
compile there.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Rafael-SOWNet
Rafael-SOWNet merged commit 0f73690 into master Aug 9, 2026
24 checks passed
@Rafael-SOWNet
Rafael-SOWNet deleted the ci/run-the-samples branch August 9, 2026 16:40
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