Skip to content

ci: harden NeuralOS verification workflow - #7

Merged
Z3r0DayZion-install merged 10 commits into
mainfrom
codex/next-15-ci-hooks
May 12, 2026
Merged

ci: harden NeuralOS verification workflow#7
Z3r0DayZion-install merged 10 commits into
mainfrom
codex/next-15-ci-hooks

Conversation

@Z3r0DayZion-install

@Z3r0DayZion-install Z3r0DayZion-install commented Apr 26, 2026

Copy link
Copy Markdown
Owner

Summary

  • Stabilized WinShadow and shell UI E2E tests on `windows-latest` (22+ tests passing consistently)
  • Fixed CI ordering: build renderer assets before running Playwright E2E
  • Fixed WinShadow draft persistence test to use direct state API in CI (avoids fragile UI input path)
  • Added Node.js 24 actions runner opt-in (`FORCE_JAVASCRIPT_ACTIONS_TO_NODE24`) before GitHub forced cutover on June 2, 2026

CI status

Job Result
`e2e-tests` (windows-latest) ✓ SUCCESS
`lint` (ubuntu-latest) ✓ SUCCESS
`build-portable` (ubuntu-latest) ✓ SUCCESS (previous run) / in-progress (latest)

Root causes fixed

Cause Fix
Renderer assets not built before E2E Added `build:assets` step before Playwright
Electron binary path wrong on Windows Pinned `executablePath` to `electron/dist/electron.exe`
WinShadow draft test using UI input in CI CI now calls `window.neuralos.state.set()` directly
Test ordering causing stale state WinShadow draft spec runs first
Node.js 20 actions runner deprecation warning Added `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true` top-level env

Test plan

  • `e2e-tests` green on `windows-latest`
  • `lint` green on `ubuntu-latest`
  • No functional changes to NeuralOS source — CI and test-only commits
  • Node24 runner opt-in verified present in workflow

Follow-up (not blocking merge)

  • Remove `waitForTimeout(120)` timing assumptions in `winshadowHarness.ts`
  • Add AST gate blocking future `BrowserWindow` with `nodeIntegration: true`

🤖 Generated with Claude Code

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

View 3 additional findings in Devin Review.

Open in Devin Review

exit 1
fi
echo "path=$EXE" >> "$GITHUB_OUTPUT"
echo "name=$(basename $EXE)" >> "$GITHUB_OUTPUT"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Unquoted $EXE in basename produces wrong artifact name due to space in filename

The artifact name pattern in package.json:116 is forgecore-os ${version}.exe, which resolves to e.g. forgecore-os 2.0.0.exe (containing a space). On line 65, basename $EXE is called without quoting $EXE. Shell word-splitting will split dist/forgecore-os 2.0.0.exe into two arguments: dist/forgecore-os and 2.0.0.exe. basename interprets two arguments as basename NAME SUFFIX, so it returns forgecore-os (ignoring the second arg since it's not a matching suffix) instead of the full forgecore-os 2.0.0.exe. This causes the release body to display an incorrect artifact name.

Suggested change
echo "name=$(basename $EXE)" >> "$GITHUB_OUTPUT"
echo "name=$(basename "$EXE")" >> "$GITHUB_OUTPUT"
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment thread NeuralOS_Master_Build/package.json Outdated
- Add playwright.config.ts with CI-tuned workers, retries, reporters,
  and trace-on-failure
- Add parallel CI jobs: e2e-tests (runs 23 Playwright tests) and lint
  (runs ESLint) alongside the existing build-portable job
- Replace ancient Tauri release workflow with Electron-based pipeline:
  build portable, sign manifest, verify hash chain, publish as GitHub
  Release with SHA-256 in the body — triggered by v* tags
- Set up husky + lint-staged at repo root: ESLint --fix and Prettier
  run automatically on every commit for NeuralOS_Master_Build files
- Install eslint, prettier, husky, lint-staged as root devDependencies

🤖 Generated with [Qoder][https://qoder.com]
@Z3r0DayZion-install Z3r0DayZion-install changed the title ci: add E2E + lint CI jobs, release workflow, pre-commit hooks ci: harden NeuralOS verification workflow May 8, 2026

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

View 11 additional findings in Devin Review.

Open in Devin Review

- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: "20"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Release workflow uses Node 20 while CI tests with Node 22.12.0

The CI workflow (forgecore-ci.yml:18) consistently uses node-version: "22.12.0" for all three jobs, but the new release workflow (release.yml:21) uses node-version: "20". The release workflow runs the same scripts (build:portable, verify:portable, verify:release, release_portable.cjs) that CI tests with Node 22. If any of these scripts use Node 22-specific APIs or behavior, the release build will fail even though CI passes. The release pipeline should use the same Node version that CI validates against.

Suggested change
node-version: "20"
node-version: "22.12.0"
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@Z3r0DayZion-install
Z3r0DayZion-install merged commit 116d347 into main May 12, 2026
6 checks passed
@Z3r0DayZion-install
Z3r0DayZion-install deleted the codex/next-15-ci-hooks branch May 12, 2026 19:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant