You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(daemon): ship baseline OpenCode for Windows and stop retrying AVX2 illegal-instruction crashes (#5733)
* Classify AVX2 illegal-instruction agent crashes as cpu_unsupported and stop retrying them
The Windows opencode.exe bundled with the AMR runtime is a Bun build that
requires AVX2. On CPUs without it (Intel Atom/Celeron/Pentium N-series
through 2021) the binary dies with STATUS_ILLEGAL_INSTRUCTION before
readiness; vela surfaces an ACP fatal, the daemon classified it as a
retryable fatal_rpc_error, and the automatic retry deterministically
failed again. 88 of 105 pre-readiness Windows crash traces in Langfuse
are this single failure.
The crash text (Bun 'Illegal instruction' banner with a no_avx2 CPU
feature line, or the raw 0xC000001D / decimal 3221225501 exit status) now
classifies as process_exit/cpu_unsupported ahead of the fatal_rpc_error
close-reason promotion, is never auto-retried, and renders a dedicated
error card telling the user to update Open Design instead of a dead
Retry button.
* Bump @powerformer/vela-cli to 0.0.23 so packaged Windows builds bundle the baseline (non-AVX2) OpenCode
The 0.0.23 win32-x64 platform package compiles the OpenCode fork with
--target=windows-x64-baseline, so the bundled opencode.exe no longer
requires AVX2 and starts on Intel Atom/Celeron/Pentium N-series CPUs.
Verified in vela CI: the build log shows the baseline target and the new
post-publish smoke job boots the published bundle's opencode.exe on a
real Windows runner (powerformer/vela#838).
* Refresh Nix pnpm deps hashes for the vela-cli 0.0.23 lockfile change
* Add the abort-after-panic (exit status 3) production shape to cpu_unsupported specs
A user on an AVX-but-no-AVX2 CPU (Sandy/Ivy Bridge era) hit the same
illegal-instruction crash, but Bun panicked during its own panic handler
and abort()ed, so vela reported exit status 3 instead of
STATUS_ILLEGAL_INSTRUCTION. The stderr banner (no_avx2 / Illegal
instruction) is the only signal; encode the real Langfuse trace shape so
the classifier keeps catching it.
* Bump @powerformer/vela-cli to 0.0.25 so packaged Windows builds bundle the baseline (non-AVX2) OpenCode
0.0.25 is the first stable cut after powerformer/vela#838 merged: its
win32-x64 package compiles the OpenCode fork with
--target=windows-x64-baseline (verified in the release CI log), the
post-publish smoke boots the published bundle on a real Windows runner,
and the lockfile regenerator now pins the baseline asset so a routine
version bump cannot silently flip back. 0.0.24 predated that merge and
still shipped the AVX2 build.
* Tighten cpu_unsupported to precise signals only (no bare 'Illegal instruction')
Review is right that a bare illegal-instruction line is too broad: an
unrelated SIGILL on an AVX2-capable machine (runtime bug, corrupted
jump) would be mislabeled 'Processor not supported' and lose its retry.
Bun's crash banner always prints the CPU-feature line, so machines
actually missing AVX2 are identified by no_avx2; the bare Windows
STATUS_ILLEGAL_INSTRUCTION renderings (0xC000001D / 3221225501) stay
because those runs carry no banner at all. Generic illegal-instruction
banners without no_avx2 return to process_crashed / fatal_rpc_error,
locked by a new negative spec.
* Refresh Nix pnpm deps hashes for the vela-cli 0.0.25 lockfile change
* Gate raw STATUS_ILLEGAL_INSTRUCTION on the bundled-opencode startup context
'chat.runError.title.gitBashMissing': "Git Bash غير موجود",
81
+
'chat.runError.title.cpuUnsupported': "المعالج غير مدعوم",
81
82
'chat.runError.quotaExhaustedMessage': "انتهت حصة خدمة النموذج أو حد الفوترة، لذا لن تفيد إعادة المحاولة. اشحن رصيدك لدى المزوّد أو بدّل إلى نموذج أو خدمة أخرى.",
82
83
'chat.runError.workspaceCreditsMessage': "نفدت أرصدة مساحة عملك. أضف أرصدة (أو اطلب من مالك المساحة إعادة الشحن)، أو بدّل إلى نموذج أو خدمة أخرى.",
83
84
'chat.runError.timedOutMessage': "استغرق هذا التشغيل وقتًا طويلاً وتم إيقافه. أعد المحاولة، أو قلّص المهمة ثم أعد المحاولة.",
84
85
'chat.runError.inactivityTimeoutMessage': "توقّف الوكيل عن إنتاج ناتج جديد لفترة طويلة فتم إيقافه بسبب انتهاء المهلة. عادةً ما تعيد المحاولة تشغيله من جديد.",
85
86
'chat.runError.emptyOutputMessage': "انتهى الوكيل دون إنتاج أي ناتج. هذا مؤقت غالبًا، فأعد المحاولة.",
86
87
'chat.runError.sessionExpiredMessage': "انتهت صلاحية الجلسة المستأنفة. تمت إعادة ضبطها، لذا أعد المحاولة لبدء تشغيل جديد.",
87
88
'chat.runError.gitBashMissingMessage': "يلزم Git Bash لتشغيل هذا الوكيل على Windows لكنه غير موجود. ثبّت Git for Windows ثم أعد المحاولة.",
89
+
'chat.runError.cpuUnsupportedMessage': "تتطلب بيئة تشغيل هذا الوكيل مجموعة تعليمات للمعالج (AVX2) غير متوفرة في هذا الجهاز، لذا يتعذر تشغيلها. حدِّث Open Design إلى أحدث إصدار الذي يتضمن بيئة تشغيل متوافقة.",
'chat.runError.title.cpuUnsupported': "Prozessor nicht unterstützt",
81
82
'chat.runError.quotaExhaustedMessage': "Das Kontingent oder Abrechnungslimit deines Modelldienstes ist aufgebraucht – ein erneuter Versuch hilft nicht. Lade bei deinem Anbieter auf oder wechsle zu einem anderen Modell oder Dienst.",
82
83
'chat.runError.workspaceCreditsMessage': "Dein Workspace hat keine Credits mehr. Füge Credits hinzu (oder bitte den Workspace-Eigentümer aufzuladen) oder wechsle zu einem anderen Modell oder Dienst.",
83
84
'chat.runError.timedOutMessage': "Dieser Lauf hat zu lange gedauert und wurde abgebrochen. Versuche es erneut oder verkleinere die Aufgabe und wiederhole.",
84
85
'chat.runError.inactivityTimeoutMessage': "Der Agent hat zu lange keine neue Ausgabe geliefert und wurde als Zeitüberschreitung abgebrochen. Ein erneuter Versuch bringt ihn meist wieder in Gang.",
85
86
'chat.runError.emptyOutputMessage': "Der Agent wurde beendet, ohne Ausgabe zu erzeugen. Das ist meist vorübergehend, versuche es erneut.",
86
87
'chat.runError.sessionExpiredMessage': "Die fortgesetzte Sitzung war abgelaufen. Sie wurde zurückgesetzt, wiederhole, um einen neuen Lauf zu starten.",
87
88
'chat.runError.gitBashMissingMessage': "Für diesen Agenten unter Windows wird Git Bash benötigt, es wurde aber nicht gefunden. Installiere Git für Windows und versuche es erneut.",
89
+
'chat.runError.cpuUnsupportedMessage': "Die Laufzeitumgebung dieses Agenten benötigt einen CPU-Befehlssatz (AVX2), den dieses Gerät nicht besitzt, und kann daher nicht starten. Aktualisiere Open Design auf die neueste Version, die eine kompatible Laufzeitumgebung mitliefert.",
'chat.runError.title.cpuUnsupported': "Processor not supported",
81
82
'chat.runError.quotaExhaustedMessage': "Your model service's quota or billing limit is used up, so retrying won't help. Top up with your provider, or switch to another model or service.",
82
83
'chat.runError.workspaceCreditsMessage': "Your workspace is out of credits. Add credits (or ask your workspace owner to refill), or switch to another model or service.",
83
84
'chat.runError.timedOutMessage': "This run took too long and was stopped. Try again, or narrow the task and retry.",
84
85
'chat.runError.inactivityTimeoutMessage': "The agent went quiet for too long and was stopped as a timeout. Retrying usually gets it moving again.",
85
86
'chat.runError.emptyOutputMessage': "The agent finished without producing any output. This is usually temporary, so retry to run it again.",
86
87
'chat.runError.sessionExpiredMessage': "The resumed session had expired. It has been reset, so retry to start a fresh run.",
87
88
'chat.runError.gitBashMissingMessage': "Git Bash is required to run this agent on Windows but wasn't found. Install Git for Windows, then retry.",
89
+
'chat.runError.cpuUnsupportedMessage': "This agent's runtime needs a CPU instruction set (AVX2) that this device doesn't have, so it can't start. Update Open Design to the latest version, which ships a compatible runtime.",
'chat.runError.title.cpuUnsupported': "Procesador no compatible",
81
82
'chat.runError.quotaExhaustedMessage': "La cuota o el límite de facturación de tu servicio de modelo se ha agotado, así que reintentar no servirá. Recarga con tu proveedor o cambia a otro modelo o servicio.",
82
83
'chat.runError.workspaceCreditsMessage': "Tu espacio de trabajo se ha quedado sin créditos. Añade créditos (o pide al propietario del espacio que recargue) o cambia a otro modelo o servicio.",
83
84
'chat.runError.timedOutMessage': "Esta ejecución tardó demasiado y se detuvo. Inténtalo de nuevo o reduce la tarea y reintenta.",
84
85
'chat.runError.inactivityTimeoutMessage': "El agente estuvo demasiado tiempo sin nueva salida y se detuvo por tiempo agotado. Reintentar suele reanudarlo.",
85
86
'chat.runError.emptyOutputMessage': "El agente terminó sin producir ninguna salida. Suele ser temporal: reintenta para ejecutarlo de nuevo.",
86
87
'chat.runError.sessionExpiredMessage': "La sesión reanudada había caducado. Se ha restablecido, así que reintenta para iniciar una ejecución nueva.",
87
88
'chat.runError.gitBashMissingMessage': "Se necesita Git Bash para ejecutar este agente en Windows, pero no se encontró. Instala Git para Windows y reintenta.",
89
+
'chat.runError.cpuUnsupportedMessage': "El entorno de ejecución de este agente necesita un conjunto de instrucciones de CPU (AVX2) que este dispositivo no tiene, por lo que no puede iniciarse. Actualiza Open Design a la última versión, que incluye un entorno de ejecución compatible.",
88
90
'common.cancel': 'Cancelar',
89
91
'chat.selectFromLibrary': 'Importar de la biblioteca',
0 commit comments