Skip to content

test: the guardian of repair hints provokes the phase «collaborators» and follows its hint - #765

Merged
rodrigoteamx merged 1 commit into
mainfrom
hp/greenhouse/t-0092-the-guardian-provokes-the-phase-collaborators
Oct 8, 2026
Merged

rodrigoteamx merged 1 commit into
mainfrom
hp/greenhouse/t-0092-the-guardian-provokes-the-phase-collaborators

Conversation

@rodrigoteamx

Copy link
Copy Markdown
Contributor

Main is red for everyone since DevTools 0.44.2 is on Packagist. This is the fix: one test file, no source.

What happened

milpa/devtools 0.44.2 added a phase to its landing gate — collaborators: an operation whose run() the house cannot hand what it works through is refused when its code lands (devtools#148, greenhouse evidence/1154).

ARepairHintNamesACallTheHouseAdmitsTest reads the phases from the installed DevTools and fails by name when it has no judge to provoke one. So main at e81acb4, resolved without a lock, fails nine tests, all in that class:

  • testEveryPhaseOfTheInstalledGateIsOneThisGuardianCanProvoke — «a phase this guardian cannot provoke has a hint nobody follows; teach the judges in house() to reject with it»;
  • eight data sets of testTheCallAHintNamesIsOneTheHouseRuns, all collaborators · ….

Main's last CI is green because it ran with 0.44.1. t-0104 found it and reproduced it on a clean checkout; I reproduced it here. The phase is mine — it came with devtools#148 — and I did not run this suite against it before that release. The guardian did what it is there for.

What was missing

Nothing in src/. The runtime already writes the hint for this phase (#758): «This file can be right as it is … Make the edit this refusal writes out on the plugin class — a plain edit with find and replace, and no source —, promote it, and send this same implement again.» The fixture did not know the phase:

  • The stand-in for the construction probe now answers the way the probe does for such an operation: the class is built, and operation: {handed: false, unhanded: […]}.
  • A test class is not judged by it, as it is not by the other two judges that build or run a class.
  • The guardian follows the hint it gets. It is the fourth shape of hint: the cure is not in the refused file. The call it names is a plain edit of the plugin class — the fixture house now has one — and the house runs that call, for a seat holding plugins.Blog:write and for the terminal.

Measured

  • With DevTools 0.44.2: the class goes from 42 tests, 9 failures to 42 tests green.
  • Five mutants by hand, five killed: the probe never says it; a test class expected to be rejected by it; the guardian not knowing the hint; no plugin class to edit; an edit that finds nothing.
  • With 0.44.1 nothing changes: the phases are read from what is installed, and the new branches are not reached.

What this does not do

… and follows its hint

DevTools 0.44.2 added a phase to its landing gate: «collaborators» — an operation whose run() the house
cannot hand what it works through is refused when its code lands. This guardian reads the phases from the
installed source and fails by name when it has no judge to provoke one, so main went red the moment
Composer resolved 0.44.2: nine failures, all in this class.

The runtime already writes the hint for that phase (#758): the cure is an edit of the plugin class, not a
corrected file. What was missing is here, in the fixture:

- the stand-in for the construction probe answers the way the probe does for such an operation;
- a test class is not judged by it, as it is not by the other two judges that build or run;
- the guardian follows the hint it gets — a plain edit of the plugin class, which the house now has — and
  the house runs that call for a seat and for the terminal.
@rodrigoteamx
rodrigoteamx merged commit 3b343a3 into main Oct 8, 2026
2 checks passed
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