Skip to content

fix: the judge of an operation holds what the operation works through, and a red judge names the scaffolds it runs over - #149

Merged
rodrigoteamx merged 10 commits into
mainfrom
hp/greenhouse/t-0092-a-judges-scaffold-holds-what-it-judges
Oct 8, 2026
Merged

rodrigoteamx merged 10 commits into
mainfrom
hp/greenhouse/t-0092-a-judges-scaffold-holds-what-it-judges

Conversation

@rodrigoteamx

@rodrigoteamx rodrigoteamx commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

It came stacked on #148, which is in main now: this one's base is main, with main merged in — against it, it changes its own six files.

Why

The house says the judge comes before the body. In the three finished course runs of the reference run's first stage, the residents scaffolded their operations and then spent 23, 32 and 18 tool calls — 14 to 17 calls to the model, nine to ten minutes of a 25-minute run — before sending a first body. In all three the reasoning says the same thing: declare the test first, then find out how a test gets the repository an operation's run() receives. One of them never found out and filled no body at all. The judge's scaffold was a bare TestCase that fails on purpose and holds nothing.

In another run, one judge was written for the plugin's whole cycle and named after one operation. That operation's body was refused three times as «judged red by its own test», and the run ended with it still a scaffold. The judge called the plugin's other operations, which in that copy of the house were scaffolds. The refusal showed ten lines of phpunit.

Both are the house making a builder look for something the house already knows (greenhouse evidence/1156).

What changes

  • The judge of an operation is scaffolded holding what the operation works through. make what=test for a class that is an operation of the plugin builds the repository its plugin hands run() — in memory — and shows the call the house makes, with a value for each required input. It still fails on purpose. The generator reads the operation's source and its plugin's entry; it loads nothing.
  • A red judge names the scaffolds it runs over. A behavior refusal now names the plugin's unfilled operations that the judge names — by class or by the operation they declare — and gives the order: fill and promote those, then send the same implement again. diagnostic.scaffolds lists them.
  • The skill governed-authoring says to scaffold an operation's judge once the operation is in the house, and what a judge runs over.

What does not change

  • The judge of anything that is not an operation, and a judge scaffolded before its class exists, are the bare scaffold, byte for byte.
  • A judge red over no scaffold is told nothing new.
  • An entry hands one repository. A second one in run()'s signature is shown missing in the judge, not held.

Tests

  • 24 tests. 15 were written red first. 5 pin what does not change and passed from the start. 4 were written after the code, for hand mutants: three I expected to survive and one that did; two more tests were strengthened for the other two survivors.
  • The judges are run by a real phpunit over what the real generators scaffold.
  • Suite: 852. 29 hand mutants, all killed after that second pass. PHPStan, the formatter and the docblock gate are clean.

Measured in cattle, without a model

The scripted stand-in walks two operations and the judge of one, in a lab house, with and without this change.

#148 alone with this
the judge's scaffold 24 lines, bare 51 lines: the repository and the call
the judged body, sent while the other operation is a scaffold refused: ten lines of phpunit refused: names the scaffold and the order
after filling the other and sending the same body lands, judged green lands, judged green

Said plainly

  • Nothing ran with a resident. Whether one writes its judge from the scaffold, or follows the refusal, is for the next run.
  • The refusal says «implement» also when the body came through edit.
  • The hint the runtime writes beside a refusal still contradicts this one until getmilpa/app-runtime carries its own small fix; that pull request is open beside this.

…plugin's only entity by default, and judged when the code lands (greenhouse evidence/1154)
…on works through

Three real residents out of three, with their operations scaffolded, spent their next fourteen to
seventeen calls to the model finding out how a test gets the repository run() receives; one never
found it and filled no body (greenhouse evidence/1156). The judge's scaffold was a bare TestCase.

When the class judged is an operation of the plugin, its judge now builds the repository its plugin
hands run() — in memory — and shows the call the house makes, with a value for each required input.
It still fails on purpose. What is not an operation, or does not exist yet, gets the judge it always
got, byte for byte.

The generator reads the operation's source and its plugin's entry; it loads nothing.
… them

A resident wrote one judge for its plugin's whole cycle and named it after one operation. That
operation's body was refused three times as «judged red by its own test» and the run ended with it
still a scaffold: the judge called the plugin's other operations, which in that copy of the house
were scaffolds (greenhouse evidence/1156). The refusal showed ten lines of phpunit.

The house wrote those scaffolds and reads that they are unfilled from the sentence they answer
with. A behavior refusal now names the unfilled operations its judge names — by class or by the
operation they declare — and gives the order: fill and promote those, then send the same implement
again. A judge red over no scaffold is told nothing new.
…hat only contain a scaffold's

Four tests written after the code, for hand mutants that survived or that I expected to: the judge
holds one repository and shows a second one missing; a class under Operations/ that is not an
operation gets the bare judge; a name that starts or ends like a scaffold's is another name; a
filled body that quotes another class's scaffold sentence is still filled. glob() already sorts.
@rodrigoteamx
rodrigoteamx changed the base branch from hp/greenhouse/t-0092-what-run-asks-for-the-house-resolves to main October 8, 2026 21:45
@rodrigoteamx
rodrigoteamx merged commit 931766e into main Oct 8, 2026
4 checks passed
rodrigoteamx added a commit that referenced this pull request Oct 8, 2026
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