chore(codex-config): spawn de MCP zonder npx-wrapperlaag #62

Merged
janpeter merged 1 commit from chore/codex-config-drop-npx-layer into master 2026-07-16 11:46:14 +02:00
Owner

PR #61 haalde de npx-wrapperlaag weg uit mcp-config.json — maar dat is de config van de Claude/idea-worker. De codex-worker leest een eigen bestand, codex/config.toml, en dat bleef achter op command = "npx".

Gevolg: op max2 spawnt de codex-worker de MCP nog steeds via npx. Live bewijs uit ps in scrum4me-agent-codex tijdens een lopende job:

codex exec --json … --model gpt-5.5 …
  └─ npm exec tsx /opt/scrum4me-mcp/src/index.ts     ← wrapperlaag
       └─ sh -c tsx /opt/scrum4me-mcp/src/index.ts
            └─ node /usr/bin/tsx /opt/scrum4me-mcp/src/index.ts

Deze PR doet voor de codex-kant exact wat #61 voor de Claude-kant deed:

-command = "npx"
-args = ["tsx", "/opt/scrum4me-mcp/src/index.ts"]
+command = "tsx"
+args = ["/opt/scrum4me-mcp/src/index.ts"]

Verificatie

  • tsx staat in de image op /usr/bin/tsx (v4.23.1) — command = "tsx" resolvet zonder wrapper. Zelfde precedent als de Claude-kant, die hier al op draait.
  • TOML parseert schoon (tomllib); env_vars (13 entries), sandbox_mode en de rest ongewijzigd.
  • Enige wijziging is deze twee regels.

Uitrol

Effect komt pas na image-rebuild + container-recreate (redeploy_all_workers): entrypoint.sh (r172-182) installeert /opt/agent/etc/codex/config.toml bij elke start onvoorwaardelijk over ~/.codex/config.toml heen — dat pad is een bind-mount van /srv/scrum4me/worker-codex-home op max2.

Gevonden tijdens het ST-025 runtime-evidence-onderzoek: alle vier de modelcanaries waren PASS, dit MCP-command was het enige falende criterium.

PR #61 haalde de npx-wrapperlaag weg uit `mcp-config.json` — maar dat is de config van de **Claude/idea-worker**. De **codex-worker** leest een eigen bestand, `codex/config.toml`, en dat bleef achter op `command = "npx"`. Gevolg: op max2 spawnt de codex-worker de MCP nog steeds via npx. Live bewijs uit `ps` in `scrum4me-agent-codex` tijdens een lopende job: ``` codex exec --json … --model gpt-5.5 … └─ npm exec tsx /opt/scrum4me-mcp/src/index.ts ← wrapperlaag └─ sh -c tsx /opt/scrum4me-mcp/src/index.ts └─ node /usr/bin/tsx /opt/scrum4me-mcp/src/index.ts ``` Deze PR doet voor de codex-kant exact wat #61 voor de Claude-kant deed: ```diff -command = "npx" -args = ["tsx", "/opt/scrum4me-mcp/src/index.ts"] +command = "tsx" +args = ["/opt/scrum4me-mcp/src/index.ts"] ``` ## Verificatie - `tsx` staat in de image op `/usr/bin/tsx` (v4.23.1) — `command = "tsx"` resolvet zonder wrapper. Zelfde precedent als de Claude-kant, die hier al op draait. - TOML parseert schoon (`tomllib`); `env_vars` (13 entries), `sandbox_mode` en de rest ongewijzigd. - Enige wijziging is deze twee regels. ## Uitrol Effect komt pas na **image-rebuild + container-recreate** (`redeploy_all_workers`): `entrypoint.sh` (r172-182) installeert `/opt/agent/etc/codex/config.toml` bij elke start onvoorwaardelijk over `~/.codex/config.toml` heen — dat pad is een bind-mount van `/srv/scrum4me/worker-codex-home` op max2. Gevonden tijdens het ST-025 runtime-evidence-onderzoek: alle vier de modelcanaries waren PASS, dit MCP-command was het enige falende criterium.
chore(codex-config): spawn de MCP zonder npx-wrapperlaag
All checks were successful
CI / Compose config (pull_request) Successful in 4s
CI / Docker build (pull_request) Successful in 7s
c31800488c
PR #61 haalde de npx-laag weg uit mcp-config.json (de Claude/idea-worker),
maar codex/config.toml bleef achter op `command = "npx"`. De codex-worker
leest een eigen config, dus daar spawnt de MCP nog steeds via npx:

  codex exec --model gpt-5.5 ...
    └─ npm exec tsx /opt/scrum4me-mcp/src/index.ts   <- wrapperlaag
         └─ sh -c tsx ...
              └─ node /usr/bin/tsx ...

Zelfde wijziging als #61, nu voor de codex-kant. tsx staat in de image op
/usr/bin/tsx (v4.23.1), dus command = "tsx" resolvet zonder wrapper.

Effect pas na image-rebuild + container-recreate: entrypoint.sh installeert
/opt/agent/etc/codex/config.toml bij elke start over ~/.codex/config.toml
(bind-mount /srv/scrum4me/worker-codex-home) heen.
s4m-codex-reviewer left a comment

Verdict: APPROVED

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

Findings

  • Geen findings.

Review-notities

De wijziging in codex/config.toml vervangt npx tsx /opt/scrum4me-mcp/src/index.ts door directe aanroep van tsx /opt/scrum4me-mcp/src/index.ts. Dit blijft conform de productdocumentatie rond de MCP/tsx boundary: TSX_TSCONFIG_PATH blijft via de MCP-env gezet en wordt niet aangepast. De worker-runtime heeft tsx globaal beschikbaar, en de bestaande mcp-config.json gebruikt al dezelfde directe command-vorm.

# Verdict: APPROVED Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - Geen findings. ## Review-notities De wijziging in `codex/config.toml` vervangt `npx tsx /opt/scrum4me-mcp/src/index.ts` door directe aanroep van `tsx /opt/scrum4me-mcp/src/index.ts`. Dit blijft conform de productdocumentatie rond de MCP/tsx boundary: `TSX_TSCONFIG_PATH` blijft via de MCP-env gezet en wordt niet aangepast. De worker-runtime heeft `tsx` globaal beschikbaar, en de bestaande `mcp-config.json` gebruikt al dezelfde directe command-vorm.
janpeter merged commit ae464506aa into master 2026-07-16 11:46:14 +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!62
No description provided.