Skip to content

test(windows): fix or host-skip the 9 suites that fail only on Windows Git Bash in the #10241 run #13228

Description

@kyle-sexton

Parent: #3716 (criterion 4). Measured in #10241, docs/test-wall-clock-baseline.md "Windows host".
Runs in: HOST for the final check (a Windows 11 Git Bash host without the #3715 condition); the fixes themselves can be built and tested on Linux.

Problem

In the #10241 corpus run (Windows 11 build 10.0.26300.9711, Git for Windows 2.56.0.windows.4, fd862a49b848 tree), 9 of the 18 suites that ran exited nonzero on Windows Git Bash. All 9 pass on Linux CI at the same commit:

  • plugins/context-budget/skills/audit/scripts/measure.test.sh
  • plugins/guardrails/hooks/block-dangerous-git.test.sh
  • plugins/guardrails/hooks/block-noncanonical-commit.test.sh
  • plugins/markdown-format/hooks/markdown-format.test.sh
  • plugins/planning/shared/tests/ui-a.test.sh, ui-b.test.sh, ui-c.test.sh
  • plugins/planning/surface/surface-page.test.sh
  • plugins/repo-fleet-hygiene/skills/audit/scripts/audit-fleet.test.sh

A Windows corpus number for #3716 criterion 4 is not meaningful while these fail.

Fix

For each suite, run it alone on the Windows host, find the failing case and its cause, then fix the cause or, where the suite needs something Git Bash cannot provide, give it the host-skip pattern #3683 used. Record the cause per suite in the PR body.

Done when

  • Each of the 9 suites passes on the Windows host, or host-skips with the reason in the suite and the PR body
  • The same suites still pass on Linux CI (ci-status green on the PR head)
  • The PR body lists each suite's cause

Split by the backlog HITL session from #10241's result. This was generated by AI.

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 4, 2026
  2. github-actions commented on Nov 4, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Medium
    Complexity: Medium
    Uncertainty: Knowable
    Flags: none
    Blocked by: none

    Decision recorded. Route this issue to the host queue whole, for a laptop lane with a Windows Git Bash host.
    Agent choice, not an owner answer.

    Admission refused it for the lane because Done-when item 1 needs a Windows host, and each suite fails only on Windows Git Bash, so diagnosing the cause needs that host too. A child issue for the Windows step would raise the open count, so the issue goes host-run instead, done in one PR by one host session. The body's Done-when stands unchanged.

    • On a fleet host with Windows Git Bash, run each of the 9 suites and record in the PR body whether it passes or host-skips, with the cause per suite.

    #13228 (comment)

    This decision settles the open questions. The issue goes to the host queue as one piece, and the host session diagnoses each suite and records the cause. I understood the work as fixing or host-skipping 9 test suites that fail only on Windows Git Bash, with Linux CI staying green. I found no duplicates. #13232 is related, since it covers the wall clock of one of these suites.

    Automated triage, applied by the lanes App.

  3. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 4, 2026
  4. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    on Nov 4, 2026
  5. added
    status: needs-decisionAwaiting a human or maintainer judgment call.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Nov 4, 2026
  6. melodic-automation-lanes commented on Nov 4, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: its done-when asks for what an unattended lane run cannot perform: item 1 (a run on a host the lane is not: "Each of the 9 suites passes on the Windows host, or host-skips with the reaso..."), item 4 (a run on a host the lane is not: "On a fleet host with Windows Git Bash, run each of the 9 suites and record in..."); recommended split: keep the other items here as the admissible issue and move these to a child issue for the host queue (host-run); it carries host-run. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  7. melodic-automation-lanes commented on Nov 4, 2026

    @melodic-automation-lanes
    Contributor

    The latest triage verdict holds nothing: admission moved the issue to status: confirmed; its comment says why.

  8. melodic-automation-lanes commented on Nov 4, 2026

    @melodic-automation-lanes
    Contributor

    Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.

    Intended outcome: Each of the 9 suites is fixed or host-skipped for Windows Git Bash, with the cause recorded per suite in the suite and the PR body, and Linux CI stays green.

    Related work

    Open questions

    1. The baseline records only exit codes for the 9 suites, with no failing case or cause. A Linux run cannot reproduce the Windows failures. Should the owner capture the first failing case and output per suite on the Windows host and attach it to the issue before a lane run starts?
      RECOMMENDED: Yes. Once the per-suite failure output is on the issue, the fixes and host-skips can be written and checked on Linux. Basis: docs/test-wall-clock-baseline.md:224
    2. Is a whole-suite host-skip acceptable when every case fails on Windows? surface-page.test.sh fails 93 of 93 cases, and block-dangerous-git.test.sh exits 126, which suggests a command that is missing or not executable.
      RECOMMENDED: Yes, but only where the suite needs something Git Bash cannot provide. Otherwise fix the cause. Basis: docs/test-wall-clock-baseline.md:509
    3. Do PR #​10896 and the other merged Windows fixes already cover any of the 9 suites, so some may now pass on a current tree?
      RECOMMENDED: Re-run the 9 suites on the Windows host at current main first, and list only the ones that still fail. Basis: 10896

    Sources read

    • /home/runner/work/claude-code-plugins/claude-code-plugins/.base/docs/test-wall-clock-baseline.md:224: measure.test.sh failed on Windows with exit 1; no failing case recorded
    • /home/runner/work/claude-code-plugins/claude-code-plugins/.base/docs/test-wall-clock-baseline.md:316: block-dangerous-git.test.sh failed with exit 126
    • /home/runner/work/claude-code-plugins/claude-code-plugins/.base/docs/test-wall-clock-baseline.md:503: ui-a.test.sh failed with exit 1 (listed as exit 7 in the table)
    • /home/runner/work/claude-code-plugins/claude-code-plugins/.base/docs/test-wall-clock-baseline.md:509: surface-page.test.sh failed with exit 1 (listed as 93 in the table)

    To answer, post a comment that starts with this line:

    **Decision recorded.** <answer>
    

    Automated refinement by the lanes App. Answer with a comment whose first line is **Decision recorded.**.

  9. 1 remaining item

  10. kyle-sexton commented on Nov 4, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. Route this issue to the host queue whole, for a laptop lane with a Windows Git Bash host.
    Agent choice, not an owner answer.

    Admission refused it for the lane because Done-when item 1 needs a Windows host, and each suite fails only on Windows Git Bash, so diagnosing the cause needs that host too. A child issue for the Windows step would raise the open count, so the issue goes host-run instead, done in one PR by one host session. The body's Done-when stands unchanged.

    • On a fleet host with Windows Git Bash, run each of the 9 suites and record in the PR body whether it passes or host-skips, with the cause per suite.
  11. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    and removed
    status: needs-decisionAwaiting a human or maintainer judgment call.
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 4, 2026
  12. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Nov 4, 2026
  13. kyle-sexton commented on Nov 4, 2026

    @kyle-sexton
    MemberAuthor

    Claimed by host-run lane 4 (session 66f7ef0d-2567-43d2-810d-bbc87326e30c), on hub assignment H37: the 9 suites under Git Bash on melo-lap-001's Windows side, one PR.

  14. removed
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.
    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

    priority: mediumReal value, no hard deadline; normal backlog flow.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    Work status

    confirmed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions