Polyglot capability matrix¶
RigorFoundry is not a Python-only tool, and it does not claim uniform semantic depth across languages. It scans thirteen languages at deliberately different depths. This matrix states, per language, which analysis techniques the scanner actually applies, so an adopter can see exactly what a green scan does and does not establish. It is derived from the live language-capability registry, so it cannot drift from the scanner's behaviour.
Three technique classes¶
- AST / semantic controls — the scanner parses the language's source into an abstract syntax tree and reasons over it. This backs the test-authenticity rules (TA001–TA011) and the Python import-graph architecture rules (AR001–AR004, AR006). It is currently Python only.
- Structural / textual heuristics — responsibility-size ownership (GF001), missing-test-owner ownership (AR005 for Python, AR008 for the polyglot suffixes), and relative dependency-graph resolution. These apply across the polyglot surface without parsing a full AST.
- Native adapters — third-party tools (for example Semgrep for application-security) wired through a policy adapter profile. They are opt-in per repository policy and only run once their executable passes the trusted-executable provenance gate; they are not a per-language default.
Matrix¶
| Language | AST / semantic | Size (GF001) | Ownership | Dependency graph | Structural |
|---|---|---|---|---|---|
| python | ✅ | ✅ | ✅ | ✅ | ✅ |
| c / c++ | ✅† | ✅ | ✅ | ✅ | ✅ |
| javascript | ✅† | ✅ | ✅ | ✅ | ✅ |
| typescript | ✅† | ✅ | ✅ | ✅ | ✅ |
| rust | ✅† | ✅ | ✅ | ✅ | ✅ |
| julia | ✅† | ✅ | ✅ | ✅ | ✅ |
| go | ✅† | ✅ | ✅ | — | ✅ |
| lean | — | ✅ | ✅ | — | ✅ |
| mojo | — | ✅ | ✅ | — | ✅ |
| systemverilog | — | ✅ | ✅ | — | ✅ |
| verilog | — | ✅ | ✅ | — | ✅ |
| shell | ✅† | ✅ | — | — | ✅ |
| yaml | — | — | — | — | — |
✅ marks an applied technique; — marks one the scanner does not apply to that
language today. † marks the native AST/semantic analysis for JavaScript,
TypeScript, Go, Rust, C/C++, Julia, and Shell, which is implemented through
tree-sitter parsers but requires the optional native extra
(pip install rigor-foundry[native]);
without the extra a deployment degrades to the structural controls for those
languages. YAML is scope-scannable data only — it participates in the
tracked-content scope rule but carries no size, ownership, or dependency control.
Go, Lean, Mojo, and the hardware-description languages are owned for size and
ownership but have no native dependency-family parser yet.
Reading a scan honestly¶
A green scan means the applied techniques found no candidate — not that the
language was analysed as deeply as Python. JavaScript, TypeScript, Go, Rust,
C/C++, Julia, and Shell now have a native AST pass (via the native extra); the
remaining languages (Lean, Mojo, the hardware-description languages, and YAML) run
only their structural or scope controls, so semantic defects that only an AST pass
would surface are out of scope for them, guided by adopter evidence.
Programmatic access¶
from rigor_foundry.polyglot_capability_matrix import capability_matrix
matrix = capability_matrix()
row = matrix.row("typescript")
row.ast_semantic_controls # False — no AST pass yet
row.dependency_graph_controls # True — relative imports are resolved
The matrix is content-addressed (matrix_digest) and reachable via submodule
import (rigor_foundry.polyglot_capability_matrix).