ruvnet/ruflo · error
Paths not composable: endpoints do not match
Error message
Paths not composable: endpoints do not match
What it means
HottEngine.trans() verified that path1's target equals path2's source using equalValues and it does not — the two paths do not chain, so their transitivity composite is undefined. Fix the endpoint mismatch before composing paths.
Source
Thrown at v3/plugins/prime-radiant/src/engines/HottEngine.ts:221
/**
* Create a symmetry path (if p: x = y, then sym(p): y = x)
*/
sym(path: Path): Path {
return {
source: path.target,
target: path.source,
type: path.type,
proof: `sym(${path.proof})`
};
}
/**
* Create a transitivity path (if p: x = y and q: y = z, then trans(p,q): x = z)
*/
trans(path1: Path, path2: Path): Path {
if (!this.equalValues(path1.target, path2.source)) {
throw new Error('Paths not composable: endpoints do not match');
}
return {
source: path1.source,
target: path2.target,
type: path1.type,
proof: `trans(${path1.proof}, ${path2.proof})`
};
}
/**
* Apply a function to a path (ap)
*/
ap<A, B>(f: (a: A) => B, path: Path): Path {
return {
source: f(path.source as A),
target: f(path.target as A),
type: `${path.type} -> ${typeof f(path.source as A)}`,View on GitHub (pinned to fa13ee4ad6)
Solutions
- Inspect the underlying cause in logs, fix the root issue, and retry the operation.
- Validate inputs and preconditions before invoking this code path so the error is avoided.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at v3/plugins/prime-radiant/src/engines/HottEngine.ts:221 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/13961ebf5c89df45.
Report an issue: GitHub.