build: name the session stacks so parallel worktrees share tier 0/1 and each commit owns tier 2 #13

Merged
beddari merged 4 commits from dev-env-project-names into main 2026-09-18 09:12:56 +00:00
Owner

Outcome

Two work-item worktrees on one workbench can run the factory at the same time without their session stacks colliding.

Compose names a project after the directory it runs from, so each worktree would start its own nats and postgres and the second would fail on host ports 4222 and 5432. The Makefile now fixes the project names and never derives them from the worktree:

  • dataverket (DEV_PROJECT): the shared tier 0 and 1 stack. dev.up, dev.down, and dev.reset run against it, so every worktree joins the same containers on fixed host ports. Tests isolate themselves by name, as the dev-environment skill already required.
  • verify-<commit> (VERIFY_PROJECT): the private tier 2 stack. make verify builds ko images tagged by the commit, refuses a verify profile that publishes a fixed host port (the suite asks compose for the port instead), brings the stack up, runs the suite, and tears it down on exit.
  • make check runs docs-check, gofmt, go vet, and go test per module in go.work; it passes today on tools/. golangci-lint joins with the first product.

The compose-backed targets refuse to run until compose.yaml exists; it arrives with Sentral's first work item. Deciding the naming before that lands is cheap.

The rule is written into the dev-environment skill under "Session stack": what is shared per workbench, what is private per commit, and what is never shared (host ports, image tags, the verify stack; Incus is one instance per workbench, isolated per Incus project). README follow-up work and the code map follow.

Also on this branch: how fabrikk works gains a "The workbench" section, the one machine that holds the agent, the code, the session stack, and swamp, and how a main checkout, one worktree per work item, the shared stack, and the per-commit verify stack live on it. The workstation guide says a workstation is a workbench and links there; the dev-environment skill keeps only the rules and points at the explanation.

Protected paths

Makefile and skills/dev-environment/SKILL.md. No ADR: factory machinery, no new dependency.

Verified

  • make check green on this branch.
  • make dev.up, make dev.reset, make verify each refuse with the compose.yaml message.
  • The published-port check proven against two stub compose files: fixed port refused, random port accepted.
## Outcome Two work-item worktrees on one workbench can run the factory at the same time without their session stacks colliding. Compose names a project after the directory it runs from, so each worktree would start its own `nats` and `postgres` and the second would fail on host ports 4222 and 5432. The Makefile now fixes the project names and never derives them from the worktree: - **`dataverket`** (`DEV_PROJECT`): the shared tier 0 and 1 stack. `dev.up`, `dev.down`, and `dev.reset` run against it, so every worktree joins the same containers on fixed host ports. Tests isolate themselves by name, as the dev-environment skill already required. - **`verify-<commit>`** (`VERIFY_PROJECT`): the private tier 2 stack. `make verify` builds ko images tagged by the commit, refuses a `verify` profile that publishes a fixed host port (the suite asks compose for the port instead), brings the stack up, runs the suite, and tears it down on exit. - **`make check`** runs docs-check, gofmt, go vet, and go test per module in `go.work`; it passes today on `tools/`. golangci-lint joins with the first product. The compose-backed targets refuse to run until `compose.yaml` exists; it arrives with Sentral's first work item. Deciding the naming before that lands is cheap. The rule is written into the dev-environment skill under "Session stack": what is shared per workbench, what is private per commit, and what is never shared (host ports, image tags, the verify stack; Incus is one instance per workbench, isolated per Incus project). README follow-up work and the code map follow. Also on this branch: how fabrikk works gains a "The workbench" section, the one machine that holds the agent, the code, the session stack, and swamp, and how a main checkout, one worktree per work item, the shared stack, and the per-commit verify stack live on it. The workstation guide says a workstation is a workbench and links there; the dev-environment skill keeps only the rules and points at the explanation. ## Protected paths `Makefile` and `skills/dev-environment/SKILL.md`. No ADR: factory machinery, no new dependency. ## Verified - `make check` green on this branch. - `make dev.up`, `make dev.reset`, `make verify` each refuse with the compose.yaml message. - The published-port check proven against two stub compose files: fixed port refused, random port accepted.
build: name the session stacks so parallel worktrees share tier 0/1 and each commit owns tier 2
Some checks failed
validate-attestation / validate (pull_request) Has been cancelled
f1c77d5055
Compose names a project after its directory, so two work-item worktrees on
one workbench would start two stacks and collide on host ports. The Makefile
now fixes the names: dev.up, dev.down, and dev.reset run the shared
`dataverket` project (tier 0 and 1, fixed host ports, per-test isolation by
name); verify runs a private `verify-<commit>` project with images tagged by
the commit, refuses a verify profile that publishes a fixed host port, and
tears the stack down on exit. check runs docs-check, gofmt, go vet, and go
test per module in go.work. The compose-backed targets refuse to run until
compose.yaml exists; it arrives with the first product.

The dev-environment skill states the rule under "Session stack": what is
shared, what is private per commit, and what is never shared. README and the
code map follow.
build: match compose's list form when refusing published ports in verify
Some checks failed
validate-attestation / validate (pull_request) Failing after 2m34s
84dc3f26d8
docs: explain the workbench and how worktrees and stacks live on it
Some checks failed
validate-attestation / validate (pull_request) Failing after 2m46s
9a01ef4f56
How fabrikk works gains a section on the workbench: the one machine that
holds the agent, the code, the session stack, and swamp; what leaves it
(branch, tag, PR) and what never does (the release build); and how one
workbench serves many work items: a main checkout, one worktree per work
item, one shared session stack, one private verify stack per commit. The
workstation guide says a workstation is a workbench and links there. The
dev-environment skill keeps only the rules that follow and points at the
explanation.
Merge main into dev-env-project-names
Some checks failed
validate-attestation / validate (pull_request) Failing after 3m5s
a993a129c0
Resolves the last-verified line of how-fabrikk-works.md, which both sides
bumped; the branch's edit to the dev-environment skill followed main's
move of skills/ to .agents/skills/.
beddari deleted branch dev-env-project-names 2026-09-18 09:12:56 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
dataverket/fabrikk!13
No description provided.