stablyai/orca · error

relay credential install was not authoritatively reconciled

Error message

relay credential install was not authoritatively reconciled

What it means

Thrown by assertCommittedInstall (line 296-310) when pairing.getEndpoints' installStatus does not authoritatively confirm the same DeviceCredentialInstalled that provisionRelay just returned. The check requires installStatus to exist, have state==='committed', AND produce a deep-JSON-equal (JSON.stringify) match of the installed result. Any divergence — state 'not-found', undefined, or a field-level difference (e.g., different token, host, or expiry) — is treated as a split-brain between the provision and query RPCs and rejected.

Source

Thrown at mobile/src/transport/pre-profile-pairing-coordinator.ts:308

}

function isMethodNotFound(response: RpcResponse): boolean {
  return !response.ok && response.error.code === 'method_not_found'
}

function assertCommittedInstall(
  status:
    | { state: 'not-found' }
    | { state: 'committed'; result: DeviceCredentialInstalled }
    | undefined,
  installed: DeviceCredentialInstalled
): void {
  if (
    !status ||
    status.state !== 'committed' ||
    JSON.stringify(status.result) !== JSON.stringify(installed)
  ) {
    throw new Error('relay credential install was not authoritatively reconciled')
  }
}

function assertActive(isDisposed: () => boolean): void {
  if (isDisposed()) {
    throw new Error('mobile pairing cancelled')
  }
}

View on GitHub (pinned to 1136503c6a)

Solutions

  1. On the desktop, ensure provisionRelay and getEndpoints read from the same authoritative install store within one transaction.
  2. Retry pairing — if the install reconciles on a second attempt, the original was a transient race.
  3. Diff the JSON.stringify outputs of installed (from provision) and installStatus.result (from getEndpoints) in a debug build to find the divergent field.
  4. If persistent, clear the desktop's install record and re-pair from scratch.
Defensive patterns

Strategy: validation

Validate before calling

// Before assertCommittedInstall, verify the two payloads reconcile
function installReconciles(
  status: { state: string; result?: unknown } | undefined,
  installed: DeviceCredentialInstalled
): boolean {
  return !!status
    && status.state === 'committed'
    && JSON.stringify(status.result) === JSON.stringify(installed)
}

Type guard

function isUnreconciledInstallError(error: unknown): boolean {
  return error instanceof Error
    && error.message === 'relay credential install was not authoritatively reconciled'
}

Try / catch

try {
  await runPairing(...)
} catch (error) {
  if (isUnreconciledInstallError(error)) {
    // transient race — clear journal and re-pair
    await clearMobileRelayPairingJournal(journalId)
    return startPreProfilePairing(args)
  }
  throw error
}

Prevention

When it happens

Trigger: provisionRelay returned installed=A, then pairing.getEndpoints returned installStatus={ state:'not-found' } or { state:'committed', result:B } where JSON.stringify(A) !== JSON.stringify(B). Happens if the desktop's provision and query handlers read different stores, if a concurrent reconciliation moved the install between the two calls, or if the schema's optional fields (e.g., a freshly-rotated token) differ.

Common situations: Desktop-side race between credential install and endpoint enumeration; a desktop restart between provisionRelay and getEndpoints that lost the in-memory install; or a schema drift where provisionRelay and getEndpoints serialize DeviceCredentialInstalled with different field sets/defaults.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/0283248aa98d7bad. Report an issue: GitHub.