Skip to content

Latest commit

 

History

History
67 lines (51 loc) · 1.99 KB

File metadata and controls

67 lines (51 loc) · 1.99 KB

Architecture

ripr is one published package with strong internal module seams.

CLI / LSP / CI
  -> app
     -> analysis engine
     -> domain
  -> output adapters

Core modules

  • domain: probe, RIPR evidence, oracle strength, exposure classification.
  • app: use-case orchestration and public library API.
  • analysis: diff loading, syntax indexing, probe generation, classification.
  • output: human, JSON, and GitHub annotation rendering.
  • cli: command-line entrypoint.
  • lsp: experimental tower-lsp-server sidecar entrypoint.

Analysis scope

The analysis engine selects Rust files according to mode before building its syntax-first index:

  • instant: changed Rust files only.
  • draft / fast: packages touched by the diff.
  • deep / ready: all Rust files in the workspace.

This keeps live feedback narrow while preserving an explicit path to wider manual or CI scans.

Design rules

  • Static objects are Probes, not mutants.
  • Static output never says killed or survived.
  • Unknowns are first-class outcomes.
  • Findings must carry evidence and a recommended next step.
  • The first release stays syntax-first. Semantic enrichment comes later.
  • Behavior changes should preserve a spec-test-code trail so future humans and agents can recover intent from repository artifacts.
  • Implementation modules should keep a single product responsibility: parsing, fact extraction, probe generation, classification, orchestration, or rendering.

Mechanical Guards

Run:

cargo xtask check-workspace-shape
cargo xtask check-architecture
cargo xtask check-public-api

These checks use policy metadata in policy/workspace_shape.txt, policy/architecture.txt, and policy/public_api.txt to preserve the one-package public surface and internal module boundaries.

See also: