Files
Jinwoo-H 1b7a9124d1 ci: flag an existing test turned into .skip or .fixme
A test switched off still reads as a green suite, so it is the cheapest way
to make a known-broken expectation stop complaining -- the same outcome as
rewriting the assertion, with a smaller diff. The gate now treats it as the
fourth flip shape: an added .skip/.fixme/describe.skip call whose title had
an enabled predecessor removed in the same hunk. Unskipping is not flagged,
and neither is a brand-new skipped test, because neither stops enforcing an
expectation that existed before. .only is not a disable: it narrows a run,
it does not stop asserting.

The title extractor now also reads bare describe() and carries the call's
modifiers, which is what distinguishes a disable from a rename. A skip that
keeps its title reports once, as a disable, not twice.

Splitting the four heuristics into test-expectation-flip-heuristics.mjs
keeps the CLI at 134 lines and the heuristics at 195, both under the 300
budget, and puts the diff-shape rules in a file named after what they are.

Replaying the gate over the last 80 first-parent main commits touching the
gated paths still flags 11 -- the fourth heuristic adds no noise on real
history, and neither does reading bare describe().
2026-09-09 19:22:43 -04:00
..