Measure that the postgres module's image initialises where genesis raises the store (issue 609, hq ADR 0338 §5) #99

Merged
mesh-admin merged 1 commits from fix/609-the-store-genesis-raises-initialises into main 2026-10-13 08:55:43 +00:00
Contributor

Issue 609; decision: hq ADR 0338 §5, the measurement it names.

What: replays/store_test.go reads the catalogue's postgres manifest: the server image, PGDATA, and the data directory's owner and mode. It makes a directory as genesis does (owned 999:70, 0700) and writes a 0600 password file as root. It starts the module's image on them with POSTGRES_PASSWORD_FILE, and holds that the store answers over TCP with that password within three minutes. Run gains Env.

Tested: on g14 (docker, catalogue 53e5186) it passes in 6 s. Before the bundle change, nothing measured it. replays/merge-check.sh passes (vet and the register's own tests). Like the other container replays, it is not run in the check's toolchain, which has no runtime.

Fixes the measurement part of issue 609.

Issue 609; decision: hq ADR 0338 §5, the measurement it names. **What**: `replays/store_test.go` reads the catalogue's postgres manifest: the server image, PGDATA, and the data directory's owner and mode. It makes a directory as genesis does (owned 999:70, 0700) and writes a 0600 password file as root. It starts the module's image on them with `POSTGRES_PASSWORD_FILE`, and holds that the store answers over TCP with that password within three minutes. `Run` gains `Env`. **Tested**: on g14 (docker, catalogue 53e5186) it passes in 6 s. Before the bundle change, nothing measured it. `replays/merge-check.sh` passes (vet and the register's own tests). Like the other container replays, it is not run in the check's toolchain, which has no runtime. Fixes the measurement part of issue 609.
mesh-admin added 1 commit 2026-10-13 08:48:36 +00:00
Measure that the postgres module's image initialises where genesis now raises the store (hq issue 609, ADR 0338 §5)
mesh/merge-gate head ba2806b985ce merged into trunk 9497dda9291c — pass: the change touches no module of the mesh's graph
mesh/repo-check head ba2806b985ce merged into trunk 9497dda9291c — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…
mesh/delivery delivered
ba2806b985
The genesis bundle raises the store as the postgres module's server: its pgvector image, its data in a
directory made before the store starts and owned as the module declares it, its password from a file.
The decision names one measurement before it is relied on: that image, on such a directory, empty,
initialises a store that answers with that password. The image and the owner are read from the
catalogue's manifest, so the measurement moves with the module's pin.
Author
Contributor

Delivery novox/mesh-lab@ba2806b985ce — delivered since 2026-10-13T08:55:48Z

Delivery plan — builds nothing: the change touches no module of the mesh's graph

Transitions

  • 2026-10-13 08:48 (new) → proposed (announced): novox/mesh-lab#99's head announced
  • 2026-10-13 08:52 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-13 08:52 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-13 08:55 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-13 08:55 published → delivered (done): nothing for a walk to move

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-lab@ba2806b985ce` — **delivered** since 2026-10-13T08:55:48Z **Delivery plan** — builds nothing: the change touches no module of the mesh's graph **Transitions** - 2026-10-13 08:48 (new) → proposed (announced): novox/mesh-lab#99's head announced - 2026-10-13 08:52 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-13 08:52 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-13 08:55 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-13 08:55 published → delivered (done): nothing for a walk to move The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh-admin left a comment
Author
Contributor

Verdict: approve at ba2806b985

Statuses at this head: mesh/merge-gate success ("head ba2806b985 merged into trunk 9497dda929 — pass: the change touches no module of the mesh's graph"), mesh/repo-check success ("head ba2806b985 merged into trunk 9497dda929 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…"), mesh/delivery success ("ready: it delivers once merged").

No blocking findings.

I ran replays/store_test.go on g14 with docker, against mesh-catalog main 5cd608b beside the checkout: TestTheStoreGenesisRaisesInitialisesOnTheDirectoryGenesisMakes passes in 22.9 s. It read the image, PGDATA, owner 999:70 and mode 0700 from the module's manifest, so it measures the module's current pin rather than a copy. The containers it started were all removed (the container list before and after is identical), and its store-measure directory was removed. sh replays/merge-check.sh exits 0 and says aloud that the replays themselves are not run in its toolchain.

The measurement does what ADR 0338 §5 names: a directory made 999:70 0700 as root before the store starts, a 0600 password file written as root and mounted read-only, POSTGRES_PASSWORD_FILE, and an answer over TCP with that password, which rules out the temporary socket-only server initdb runs. The Env field added to Run is passed straight to the create call and is empty for every existing caller.

Not blocking: the test does not show that it would fail on a directory made otherwise (for example root-owned), so it proves that the chosen layout works, not that the ownership is what makes it work. That is all the decision asks of it.

Verdict: approve at ba2806b985ce59ad2bc3a410c0f98e0c2cdce44e Statuses at this head: mesh/merge-gate success ("head ba2806b985ce merged into trunk 9497dda9291c — pass: the change touches no module of the mesh's graph"), mesh/repo-check success ("head ba2806b985ce merged into trunk 9497dda9291c — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (typescript)…"), mesh/delivery success ("ready: it delivers once merged"). No blocking findings. I ran replays/store_test.go on g14 with docker, against mesh-catalog main 5cd608b beside the checkout: TestTheStoreGenesisRaisesInitialisesOnTheDirectoryGenesisMakes passes in 22.9 s. It read the image, PGDATA, owner 999:70 and mode 0700 from the module's manifest, so it measures the module's current pin rather than a copy. The containers it started were all removed (the container list before and after is identical), and its store-measure directory was removed. sh replays/merge-check.sh exits 0 and says aloud that the replays themselves are not run in its toolchain. The measurement does what ADR 0338 §5 names: a directory made 999:70 0700 as root before the store starts, a 0600 password file written as root and mounted read-only, POSTGRES_PASSWORD_FILE, and an answer over TCP with that password, which rules out the temporary socket-only server initdb runs. The Env field added to Run is passed straight to the create call and is empty for every existing caller. Not blocking: the test does not show that it would fail on a directory made otherwise (for example root-owned), so it proves that the chosen layout works, not that the ownership is what makes it work. That is all the decision asks of it.
mesh-admin merged commit f71250c3dd into main 2026-10-13 08:55:43 +00:00
mesh-admin deleted branch fix/609-the-store-genesis-raises-initialises 2026-10-13 08:55:43 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-lab#99