Repository navigation
ci: publish the results of the solves for the documentation (#314, phase B) - #419
Merged
Merged
Conversation
The publish job of the crons also writes, on the `results` branch, what the problem pages draw (#314): `problems/<problem>/result.json` (every solve, all scopes, from `<report>-results.tsv`), the trajectory of each solve as JSON, `env/<run id>/<platform>/<report>/` (the environment of the solves) and `manifest.json` (the last run of each scope). It extends `tools/cron/report.py` (`--results-dir`): no second publisher. A run replaces, for each problem it solved, the entries of its scope and keeps the others; an environment is removed once no entry refers to it. A convergence cron dispatched by hand takes a `problems` input: it solves those problems only and publishes their results, and leaves the scope report, the state and the issues as the last complete run left them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 7, 2026
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.
Part of #314, phase B of the plan. Stacked on #417 (phase A): the base of this pull request is its branch. Once #417 is merged, GitHub moves the base to
main.Conventions: ct-conventions v0.11.0, ct-agents v0.4.0.
What
The cron publish job now also writes, on the
resultsbranch, what the problem pages will draw (phase C). It extendstools/cron/report.py, which already publishes the reports; there is no second publisher. The output looks like this:resultsmanifest.jsonproblems/<problem>/result.json<report>-results.tsv, numbers as numbers, the problem's fingerprint included, plus the run, the commit and the paths below.problems/<problem>/<scope>/<platform>/<modeling>/<configuration>.json<report>-trajectories.toml(compact JSON).env/<run id>/<platform>/<report>/environment.toml,Project.toml,Manifest.toml,versioninfo.txt,status*.txt.Choices
problem=beamtherefore leaves the other problems as they were, and a JuMP run leaves the OptimalControl entries alone. The plan said "per scope"; per (scope, problem) is what makes a partial run safe.env/<run id>/, pruned. Each entry points to the environment of its own run. An environment is deleted once no entry refers to it, so the single-commit branch does not grow from run to run.parse_resultskeeps every column of the.tsv, not only those of the report:result.jsonneeds the grid, the scheme, the options and the fingerprint. The report reads its columns by name, so it is unchanged.report.pycall takes--results-dir "$RESULTS_DIR", and the publish step stages the whole tree (git add --all) instead ofcron/alone. Python'stomllibreads the trajectories; it ships with Python ≥ 3.11, whichubuntu-latesthas.problemsinput for a cron dispatched by hand (OptimalControl, OptimalControl scalarized, JuMP). The plan's check, "a cron onproblem=beam", was not possible: a dispatch took no input and solved the whole catalogue. Now a restricted run solves only those problems and publishes their results and environments. It writes its report and its state aside, unpublished, and skips the issues: a run that solved onlybeamcannot say anything about the other problems, so it must not replacecron/<scope>.md,cron/state.jsonor the sections of the summary issues..github/workflows/README.md("Results for the documentation"), next to the cron description that already exists, not in a new README.Verification
python3 -m unittest discover -s tools/cron/test: 23 tests pass, 4 of them new.beam) replace only the entries of their scope and problems, and keep the environments still in use. A fourth run prunes the environments nothing refers to any more.beam,vanderpol,jackson,robot,glider,moonlander, OptimalControl and JuMP), arranged as the downloaded artifacts are. The tree above is produced; phase C builds the documentation from it.Not done here: the check on GitHub ⛔
This step needs your go-ahead (human checkpoint of the plan). The real check is a run on GitHub:
gh workflow run CronJuMP.yml --ref feat/314-publish-results -f problems=beam, then a look atproblems/beam/andenv/on theresultsbranch. Withproblemsset, the issues and the cron reports are not touched, but the run still writes to theresultsbranch, so it waits for your decision.actionlintfinds nothing in the modified workflows.🤖 Generated with Claude Code