ruvnet/ruflo · error · Error
Hyperbolic attention not initialized
Error message
Hyperbolic attention not initialized
What it means
Thrown by computeHyperbolicAttention() when hyperbolicAttention is null. Like MoE, hyperbolic attention (Poincaré-ball style attention for hierarchical patterns) is opt-in: it is constructed only when config.useHyperbolic is truthy AND the optional @ruvector/attention package imports. init constructs HyperbolicAttention(dim, 1.0) and lists 'HyperbolicAttention' in features on success.
Source
Thrown at v3/@claude-flow/cli/src/services/ruvector-training.ts:621
values: Float32Array[]
): Float32Array {
if (!moeAttention) {
throw new Error('MoE attention not initialized');
}
return moeAttention.computeRaw(query, keys, values);
}
/**
* Compute hyperbolic attention (for hierarchical patterns)
*/
export function computeHyperbolicAttention(
query: Float32Array,
keys: Float32Array[],
values: Float32Array[]
): Float32Array {
if (!hyperbolicAttention) {
throw new Error('Hyperbolic attention not initialized');
}
return hyperbolicAttention.computeRaw(query, keys, values);
}
/**
* Compute contrastive loss for training
*/
export function computeContrastiveLoss(
anchor: Float32Array,
positives: Float32Array[],
negatives: Float32Array[]
): { loss: number; gradient: Float32Array } {
if (!contrastiveLoss) {
throw new Error('Contrastive loss not initialized');
}
const loss = contrastiveLoss.compute(anchor, positives, negatives);View on GitHub (pinned to fa13ee4ad6)
Solutions
- Initialize with { useHyperbolic: true } and assert features includes 'HyperbolicAttention'.
- Verify @ruvector/attention is installed if the flag was already set — look for the '[ruvector] @ruvector/attention unavailable' warning during init.
- Branch on the features array: fall back to computeFlashAttention when hyperbolic is absent.
- Re-initialize after cleanup().
Example fix
// before
await initializeTraining({ useFlashAttention: true });
const h = computeHyperbolicAttention(query, keys, values); // throws — flag missing
// after
const init = await initializeTraining({ useHyperbolic: true, useFlashAttention: true });
const h = init.features.includes('HyperbolicAttention')
? computeHyperbolicAttention(query, keys, values)
: computeFlashAttention(query, keys, values); Defensive patterns
Strategy: validation
Validate before calling
const init = await initializeTraining({ useHyperbolic: true });
const hyperbolic = init.features.includes('HyperbolicAttention');
const output = hyperbolic
? computeHyperbolicAttention(query, keys, values)
: computeFlashAttention(query, keys, values); // explicit capability fallback Type guard
async function hyperbolicReady(cfg: TrainingConfig = {}): Promise<boolean> {
const init = await initializeTraining(cfg);
return init.features.includes('HyperbolicAttention');
} Try / catch
try {
return computeHyperbolicAttention(q, keys, values);
} catch (e) {
if (e instanceof Error && e.message === 'Hyperbolic attention not initialized') {
return computeFlashAttention(q, keys, values);
}
throw e;
} Prevention
- Enable useHyperbolic in the central TrainingConfig, not per call site.
- Check init.features — the flag is necessary but not sufficient when @ruvector/attention is absent.
- Keep a Euclidean fallback path for attention so hierarchical experiments degrade gracefully.
- Re-run init with the flag after cleanup().
When it happens
Trigger: Calling computeHyperbolicAttention after an init that omitted useHyperbolic: true; useHyperbolic set but @ruvector/attention unresolvable (optional dep stripped — init warns and disables all attention features); post-cleanup() usage.
Common situations: Hierarchical-pattern experiments wired up against a shared training bootstrap that never enabled the flag; Docker images pruning optionalDependencies; config drift between environments (flag set in dev, missing in prod).
Related errors
- Flash attention not initialized
- MoE attention not initialized
- Hard negative miner not initialized
- Contrastive loss not initialized
- Optimizer not initialized
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/c055b4ba889e0d8f.
Report an issue: GitHub.