Skip to content

feat: add a Mars globe - #39

Merged
Alchez merged 127 commits into
mainfrom
feat/mars
Aug 13, 2026
Merged

feat: add a Mars globe#39
Alchez merged 127 commits into
mainfrom
feat/mars

Conversation

@Alchez

@Alchez Alchez commented Aug 3, 2026

Copy link
Copy Markdown
Owner

No description provided.

Alchez added 30 commits August 3, 2026 14:45
…s, not one the box happens to hold

Two tests asked the real data store whether their own premise held, so both were
statements about this machine rather than about the code. On a checkout with no
store they were the only failures in 2715.

The claim in each case is that the gate asks the BODY before it asks the disk,
and any file that exists proves that — which file is incidental. So each test
now writes its own source: `layer_is_buildable` takes one as a parameter, and
`cap_sources` reads a module constant, so that one is monkeypatched the way
`TestTheCoastlineIsABodyFact` already does it.

The sibling was the worse half. `test_south_forced_snow_needs_no_dataset_and_
bakes_no_coastline` PASSED without the store, because a missing shapefile and a
zero opacity produce the same empty answer — a test that cannot tell its own
subject from an absent input, green on both machines and meaning nothing on one.

It also repairs a mutation case. "the layer gate asks the filesystem before it
asks the body" mutates the gate to `not in surface_layers and not source.exists()`,
which is only WRONG while a source exists — so on a data-free checkout the
harness would have scored it caught while the guard it names never ran. Verified
both ways now.
…e ones the runner did

The probe tested `{"raw", "work"} & set(value.parts)` against the ABSOLUTE path,
so it was asking a question about the machine as well as about the repository.
CI's checkout sits two levels under a directory the runner names `work`, which
made every checkout-resident constant match: `config/`, `web/public`,
`blender/renders`, and `paths.ROOT` itself. Sixteen offenders, all of them
correct code, on a branch that was green on the machine it was written on.

Taking the path relative to the checkout first asks the same question of the
same values with the machine's naming left out of the answer. The catch set is
otherwise unchanged.

This is the fourth time this one seam has been blind, and the first time in the
false-POSITIVE direction — the three before it were spellings the scan had never
been taught to look for. The lesson generalises past the predicate: a guard that
reads its environment fails where it has never been run, so the reproduction has
to BE that environment rather than resemble it. The new test copies `pipeline/`
into a `work/` directory and runs the probe there; a symlink cannot do it,
because `paths.ROOT` resolves and the link would land back on this checkout.

Its control is inline rather than a sibling, because an empty offender list is
the pass condition and a copytree the probe could not import would produce
exactly that. Planting an offender forces the reported path to be the copy's.

`tests/test_paths.py` joins MUTABLE_ROOTS on `tests/test_hero_variants.py`'s
principle: the predicate lives in the test module, so it is both guard and
subject and there is nowhere else to break it. The case that breaks it is
invisible from this checkout, which is the difficulty in one line.
Alchez added 22 commits August 10, 2026 21:11
…, so a nodata sentinel stops reading as ground
…across the seam, so a real boundary along 180° survives
…ed it as their unratified body build their own
… fact about the bucket rather than about the bytes
…r, so shared geometry code changing its mind reaches what is already on disk
… keeps its own because its bytes never moved
…ts bundled GDAL is proven not to move a byte we write
… the worker's trigger names what it actually imports, and deleting a superseded archive is recorded as one-way
@Alchez
Alchez marked this pull request as ready for review August 12, 2026 05:11
@Alchez
Alchez merged commit 7bd1f19 into main Aug 13, 2026
2 checks passed
@Alchez
Alchez deleted the feat/mars branch August 13, 2026 07:26
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