Skip to content

feat: an edit on what the session itself brought into the house is not asked about (greenhouse decisions/0596) - #745

Merged
rodrigoteamx merged 2 commits into
mainfrom
hp/greenhouse/t-0104-edit-on-what-the-session-brought
Oct 8, 2026
Merged

rodrigoteamx merged 2 commits into
mainfrom
hp/greenhouse/t-0104-edit-on-what-the-session-brought

Conversation

@rodrigoteamx

@rodrigoteamx rodrigoteamx commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

An edit on a class the session itself brought into the house is not asked about (greenhouse decisions/0596, decided by Rod on 2026-10-07).

Why

The intent contract asks a person before an operation touches a target the request does not name, and no mode exempts it. For edit the line was drawn by the verb (decisions/0187): implement creates its target and is not asked, edit selects one that exists and is.

The record of the lab's houses drew it elsewhere. Across 417 ledgers, a house asked a person to confirm an edit 34 times: 28 were about a class that same session had brought into the house a moment before, and not one about a class the record shows in the house from before the session. Each question ended a leg — it stopped two runs of three in the thesis run (evidence/1137), and it is what both long runs of evidence/1128 hit, one of them the only run of sixteen that did not close.

The rule

For an operation that declares it amends its named target — edit, in milpa/devtools — the target is named when this session's own record says where it came from:

  1. The session brought it. The first thing a trial of this session that reached the house said of the file is that it added it, and the file is still, byte for byte, what the last such trial left.
  2. Or the call repairs a proposal of this session that the recorded door binds — what decisions/0571 left pending.

Anything else is asked, as before. It goes where the other sources of «it is named» go, in the intent contract and before the policy.

It is read from facts the house wrote, with no model in the circuit. added is computed by the house when a trial ends, against what the house held at the instant of the copy: a file that was there is reported modified whatever the trial did to it, so nothing a seat can call turns a class that existed into one it brought. Whether a trial reached the house is the answer the closure and the claims already share (LandedCalls), taken in the order the trials landed.

What still asks

Each of these is a test, and the first four were also run on fresh cattle (evidence/1143):

  • a class that was in the house before the session;
  • a file that changed since the session left it;
  • a class another session brought;
  • a class the session overwrote instead of adding (make with force), or rewrote with implement;
  • a trial that never reached the house, even over identical bytes; one whose promotion failed or carried nothing;
  • a record that keeps no digest; a fact of the session that is not a trial run; a link;
  • an operation that does not declare it; a grave operation whatever it declares; a gate with no house to read;
  • a repair of another session's proposal, and the same call behind another handler.

What it touches

  • SessionBornFiles (new): what a session's landed trials said of each file.
  • LandedCalls::carriedAt(): when a trial reached the house — the one reading the closure uses, asked one more question.
  • RecordedEdit::repairsItsOwnProposal(): the recorded door, asked whether it binds a source of this session.
  • SessionToolGate: the rule, in the intent contract.
  • The requirements: milpa/command >=0.29, which carries the declaration, and milpa/devtools >=0.44, whose edit makes it — so a house that has this rule has an edit that declares.

The gate still reads the declaration defensively, as it reads every contract that was born after the first release of this package.

The contract view (operation:contract) does not show the declaration yet: that is a change of its own.

How it was checked

  • Tests written first and seen red: AnEditOnWhatTheSessionBroughtIsNotAskedTest (26, one of them with the edit milpa/devtools installs), ARepairOfTheSessionsOwnProposalIsNotAskedTest (9), and two in RecordedEditTest.
  • Hand mutants: 30 of 30 red (greenhouse scripts/lab/edit-1143/mutants.py app-runtime).
  • 3,795 tests over milpa/command 0.29.0 and milpa/devtools 0.44.0, none of this slice's skipped, line coverage 95.44 % (floor 95); PHPStan, style, DocBlocks, attribution.
  • The framework's suite (192) and greenhouse's (244) pass the same with the three branches laid over the published family.
  • On fresh cattle, with a scripted stand-in and no model, the published train against the three branches (evidence/1143).

What it does not do

implement over a class that was not born in the session still lands a whole body unasked. It is the reverse of this rule, it would add questions, and it is a decision of its own.

@rodrigoteamx
rodrigoteamx force-pushed the hp/greenhouse/t-0104-edit-on-what-the-session-brought branch 2 times, most recently from daec8f9 to b072b19 Compare October 8, 2026 00:03
…t asked about (greenhouse decisions/0596)

The intent contract asks a person before an operation touches a target the request does not name, and no mode exempts it. For edit the line was drawn by the verb: implement creates its target and is not asked, edit selects one that exists and is. The record of the lab's houses drew it elsewhere: of 34 times a house asked a person to confirm an edit, 28 were about a class that same session had brought into the house a moment before, and not one about a class the record shows in the house from before the session. Each of those questions ended a leg.

For an operation that declares it amends the target it names, the target is now named when this session's own record says where it came from:

- the session brought it: the first thing a trial of this session that reached the house said of the file is that it added it, and the file is still, byte for byte, what the last such trial left; or
- the call repairs a proposal of this session that the recorded door binds, which is what decisions/0571 left pending.

It is read from facts the house wrote, with no model in the circuit, and it fails closed. A class that was in the house before the session, a file that changed since the session left it, a class another session brought, a class the session overwrote instead of adding, a trial that never reached the house, a record that keeps no digest, a link, an operation that does not declare it, and a grave operation whatever it declares, are all asked about as before.

The declaration is Operation::amendsNamedTarget, born in a later milpa/command than the one this package requires. It is read defensively: over a contract that cannot carry it nothing declares it, and the gate asks exactly as it did.
…nd the edit that makes it, and the rule's tests run

milpa/command >=0.29 carries Operation::amendsNamedTarget and milpa/devtools >=0.44 declares it on edit: a house that has the rule has an edit that declares. The tests of the rule no longer skip over a contract that cannot carry it, and one of them asks the gate with the edit milpa/devtools installs.
@rodrigoteamx
rodrigoteamx force-pushed the hp/greenhouse/t-0104-edit-on-what-the-session-brought branch from b072b19 to 41ebb5a Compare October 8, 2026 00:20
@rodrigoteamx
rodrigoteamx merged commit f6ecc5e into main Oct 8, 2026
4 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