Skip to content

feat(breakage): derive the downstream packages from the Project.toml files - #109

Merged
ocots merged 1 commit into
mainfrom
feat/breakage-consumers
Oct 19, 2026
Merged

ocots merged 1 commit into
mainfrom
feat/breakage-consumers

Conversation

@ocots

@ocots ocots commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

The lists of downstream packages in the Breakage.yml of the packages were written by hand, and already wrong in several of them (CTSolvers without CTFlows, CTLie without CTFlows, CTBase without CTLie, CTModels without CTParser). They are now derived.
A new plan job in breakage-suite.yml computes the targets with scripts/breakage/consumers.jl: every package of the organization (non-archived, non-fork X.jl with a name and a uuid) that loads the package under test, by uuid, in the [deps], [weakdeps] or [extras] of its Project.toml or the [deps] of its test/Project.toml.
What the Project.toml files do not show is declared by the caller in targets (default []): an application owned elsewhere, a documentation build. consumers: false keeps the declared targets only (the applications group of OptimalControl). A declared target replaces the derived one of the same package, owner and check.
The matrix and the number of expected cells come from the plan; its table, with the source of each target, is in the job summary. The job fails, and nothing else runs, when the organization cannot be read or when there is nothing to test: never a silently shorter list.
EXCLUDED lists, with a reason, what is left out (the template of a new package, CTBenchmarks until its compat is updated). Archived repositories (CTDirectShooting) are left out by themselves.
The report now says has no result on the base (a new target) for a target that the base run did not have, instead of ignoring it.
Backward compatible: a caller that still passes targets gets them plus the derived ones.
Tests: the consumers (every place a package may be loaded from, the uuid and not the name, archived and fork, exclusions, errors that are not empty lists, the declared targets and their validation, the command line, the ecosystem as read on 2026-10-19) on a fake GitHub; 90 assertions in all. Mutation testing: 34 mutants of the script, all caught.
Run on the real organization, it finds for CTBase CTDirect, CTFlows, CTLie, CTModels, CTParser, CTSolvers, OptimalControl and OptimalControlProblems.
After the merge, the Breakage.yml of the packages (CTBase#626 and the seven open PRs) lose their lists.

🤖 Generated with Claude Code

…files

A plan job computes the targets of breakage-suite.yml: every package of the organization
that loads the package under test (deps, weakdeps, extras, test environment, by uuid), plus
the declared targets (applications, documentation builds). Callers no longer list packages.
The report says when a target has no result on the base.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@ocots
ocots merged commit 3007c0d into main Oct 19, 2026
3 checks passed
@ocots
ocots deleted the feat/breakage-consumers branch October 19, 2026 13:34
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