HouseWrites
What a test run wrote into the house, by content — the witness beside `test`'s declaration (greenhouse decisions/0523). `test` declares an `ephemeral` mutation: the operation itself keeps nothing (no result cache, baselines outside the house). But it runs the app's OWN tests, which are code this operation does not control, and a test can write the house's tree. So the claim is checked, not trusted: the tree is digested before and after the run, and every path whose bytes changed, appeared or vanished is reported. A same-bytes rewrite is not a write — measured on the skeleton (evidence/1057): its boot tests rewrite `config/app.php` with the bytes it already had. The house's closure reads the report: a test run that wrote the house counts as a change to it, whatever the declaration says. Left out: `vendor/`, `node_modules/`, `.git/` (not the house's own tree), the rehearsal copies and boot candidates under `var/trials/` and `var/boot-candidates/` (copies the house never boots from; 754 of 845 files of evidence/1050's house), and the session's own log and run leases under `var/` (the leg that called the test writes those itself).
HouseWrites::digest()
public function digest(string $root): ?arrayThe house's tree as relative path → sha256 of its bytes, or null when it cannot be read whole.
Parameters
| Name | Type | Description |
|---|---|---|
| $root | string |
HouseWrites::between()
public function between(?array $before, ?array $after): ?arrayThe paths whose bytes changed, appeared or vanished between two digests — or null when either is unknown.
Parameters
| Name | Type | Description |
|---|---|---|
| $before | (array<string, string> | null) | |
| $after | (array<string, string> | null) |