bydisentinel· 40 skills
Fix silent incorrect results in RFDB Datalog queries that share a variable between two edge atoms on opposite ends (e.g. self-join patterns like edge(M, C, "T1"), edge(C, M, "T2")). Use when: (1) a Datalog rule returns rows that look structurally wrong (e.g. a self-loop rule reports hits but pinning M to each reported id refutes the edge existence), (2) Cypher MATCH (m)-[:R1]->(c)-[:R2]->(m) returns the same bogus rows (engine-level bug, not Datalog-specific), (3) results change when you bind one variable explicitly vs. leave it free. Root cause: hash- join fast path in eval_edge_hash_join / eval_incoming_hash_join unconditionally rebinds the non-key Term::Var without checking whether the variable is already bound in the current row.
$npx -y skills add disentinel/grafema --skill rfdb-datalog-hash-join-shared-varInstalls into the current project.
Run `npx skills use "https://github.com/disentinel/grafema" --skill "disentinel/grafema/rfdb-datalog-hash-join-shared-var"` and follow the generated skill instructions now. Read its complete output, redirecting it to a temporary file first if necessary. Resolve relative paths from the supporting-files directory it provides.
Use the skills in "https://github.com/disentinel/grafema" that are relevant to the current task. Run `npx skills add "https://github.com/disentinel/grafema"` and select the relevant skills, then follow their instructions.