{"record":{"id":"13961ebf5c89df45","repo":"ruvnet/ruflo","slug":"paths-not-composable-endpoints-do-not-match","errorCode":null,"errorMessage":"Paths not composable: endpoints do not match","messagePattern":"Paths not composable: endpoints do not match","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"v3/plugins/prime-radiant/src/engines/HottEngine.ts","lineNumber":221,"sourceCode":"\n  /**\n   * Create a symmetry path (if p: x = y, then sym(p): y = x)\n   */\n  sym(path: Path): Path {\n    return {\n      source: path.target,\n      target: path.source,\n      type: path.type,\n      proof: `sym(${path.proof})`\n    };\n  }\n\n  /**\n   * Create a transitivity path (if p: x = y and q: y = z, then trans(p,q): x = z)\n   */\n  trans(path1: Path, path2: Path): Path {\n    if (!this.equalValues(path1.target, path2.source)) {\n      throw new Error('Paths not composable: endpoints do not match');\n    }\n\n    return {\n      source: path1.source,\n      target: path2.target,\n      type: path1.type,\n      proof: `trans(${path1.proof}, ${path2.proof})`\n    };\n  }\n\n  /**\n   * Apply a function to a path (ap)\n   */\n  ap<A, B>(f: (a: A) => B, path: Path): Path {\n    return {\n      source: f(path.source as A),\n      target: f(path.target as A),\n      type: `${path.type} -> ${typeof f(path.source as A)}`,","sourceCodeStart":203,"sourceCodeEnd":239,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/plugins/prime-radiant/src/engines/HottEngine.ts#L203-L239","documentation":"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.","triggerScenarios":"Thrown at v3/plugins/prime-radiant/src/engines/HottEngine.ts:221 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}