Skip to content

feat: a leg is told what its session left half done — read from what landed, said after the conversation (greenhouse decisions/0604) - #766

Merged
rodrigoteamx merged 2 commits into
mainfrom
hp/greenhouse/t-0104-what-stands-half-done
Oct 9, 2026
Merged

rodrigoteamx merged 2 commits into
mainfrom
hp/greenhouse/t-0104-what-stands-half-done

Conversation

@rodrigoteamx

@rodrigoteamx rodrigoteamx commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

A leg is told what its session left half done: the operations that stand scaffolded with their body to write. Rule D of greenhouse decisions/0604, decided by Rod on 2026-10-08.

Why

A leg that inherits a fold is told the session's plan and its todos, and of a past call only a few names. That an operation was scaffolded and its body never written was a fact nowhere: in the legs that followed one that ran out of window, 15 of 31 reads were of something an earlier leg had already read (greenhouse evidence/1164).

What it does

  • It reads what landed, not what was said. The house already knows which operation scaffolds stand — its closure refuses a capability while one does (decisions/0595): make what=operation stands one at the file it landed, and any other writer that lands that file takes it down. The leg is told that same list. There is one rule, the closure's; HouseObservedClosure::of() now returns it as standing, and WhatStandsHalfDone reads it and says it.
  • It is said after the conversation, on every call. It rides with the locators of recorded results: read again from the record on every model call and written at the end of the request. So it is true inside the leg as at its start, and the beginning of the request does not move when the list changes.
  • When nothing stands, not a byte is said. A session that scaffolds nothing sends the requests it sent.
  • The section is quoted data, as the recorded results are: it says where it was read from, that it is not an instruction, and a file name cannot close it. It names at most forty files, the newest, and how many it left out.
  • A record that cannot be read says nothing: saying it may not fell the leg it speaks to.

What changed from the draft

#762 was the first cut, kept as an experiment while the rule was undecided. It read the calls a session MADE and said the list once, at the start of a leg. A real run and its own notes showed three faults, and this removes each:

the draft this
listed a scaffold whose trial was discarded only what landed is read
took one off for an authoring call whose trial never landed only a writer that landed takes one down
said once at the start: the prompt still said four when one had been written read again on every call

It supersedes #762.

Tests

Written red first.

  • WhatStandsHalfDoneIsReadFromTheRecordTest (13): what stands and what does not, the order, the bound, a file name that tries to close the section, the same declarations of what lasts as the closure, and that the list is the one the closure counts.
  • ALegIsToldWhatStandsHalfDoneTest (4): legs the house itself assembles — the loop is handed the list after the conversation, a file leaves it inside the same leg the moment its writer lands, and the system prompt never says it.
  • 20 of 20 hand mutants red (scripts/lab/half-done-1172/mutants.py in greenhouse).
  • The suite: 4,084 tests green, line coverage 95.55 %, against milpa/devtools 0.44.2 as Composer resolves it today.

Measured, with no model

A build walked by the scripted stand-in on a kept house, this branch laid over it inside the running container, each leg capped at ten steps so that legs end where a scaffold stands (greenhouse evidence/1172):

with this main without it
requests, and legs 18 in 4 18 in 4
requests that carry the section 11 0
legs where what the house's files say stands, when the leg ends, is what the next leg opens being told 4 of 4 1 of 4
times the system prompt moved inside a leg 0 0
what the section weighs about 125 tokens —

The files are read from the house, not from its record. Inside a leg the list grew and shrank four times as operations were scaffolded and written. The walk ends the same in both — the stand-in does not read what it is told — so this shows that the house says the truth, not what a resident does with it.

What it does not do

  • Nothing measured with a resident. Whether rereads go down after a fold is a falsifier of decisions/0604, and it needs one.
  • It speaks of operation scaffolds only. What else a session can leave half done — a plugin made and not registered, a trial left open — is not said.
  • Rule A of the same decision, the house going on by itself after a pause, is not here: it comes after, behind its cap.

…landed, said after the conversation

Rule D of greenhouse decisions/0604, decided by Rod on 2026-10-08. A leg that inherits a fold knew the session's plan
and its todos; that an operation stood scaffolded with its body to write was a fact nowhere. In the legs that followed
one that ran out of window, 15 of 31 reads were of something an earlier leg had already read (evidence/1164).

The house already knows which operation scaffolds stand: its closure refuses a capability while one does
(decisions/0595). The leg is now told that same list — the files where `make what=operation` landed a scaffold that
no later change that landed has written. There is one rule, the closure's; this reads it and says it.

It rides with the locators of recorded results: read again from the record on every model call and written after the
conversation. So it stays true inside the leg, and the beginning of the request does not move when the list changes.
When nothing stands, not a byte is said.

A first cut, kept as a draft, read the calls a session made and said it once at the start of a leg: it listed a
scaffold whose trial was discarded, took one off for an authoring call that never landed, and went stale inside the
leg. This reads only what landed, and reads it every time.
@rodrigoteamx
rodrigoteamx merged commit bf55455 into main Oct 9, 2026
4 checks passed
rodrigoteamx added a commit that referenced this pull request Oct 9, 2026
… its leg)

One line clashed, in the return shape of HouseObservedClosure::of(): this branch adds what a capability's
observation may carry once the house ran it, main adds the files where a scaffold still stands. Resolved by hand
to the line that says both. AgentOperations.php, which both touch, merged by itself.
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