fix(ci): reach PPE controller through service DNS #125

Merged
janpeter merged 2 commits from codex/idea-169-forgejo-ci-host-mcp into main 2026-08-23 21:25:21 +02:00
Owner

Root cause

Forgejo/act executes each job and its PostgreSQL service as sibling containers. Both the PR-candidate and final-release jobs used 127.0.0.1, so Prisma addressed the job container instead of the healthy postgres service.

Change

  • use postgres:5432 in both controller test URLs
  • parse the workflow and require both URLs to resolve to a declared service
  • retain explicit PPE controller user and disposable database invariants

Verification

  • TDD regression: failed against the old loopback URLs, then passed
  • Prisma schema bootstrap + generated-schema equality
  • typecheck + test typecheck
  • 202 test files and 1,529 tests passed
  • stdio canary, closed package build, packaged canary and package verification exact on 5e661b6
  • live Forgejo run #116 reached the postgres service and bootstrapped Prisma in 2 seconds

Post-merge CI repair for IDEA-169 / merged PR #124. The PR candidate path never publishes. Merging this PR will re-enable the existing main-only immutable publication job.

## Root cause Forgejo/act executes each job and its PostgreSQL service as sibling containers. Both the PR-candidate and final-release jobs used 127.0.0.1, so Prisma addressed the job container instead of the healthy `postgres` service. ## Change - use `postgres:5432` in both controller test URLs - parse the workflow and require both URLs to resolve to a declared service - retain explicit PPE controller user and disposable database invariants ## Verification - TDD regression: failed against the old loopback URLs, then passed - Prisma schema bootstrap + generated-schema equality - typecheck + test typecheck - 202 test files and 1,529 tests passed - stdio canary, closed package build, packaged canary and package verification exact on `5e661b6` - live Forgejo run #116 reached the `postgres` service and bootstrapped Prisma in 2 seconds Post-merge CI repair for IDEA-169 / merged PR #124. The PR candidate path never publishes. Merging this PR will re-enable the existing main-only immutable publication job.
fix(ci): reach PPE controller through service DNS
Some checks failed
CI / Final merge attestation and immutable publication (pull_request) Has been cancelled
CI / PR candidate (never published) (pull_request) Has been cancelled
c24b1c9b61
s4m-codex-reviewer requested changes 2026-08-23 20:21:12 +02:00
Dismissed
s4m-codex-reviewer left a comment

Verdict: REQUEST_CHANGES

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

Findings

  • ERROR — .forgejo/workflows/ci.yml:17 — De candidate-job draait direct op runs-on: ubuntu-latest en heeft geen container:-configuratie. In deze vorm worden service-containers via de gepubliceerde hostpoort op localhost benaderd; de service-DNS naam postgres is bedoeld voor jobs die zelf in hetzelfde container-netwerk draaien. Deze wijziging maakt npx prisma db push --url "$PPE_CONTROLLER_TEST_DATABASE_URL" waarschijnlijk onbereikbaar en breekt de PR-gate.
  • ERROR — .forgejo/workflows/ci.yml:131 — Hetzelfde probleem zit in de final-release job: ook deze job draait niet als container-job, maar de database-URL wijst naar postgres:5432. Daardoor kan de release-attestation op main falen voordat tests/builds draaien.
  • WARN — __tests__/ppe-ci-prerequisites.test.ts:43 — De nieuwe guard-test noemt “every container job”, maar de workflow-jobs zijn geen container-jobs en de test valideert dat ook niet. Hij kan dus groen zijn terwijl de runtime-connectiviteit fout is. Voeg ofwel een echte container:-configuratie toe aan beide jobs, of behoud localhost en test expliciet het runner-service patroon.

Conclusie

Niet goedkeuren zolang de workflow niet consistent is met het gekozen service-connectiviteitspatroon.

# Verdict: REQUEST_CHANGES Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - **ERROR** — `.forgejo/workflows/ci.yml:17` — De candidate-job draait direct op `runs-on: ubuntu-latest` en heeft geen `container:`-configuratie. In deze vorm worden service-containers via de gepubliceerde hostpoort op `localhost` benaderd; de service-DNS naam `postgres` is bedoeld voor jobs die zelf in hetzelfde container-netwerk draaien. Deze wijziging maakt `npx prisma db push --url "$PPE_CONTROLLER_TEST_DATABASE_URL"` waarschijnlijk onbereikbaar en breekt de PR-gate. - **ERROR** — `.forgejo/workflows/ci.yml:131` — Hetzelfde probleem zit in de final-release job: ook deze job draait niet als container-job, maar de database-URL wijst naar `postgres:5432`. Daardoor kan de release-attestation op `main` falen voordat tests/builds draaien. - **WARN** — `__tests__/ppe-ci-prerequisites.test.ts:43` — De nieuwe guard-test noemt “every container job”, maar de workflow-jobs zijn geen container-jobs en de test valideert dat ook niet. Hij kan dus groen zijn terwijl de runtime-connectiviteit fout is. Voeg ofwel een echte `container:`-configuratie toe aan beide jobs, of behoud `localhost` en test expliciet het runner-service patroon. ## Conclusie Niet goedkeuren zolang de workflow niet consistent is met het gekozen service-connectiviteitspatroon.
test(ci): retain controller database invariants
All checks were successful
CI / PR candidate (never published) (pull_request) Successful in 2m35s
CI / Final merge attestation and immutable publication (pull_request) Has been skipped
5e661b69e6
Author
Owner

De twee ERROR-bevindingen veronderstellen GitHub host-runnersemantiek, maar deze Forgejo/act-runner start ook zonder expliciete container:-sleutel een jobcontainer naast de servicecontainer. Dat is empirisch bevestigd in run #116: Bootstrap disposable PPE controller schema via postgres:5432 slaagde in 2 seconden; dezelfde stap faalde in run #114 via 127.0.0.1 met Prisma P1001. Daarom voeg ik geen overbodige containerconfig toe. In 5e661b6 is de guard bovendien versterkt met de verwachte test-user en expliciet disposable databasenaam, en de testnaam verwijst nu naar de Forgejo-runner in plaats van een YAML container:-declaratie.

De twee ERROR-bevindingen veronderstellen GitHub host-runnersemantiek, maar deze Forgejo/act-runner start ook zonder expliciete `container:`-sleutel een jobcontainer naast de servicecontainer. Dat is empirisch bevestigd in [run #116](https://git.jp-visser.nl/janpeter/scrum4me-mcp/actions/runs/116/jobs/0): `Bootstrap disposable PPE controller schema` via `postgres:5432` slaagde in 2 seconden; dezelfde stap faalde in run #114 via `127.0.0.1` met Prisma P1001. Daarom voeg ik geen overbodige containerconfig toe. In `5e661b6` is de guard bovendien versterkt met de verwachte test-user en expliciet disposable databasenaam, en de testnaam verwijst nu naar de Forgejo-runner in plaats van een YAML `container:`-declaratie.
s4m-codex-reviewer left a comment

APPROVED

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

Findings

Geen blokkerende of niet-blokkerende findings gevonden.

De wijziging past de PPE test-database URL consequent aan in beide Forgejo runner jobs (candidate en final-release) en voegt een gerichte regressietest toe die de hostname tegen de gedeclareerde service valideert. De nieuwe test blijft binnen de bestaande testconventie: tests worden via de test-typecheck gate meegenomen, conform de productdoc Typecheck-scope — src én tests, twee configs.

# APPROVED Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings Geen blokkerende of niet-blokkerende findings gevonden. De wijziging past de PPE test-database URL consequent aan in beide Forgejo runner jobs (`candidate` en `final-release`) en voegt een gerichte regressietest toe die de hostname tegen de gedeclareerde service valideert. De nieuwe test blijft binnen de bestaande testconventie: tests worden via de test-typecheck gate meegenomen, conform de productdoc `Typecheck-scope — src én tests, twee configs`.
Sign in to join this conversation.
No reviewers
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-mcp!125
No description provided.