Repository navigation
Description
Finding
PR #417 changed the canonical mcpx check-phase line in this repo from go test $pkgs to go test -timeout 30m $pkgs, and correctly updated this repo's own guard. But the same exact string is also the search pattern for the darwin test-skip override in dezren39/nix, where it is applied with builtins.replaceStrings — which silently returns its input unchanged when the pattern does not match. Nothing automated in either repo fails if the two drift apart again; the downstream retarget in dezren39/nix PR #513 was verified only by a manual nix eval noted in that PR's body.
This is one cross-repo finding (one issue, per the set rule). Affected repos:
- developing-today/code (this repo, PR reviewed):
pkgs/mcpx/package.nix:122now runsgo test -timeout 30m $pkgs(main86a2aa9e648e530e0fdeadc4566e5dd28256ae00, PR mcpx: 30m per-package timeout in the nix check phase (for dezren39/nix#510) #417, commitseaa2018d550e5ef6cc39064f1cac02e869811a25+f27752c539f338719a902b3e96da439f52637262). Its guardpkgs/mcpx/internal/buildcheck/checkphase_test.go:86-87requires that exact line — so this repo is protected against its own line changing unnoticed, but nothing signals the downstream consumer. - dezren39/nix:
flake.nix:317-320(mainb70c39a95ac96ee80c1769dd8e674192ca1c76cf) rewrites the darwincheckPhasewithbuiltins.replaceStrings [ "go test -timeout 30m $pkgs" ] [ "go test -timeout 30m -skip='${mcpxDarwinSkip}' $pkgs" ]. The skip list atflake.nix:323names 21 takeover/handoff tests that fail on darwin.
Evidence
builtins.replaceStringsis a silent no-op on a missing pattern — verified directly:nix eval --expr 'builtins.replaceStrings ["go test -timeout 99m $pkgs"] ["REPLACED"] "go test -timeout 30m $pkgs"'returns"go test -timeout 30m $pkgs"unchanged, no error.- The override block itself shows the safer pattern exists a few lines above: the darwin
postPatchat dezren39/nixflake.nix:310-311usessubstituteInPlace --replace-fail, which fails the build loudly when its pattern is absent. Only the checkPhase rewrite lacks that property. - No automated guard exists today: dezren39/nix's flake
checksare formatting, tidy, flake-tidy-tests, plugins-tests, opencode-db-pids-tests, skill-tests (plus darwin-only sidepulse checks) — none asserts the darwin mcpx checkPhase contains-skip=; itsmcpx-nixbuildworkflow builds only.#packages.x86_64-linux.mcpx, where the darwin override is not applied. This repo's buildcheck guard reads only this repo'spackage.nix. - PR mcpx: 30m per-package timeout in the nix check phase (for dezren39/nix#510) #417's own body named this coupling as a manual follow-up ("its darwin
-skipreplaceStrings pattern updated to the new canonical line"), and nix PR lab-ops-hub: both crawl validators accept impossible DNS names — labels over 63 chars and names over 253 chars #513 discharged it by hand-checkingnix eval .#packages.aarch64-darwin.mcpx.checkPhase. The next canonical-line change (a different timeout, an added flag) will need the same manual catch, with no failure if it is missed.
Why it matters
If the pattern drifts, a routine mcpx-src pin bump in dezren39/nix merges with Linux CI green while the darwin override silently does nothing: the 21 skipped takeover/handoff tests run on darwin and fail there (the flake.nix comment at dezren39/nix:296-302 records that these tests cannot pass on darwin), so the darwin mcpx build breaks — first surfacing on a Mac rebuild, with the skip list still visibly present in flake.nix, which makes the cause non-obvious. This is distinct from dezren39/darwin-nix#471, which tracks a one-time manual aarch64-darwin build verification at the current pin; that build passes today precisely because the pattern currently matches, and it would not catch the next drift.
Acceptance criteria
- An automated check (in either repo, covering the set) fails when the darwin checkPhase in dezren39/nix does not contain the
-skip=rewrite — e.g. a flake check or CI step that evaluates.#packages.aarch64-darwin.mcpx.checkPhaseand asserts the skip is present, or a fail-on-mismatch construction replacing the barereplaceStrings. - The check demonstrably ablates: with the search pattern reverted to the pre-mcpx: 30m per-package timeout in the nix check phase (for dezren39/nix#510) #417 line (
go test $pkgs) it fails, and on the current mains of both repos it passes. - The check runs automatically on changes that can break it (a canonical-line change in this repo's
pkgs/mcpx/package.nix, or an mcpx-src pin bump /flake.nixchange in dezren39/nix), not only as a manual step recorded in a PR body.
Found by the pr-diff-review job while reviewing #417.
Activity
dezren39 commentedon Oct 20, 2026
Set complete — both halves merged in one sweep pass:
throws when thereplaceStringsrewrite leaves the phase unchanged; newmcpx-darwin-skipflake check forcespackages.aarch64-darwin.mcpx.checkPhaseon every system and asserts it contains-skip=; the mcpx-nixbuild workflow (triggered by flake.nix/flake.lock changes, i.e. mcpx-src pin bumps) evals the darwin checkPhase and greps for-skip=before the Linux build — that step ran and passed on PR id(world): F11.11 enforce the client projection with a structural test #543.Ablation (acceptance criterion 2): with the search pattern reverted to the pre-#417 line (
go test $pkgs),nix eval .#packages.aarch64-darwin.mcpx.checkPhasefails with the throw (exit 1); on current mains it returns the phase with the full -skip list, andnix build .#checks.x86_64-linux.mcpx-darwin-skippasses. All CI green on both PRs.Merge pull request #451 from developing-today/creator/450-roadmap-done