Skip to content

ci: simplify Harness release validation - #679

Merged
ytallo merged 2 commits into
mainfrom
feat/harness-release-cascade
Aug 3, 2026
Merged

ci: simplify Harness release validation#679
ytallo merged 2 commits into
mainfrom
feat/harness-release-cascade

Conversation

@ytallo

@ytallo ytallo commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • dispatch the published-artifact smoke after Harness or a mandatory Harness dependency is released on latest or next
  • dispatch deployed Harness E2E only after the smoke succeeds, while keeping release, smoke, and E2E results independent
  • reuse the existing Harness E2E workflow for source and registry-backed stacks
  • reduce the quickstart to installation, engine boot, Harness/Console surfaces, and exact registry lock validation
  • isolate Shell and Storage E2E launchers so they only clean up processes and state owned by the current run

Why

The previous validation mixed quickstart coverage with model canaries, terminal recording, notifications, and duplicated E2E orchestration. Some local launchers also attempted broad process or checkout cleanup. This made failures harder to classify and could interfere with unrelated local processes.

The new cascade validates the artifact that was actually published and preserves clear failure boundaries: a failed smoke prevents E2E from starting, without making the completed release wait for either downstream run.

Validation

  • Actionlint for the affected workflows
  • ShellCheck and bash -n for the affected launchers
  • Python compilation and registry lock verification
  • Harness quickstart against latest: passed with iii 0.22.0 and Harness 1.6.7
  • deployed direct_answer E2E with zai/glm-5.2: passed 1/1 with score 100
  • Shell E2E: passed 170/170
  • jailed Shell regression: passed 9/9 live steps and 2/2 harness cases
  • Storage launcher tests: passed 15/15

Summary by CodeRabbit

  • New Features

    • Added deployed end-to-end testing with release, registry, subject, model, and run-count configuration.
    • Added source and deployed stack modes for E2E workflows.
    • Added release-aware smoke validation and optional automatic deployed E2E execution.
    • Added registry artifact and lock-file validation.
  • Bug Fixes

    • Improved test isolation, process cleanup, timeout handling, and port-conflict detection.
    • Improved jailed test execution and configurable jail paths.
  • Documentation

    • Updated E2E and quickstart documentation for deployed testing, release verification, and isolated execution.

@ytallo ytallo added the no-ticket PR deliberately has no Linear ticket (bump/typo/CI-only) label Aug 3, 2026
@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
workers Ready Ready Preview Aug 3, 2026 1:23pm
workers-tech-spec Ready Ready Preview Aug 3, 2026 1:23pm

Request Review

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 19da3ded-6a05-4cbe-bbbd-d91ffa5e346c

📥 Commits

Reviewing files that changed from the base of the PR and between 71edbf7 and bd4b910.

📒 Files selected for processing (23)
  • .github/scripts/verify_registry_lock.py
  • .github/workflows/_harness-e2e.yml
  • .github/workflows/harness-e2e-deployed.yml
  • .github/workflows/harness-quickstart.yml
  • .github/workflows/release.yml
  • .github/workflows/shell-e2e.yml
  • harness/tests/e2e/README.md
  • harness/tests/e2e/run-ci.sh
  • harness/tests/e2e/run-deployed-ci.sh
  • harness/tests/quickstart/README.md
  • harness/tests/quickstart/console_send.py
  • harness/tests/quickstart/quickstart.tape
  • harness/tests/quickstart/run-ci.sh
  • scripts/check-links.sh
  • shell/ARCHITECTURE.md
  • shell/tests/e2e/README.md
  • shell/tests/e2e/config-jailed.yaml
  • shell/tests/e2e/run-tests-jailed.sh
  • shell/tests/e2e/run-tests.sh
  • shell/tests/e2e/workers/harness/src/cases-vuln-repro-jailed.ts
  • storage/tests/e2e/config.yaml
  • storage/tests/e2e/run-tests.sh
  • storage/tests/e2e/script-tests/run.sh

📝 Walkthrough

Walkthrough

The change adds registry-based Harness E2E workflows, release-aware quickstart dispatch, registry-lock verification, isolated shell and storage test execution, and updated documentation and cleanup behavior.

Changes

Deployed E2E pipeline

Layer / File(s) Summary
Registry stack validation and execution
.github/scripts/verify_registry_lock.py, .github/workflows/_harness-e2e.yml, .github/workflows/harness-e2e-deployed.yml, harness/tests/e2e/run-deployed-ci.sh, harness/tests/e2e/README.md
The workflows support source and registry stacks. The deployed harness installs workers, verifies iii.lock, waits for required capabilities, and runs E2E scenarios.
Release smoke dispatch and quickstart validation
.github/workflows/harness-quickstart.yml, .github/workflows/release.yml, harness/tests/quickstart/run-ci.sh, harness/tests/quickstart/README.md, scripts/check-links.sh
Quickstart validates release artifacts and can dispatch deployed E2E. The release workflow dispatches quickstart after publication. Removed canary, recording, Slack, and reusable-workflow behavior.
Unified jailed shell runner
.github/workflows/shell-e2e.yml, shell/tests/e2e/run-tests.sh, shell/tests/e2e/config-jailed.yaml, shell/tests/e2e/workers/harness/src/cases-vuln-repro-jailed.ts, shell/tests/e2e/README.md, shell/ARCHITECTURE.md, harness/tests/e2e/run-ci.sh
The shell runner supports default and jailed suites with isolated runtime paths, configurable jail roots, process-group cleanup, and early port checks.
Isolated storage E2E lifecycle
storage/tests/e2e/run-tests.sh, storage/tests/e2e/script-tests/run.sh, storage/tests/e2e/config.yaml
Storage tests isolate runtime state and RustFS processes. Port and signal tests now use owned processes, readiness checks, and explicit cleanup.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

  • iii-hq/workers#548: Adds dependency-stack changes checked by the new registry-lock validation.
  • iii-hq/workers#636: Overlaps in shared Harness E2E workflow and documentation changes.
  • iii-hq/workers#678: Renames worker and manifest entries used by registry-stack validation.

Suggested reviewers: andersonleal

Poem

A rabbit checks the lock at dawn,
Then hops through stacks till tests are gone.
Jailed paths rest in roots made new,
RustFS sleeps when cleanup’s through.
Release bells dispatch the run—
E2E hops beneath the sun.

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/harness-release-cascade

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.

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

skill-check — worker

0 verified, 52 skipped (no docs/).

Layer Result
structure
vale
ai
render

Four for four. Nicely done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-ticket PR deliberately has no Linear ticket (bump/typo/CI-only)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant