Commit dcfb96b
## Summary
- Adds a `HexadSemantic.crosslang: Option<CrosslangSemantic>` facet and
a
`build_crosslang_hexads(...)` helper that drives the kanren
`CrossLangAnalyzer` per repo (ingest → extract → load_rules → analyze →
query_interactions) and emits one hexad per derived
`CrossLangInteraction`.
- New env var `PANIC_ATTACK_STORE_CROSSLANG_HEXADS` (separate from
`PANIC_ATTACK_STORE_FINDING_HEXADS`) opts a run into emission;
`persist_assemblyline_report` writes to `<dir>/hexads/crosslang/`
file-side only.
- Adds `load_crosslang_hexads(base_dir)` so the paired query-evaluator
PR
can match against persisted facts; falls back to empty `Vec` when the
dir is missing (the evaluator treats that as "use co-occurrence proxy").
## Why
Tightens the `(crosslang :from :to)` query from a same-repo
co-occurrence
proxy to a true FFI/cross-language reachability check against
persisted kanren-derived facts. PR 1 of a 2-PR stack; PR 2 switches the
evaluator over while preserving fall-back semantics.
## Test plan
- [x] `cargo test --lib` — 252 tests pass, including 4 new
`storage::tests::*crosslang*` cases (build-empty, build-from-FFI,
write/read roundtrip + missing-dir, env-var default-off + opt-in).
- [x] `cargo clippy --all-targets -- -D warnings` clean.
- [x] `cargo fmt --all` no diff.
Stacks under: issue #33 S1/S2/S3 PRs (#55, #56, #57, #58). Filed against
`main` per orphan-trap rule.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent acd329f commit dcfb96b
2 files changed
Lines changed: 372 additions & 0 deletions
0 commit comments