Skip to content

mcpx: Go tests fail on macOS (2 path tests in internal/config, plus 2 unidentified packages) #1988

Closed

Description

@dezren39

Relocated from dezren39/darwin-nix#366 on 2026-10-28 (placement audit): mcpx's single source lives in developing-today/code (pkgs/mcpx); re-home tracked at #309. Original body below; issue references inside it are historical (dezren39/nix numbering).

cd pkgs/mcpx && go test ./...: 10 packages ok, 3 FAIL, 5 with no tests.

  • internal/config: TestExecIdentityFollowsTheExecutableNotTheCommandName and TestExecIdentityResolvesAgainstTheServersOwnPath expect /var/folders/… but get /private/var/folders/…. On macOS /var is a symlink to /private/var, so this looks like a test that doesn't resolve symlinks, not a product bug.
  • The other 2 failing packages weren't recorded. Re-run go test ./... to identify them.
  • scripts/conformance.sh was not run.

Acceptance criteria

  • go test ./... is run on macOS against the mcpx version the nix flake pins, and every failing package is named in a comment here (the 2 unidentified packages from the original report are identified)
  • The two named internal/config path tests are confirmed fixed against the pinned mcpx (symlink-resolving temp dir) or fixed if they still fail
  • The full suite is green on darwin, or any remaining failures are filed as their own issues and linked here
  • scripts/conformance.sh is run on darwin and its result recorded here

Activity

  1. developing-today commented on Oct 28, 2026

    @developing-today
    Contributor
  2. dezren39 commented on Oct 28, 2026

    @dezren39
    MemberAuthor

    History carried over from dezren39/darwin-nix#366 (verbatim, oldest first):


    @dezren39 · 2026-10-18T02:23:25Z

    Partial fix merged via PR #385 (merge commit eff5826) — leaving this open for the still-unidentified pair.

    Fixed: the two internal/config path tests. As suspected, test bug not product bug: ExecStamp deliberately reports the symlink-resolved path, and the tests compared it against paths built from unresolved t.TempDir() (macOS: /var → /private/var). Both tests now use testsupport.TempDir — the helper added for this exact trap in #281, already used by merge_test.go in the same package.

    How it was verified without a Mac: go test canonicalises TMPDIR for the test binary, which masks the failure on Linux, so I ran the compiled test binaries directly with TMPDIR behind a symlink (outside $HOME, isolating the symlink variable):

    • Before: both named tests fail with the exact /var/folders… vs /private/var/folders… mismatch.
    • After: both pass; full internal/config passes under symlinked and plain TMPDIR.
    • Every other mcpx package with tests (~35, incl. daemon, pool, cli, e2e, conformance) passes the same way.

    Still open: the other 2 failing packages were never recorded and do not reproduce under the symlink simulation — they may hinge on a macOS-only factor beyond /var symlinking. To close this out, a macOS re-run of cd pkgs/mcpx && go test ./... that records the failing package names is what's needed.


    @dezren39 · 2026-10-24T20:42:57Z

    Triage re-check (issue-sweep-rotating, 2026-10-24):

    The named half is fixed everywhere it needs to be. The two internal/config tests fixed here via PR #385 carry that fix in the mcpx source's current home: in developing-today/code at main aa853c40, pkgs/mcpx/internal/config/execid_test.go uses testsupport.TempDir(t) for both TestExecIdentityFollowsTheExecutableNotTheCommandName (line 29) and TestExecIdentityResolvesAgainstTheServersOwnPath (line 52), with the comment explaining the /var → /private/var symlink trap.

    The remainder cannot be run from this repo anymore. The vendored copy this issue was filed against was deleted in #469 (commit 42b94f3: "mcpx: delete the vendored copy; build from pinned developing-today/code input"), and pkgs/mcpx no longer exists in this tree (verified: git ls-tree HEAD pkgs/). So the cd pkgs/mcpx && go test ./... re-run the last comment asked for now means the developing-today/code clone.

    Still owed, and blocked on hardware: one macOS run of go test ./... in developing-today/code/pkgs/mcpx that records the names of the other 2 failing packages (never recorded when this was filed). That needs Drew's Mac — it cannot be reproduced in the Linux sweep sandbox, and the earlier symlink simulation passed every other package.

    Leaving this open for that Mac re-run. The ROADMAP "macOS Go test failures" row already records this item as moot for this repo once the code-repo build landed (#469) — that build has landed, so this issue is now purely the unidentified-pair question in the code repo.


    @dezren39 · 2026-10-27T01:36:53Z

    Intake review

    Partly looks solved — not closed: the two named internal/config path tests appear fixed in the mcpx source this repo now pins from developing-today/code: internal/config/execid_test.go there uses a symlink-resolving testsupport.TempDir with a comment explaining exactly this /var → /private/var failure. What was never done is the rest of the filing: the other 2 failing packages were never identified, and no full darwin go test ./... or conformance.sh result is recorded. This repo no longer vendors mcpx under pkgs/ (it is a pinned input; see mcpx.config.nix), so the re-run must be against the pinned version.

    Related: developing-today/code #237 (mcpx darwin takeover tests — the sibling darwin-test item; cross-repo set), nix #362 (mcpx pin bump tracking).

    Notes / risks: if the pinned mcpx passes the full suite on darwin, this closes with that evidence; if the 2 unknown packages still fail, they become the real scope. Needs a macOS machine/agent to run — that access constraint is the historical blocker for this whole family.

    Suggested approach: on a darwin host, check out the pinned mcpx, run go test ./... and scripts/conformance.sh, post the package-level results here, and close or split from that evidence.

    — fleet monitor intake (repo-fleet-monitor, 2026-10-26 20:19 CDT run)

  3. added
    kind/testTest coverage, test infrastructure, or test-only fixes
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)
    queue/queuedHas a queued task in the Supabase agent queue
    on Oct 28, 2026
  4. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Oct 29, 2026
  5. 22 remaining items

  6. removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Oct 31, 2026
  7. dezren39 commented on Oct 31, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

    • Agent: queue worker (repo-worker-code), lane A
    • Session / ID: queue task 3285, repo-queue-worker-shift 2026-10-31 05:04 CDT
    • Found via: queue claim (resume)
    • Task: PR mcpx: darwin/arm64 test-compile gate (#1988) #2995 @ 5b5c2b581 re-verified fresh: Codex clean for head (no findings, 0 Codex review comments), lint/plugin/stress-changed-tests + docs all PASS, diff matches the packet (gate in 2 jobs, exception list in script, AGENTS.md). Only final: CI time budget still queued since 08:33Z (fleet infra). Merging under the standing verify-the-change rule, noting the stuck bookkeeping job.
    • Expectation: PR merged → complete fixed_merged
    • Links: PR mcpx: darwin/arm64 test-compile gate (#1988) #2995
  8. added a commit that references this issue on Oct 31, 2026
  9. dezren39 commented on Oct 31, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

  10. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    Triage verdict (2026-11-03, main d3476bce7): the macOS detector now exists and its red is owned by #3016 — closing

    This issue's original premise — no one can see what fails on macOS — no longer holds. Two things changed since the last pass: #1973 landed a nightly two-OS full-suite stress (mcpx.yml stress-nightly, os: [ubuntu-latest, macos-latest], go test ./... -race -shuffle=<seed> -count=3, failure tracked in #3016 instead of gating PRs), and PR #2995 added the darwin/arm64 test-compile gate (scripts/darwin-compile-check.sh, wired at mcpx.yml:159 and :451) with internal/daemon as the documented #237 exception.

    Acceptance criteria, one by one:

    AC Status
    go test ./... on macOS, every failing package named (incl. the 2 never recorded) Satisfied by the nightly run. The macOS leg of run 41298367349 (2026-11-01, seed 617367566042063095) names ten failing packages: examples, internal/cli, internal/conformance, internal/daemon, internal/defaults, internal/e2e, internal/mcpclient, internal/pool, internal/runner, internal/settings. All are recorded on #3016 ("mcpx nightly stress failure", open, updated 2026-11-02).
    The two internal/config path tests confirmed fixed Satisfied. internal/config is not in the macOS failure list, i.e. the testsupport.TempDir fix (PR #385) holds under a real darwin run, not just the symlinked-TMPDIR proxy.
    Suite green on darwin, or remaining failures filed and linked Owned by #3016 — the nightly's designed tracker (#1973 explicitly chose "one tracking issue, never gates a PR" over per-failure issues). Nothing is left unrecorded, so this issue does not need to stay open as a second tracker.
    scripts/conformance.sh on darwin, result recorded Not done. That script needs the modelcontextprotocol/conformance clone and currently runs only in mcpx-conformance.yml (ubuntu). Scoped as queue task 8163 so the AC survives this close.

    Why close rather than keep open: with the detector live, #1988 is a duplicate of #3016 for the failure half and of the follow-up for the conformance half. Leaving it open is the "audit without a verdict" shape the intake review warned about.

    🤖 Agent note · state: done (closed, superseded by the nightly detector)

  11. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  12. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    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

  13. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/mcpxPackage/app: mcpx (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workkind/testTest coverage, test infrastructure, or test-only fixesmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/queuedHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanstatus/needs-triageNot yet triaged; needs a first looktask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions