AltimateAI / AltimateAI/altimate-code

test: CI job exercising NAPI-load-failure graceful degradation path

Aperta
#1,127 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
TypeScript
Stelle
811
Fork
134
Merge medio
3g 2h
PR unite (30g)
50

Descrizione

Deferred from the **v0.9.6 release review** (Chaos Gremlin persona).

## Context

v0.9.6 ships a fix (`packages/opencode/src/altimate/native/dispatcher.ts`) for a bug where a transient NAPI load failure during `Dispatcher.call`'s lazy-registration hook would poison the whole bridge for the process lifetime — every subsequent `Dispatcher.call` (not just the failing one) threw `No native handler for X`, and the CLI had to be restarted.

The fix caches the in-flight registration promise so:
- Concurrent callers share one attempt
- On failure the cached promise is cleared so subsequent calls can retry
- On success `_ensureRegistered` is nulled so the hook does NOT re-run unnecessarily

Unit tests are in `packages/opencode/test/skill/release-v0.9.6-adversarial.test.ts` (4 cases). But those exercise the dispatcher-layer state machine only — they don't verify the real-world scenario: a customer platform where the `@altimateai/altimate-core` NAPI binding actually fails to load (older glibc, unusual arch, permission issues, cold-cache first invocation).

## What to do

Add a CI job that:

1. Simulates a NAPI load failure on first `Dispatcher.call` (e.g. by pointing `altimate-core.node` at a missing/corrupted path)
2. Asserts the specific error surfaces to the caller (not a generic dispatcher error)
3. Asserts a subsequent `Dispatcher.call` re-attempts registration (i.e., the retry-after-failure invariant is preserved end-to-end, not just at the dispatcher unit-test level)
4. Runs on the platform matrix that most-likely hits real NAPI issues (linux-arm64, older Node runtime, etc.)

Belt-and-braces on the dispatcher retry fix. Not a repro of a customer report; prophylactic based on the release-review Gremlin lens.

## Priority

P2 — the dispatcher unit tests cover the state machine; this CI job proves the state machine survives real-world NAPI failure modes.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.