What task are you trying to do?
Harden the e2e-artifacts GitHub Actions workflow that ships in PR #20. The workflow is intentionally non-blocking (continue-on-error: true) and only runs on Linux, fork-safe, with artifact retention as the primary signal.
It works. The follow-up is to make failures more visible without turning the gate strict, and to make the contract test less brittle.
What do you do today?
Today the workflow runs but has four small rough edges that PR #20 intentionally left out of scope:
- Failure visibility — A failed E2E run is silent in the PR summary because
continue-on-error: true swallows the red signal. You need to dig into the workflow run page to notice it failed.
- Workflow contract test brittleness —
packages/opencode/test/config/e2e-artifacts-workflow.test.ts matches the run: block with a text regex. Any harmless YAML reformat breaks the test.
- Path leak assertion is too narrow — The contract test only guards against the literal string
/Users/yuhan/ appearing in workflow text. Any other contributor's home path would slip through.
- Smoke script indirection — The workflow runs
bun --cwd packages/app test:e2e:local -- --grep @smoke instead of using the dedicated test:e2e:local:smoke script that already exists.
What would a good result look like?
- A clear warning annotation (or equivalent lightweight signal) shows up in the PR summary when non-blocking E2E fails, without changing gate strength.
- The workflow contract test asserts on parsed YAML structure rather than raw block text, so harmless reformatting doesn't break it.
- The path leak assertion catches any local user path, not just one hardcoded one.
- Decide whether to switch the smoke path to
test:e2e:local:smoke, and if yes, update the workflow and contract test together.
None of these are blockers for the merged workflow. They are scoped hardening / cleanup.
Which audience does this matter to most?
Both — better failure visibility benefits anyone (contributor or maintainer) reviewing PRs; the contract test and path leak guards benefit the project regardless of who runs the workflow.
Extra context
- Origin PR: #20
- Files touched if implemented:
.github/workflows/e2e-artifacts.yml
packages/opencode/test/config/e2e-artifacts-workflow.test.ts
packages/app/package.json
What task are you trying to do?
Harden the
e2e-artifactsGitHub Actions workflow that ships in PR #20. The workflow is intentionally non-blocking (continue-on-error: true) and only runs on Linux, fork-safe, with artifact retention as the primary signal.It works. The follow-up is to make failures more visible without turning the gate strict, and to make the contract test less brittle.
What do you do today?
Today the workflow runs but has four small rough edges that PR #20 intentionally left out of scope:
continue-on-error: trueswallows the red signal. You need to dig into the workflow run page to notice it failed.packages/opencode/test/config/e2e-artifacts-workflow.test.tsmatches therun:block with a text regex. Any harmless YAML reformat breaks the test./Users/yuhan/appearing in workflow text. Any other contributor's home path would slip through.bun --cwd packages/app test:e2e:local -- --grep @smokeinstead of using the dedicatedtest:e2e:local:smokescript that already exists.What would a good result look like?
test:e2e:local:smoke, and if yes, update the workflow and contract test together.None of these are blockers for the merged workflow. They are scoped hardening / cleanup.
Which audience does this matter to most?
Both — better failure visibility benefits anyone (contributor or maintainer) reviewing PRs; the contract test and path leak guards benefit the project regardless of who runs the workflow.
Extra context
.github/workflows/e2e-artifacts.ymlpackages/opencode/test/config/e2e-artifacts-workflow.test.tspackages/app/package.json