fix(compose): projectnaam-collisions op max2 opheffen #58

Merged
janpeter merged 1 commit from fix/compose-project-collisions into master 2026-07-11 07:12:29 +02:00
Owner

Lost de twee destructieve project-name collisions op die check-compose-collision.sh op max2 meldt.

Wat er mis was

De live stack (/srv/scrum4me/compose) had geen name: en heette dus compose, afgeleid van de mapnaam. Elke andere map met die naam landt in hetzelfde project — een up/down daar raakt de live containers. Zo ging het op 2026-07-09 mis.

De live stack pint nu name: scrum4me (al doorgevoerd op de host). Daarmee zakt de collision met de 154-kopie in Ops-dashboard/deploy/compose/ van destructief naar waarschuwing: die kopie claimt nog steeds project compose, maar dat project bestaat niet meer, dus een down daar raakt niets.

Wat deze PR verandert

baseline/commands.yml — de rename verandert de namen van de geschaalde replica's (compose-worker-idea-Nscrum4me-worker-idea-N), en die staan letterlijk in de drie ops-agent allowlists (stop/restart/inspect).

Belangrijker: vijf cmd-arrays hardcodeden -p compose. Die vlag overrulet de name: uit het bestand — bij de eerstvolgende redeploy_all_workers was er een tweede project compose naast scrum4me opgetuigd en de worker-vloot verdubbeld. De projectnaam komt nu uitsluitend uit de compose-file.

docker-compose.yml (de portable referentie) — expliciete name: plus -ref suffixen op de container_names. Een name: alleen is niet genoeg: die reist mee met een kopie, de container_name-botsing niet. Dat is ook precies wat de scanner-header zelf al opmerkt.

Verificatie op de host

  • Stack draait als project scrum4me, 7/7 containers up, netwerk scrum4me_default (subnet ongewijzigd 172.18.0.0/16, dus ops-agent op 172.18.0.1:3099 blijft bereikbaar).
  • Gerenderde compose-config is byte-identiek op name: en de netwerknaam na.
  • scraper joinde compose_default als external netwerk; die is meeverhuisd naar scrum4me_default — migrate exit 0, "No pending migrations", DNS naar scrum4me-postgres resolvet.
  • ops-agent herstart (allowlists herladen alleen bij restart), 8 flows geladen, dry-run redeploy_all_workers volledig groen en resolvet naar project scrum4me.
  • Live /etc/ops-agent/commands.yml is identiek aan deze baseline — drift-detector blijft groen zodra dit gemerged is.

🤖 Generated with Claude Code

Lost de twee **destructieve** project-name collisions op die `check-compose-collision.sh` op max2 meldt. ## Wat er mis was De live stack (`/srv/scrum4me/compose`) had geen `name:` en heette dus `compose`, afgeleid van de mapnaam. Elke andere map met die naam landt in hetzelfde project — een `up`/`down` daar raakt de live containers. Zo ging het op 2026-07-09 mis. De live stack pint nu `name: scrum4me` (al doorgevoerd op de host). Daarmee zakt de collision met de 154-kopie in `Ops-dashboard/deploy/compose/` van *destructief* naar *waarschuwing*: die kopie claimt nog steeds project `compose`, maar dat project bestaat niet meer, dus een `down` daar raakt niets. ## Wat deze PR verandert **`baseline/commands.yml`** — de rename verandert de namen van de geschaalde replica's (`compose-worker-idea-N` → `scrum4me-worker-idea-N`), en die staan letterlijk in de drie ops-agent allowlists (stop/restart/inspect). Belangrijker: vijf cmd-arrays hardcodeden **`-p compose`**. Die vlag overrulet de `name:` uit het bestand — bij de eerstvolgende `redeploy_all_workers` was er een tweede project `compose` naast `scrum4me` opgetuigd en **de worker-vloot verdubbeld**. De projectnaam komt nu uitsluitend uit de compose-file. **`docker-compose.yml`** (de portable referentie) — expliciete `name:` plus `-ref` suffixen op de container_names. Een `name:` alleen is niet genoeg: die reist mee met een kopie, de container_name-botsing niet. Dat is ook precies wat de scanner-header zelf al opmerkt. ## Verificatie op de host - Stack draait als project `scrum4me`, 7/7 containers up, netwerk `scrum4me_default` (subnet ongewijzigd `172.18.0.0/16`, dus ops-agent op `172.18.0.1:3099` blijft bereikbaar). - Gerenderde compose-config is byte-identiek op `name:` en de netwerknaam na. - `scraper` joinde `compose_default` als *external* netwerk; die is meeverhuisd naar `scrum4me_default` — migrate exit 0, "No pending migrations", DNS naar `scrum4me-postgres` resolvet. - ops-agent herstart (allowlists herladen alleen bij restart), 8 flows geladen, dry-run `redeploy_all_workers` volledig groen en resolvet naar project `scrum4me`. - Live `/etc/ops-agent/commands.yml` is identiek aan deze baseline — drift-detector blijft groen zodra dit gemerged is. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(compose): projectnaam-collisions op max2 opheffen
All checks were successful
CI / Compose config (pull_request) Successful in 5s
CI / Docker build (pull_request) Successful in 6s
3243ab8567
De live stack in /srv/scrum4me/compose had geen `name:` en heette daarom
"compose" — afgeleid van de mapnaam. Elke andere map die toevallig `compose`
heet landt dan in datzelfde project; een `up`/`down` daar raakt de live
containers. Dat is precies wat op 2026-07-09 de stack sloopte.

De live stack pint nu `name: scrum4me`. Daardoor veranderen de namen van de
geschaalde worker-replica's mee (compose-worker-idea-N -> scrum4me-worker-idea-N),
en die staan letterlijk in de ops-agent allowlists.

- baseline/commands.yml: replica-namen bijgewerkt in de drie allowlists
  (docker stop/restart/inspect).
- baseline/commands.yml: `-p compose` uit vijf cmd-arrays gehaald. Die vlag
  overrulet de `name:` uit het bestand en zou een TWEEDE project "compose"
  naast "scrum4me" hebben opgetuigd — de worker-vloot verdubbeld bij de
  eerstvolgende redeploy_all_workers. De projectnaam komt nu uitsluitend uit
  de compose-file.
- docker-compose.yml (portable referentie): expliciete `name:` plus -ref
  suffixen op de container_names, zodat dit bestand de live vloot niet meer
  kan raken. Een `name:` alleen is niet genoeg: die reist mee met een kopie,
  de container_name-botsing niet.

Live /etc/ops-agent is al bijgewerkt en gelijk aan deze baseline; ops-agent is
herstart (allowlists worden alleen bij restart herladen). Dry-run van
redeploy_all_workers gaat groen en resolvet naar project "scrum4me".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
s4m-codex-reviewer left a comment

Verdict: APPROVED

Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.

Findings

  • Geen blokkerende findings gevonden.

Reviewnotities

  • De wijziging is consistent in scope: de referentie-compose krijgt een expliciete name: scrum4me-docker-ref plus -ref container names, terwijl de max2-commands niet langer hardcoded -p compose gebruiken en de verwachte live worker-containernamen naar scrum4me-worker-idea-{1,2} verplaatsen.
  • Productdocs zijn geraadpleegd; er is geen specifieke standaard gevonden die deze aanpak tegenspreekt. De architectuurdoc bevestigt wel dat compose/runner-deployments rond deze bestanden en worker-services draaien.
  • Vanuit de aangeleverde payload is geen test- of docker compose config-output zichtbaar. Gezien de beperkte YAML/command-wijziging is dat geen blocker voor deze review.
# Verdict: APPROVED Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - Geen blokkerende findings gevonden. ## Reviewnotities - De wijziging is consistent in scope: de referentie-compose krijgt een expliciete `name: scrum4me-docker-ref` plus `-ref` container names, terwijl de max2-commands niet langer hardcoded `-p compose` gebruiken en de verwachte live worker-containernamen naar `scrum4me-worker-idea-{1,2}` verplaatsen. - Productdocs zijn geraadpleegd; er is geen specifieke standaard gevonden die deze aanpak tegenspreekt. De architectuurdoc bevestigt wel dat compose/runner-deployments rond deze bestanden en worker-services draaien. - Vanuit de aangeleverde payload is geen test- of `docker compose config`-output zichtbaar. Gezien de beperkte YAML/command-wijziging is dat geen blocker voor deze review.
janpeter merged commit 29050ceef6 into master 2026-07-11 07:12:29 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
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
janpeter/scrum4me-docker!58
No description provided.