Repository navigation
Open
Labels
app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)Package/app: mcpx (pkgs/ or apps/ in this repo)effort/sSmall: expected under 2 hours of workSmall: expected under 2 hours of workkind/bugSomething isn't working (prefixed form of the classic bug label)Something isn't working (prefixed form of the classic bug label)meta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)Ordinary priority (the default)queue/queuedHas a queued task in the Supabase agent queueHas a queued task in the Supabase agent queuesource/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus/needs-triageNot yet triaged; needs a first lookNot yet triaged; needs a first looktask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Description
Finding (from #1987 tier-2 container work, task 3283, 2026-10-30)
mcpx exec under Alpine's nodejs build fails immediately:
$ docker run --rm mcpx-tier2-node exec 'console.log("hi")'
node:internal/util:237
throw new ERR_NO_TYPESCRIPT();
^
Repro: static mcpx (CGO_ENABLED=0) copied into alpine:3.21 with apk add nodejs, MCPX_SCRIPT_RUNTIME=node. The same exec smoke passes in the same alpine image with bun's musl build, and in gcr.io/distroless/cc with deno — so the daemon, the static binary and the exec plumbing are fine; specifically mcpx's node invocation (TypeScript handling — node is asked to strip/run TS in a mode Alpine's node build does not provide) is what breaks.
Why it matters
Alpine + apk add nodejs is the lightest documented way to give a minimal image an exec surface (#1987 tier 2). Today that combination is broken at the first script, with a raw node stack instead of an mcpx-level diagnosis.
Acceptance
mcpx execworks under Alpine's nodejs (musl) build, OR mcpx detects the unsupported node mode up front and fails with its own actionable message (which runtime/mode is missing, what to use instead).- A tier-2 CI leg
alpine-node-execis added topkgs/mcpx/scripts/tier2-containers.sh+ themcpx tier-2 containersworkflow asserting it (the leg is deliberately absent today; see docs/container.md §4).
Metadata
Metadata
Assignees
Labels
app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)Package/app: mcpx (pkgs/ or apps/ in this repo)effort/sSmall: expected under 2 hours of workSmall: expected under 2 hours of workkind/bugSomething isn't working (prefixed form of the classic bug label)Something isn't working (prefixed form of the classic bug label)meta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)Ordinary priority (the default)queue/queuedHas a queued task in the Supabase agent queueHas a queued task in the Supabase agent queuesource/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus/needs-triageNot yet triaged; needs a first lookNot yet triaged; needs a first looktask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Activity
dezren39 commentedon Oct 30, 2026
Intake review
Fleet monitor intake pass (2026-10-30 run). Labels normalised this pass:
status/needs-triage,effort/s,meta/enriched(kind/bug,priority/normal,app/mcpxwere already present). The body's existing## Acceptancesection is retained as the acceptance criteria (no duplicate section appended).Still live: no merged PR since filing touches mcpx's node invocation / TypeScript handling; the failure is cleanly isolated by the filer's own controls (same image + bun musl build passes; distroless + deno passes), so this is a node-mode detection problem, not a daemon or exec-plumbing problem.
Notes / risks: the acceptance deliberately allows two outcomes — make it work, or detect-and-diagnose up front. The detect path is the safer first slice: an mcpx-level error naming the missing node mode beats a raw
ERR_NO_TYPESCRIPTstack for every minimal-image user, and it unblocks the tier-2 leg either way.Suggested approach: probe the node's type-stripping capability once at runtime selection (cache the verdict with the runtime record), fail with the actionable message when absent, and add the
alpine-node-exectier-2 leg asserting whichever behaviour lands.developing-today commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
43 remaining items
dezren39 commentedon Nov 4, 2026
🤖 Agent note · parked
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
opencode(lane-assignment row 1569)dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 4, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 5, 2026
🤖 Agent note · handed off