AltimateAI / AltimateAI/altimate-code

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

Open
#1,127 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
811
Forks
134
Avg merge
3d 2h
Merged PRs (30d)
50

Description

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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.