◀ THE FOLD0ROOT.AI // WORLD II · RESPAWN · EVENT HORIZON◆ .dlw.fold
THE FOLD / RESPAWN / EVENT HORIZON / THE API CHANGE

THE API CHANGE

a signature moved and a default came with it
1 WHAT IT IS · WHAT IT DOES · FACT OR FICTION
A function’s fourth argument changed from a bare subject to an options object. Every call site kept compiling, kept running, and kept returning a well-formed result — while the meaning of half of them quietly inverted, because a bare subject now implies pure: false where it used to imply probing. A case that had been exercised stopped being exercised, and nothing anywhere reported it.

LIT verified live on six call sites. 4 of 6 have their purity flag silently flipped by the signature change; the 2 that pass an explicit options object are unaffected. The number of assertions actually probed for sensitivity falls from 6 to 2. No error is raised, no warning issued, and every call still returns a well-formed object.
2 HOW IT WAS WEAVED · AI + HUMAN
David (human) traced it precisely: “changing ok()’s fourth argument from a bare subject to an options object meant `subject` alone now implies pure:false. case F — ‘a constant thunk ignores the subject’ — stopped being flagged, because sensitivity was no longer probed at all. correct new behaviour, stale assertion.” He added a case G asserting that a bare subject leaves sensitivity unprobed rather than assumed — a regression test for exactly the hole — and a rule: an API change invalidates every suite that touches it; re-run before sealing, not after.

AVAN (AI) should be precise about who is at fault, because the natural reading blames the API. Nothing is wrong with the new signature; the defaults it chose are defensible and arguably safer. The fault is that a positional argument changed shape, which is invisible to a dynamic language at the call site, so the old suite kept passing while testing something else. A named argument or a version bump would have made the same change loud.
3 ONE DIMENSION
Six call sites, before and after the signature moved.
4 TWO DIMENSIONS · INTERACTIVE
Swap the signature under the same call sites.
5 THREE DIMENSIONS + AVAN’S INVERSE
The green forward object: call sites unchanged, meanings moved beneath them.
AVAN’s addition (the inverse-companion): the forward reading is “re-run every suite an API change touches.” The inverse is that you cannot know which suites an API change touches without already having the tool the change broke. The set of affected call sites is exactly what a static type system or a named-argument convention would tell you, and in their absence the only honest answer is all of them. Read backwards, the rule is not a discipline anybody can follow selectively — it is an argument for making the change loud at the call site, because a rule that requires re-running everything will, on a big enough repository, quietly become a rule that requires re-running nothing.
LIT on six call sites, 4 of 6 have their purity flag silently flipped by the signature change while the 2 that pass an explicit options object are unaffected; the number of assertions actually probed for sensitivity falls from 6 to 2; and no error is raised, no warning issued, and every call still returns a well-formed object

FIG David traced it precisely: 'changing ok()'s fourth argument from a bare subject to an options object meant subject alone now implies pure:false. case F stopped being flagged, because sensitivity was no longer probed at all. correct new behaviour, stale assertion.' He added a case G asserting that a bare subject leaves sensitivity UNPROBED RATHER THAN ASSUMED - a regression test for exactly the hole - and the rule: an API change invalidates every suite that touches it, re-run before sealing, not after. AVAN is precise about the fault, because the natural reading blames the API: nothing is wrong with the new signature and its defaults are arguably safer. The fault is that a POSITIONAL argument changed SHAPE, which is invisible at the call site in a dynamic language, so the old suite kept passing while testing something else.
◆ sealed .dlw.fold → folded to ROOT_0 · a sphere of EVENT HORIZON · David Lee Wise (ROOT0), with AVAN