Skip to content

chore(sync): develop → main — MCP chart runAsUser - #426

Merged
beyondnetPeru merged 1 commit into
mainfrom
develop
Aug 4, 2026
Merged

chore(sync): develop → main — MCP chart runAsUser#426
beyondnetPeru merged 1 commit into
mainfrom
develop

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

Brings #425 to main. The evolith-mcp chart pinned runAsUser: 1000 while its image creates and chowns to uid 1001, so the pod ran as a user owning none of its corpus: policy.wasm (mode 600) was unreadable, OPA fail-closed, and every tools/call returned FORBIDDEN — 51 tools advertised, none executable.

evolith-core-api and evolith-agent-runtime already pinned 1001; the MCP chart was the odd one out.

Found by running the core-integration robot against a live two-cluster stack for the first time, and verified on that cluster after the change.

🤖 Generated with Claude Code

…corpus (#425)

`src/packages/mcp-server/Dockerfile` creates `evolith` at uid 1001,
`chown -R evolith:evolith /repo /app`, and declares `USER evolith`. The
chart pinned `runAsUser: 1000`, which overrides the image's USER and
lands the process on the base image's `node` user.

The symptom is remote from the cause and total. `policy.wasm` ships mode
600 owned by 1001, so at uid 1000 the OPA engine gets

    EACCES: permission denied, open '.../rulesets/opa/policy.wasm'

and dispatch requires BOTH the native and OPA engines to allow. OPA
erroring fail-closes, so EVERY `tools/call` returns FORBIDDEN: a deployed
MCP server that advertises 51 tools and can execute none.

Found by running the `core-integration` robot against a live two-cluster
stack for the first time — it is excluded from the default RoboSoft list
and had never executed. The pod reported `uid=1000(node)` while the file
it could not open was owned by `evolith`.

`evolith-core-api` and `evolith-agent-runtime` already pin 1001; this
chart was the odd one out, which is why only the MCP surface failed.

Verified on the live cluster after the change: the pod reports
`uid=1001(evolith)` and the wasm is readable.

Not in this change, and separate: the same robot found `/core/evaluate`
returning 201 with no gates, and `/assistant/converse` 502 on a 401 from
the agent-runtime (a key mismatch in my local wiring, not the product).
Both still to be run down.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner August 4, 2026 15:31
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

📊 Bilingual Coverage Impact

PR Changes

  • Paired EN/ES files modified: 0
  • New EN files needing ES translation: 0

Repository Coverage

Metric Value
Total EN files 527
Total ES files 501
Paired files 0
Coverage 0%

Good: All EN changes have ES counterparts.


Generated by GitHub Actions

@beyondnetPeru
beyondnetPeru merged commit 8fd7d47 into main Aug 4, 2026
51 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant