New support should plug into registries and emit the same common IR. Existing rules should not know which parser, framework, or ORM produced a fact.
- Add a stable language ID to config and IR.
- Choose a Rust-native parser or tree-sitter grammar.
- Add a
rulepath_lang_*crate. - Emit language facts, not findings.
- Support Rulepath suppressions.
- Provide service tracing hooks.
- Register the adapter.
- Add safe and unsafe fixtures.
Framework adapters discover routes, request-controlled sources, middleware, dependencies, and framework-level auth evidence.
Each adapter should emit route facts with method, path, handler, source span, request sources, route params, middleware, dependencies, and auth evidence.
Data-layer adapters extract resource operations and query or mutation sinks.
They must identify resource names, operation types, filters, scope fields, mutation fields, transaction evidence, and idempotency evidence where relevant.
Rules evaluate IR and resolved config. Each rule needs:
- Stable ID.
- High-confidence gate.
- Explanation text.
- Safe and unsafe fixtures.
- JSON and SARIF output coverage.