Skip to content

ci(e2e): rebuild native modules for Electron's ABI so the smoke suite launches - #2

Merged
CMolG merged 1 commit into
mainfrom
ci/e2e-electron-rebuild
Jul 5, 2026
Merged

CMolG merged 1 commit into
mainfrom
ci/e2e-electron-rebuild

Conversation

@CMolG

@CMolG CMolG commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Summary

Stabilizes the always-red e2e-smoke CI job. Root cause was a native-module ABI mismatch, not flakiness.

  • npm ci builds better-sqlite3 for Node (NODE_MODULE_VERSION 137), but the suite launches electron . (Electron 41, ABI 145) against the repo root.
  • The main process's synchronous initializeStorage() threw while loading the mismatched .node; the app.whenReady() chain rejected before createWindow(), so every spec timed out at electronApplication.firstWindow (30s) — deterministic, on both retries.
  • electron-forge package only rebuilds its own bundled copy, never repo-root — so nothing fixed the repo-root ABI the suite actually loads.

Fix: add npx electron-rebuild -f in the e2e-smoke job (after package, before running the suite) so repo-root native modules match Electron's ABI.

Verification

  • Reproduced the exact NODE_MODULE_VERSION 137 vs 145 error locally by rebuilding better-sqlite3 for Node and launching Electron.
  • Confirmed both smoke specs pass 13/13 locally once rebuilt for Electron.
  • Confirmed green on a real CI run (feat/dev): E2E smoke (ubuntu, xvfb): success.

Kept as a soft gate (continue-on-error) for now, per the job's own note about accruing green runs before making it blocking.

🤖 Generated with Claude Code

https://claude.ai/code/session_013nbxSeU5FDHmFY3A1akRgE

… launches

Root cause of the always-red e2e-smoke job: `npm ci` builds better-sqlite3 for
Node (NODE_MODULE_VERSION 137), but the suite launches `electron .` (Electron 41,
ABI 145) against the repo root. The main process's synchronous initializeStorage()
threw while loading the mismatched .node binary, the app.whenReady() chain
rejected BEFORE createWindow(), and every spec timed out at
electronApplication.firstWindow (30s) — deterministic, not flaky.

Add `npx electron-rebuild -f` after the package step so repo-root native modules
match Electron's ABI (electron-forge's package step only rebuilds its own bundled
copy, never repo-root). Verified locally: reproduced the exact 137-vs-145
NODE_MODULE_VERSION error by rebuilding for Node, and both smoke specs pass
(13/13) once rebuilt for Electron.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013nbxSeU5FDHmFY3A1akRgE
@CMolG
CMolG merged commit e05ddab into main Jul 5, 2026
6 checks passed
@CMolG
CMolG deleted the ci/e2e-electron-rebuild branch July 5, 2026 18:45
CMolG added a commit that referenced this pull request Jul 10, 2026
…e on code (#7)

Ejecuta la tarea de backlog 2026-07-08-chats-to-flow-steps (F0–F5):

- Window type 'chat' RETIRADO (desktop.ts); migración perezosa v19 (tombstone,
  no crash de boards guardados) + v20 (rename HUD widget). El auto-chat es un
  panel fijo del HUD (HudAutoChatPanel), caja de intent one-shot vía meta-agent
  assemblePipeline → insertPipelineAssembly — sin agent-manager, sin edición de
  código por construcción.
- Gesto mono-step: doble-click en canvas vacío crea un step con input enfocado
  (pendingStepFocusId) + streaming; Cmd+N y "New Step" del context-menu igual.
- 6 lanzadores de flows (BacklogKanban executeCard/auto-architect, FlowDeck,
  BacklogCardModal, AgentSessions, App Cmd+N) re-cableados: materializan al
  board + run por harness, ya NO abren chat (criterio #1 cumplido).
- Helms en steps: rol único (Single Persona, listbox/aria-selected), mods
  attached; input directo + adjuntos @file (FileContextBuilder reciclado);
  nota de autoridad de ejecución (validateStepAtoms veto visible).
- StepRunEvidence gana transcript real (react-markdown + remark-gfm, tool-call
  cards, file-change chips → diff viewer); degrada con gracia donde el harness
  no emite datos estructurados (follow-up: evento FileChanged).
- Market: MarketFlow.steps[] estructurado (superset de PipelineAssemblyStep),
  "Add to board" construye el assembly directo → insertPipelineAssembly;
  AttachableFlow/RightFlowAttachment retirados. Re-firma diferida.
- Barrido de muerto: AgenticChatApp, MessageRenderer, SlashCommandHandler,
  TextToFlowWidget borrados (agent-manager CONSERVADO: FlowsEditor aún lo usa).

Gates: vitest 1615/1615 · tsc 0 · eslint 0 err · e2e desktop.spec.ts sin
regresiones (19 fallos pre-existentes idénticos a origin/main) · context-menus
verde · new-features recuperado 25→9 (los 9 = tests e2e del panel auto-chat,
non-CI, feature cubierta por unit tests — follow-up de persist/rehidratación).

Backlog #2 completo. Las 3 tareas del backlog (rebranding, context-modes,
chats→steps) entregadas.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@CMolG
CMolG restored the ci/e2e-electron-rebuild branch September 8, 2026 07:04
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