Skip to content

🧪 test: completion: Diagnose the macOS shared-domain flake #476

Open

Description

@pascalandy

The shared-domain completion control returned no candidates in one full macOS check. The next required full check passed. Preserve the failure and capture the suppressed reason before changing the test or completion budget.

Observed on the mini, Darwin 25.6.0 / macOS 26.6.2, using the public disposable checker. Both commands were uv run --no-project --python 3.12 just check --keep-going, base 0895b8b325febb98f215f6ee1ea50076a4dffbb2.

  • Mini23 at 5f0154cb74d12b24b9996b80c8b232d1b6eefa42: all 11 checks passed
  • Mini27 at c1ded7683ab43d71420ed886b8384f86f478090a: test failed; actual checker exit 1, receipt ok=false/exit_code=1/cleaned=true
  • Mini30 at 531b3b48b79cff55d7b040092658e6801e68b750: all 11 checks passed in one invocation, no retry; actual checker exit 0, receipt ok=true/exit_code=0/cleaned=true

The failed block from mini27's saved proof, lines32-43:

--- FAIL: TestScripts/core/extension_shared_domains (6.27s)
    testscript.go:609: # A leaf extension root receives its argument through the host and directly. (3.357s)
        # Slug prefixes work in catalogs, own errors, and own warnings. (0.483s)
        # Shared help and discovery never start either extension. (0.374s)
        # Completion chooses the sibling's full path and passes only its relative path. (2.054s)
        > exec ncly __complete video convert cl
        [stdout]
        :4
        [stderr]
        Completion ended with directive: ShellCompDirectiveNoFileComp
        > stdout '^clip.mov$'
        FAIL: ../../testdata/script/extension_shared_domains.txtar:57: no match for `^clip.mov$` found in stdout

Diagnosis remains open. The 2.054 s block is consistent with the unchanged 2 s dynamic-list budget in internal/cli/values.go; it is not a measured timeout. The completion code suppresses any list error. No BASH_COMP_DEBUG_FILE reason, handler log or phase stamp was retained before disposable cleanup, so another start/answer error remains possible.

internal/cli/values.go, sdk/runner/runner.go, testdata/script/extension_shared_domains.txtar, the video-subtitle handler/manifest and video-convert manifest are byte-identical between mini23, mini27 and mini30. values.go and the fixture/handler files also match base 0895b8b; runner.go does not match base because #468 changed it. Source trace: completion creates its own runner Program with Limit 2 s and zero CleanupReserve, bypassing the new dispatch reservation path. This is evidence against that specific mechanism, not proof that the batch cannot contribute in any way. No earlier occurrence of this exact failure was found or claimed.

Final-top mini30 exact command, receipt and full 414-line proof. The original failed/full-pass receipts and raw logs are retained by the run. This filing follows Chef's disposition: the required new full check was the decider, and its pass makes this control issue non-blocking for the batch. No separate mini probe, old-check retry or weakened assertion ran.

Related #382 tracks pty waits in form/completion.txtar. This failure is the separate non-pty exec ncly __complete assertion in extension_shared_domains.txtar. Searches for extension_shared_domains, completion/macOS and clip.mov/completion found no duplicate exact control.

Next actor: triage the smallest observation that exposes the actual suppressed list error during a full-suite recurrence. Keep sibling routing, relative-path arguments and candidate assertions. Do not increase the 2 s budget or remove the oracle based only on elapsed-time inference. Decide the correction after the reason is captured, then show old failure/new pass and full checks on Linux/macOS.

by GPT-6.1-Sol via Codex

Activity

  1. added
    1-needs-triageScope, approach, or direction needs evaluation
    2-type:bugExisting behavior is broken
    3-pty:p2Normal planned work; default when no priority is established
    on Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    1-needs-triageScope, approach, or direction needs evaluation2-type:bugExisting behavior is broken3-pty:p2Normal planned work; default when no priority is established

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions