Skip to content

test: add release-validation coverage for post-v0.8.7 merged PRs#952

Merged
anandgupta42 merged 1 commit into
mainfrom
test/release-validation-coverage
Jun 18, 2026
Merged

test: add release-validation coverage for post-v0.8.7 merged PRs#952
anandgupta42 merged 1 commit into
mainfrom
test/release-validation-coverage

Conversation

@anandgupta42

@anandgupta42 anandgupta42 commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

PINEAPPLE

What does this PR do?

Adds regression test coverage for the 8 PRs merged since v0.8.7, authored during pre-release validation. No source files are modified — tests only.

Two independent authoring passes intentionally overlap to maximize edge-case coverage:

  • *-codex.test.ts — codex CLI track
  • the matching release-validation/*.test.ts — Claude multi-agent track

opencode (packages/opencode/test/release-validation/):

dbt-tools (packages/dbt-tools/test/):

4 test.todo markers document real, pre-existing edge cases surfaced during review (do not block release): transcript path-traversal → 500, normalizeMcpConfig dropping updatedAt, install.ps1 missing archive checksum, execDbtCompile stale-manifest fallback.

Type of change

  • Tests

Issue for this PR

Closes #951

How did you verify your code works?

  • bun turbo typecheck — green (all 7 packages, forced/no-cache)
  • cd packages/opencode && bun test test/release-validation/172 pass / 3 todo / 0 fail (12 files)
  • cd packages/dbt-tools && bun test test/dbt-cli-extra-codex.test.ts test/dbt-cli-release-validation.test.ts18 pass / 1 todo / 0 fail
  • cd packages/dbt-tools && bun run test (full suite, regression check) — 82 pass / 0 fail
  • Branding leak audit — 0 leaks; marker guard — clean (no upstream-shared source files touched)

Checklist

  • Tests added/updated
  • Typecheck passes locally
  • No source files modified (tests only)
  • Documentation updated (n/a — tests only)
  • CHANGELOG updated (n/a — not user-facing)

Summary by cubic

Adds regression tests for the 8 PRs merged since v0.8.7 to strengthen release validation; no source files are changed. Addresses #951. Two overlapping tracks (*-codex.test.ts and release-validation/*.test.ts) maximize edge-case coverage.

  • Coverage
    • packages/opencode: non-interactive question tool env matrix and output contract; MCP/datamate config normalize/merge, discovery, and transport selection; session transcript API (query coercion, content negotiation, detail gating, error schema); serve startup upgrade check (scheduling, failure isolation, version compare) and trace-dir logging; provider SSE chunk-timeout default; Windows install.ps1 safety and native win32 upgrade dispatch.
    • packages/dbt-tools: dbt-cli error bubbling (malformed JSON, exit-code redaction, ANSI stripping, no-signal fallback) and result shape/--limit/inline-compile paths.

4 test.todo markers document known, pre-existing gaps and do not block the release.

Written for commit a8a08c6. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Tests
    • Added comprehensive regression test suites covering dbt-cli error handling, SSE chunk timeout behavior, MCP discovery and transport selection, question tool auto-answer functionality, session transcript endpoint generation, Windows installer validation, serve startup upgrade checks, and trace logging initialization.

Adds regression tests for the 8 PRs merged since `v0.8.7`, authored during
pre-release validation. Two independent authoring passes (suffix `-codex.test.ts`
from the codex CLI track, plus `release-validation/*.test.ts` from the Claude
multi-agent track) intentionally overlap to maximize edge-case coverage.

opencode (`packages/opencode/test/release-validation/`):
- `question-937*`            non-interactive question tool: `ALTIMATE_NON_INTERACTIVE`
                             / `ALTIMATE_FORCE_INTERACTIVE` / `ALTIMATE_AUTO_ANSWER`
                             matrix, output-text contract, `run.ts`/`bash.ts` env guards
- `mcp-datamate-893*`        MCP config normalize/merge, enabled-state persistence,
                             recursive `**/mcp.json` discovery, datamate transport selection
- `session-transcript-941*`  transcript REST endpoint: query coercion, content negotiation,
                             tool/thinking detail gating, error schema
- `serve-upgrade-940*`       headless `serve` startup upgrade check: scheduling, failure
                             isolation, version-compare boundaries
- `serve-trace-log-929*`     trace-directory startup logging
- `chunk-timeout-844*`       `DEFAULT_CHUNK_TIMEOUT` SSE watchdog behavior
- `windows-installer-930*`   `install.ps1` static analysis (HTTPS URLs, error handling,
                             PATH safety, idempotency, no secret leakage) + win32 dispatch

dbt-tools (`packages/dbt-tools/test/`):
- `dbt-cli-release-validation.test.ts`  #933 error-bubbling: malformed JSON, exit-code
                                         redaction, ANSI stripping, no-signal fallback
- `dbt-cli-extra-codex.test.ts`         result-shape, `--limit` boundaries, last-error
                                         selection, inline-compile error paths

All new tests pass and are typecheck-clean. 4 `test.todo` markers document real,
pre-existing edge cases surfaced during review (transcript path-traversal -> 500,
`normalizeMcpConfig` dropping `updatedAt`, `install.ps1` missing archive checksum,
`execDbtCompile` stale-manifest fallback). No source files are modified.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 27ce283a-346b-4ef2-b2d8-6a36dc053564

📥 Commits

Reviewing files that changed from the base of the PR and between 7039545 and a8a08c6.

📒 Files selected for processing (14)
  • packages/dbt-tools/test/dbt-cli-extra-codex.test.ts
  • packages/dbt-tools/test/dbt-cli-release-validation.test.ts
  • packages/opencode/test/release-validation/chunk-timeout-844.test.ts
  • packages/opencode/test/release-validation/mcp-datamate-893-codex.test.ts
  • packages/opencode/test/release-validation/mcp-datamate-893.test.ts
  • packages/opencode/test/release-validation/question-937-codex.test.ts
  • packages/opencode/test/release-validation/question-937.test.ts
  • packages/opencode/test/release-validation/serve-trace-log-929.test.ts
  • packages/opencode/test/release-validation/serve-upgrade-940-codex.test.ts
  • packages/opencode/test/release-validation/serve-upgrade-940.test.ts
  • packages/opencode/test/release-validation/session-transcript-941-codex.test.ts
  • packages/opencode/test/release-validation/session-transcript-941.test.ts
  • packages/opencode/test/release-validation/windows-installer-930-codex.test.ts
  • packages/opencode/test/release-validation/windows-installer-930.test.ts

Disabled knowledge base sources:

  • Jira integration is disabled

You can enable these sources in your CodeRabbit configuration.


📝 Walkthrough

Walkthrough

Adds thirteen new Bun test files as release-validation regression coverage for eight previously merged PRs (#844, #893, #929, #930, #933, #937, #940, #941). All changes are test-only; no source files are modified. Tests span dbt-cli error bubbling, SSE chunk timeouts, MCP/Datamate transport, QuestionTool non-interactive mode, serve startup tracing and upgrade, session transcript endpoint, and Windows PowerShell installer.

Changes

dbt-cli regression tests (PR #933)

Layer / File(s) Summary
dbt-cli extra regression coverage
packages/dbt-tools/test/dbt-cli-extra-codex.test.ts
Mocked execFile environment and temp dir setup; tests JSON/garbage parsing, --limit propagation, ANSI stripping, SQL redaction, configure() wiring, and install.ps1 Bun-standalone assertions.
dbt-cli release-validation error bubbling
packages/dbt-tools/test/dbt-cli-release-validation.test.ts
Focused regression tests for structured error selection, string-typed exit code SQL redaction, bare-failure fallback, ANSI stripping from stderr, and a test.todo for stale-manifest compiled_code bug.

Provider SSE chunk-timeout regression tests (PR #844)

Layer / File(s) Summary
SSE chunk-timeout watchdog, passthrough, and source guards
packages/opencode/test/release-validation/chunk-timeout-844.test.ts
Captures the real options.fetch wrapper from getSDK; asserts 300_000ms default delay, abort-on-chunk-gap, non-SSE/null-body passthrough, source-level guard conditionals, and per-request timeout precedence.

MCP/Datamate IDE-aware transport and config sync regression tests (PR #893)

Layer / File(s) Summary
MCP discovery normalization, Datamate transport selection, sync, and static safety
packages/opencode/test/release-validation/mcp-datamate-893-codex.test.ts
Isolated temp-home helpers; discovery normalization ignoring vendors/node_modules; Datamate transport url preference; altimate-code config sync via updatedAt; source-text redaction and install.ps1 safety assertions.
MCP config schema, JSONC resilience, and security gate
packages/opencode/test/release-validation/mcp-datamate-893.test.ts
Ten gap tests: updatedAt round-trips, strict-schema rejection, JSONC malformation resilience, non-object node safety, nested field preservation, removeMcpFromConfig return contract, findAllConfigPaths ordering, readDatamateTransportFromIde selection, syncDatamateUrlFromVscodeMcp change detection, concurrent-write race documentation, and forced enabled:false for discovered servers.

QuestionTool non-interactive and auto-answer regression tests (PR #937)

Layer / File(s) Summary
QuestionTool output contract, ALTIMATE_* env branching, and source env-plumbing
packages/opencode/test/release-validation/question-937-codex.test.ts
Tests interactive/non-interactive branching, Unanswered formatting, auto-answer first/last/label behavior, safety/leakage prevention, zero-question edge case, and source-text conditionals for ALTIMATE_NON_INTERACTIVE and ALTIMATE_AUTO_ANSWER.
QuestionTool auto-answer, BashTool env isolation, and run.ts guard contracts
packages/opencode/test/release-validation/question-937.test.ts
Strict empty-string non-interactive detection, multiple-question positional mapping, case-insensitive label matching, first keyword precedence, multiple:true answer shape, BashTool child-env stripping, and run.ts attach-guard and stdin null-safety contracts.

Serve startup tracing and upgrade-check regression tests (PRs #929, #940)

Layer / File(s) Summary
TraceConsumer.getTraceDirectory and subscribeTraceConsumer startup logging
packages/opencode/test/release-validation/serve-trace-log-929.test.ts
getTraceDirectory() resolution across FileExporter/HttpExporter/disabled configs, Config.get() rejection fallback with Log.Default.warn, and one-shot startup log assertion for subscribeTraceConsumer.
runStartupUpgradeCheck behavioral tests and serve handler source assertions
packages/opencode/test/release-validation/serve-upgrade-940-codex.test.ts
StartupUpgradeDeps fakes for single-run/error-swallowing/provider-failure tests; scheduleStartupUpgradeCheck delay and unref; source assertions confirming post-listener scheduling, no-bootstrap/dispose, real upgrade delegation, failure boundaries, version validation, and no-shell-exec safety.
Instance-context wrapping, timer semantics, non-Error rejection swallowing, and CWD capture
packages/opencode/test/release-validation/serve-upgrade-940.test.ts
Bus.publish requires Instance context; scheduleStartupUpgradeCheck synchronous return and single-fire semantics; runStartupUpgradeCheck swallows string/object/null rejections; run() scope ordering; runtime CWD capture across multiple calls.

Session transcript endpoint regression tests (PR #941)

Layer / File(s) Summary
Transcript endpoint end-to-end: helpers, query flags, and error paths
packages/opencode/test/release-validation/session-transcript-941-codex.test.ts
inProject helper and message/part builders; happy-path content-type/ordering; toolDetails/thinking/assistantMetadata query flags; synthetic part omission; 404/400 negative paths; OPTIONS preflight; OpenAPI schema assertion.
toolDetails, assistantMetadata, 400 validation, thinking coercion, and message ordering
packages/opencode/test/release-validation/session-transcript-941.test.ts
withoutWatcher helper; addUserMessage/addAssistantMessageWithReasoning/addAssistantMessageWithTool builders; five targeted tests: toolDetails rendering diff, assistantMetadata header format, invalid sessionID 400, thinking=0/FALSE truthy coercion, and separator count/ordering.

Windows PowerShell installer regression tests (PR #930)

Layer / File(s) Summary
install.ps1 static assertions: URL, download, idempotency, PATH, and wiring
packages/opencode/test/release-validation/windows-installer-930-codex.test.ts
HTTPS-only URL construction, filename derivation, version-tag HEAD probing, curl.exe/IWR failure handling, temp-dir extraction with finally cleanup, skip-if-already-installed, locked-executable move-aside, no-secrets, PATH registry (no setx), NoPathUpdate, and installation/index.ts win32 wiring.
Installation.upgrade platform dispatch, HEAD-probe failures, and result-shape consumption
packages/opencode/test/release-validation/windows-installer-930.test.ts
Stubs Process/Telemetry/fetch/platform; asserts win32 PowerShell path vs linux/darwin bash path; HEAD-probe 503 and DOMException failure messaging; UpgradeFailedError telemetry shape; static assertions for baseline selection, already-installed skip, PATH prepend, GITHUB_PATH guard, and extraction finally block.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • AltimateAI/altimate-code#929: The new serve-trace-log-929.test.ts directly covers TraceConsumer.getTraceDirectory() and subscribeTraceConsumer startup logging behavior introduced in this PR.
  • AltimateAI/altimate-code#930: The new windows-installer-930*.test.ts files statically inspect install.ps1 and installation/index.ts for PowerShell download/PATH/upgrade contracts introduced in this PR.
  • AltimateAI/altimate-code#933: The new dbt-cli-*.test.ts files directly validate execDbtShow/execDbtCompileInline error-bubbling, ANSI stripping, and SQL redaction logic implemented in this PR.

Suggested labels

contributor

Suggested reviewers

  • sahrizvi

Poem

🐇 Hop hop, the tests have arrived!
Thirteen suites, each carefully contrived.
From dbt's JSON woes to PowerShell's might,
MCP tokens and transcripts shining bright.
No source was touched, just coverage thrived! 🌟

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch test/release-validation-coverage

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@anandgupta42 anandgupta42 merged commit f8b3454 into main Jun 18, 2026
18 of 19 checks passed
@github-actions

Copy link
Copy Markdown

👋 This PR was automatically closed by our quality checks.

Common reasons:

  • New GitHub account with limited contribution history
  • PR description doesn't meet our guidelines
  • Contribution appears to be AI-generated without meaningful review

If you believe this was a mistake, please open an issue explaining your intended contribution and a maintainer will help you.

ralphstodomingo added a commit that referenced this pull request Jun 18, 2026
The #952 release-validation suite asserted the exact #930 URL literals. This PR
builds the archive and checksums.txt from a shared $base (so they always come
from the same release), so update those assertions to the $base/$url form, and
convert the now-obsolete "verification deferred" test.todo into a real assertion
that Test-Checksum verifies SHA256 before extraction.

(This test never ran on this PR until it was retargeted from the merged
feat/windows-powershell-installer branch to main.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG
ralphstodomingo added a commit that referenced this pull request Jun 18, 2026
The #952 release-validation suite asserted the latest path hard-fails with
"Failed to fetch version information" (>=2) and that exit 1 appears >=3 times.
This PR makes the latest path retry then degrade gracefully instead of aborting,
so update those assertions: the latest path no longer hard-fails (the unsupported
-arch and pinned-404 paths still exit 1, hence >=2).

(This test never ran on this PR until it was retargeted from the merged
feat/windows-powershell-installer branch to main.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG
sahrizvi pushed a commit that referenced this pull request Jun 18, 2026
)

* feat(install): verify release archive checksums (both installers)

Raises the integrity bar for the standalone installers (follow-up to #930).

- release.yml: generate a checksums.txt (sha256sum format) over the release
  archives and publish it as a release asset.
- install (bash) + install.ps1: fetch checksums.txt and verify the downloaded
  archive's SHA256 before extracting. Hard-fail on mismatch; soft-skip with a
  notice when checksums.txt is absent (older pinned releases) or unreachable, so
  existing version-pinned installs keep working.
- Cross-platform sha in bash (sha256sum or shasum -a 256); Get-FileHash on
  Windows. Verification runs before extraction in both.
- Tests: checksum-verification.test.ts asserts release.yml publishes the file
  and both installers fetch + compare + hard-fail on mismatch.

Verified: bash -n clean; install.ps1 parses clean and the Pester suite (6/6)
still passes on PowerShell 7.6.2.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(install): address checksum-verification review

- install.ps1: decode a Byte[] checksums.txt body so verification works on
  Windows PowerShell 5.1. GitHub serves release assets as octet-stream, so on
  PS 5.1 Invoke-WebRequest returns .Content as Byte[]; it coerced to a decimal
  string and every check silently soft-skipped (sahrizvi, P1).
- install.ps1: pin the archive and checksums.txt to the resolved release tag
  instead of the mutable latest/ URL, so a release published mid-install can't
  hand back mismatched assets and trigger a spurious hard-fail (cubic, P2).
  Falls back to latest/ only when the version can't be resolved.
- install: in verify_checksum, clean up via $(dirname "$file") rather than the
  caller's dynamically-scoped $tmp_dir local — self-contained (cubic, P2).
- tests: Pester coverage for Test-Checksum (String + Byte[] + mismatch paths,
  verified to fail without the decode) and TS guards for the decode and the
  PowerShell same-release pinning.

Note: the bash installer is intentionally left on the latest/download path here
to keep this PR disjoint from #946 (which owns the bash latest-version block);
the two PRs then merge in either order with no conflict.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG

* fix(install.ps1): ASCII-only so it parses on Windows PowerShell 5.1

install.ps1 had no BOM and used a few non-ASCII characters (em dash, ellipsis,
right arrow) in comments and messages. Windows PowerShell 5.1 — the default
shell on Windows 10 and preinstalled on Windows 11 — reads a BOM-less file as
the system ANSI codepage, not UTF-8, so those multi-byte characters corrupt the
token stream and the whole script fails to parse (verified on real PS 5.1:
"The '<' operator is reserved", cascading to "Missing closing '}'").

This is a pre-existing issue (the characters predate this PR) that CI doesn't
catch because the Pester job runs under pwsh (PowerShell 7, UTF-8 by default).
Replacing the three characters with ASCII equivalents (-, ..., ->) makes the
installer parse and run on PS 5.1 while keeping pwsh behavior identical. Verified
end-to-end on real Windows PowerShell 5.1: resolve version -> download -> extract
-> place the binary all succeed.

Same transliteration is applied verbatim in #946 so the two PRs merge cleanly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG

* fix(install): guard the verify_checksum cleanup against a pathological path

Defensive depth (coderabbit): only `rm -rf` the cleanup dir when dirname
resolves to a real subdirectory, never "." or "/", so an unexpectedly empty or
root-level $file can't wipe the cwd or worse.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG

* test: update #930 release-validation for the checksum URL refactor

The #952 release-validation suite asserted the exact #930 URL literals. This PR
builds the archive and checksums.txt from a shared $base (so they always come
from the same release), so update those assertions to the $base/$url form, and
convert the now-obsolete "verification deferred" test.todo into a real assertion
that Test-Checksum verifies SHA256 before extraction.

(This test never ran on this PR until it was retargeted from the merged
feat/windows-powershell-installer branch to main.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: ralphstodomingo <ralphstodomingo@users.noreply.github.com>
sahrizvi pushed a commit that referenced this pull request Jun 18, 2026
* fix(install): don't hard-fail when the GitHub releases API blips

Reported on #930: a transient 504 from api.github.com/.../releases/latest (or
the 60/hr/IP unauthenticated rate limit) aborted the whole install with
"Failed to fetch version information" — even though the download itself uses
releases/latest/download/<file>, which GitHub resolves server-side with no API
call. The API response only feeds the version-string display and the
already-installed short-circuit.

Both installers now, in the latest path:
- retry the API call up to 3x with linear backoff (bash uses curl --fail so a
  504 retries instead of parsing an error body);
- on continued failure, print a muted notice and proceed to install latest
  anyway (version string shown as "latest");
- only short-circuit as "already installed" on a real version match — never
  treat empty==empty (unresolved version + unreadable binary) as installed.

Pinned-version installs (-Version / --version) are unchanged: a genuine 404
still hard-fails.

Tests: version-fetch-resilience.test.ts pins the retry + graceful-degrade
behavior in both installers. bash -n clean; install.ps1 parses clean and the
Pester suite (6/6) still passes on PowerShell 7.6.2.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(install): address latest-version-fetch review

- install: append `|| true` to the retry's curl|sed assignment. Under
  `set -euo pipefail` a failing `curl --fail` propagated through the pipeline
  and aborted the script at attempt 1, before the loop could retry or degrade
  (sahrizvi; reproduced: exit 22 without the fix, all 3 attempts + degrade with
  it). Also add `--max-time 10` to bound a dead-air socket.
- install.ps1: reset $specificVersion to $null (not "") on the degrade path, so
  the already-installed short-circuit can't false-match "" -eq "" when the
  version probe of a missing/corrupt binary also yields "" (dev-punia, sahrizvi).
- install.ps1: add -TimeoutSec 10 to Invoke-RestMethod (defaults to 100s on
  PS 5.1, unbounded on PS 7+) to bound retries on dead air (sahrizvi).
- tests: TS guards for `|| true`, --max-time/-TimeoutSec, and the $null reset.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG

* fix(install.ps1): ASCII-only so it parses on Windows PowerShell 5.1

install.ps1 had no BOM and used a few non-ASCII characters (em dash, ellipsis,
right arrow) in comments and messages. Windows PowerShell 5.1 - the default
shell on Windows 10 and preinstalled on Windows 11 - reads a BOM-less file as
the system ANSI codepage, not UTF-8, so those multi-byte characters corrupt the
token stream and the whole script fails to parse (verified on real PS 5.1).

This is a pre-existing issue (the characters predate this PR) that CI doesn't
catch because the Pester job runs under pwsh (PowerShell 7, UTF-8 by default).
Replacing the three characters with ASCII equivalents (-, ..., ->) makes the
installer parse and run on PS 5.1 while keeping pwsh behavior identical.

Also removes the now-obsolete "integrity verification deferred" NOTE comment:
the sibling PR #942 implements that verification and removes the same block, so
deleting it here too keeps the two PRs mergeable in either order with no
conflict. Same transliteration is applied verbatim in #942.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG

* test: update #930 release-validation for resilient version fetch

The #952 release-validation suite asserted the latest path hard-fails with
"Failed to fetch version information" (>=2) and that exit 1 appears >=3 times.
This PR makes the latest path retry then degrade gracefully instead of aborting,
so update those assertions: the latest path no longer hard-fails (the unsupported
-arch and pinned-404 paths still exit 1, hence >=2).

(This test never ran on this PR until it was retargeted from the merged
feat/windows-powershell-installer branch to main.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: ralphstodomingo <ralphstodomingo@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add release-validation test coverage for post-v0.8.7 merged PRs

1 participant