Skip to content

feat: after a pause for window or for steps the house goes on by itself, once, under a written cap (greenhouse decisions/0604) - #769

Merged
rodrigoteamx merged 5 commits into
mainfrom
hp/greenhouse/t-0104-the-house-goes-on
Oct 9, 2026
Merged

rodrigoteamx merged 5 commits into
mainfrom
hp/greenhouse/t-0104-the-house-goes-on

Conversation

@rodrigoteamx

@rodrigoteamx rodrigoteamx commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Rule A of greenhouse decisions/0604, with the cap Rod decided on 2026-10-08. It stands on rule D (#766) and meets R1 (#767) at the end of a leg; both, and #770 — what the house ran and threw is said to the session that wrote it —, are in main and merged into this branch.

What it does

A leg in auto that ran out of window, or of steps, ended, and somebody had to start it again: a person, or a conductor spending one of its legs. Now the house goes on inside the same invocation — a second leg of the same session, the way it already resumes a turn that echoed its own voice (decisions/0475):

  • the session records session.leg_continued (after, steps_before, steps_left, time, cap, by: house) before the leg that follows starts;
  • that leg is opened by a [house] notice that says why it follows, never a turn a reader could take for a person's;
  • it is a whole leg: its window is folded as any leg's is, and what the session left half done (rule D) is said to it on every call;
  • the result is the last leg's and carries wentOn: {times, after, stepsBefore, stepsInAll}; steps stays the count of the leg that ended.

The cap

Two written values in HouseGoesOn, as Rod decided them:

value a house may declare
continuations per invocation 1 agent.continuations (0 turns it off)
steps in all, counting those before the pause 60 agent.invocationSteps

It goes on after the steps run out as well as after the window. Sixty is one and a half times the forty decisions/0538 gave a leg in auto: this is where an invocation may spend more than that record said.

What it never goes on over

  • a pause that waits for a person: a refusal, a question, a stall;
  • an end: a final answer, and an exhausted epilogue (which is a natural end — the house closes there);
  • a session outside auto;
  • the --steps a caller typed, which is the total.

A pause the house continues is not an end

The invariant with #767 (before it closes on a capability, the house runs it once). A leg the house is about to continue has not ended: over a record that at that moment WOULD close, nothing is run and no verdict is recorded at the pause. The leg that follows runs the capability once at its answer, and the verdict is recorded after it. When that leg pauses too, nothing at all. APauseTheHouseContinuesIsNotAnEndTest fixes it on the fixture #767 left, for a step pause and for a window pause, asserting the order by seq and not only the counts.

With #770 in, the same class fixes where the four pieces meet in one request: the leg that follows a pause is opened by the house's notice — one message, and nothing more — and after the conversation it is told what the house ran and threw. Neither is inside the other.

Readings that are mine, not Rod's

Rod decided «one continuation, sixty steps in all, also after the steps». These follow from how I built it and are one line each to change:

  1. The leg that follows takes no more than a leg's own ceiling. It gets min(a leg's ceiling, what is left of the total). With a known window (forty a leg) this only bites when a window pause comes before step 20. In a house with no known window a leg takes twelve, so an invocation takes twenty-four, not sixty.
  2. A typed --steps is the total. --steps 5 runs five steps and the house does not go on; after a window pause it goes on with the rest of what was typed.
  3. A step that found no room counts, because the leg's own steps counts it: a window pause after two model calls reports three.
  4. The resume over an echo (0475) is unchanged: it keeps a leg's ceiling of its own. Its steps count toward the total, so the house goes on for less after it, or not at all.
  5. A first leg keeps its own ceiling whatever agent.invocationSteps says: a total below it means the house never goes on.

What a caller sees change

  • One invocation may hold two legs: two session.run_terminated facts, with session.leg_continued between them. Whoever counts legs by invocations, or invocations by terminations, counts differently now.
  • An invocation in auto may take up to sixty steps where it took forty.
  • A result may carry wentOn. A leg that paused and was continued leaves no result of its own: only its facts.

Checks

check result
tests 14 of the rule (TheHouseGoesOnAfterAPauseTest) and 6 of the invariant (APauseTheHouseContinuesIsNotAnEndTest), written red first; 1 more of the notice beside what threw, written green and checked with four mutants that each turn it red
hand mutants 51 of 51 red, each linted before it counts (greenhouse scripts/lab/goes-on-1172/mutants.py); with #770 merged in, all 51 still apply and the five of the invariant were run again, red
the package's whole suite, on this tree with main inside (D, R1, #770 and this rule together) 4,173 tests green, line coverage 95.60 %; style, PHPStan, docblocks and attribution clean

Measured on cattle, without a model

Greenhouse evidence/1172, part A (getmilpa/greenhouse#393), measured at 48e6b2d — before #770 was merged in; it was not walked again. A kept house, that commit laid over inside the running container, the scripted stand-in — which is not a model — and no --steps typed. No image was built.

with this rule main without it
a leg of forty steps runs out, Rod's numbers the house goes on with twenty and stops at sixty; it does not go on again the invocation ends at forty
a leg runs out of window at step 16 the house goes on; the leg that follows ends in an answer: two invocations three invocations
a cap the house declares (agent.invocationSteps = 20) it goes on with four and stops at twenty —
agent.continuations = 0 the same facts as main, one for one —
  • In no arm did anything close or run at a pause. In the long walk the capability was exercised and the verdict recorded once, at the end of the invocation that ended in an answer.
  • 201 of 201 requests said what the house's files had when they were sent — read by the stand-in before it answered each one.
  • The leg that follows a window pause opened at 16,947 tokens where the last request of the one before weighed 20,050.

What it does not show: anything with a real resident. And in the long walk the rule does not save the conductor an invocation — the task needs 67 steps, three invocations with 60 + 7 as with 40 + 27; it saves one when what is left fits in what the cap leaves.

…lf, once, under a written cap (greenhouse decisions/0604)

A leg in auto that ran out of window, or of steps, ended, and somebody had to start it again. The house now
goes on inside the same invocation: a second leg of the same session, opened by a notice of the house that says
why it follows, as it already resumes a turn that echoed its own voice (decisions/0475).

The cap is Rod's, of 2026-10-08, and is two written values in HouseGoesOn: one continuation per invocation, and
sixty steps in all counting those before the pause — also after the steps run out, not only the window. A house
may declare others (agent.continuations, agent.invocationSteps). The leg that follows takes what is left of the
total and never more than a leg's own ceiling. A ceiling a person typed is the total.

It never goes on over a pause that waits for a person, nor after an end: an exhausted epilogue is an end. A
pause the house continues closes nothing; the closure belongs to the leg that ends in an answer. The session
records session.leg_continued before the leg that follows, and the result carries wentOn.
…thing closes there (greenhouse decisions/0604, decisions/0605)

Where two rules meet at the end of a leg: the house runs a capability before it closes on it, at a leg's natural
end; and after a pause for window or for steps the house goes on by itself. A leg the house is about to continue
has not ended: over a record that would close, nothing is run and no verdict is recorded at the pause; the leg
that follows runs it once at its answer, and the verdict comes after. When that leg pauses too, nothing at all.
An exhausted epilogue is an end, and the house does not go on after it.

The rule's own tests now hand the house's progress probe to the loop, as a leg does.
… house ran and threw, each in its own message (greenhouse decisions/0604, decisions/0605)

With main merged in, four rules meet in one request: the house's notice that opens the leg that follows a pause,
and after the conversation the section that names what the house ran and threw. The notice is one message and
nothing more; the section is said once, last, and does not carry the notice. What threw still stands when that
leg answers: nothing landed, so the house does not run it again and does not close.
@rodrigoteamx
rodrigoteamx merged commit ec9e462 into main Oct 9, 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