…pecs/ci/affected.t27 (Closes #7565)
specs/ci/affected.t27 (#7529) had no producer and no consumer. Now:
- `t27c use-edges` prints every `use` edge as "importer<TAB>imported" from
use_resolve::use_targets, the resolver t27c compiles with -- no second
resolver. 946 edges over 1575 specs in 28 ms on the lab.
- spec-guards feeds the diff, the base+head edge union and the corpus into
gen/c/ci/affected.c, then runs `t27c test-report` on the selected specs only,
in both trees with the same t27c: red if a spec fails more tests than on the
base or stops building. RUN_ALL leaves the corpus to corpus-ratchet.
Measured on the lab: a change to specs/policy/text_lines.t27 selects 3 of
1575 specs (~1 s of tests vs ~10 min for the corpus at ~0.4 s/spec); the
negative control (an added `assert 1 == 2`) goes red, 1 failing vs 0.
Fan-in is the long tail: base/types.t27 selects 412, math/constants.t27 277.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes #7565
What
t27c use-edges [--specs-dir specs]: everyuseedge asimporter<TAB>imported, sorted, repo-relative, fromuse_resolve::use_targets, the resolver t27c compiles with. There is no second resolver.git diff --name-status, the union of base and head edges, and the head corpus intogen/c/ci/affected.c(selection logic stays inspecs/ci/affected.t27). It then runst27c test-reporton the selected specs only, in both trees with the same t27c.Measured (Railway lab)
use-edgespolicy/text_lines.t27base/types.t27(worst fan-in)test-reportper specassert 1 == 2added)Foreign lines: 57 of 80 (main.rs 7, use_resolve.rs 21, spec-guards.yml 29). All three files are listed in
tools/policy/foreign-exceptions.txt.Not in this PR: gating corpus-ratchet off for selective PRs. corpus-ratchet.yml is not on the exception list, so that is the owner's call.
🤖 Generated with Claude Code