From c796814726913f7133a5f66e40a849c7e19542d3 Mon Sep 17 00:00:00 2001 From: Sunny Purewal Date: Mon, 25 May 2026 02:15:14 -0400 Subject: [PATCH 1/2] Fix evidence-regression workflow: pin action past v0, add required 'pr' to plan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first attempt to dispatch evidence-regression.yml against the cyclomatic pilot failed with "Missing required option --repo." after the action invoked the evidence CLI as bare `evidence capture-pr`. Root cause: the `v0` tag in RiddimSoftware/evidence was created before EVI-7 (#39) wired the capture-pr argument translation into action.yml. At @v0, the action's case statement has no `capture-pr)` branch, so it runs the CLI without `--repo`, `--pr`, `--plan`, `--output`, etc. Pinning to a SHA past EVI-7 (fc65484f400ec8bc0ded78a70fb54ed32f7dfa6d, the head of evidence/main as of this commit) restores the wiring. This is a temporary fix — the right long-term move is to fast-forward the `v0` tag in RiddimSoftware/evidence, after which we can move back to `@v0` for cross-repo consistency. The second issue was the plan itself: regression-parliament-calendar.json omitted the `pr` field, which the CLI requires even when --pr is passed as an override. Added `pr: 542` as the conventional placeholder (the cyclomatic-project trigger PR). The CLI's --pr flag and the workflow's pr_number input still override at dispatch time, so this value only affects metadata in manifest.json when no override is supplied. Local capture-pr against project-boundary SHAs (9ba487ca → 79e3b0bc) is currently running to validate the plan end-to-end before the next CI dispatch. --- .evidence/regression-parliament-calendar.json | 1 + .github/workflows/evidence-regression.yml | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.evidence/regression-parliament-calendar.json b/.evidence/regression-parliament-calendar.json index 469a18d3..4772ee4f 100644 --- a/.evidence/regression-parliament-calendar.json +++ b/.evidence/regression-parliament-calendar.json @@ -1,6 +1,7 @@ { "_doc": "Regression evidence plan for Parliament-tab entry surfaces. Exercises the deep-link router into sitting overview, Hansard speech rendering, legacy share format, encoded-path routing, and home-fallback. Covers the read path through Fetch.downloadHansard/downloadCalendar, XMLBro.parseXML, HansardSpeakerParser, and ContentView.handleCustomScheme/handleUniversalLink. Out of scope: in-app calendar UI navigation, SpeechView replay/scroll, speaker-photo loading, EventKit export, Members/Accountability/Search/Home tabs. Requires the EPAC_EVIDENCE_MODE fixture-seed contract — see docs/regression/cyclomatic-complexity-coverage-map.md.", "repo": "RiddimSoftware/epac", + "pr": 542, "platform": "ios", "runner": "simctl", "ios": { diff --git a/.github/workflows/evidence-regression.yml b/.github/workflows/evidence-regression.yml index ccb44726..fbaf25ae 100644 --- a/.github/workflows/evidence-regression.yml +++ b/.github/workflows/evidence-regression.yml @@ -80,7 +80,11 @@ jobs: - name: Capture before/after PR evidence id: capture - uses: RiddimSoftware/evidence@v0 + # Pin to a SHA past EVI-7 (which wired capture-pr into the action). The + # `v0` tag was created before that PR landed, so `@v0` runs the CLI without + # --repo / --pr / --plan and fails at argument parsing. Move to `@v0` + # again once that tag is fast-forwarded in RiddimSoftware/evidence. + uses: RiddimSoftware/evidence@fc65484f400ec8bc0ded78a70fb54ed32f7dfa6d with: subcommand: capture-pr plan: ${{ inputs.plan_path }} From b2e16b8120054db5994622571248568b676916ce Mon Sep 17 00:00:00 2001 From: Sunny Purewal Date: Mon, 25 May 2026 02:52:00 -0400 Subject: [PATCH 2/2] Bump evidence action pin to e76e799 (past EVI-11 pipe-drain fix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The prior pin (fc65484) was past EVI-7's capture-pr argument wiring but predated EVI-11 (#41), which fixed a pipe-buffer deadlock in CommandRunner.swift. The pre-EVI-11 CLI read xcodebuild's stdout pipe only AFTER process.waitUntilExit() — but xcodebuild emits megabytes of output during a build, the OS pipe buffer is 16-64 KB, and xcodebuild's writer thread blocks on a full pipe forever because no one is draining. The .app gets built (file-system writes don't depend on pipe state), but the process never exits. This affected local runs of evidence/.build/release/evidence built from any commit between EVI-8 and EVI-11. Verified during local diagnosis: a CLI built from fc65484 hung at 12+ minutes post-build; a CLI rebuilt from e76e799 has the concurrent readabilityHandler draining and completes builds normally. CI was masking this same deadlock by luck-of-the-shell — the action's `${cli} ${args[@]}` invocation has a downstream pipe that keeps the stdout drained transitively. Local invocations (no downstream pipe) hit the deadlock directly. Pinning past EVI-11 gives both CI and any future local runs the fix. Long-term fix is still to move the `v0` tag in RiddimSoftware/evidence past current main so we can return to `@v0`. --- .github/workflows/evidence-regression.yml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/evidence-regression.yml b/.github/workflows/evidence-regression.yml index fbaf25ae..503b78bb 100644 --- a/.github/workflows/evidence-regression.yml +++ b/.github/workflows/evidence-regression.yml @@ -80,11 +80,16 @@ jobs: - name: Capture before/after PR evidence id: capture - # Pin to a SHA past EVI-7 (which wired capture-pr into the action). The - # `v0` tag was created before that PR landed, so `@v0` runs the CLI without - # --repo / --pr / --plan and fails at argument parsing. Move to `@v0` - # again once that tag is fast-forwarded in RiddimSoftware/evidence. - uses: RiddimSoftware/evidence@fc65484f400ec8bc0ded78a70fb54ed32f7dfa6d + # Pin past EVI-11 (current evidence/main as of this commit). Earlier + # pins are missing two fixes we need: (1) EVI-7 (#39) which wired + # capture-pr argument translation into the action's case statement + # (`@v0` predates this — runs the CLI without --repo/--pr/--plan and + # fails at argument parsing); (2) EVI-11 (#41) which drains the + # xcodebuild stdout/stderr pipes concurrently inside the CLI + # (the prior CLI deadlocked on a full pipe buffer mid-build). + # Move back to `@v0` once that tag is fast-forwarded in + # RiddimSoftware/evidence past EVI-11. + uses: RiddimSoftware/evidence@e76e7991b7eda56857080e46fd84ec6ebb642161 with: subcommand: capture-pr plan: ${{ inputs.plan_path }}