Code Map¶
This document provides a detailed mapping of important files, modules, and their responsibilities in the Assay codebase.
File Structure Overview¶
assay/ # Version 2.18.0 (post-RFC-003)
├── crates/ # Rust crates
│ ├── assay-core/ # Core evaluation engine
│ ├── assay-cli/ # CLI interface
│ │ └── src/cli/commands/
│ │ ├── evidence/ # Evidence subcommands (lint, diff, explore, push, pull, list)
│ │ ├── tool/ # Tool signing (keygen, sign, verify)
│ │ └── policy/ # Policy subcommands (fmt, validate, migrate)
│ ├── assay-metrics/ # Standard metrics
│ ├── assay-mcp-server/ # MCP server
│ ├── assay-monitor/ # Runtime monitoring
│ ├── assay-policy/ # Policy compilation
│ ├── assay-evidence/ # Evidence management (CloudEvents, JCS, bundles)
│ ├── assay-registry/ # Pack Registry client
│ ├── assay-common/ # Shared types
│ ├── assay-ebpf/ # eBPF programs
│ └── assay-sim/ # Attack simulation
├── assay-python-sdk/ # Python SDK
├── assay-action/ # GitHub Action implementation (action.yml)
├── docs/ # Documentation
│ ├── architecture/ # ADRs and architecture docs
│ └── AIcontext/ # This directory
├── examples/ # Example configs and traces
├── tests/ # Integration tests
└── .github/workflows/ # CI/CD workflows
## GitHub Action
**Repository:** https://github.com/Rul1an/assay/tree/main/assay-action
The GitHub Action lives in this monorepo under `assay-action/` and is referenced from workflows as:
**Usage:**
```yaml
- uses: Rul1an/assay/assay-action@v2
Note: The assay-action/action.yml file in this repository is the source action definition.
Core Crate (assay-core)¶
Entry Point¶
src/lib.rs: Public API exports, module declarations
Engine Module (src/engine/)¶
runner.rs:Runnerstruct: Central orchestratorrun_suite(): Parallel test executionrun_test_with_policy(): Retry logic, quarantine, error policiesrun_test_once(): Single test execution with caching
Storage Module (src/storage/)¶
store.rs:Storestruct: SQLite database wrappercreate_run(),insert_result_embedded(),get_last_passing_by_fingerprint()schema.rs: Database schema definitionsrows.rs: Row type definitionsjudge_cache.rs: Judge result caching
Trace Module (src/trace/)¶
ingest.rs: JSONL trace ingestion into databaseprecompute.rs: Pre-compute embeddings and judge resultsverify.rs: Trace schema validationupgrader.rs: Trace version migrationotel_ingest.rs: OpenTelemetry trace ingestionschema.rs: Trace schema definitionstruncation.rs: Trace truncation logic
MCP Module (src/mcp/)¶
mod.rs: Module exportsproxy.rs:McpProxy- Intercepts and validates MCP tool callspolicy.rs:McpPolicy- Policy wrapper withtool_pinsfor integritymapper_v2.rs: Maps MCP tool calls to policy checksjsonrpc.rs: JSON-RPC parsingparser.rs: MCP message parsingtypes.rs: MCP type definitionsaudit.rs: Audit loggingidentity.rs: Tool identity management (Phase 9) -ToolIdentity, metadata hashing, pinningruntime_features.rs: Runtime feature flagsjcs.rs: JCS canonicalization (RFC 8785) for tool signingsigning.rs: Ed25519 tool signing with DSSE PAE encodingtrust_policy.rs: Trust policy loading and key_id matching
Report Module (src/report/)¶
console.rs: Console output formatter;print_run_footer(seeds, judge_metrics)— printsSeeds: seed_version=1 order_seed=… judge_seed=…and judge metrics line (PR #159)summary.rs:Summarywithseeds: Seeds,judge_metrics: Option<JudgeMetrics>;Seeds(order_seed, judge_seed as string|null via serde_seed);with_seeds();write_summary()json.rs: JSON output formatterjunit.rs: JUnit XML output formattersarif.rs: SARIF output (write_sarif, write_sarif_with_limit); deterministic truncation, runs[0].properties.assay when truncated (PR #160)
Providers Module (src/providers/)¶
llm/mod.rs: LLM client trait and implementationsopenai.rs: OpenAI API clientfake.rs: Mock LLM client for testingembedder/mod.rs: Embedder trait and implementationsopenai.rs: OpenAI embeddings clientfake.rs: Mock embeddertrace.rs: Trace replay clientstrict.rs: Strict mode wrappers
Policy Engine (src/policy_engine.rs)¶
- Policy parsing and validation
- Policy evaluation logic
- Constraint checking
Metrics API (src/metrics_api.rs)¶
Metrictrait definition- Used by
assay-metricsfor implementations
Replay Bundle Module (src/replay/)¶
mod.rs: Module exports, public APImanifest.rs:ReplayManifest(schema v1),ReplaySeeds,ReplayCoverage,ScrubPolicy,ToolchainMeta,RunnerMeta,FileManifestEntrybundle.rs:write_bundle_tar_gz()(deterministic .tar.gz),bundle_digest()(SHA256),validate_entry_path()(fail-closed path validation),build_file_manifest()toolchain.rs:capture_toolchain()for rustc/cargo metadata
Other Key Modules¶
config.rs: Configuration loading and resolutionmodel.rs: Core data models (EvalConfig, TestCase, etc.)cache/: VCR-style cachingbaseline/: Baseline regression detectionquarantine.rs: Flaky test quarantinejudge/: LLM-as-judge for semantic metricsagent_assertions/: Tool call sequence assertionsexplain.rs: Violation explanationcoverage.rs: Coverage calculationdoctor/: Diagnostic toolsvalidate.rs: Stateless validationdiscovery/: Auto-discovery of configs and MCP serverskill_switch/: Process termination on violations
CLI Crate (assay-cli)¶
Entry Point¶
src/main.rs:- CLI argument parsing
- Calls
dispatch()to route commands - Exit code handling
Command Dispatch (src/cli/commands/mod.rs)¶
dispatch(): Routes commands to handlersbuild_runner(): ConstructsRunnerwith all dependencieswrite_extended_run_json(): Writes run.json with exit_code, reason_code, reason_code_version, seed_version, order_seed, judge_seed (string|null), judge_metrics (PR #159), sarif.omitted when truncated (PR #160)write_run_json_minimal(): Early-exit run.json (seeds null when unknown)print_run_footer(seeds, judge_metrics): Calls assay_core report::console; prints Seeds line and judge metrics to stderr- Command handlers for each subcommand (cmd_run, cmd_ci set summary.with_seeds and call print_run_footer)
Command Handlers (src/cli/commands/)¶
run.rs:assay runcommandvalidate.rs:assay validatecommandinit.rs:assay initcommandimport.rs:assay importcommandtrace.rs:assay tracecommandgenerate/mod.rs:assay generateorchestrator (RFC-003 G6)generate/args.rs:GenerateArgsand validation (G2)generate/model.rs:Policy,Meta,Section,EntryDTOs (G2)generate/ingest.rs:read_events,aggregate,Stats(G3)generate/profile.rs: Profile classification (Wilson scoring) (G4)generate/diff.rs: Policy diffing and reporting (G5)record.rs:assay recordcommandmigrate.rs:assay migratecommanddoctor.rs:assay doctorcommandexplain.rs:assay explaincommandcoverage.rs:assay coveragecommandbaseline.rs:assay baselinecommandci.rs:assay cicommandinit_ci.rs:assay init-cicommandmcp.rs:assay mcpcommandmonitor.rs:assay monitorcommandsandbox.rs:assay sandboxcommanddiscover.rs:assay discovercommandkill.rs:assay killcommandquarantine.rs:assay quarantinecommandcalibrate.rs:assay calibratecommandprofile.rs:assay profilecommandevidence/mod.rs:assay evidencecommand with subcommands:evidence/lint.rs:assay evidence lint- SARIF output, rule registryevidence/diff.rs:assay evidence diff- Semantic bundle comparisonevidence/explore.rs:assay evidence explore- TUI viewer (feature-gated)evidence/mapping.rs: Profile to EvidenceEvent mappingevidence/push.rs:assay evidence push- Upload to BYOS storageevidence/pull.rs:assay evidence pull- Download from BYOS storageevidence/list.rs:assay evidence list- List bundles in storagetool/mod.rs:assay toolcommand with subcommands:tool/keygen.rs:assay tool keygen- Generate ed25519 keypairtool/sign.rs:assay tool sign- Sign tool definitiontool/verify.rs:assay tool verify- Verify signaturedemo.rs:assay democommandfix.rs:assay fixcommand (agentic policy fixing)sim.rs:assay simcommandsetup.rs:assay setupcommandpolicy.rs:assay policycommand
CLI Args (src/cli/args.rs)¶
Clistruct: Top-level CLI structureCommandenum: All subcommands- Argument structs for each command
Backend (src/backend.rs)¶
- Backend configuration and setup
Metrics Crate (assay-metrics)¶
Entry Point¶
src/lib.rs:default_metrics(): Factory function- Metric implementations
Metric Implementations (src/)¶
must_contain.rs:MustContainmetricmust_not_contain.rs:MustNotContainmetricregex_match.rs:RegexMatchmetricjson_schema.rs:JsonSchemametricsemantic.rs:SemanticSimilarity,Faithfulness,Relevancemetricsargs_valid.rs:ArgsValidmetricsequence_valid.rs:SequenceValidmetrictool_blocklist.rs:ToolBlocklistmetricusage.rs:Usagemetric
MCP Server Crate (assay-mcp-server)¶
Entry Point¶
src/main.rs: MCP server binary entry point
Server Implementation (src/)¶
- JSON-RPC server over stdio
- Policy enforcement proxy
- Tool call auditing
Monitor Crate (assay-monitor)¶
Entry Point¶
src/lib.rs: Monitor library exports
Implementation (src/)¶
- eBPF program loading
- Event stream handling
- Tier 1 policy enforcement
Policy Crate (assay-policy)¶
Entry Point¶
src/lib.rs: Policy compilation exports
Implementation (src/)¶
- Policy parsing
- Tier ½ compilation
CompiledPolicygeneration
Python SDK (assay-python-sdk)¶
Rust Bindings (src/lib.rs)¶
- PyO3 bindings to
assay-core - Python module exports
Python Module (python/assay/)¶
__init__.py: Module initialization,validate()functionclient.py:AssayClientclasscoverage.py:Coverageclassexplain.py:Explainerclasspytest_plugin.py: Pytest integration_native.pyi: Type stubs for native bindings
Configuration Files¶
Workspace Config (Cargo.toml)¶
- Workspace members
- Shared dependencies
- Version management
Crate Configs (crates/*/Cargo.toml)¶
- Crate-specific dependencies
- Feature flags
- Build configuration
Documentation¶
User Documentation (docs/)¶
getting-started/: Installation, quickstart, first testconcepts/: Core concepts (traces, policies, metrics, replay)guides/: User guides and tutorialsreference/: CLI reference, config referenceuse-cases/: Use case examplesarchitecture/: Architecture documentation and ADRsmcp/: MCP integration documentationpython-sdk/: Python SDK documentation
AI Context (docs/AIcontext/)¶
- This directory: AI-focused documentation
- Codebase overview, user flows, interdependencies, etc.
Archived Documentation (docs/archive/)¶
- Legacy review materials and plans, superseded by active RFCs
- Old ADR drafts from pre-consolidation
Test Files¶
Integration Tests (tests/)¶
e2e/: End-to-end CLI testsfixtures/: Test fixtures and golden filesintegration/: Integration testssecurity_audit/: Security testsmcp_*.sh: MCP integration tests
Unit Tests (crates/*/tests/)¶
- Crate-specific unit tests
- Golden file tests
- Smoke tests
CI/CD¶
GitHub Workflows (.github/workflows/)¶
ci.yml: Main CI pipelineparity.yml: Parity tests (batch vs streaming)assay-security.yml: Security policy validationkernel-matrix.yml: Kernel version matrix testsrelease.yml: Release workflowdocs.yml: Documentation deploymentaction-v2-test.yml: GitHub Action v2 tests
GitHub Action (Separate Repo)¶
- Repository: https://github.com/Rul1an/assay/tree/main/assay-action
- Marketplace: https://github.com/marketplace/actions/assay-ai-agent-security
- Usage:
Rul1an/assay/assay-action@v2
Key Data Structures¶
EvalConfig (assay-core/src/model.rs)¶
- Complete evaluation configuration
- Suite name, tests, model config, settings
TestCase (assay-core/src/model.rs)¶
- Individual test case definition
- Test ID, prompt, expected, metrics
TestResultRow (assay-core/src/model.rs)¶
- Test execution result
- Status, score, details, fingerprint
RunArtifacts (assay-core/src/report/mod.rs)¶
- Complete run results
- Run ID, suite, results list
Policy (assay-core/src/policy_engine.rs)¶
- Parsed policy structure
- Tool constraints, sequences, blocklists
CompiledPolicy (assay-policy/src/)¶
- Compiled policy with Tier ½ split
- Ready for runtime enforcement
Important Constants¶
Exit Codes (assay-cli/src/exit_codes.rs, commands/mod.rs)¶
EXIT_SUCCESS = 0: SuccessEXIT_TEST_FAILURE = 1: Test failure; E_JUDGE_UNCERTAIN when judge abstains (PR #159)EXIT_CONFIG_ERROR = 2: Configuration errorEXIT_INFRA_ERROR = 3: Judge unavailable, rate limit, timeout (E_JUDGE_UNAVAILABLE)EXIT_WOULD_BLOCK = 4: Sandbox/policy would block execution
Error Codes (assay-core/src/errors/diagnostic.rs)¶
- Diagnostic error codes for user-friendly messages
File Naming Conventions¶
- Modules:
mod.rsor{name}.rs - Tests:
{name}_test.rsor intests/directory - Examples:
examples/{name}.rs - Configs:
{name}.yamlor{name}.toml - Traces:
{name}.jsonl
Module Organization Principles¶
- Separation of Concerns: Each module has a single responsibility
- Trait-Based Design: Interfaces defined via traits (Metric, LlmClient, Embedder)
- Workspace Structure: Related functionality grouped in crates
- Feature Flags: Optional functionality behind feature gates
- Platform-Specific: Linux-only code in
#[cfg(target_os = "linux")]blocks
Related Documentation¶
- Codebase Overview - High-level architecture
- Interdependencies - How files/modules connect
- Entry Points - Where to start when adding features