No description
  • Rust 86.8%
  • Python 13%
  • Shell 0.2%
Find a file
trvon 40bea78f9a
Some checks failed
build / build-linux (push) Has been cancelled
build / build-macos (push) Has been cancelled
build / release (push) Has been cancelled
fix(cpp): recover receivers from local initialization
Recover parenthesized object declarations only when their apparent parameters resolve to earlier visible value bindings. Respect recovered scope, alias hiding and prototype shadowing instead of manufacturing receiver types.

Preserve heuristic confidence and source provenance. Add positive and negative regressions plus a three-repeat labeled initialization fixture to the quality gate.

Validation: cargo fmt --check and ./scripts/quality-gate.sh passed.
2026-10-11 18:19:08 -06:00
.forgejo/workflows ci: use Forgejo artifact actions; disable unsupported cache 2026-08-30 10:34:22 -06:00
.github/workflows chore: initial import of brick (evidence-aware code structure visualization) 2026-08-30 09:17:34 -06:00
docs Merge main into fix/review-followups: move the Dart import note into docs/resolution.md 2026-09-24 21:14:26 -06:00
scripts fix(cpp): recover receivers from local initialization 2026-10-11 18:19:08 -06:00
skills/brick-sast docs: define architecture evidence and release contracts 2026-09-01 18:27:23 -06:00
src fix(cpp): recover receivers from local initialization 2026-10-11 18:19:08 -06:00
tests fix(cpp): recover receivers from local initialization 2026-10-11 18:19:08 -06:00
.gitignore chore: ignore local Pi harness state 2026-09-01 18:27:37 -06:00
AGENTS.md chore: initial import of brick (evidence-aware code structure visualization) 2026-08-30 09:17:34 -06:00
Cargo.lock fix(c): parse .c files with the C grammar 2026-09-24 20:14:21 -06:00
Cargo.toml fix(c): parse .c files with the C grammar 2026-09-24 20:14:21 -06:00
README.md fix(dart): honour import prefixes, show/hide and one level of export 2026-09-24 21:11:48 -06:00
rust-toolchain.toml chore: initial import of brick (evidence-aware code structure visualization) 2026-08-30 09:17:34 -06:00

Brick

Brick turns a repository into an evidence-aware map of its structure. Directories become compounds, files become rooms, classes and functions become elements, and edges show calls, imports and inheritance. The same model is written as versioned JSON for other tools and rendered as an interactive HTML graph.

Every edge keeps its evidence: lane, backend, confidence and source location. Declarations are Syntactic; call, import and inheritance targets are Heuristic; findings from Fold or p4c are Imported (Fold's own proofs keep their Symbolic lane). Nothing is promoted to a stronger lane than its evidence supports, and every unresolved call records why.

Languages

Language Frontend
Rust, Dart, C (.c), C++ (with headers), JavaScript/JSX, TypeScript/TSX pinned Tree-sitter grammars
Python, Swift lexical preview
P4_16 lexical preview; optional Tree-sitter pilot

How names resolve in each, and where they do not, is in docs/resolution.md. Read the graph with its reported call-site coverage in mind: on a large C++ repository only a minority of call sites resolve.

Quick start

cargo run -- build ../fold --json fold.brick.json --html fold.brick.html
cargo run -- build ../yams --exclude site --exclude build \
  --json yams.brick.json --html yams.brick.html

Open the HTML in a browser. build prints diagnostic counts, and a scan that finds no supported source says so.

Commands

Command What it does
brick build <repo> Scan a repository; write JSON and HTML. Can layer Fold/SARIF or p4c findings onto the graph.
brick render <model.json> Render an existing model to HTML.
brick check <model.json> Gate on the structural score, cycles, a baseline diff, or a dependency policy. Metrics are recomputed from the graph, never trusted from the file.
brick mcp <model.json> Serve read-only MCP queries: impact, cycles, bridges, evidence, and caller status (is a function called, unknown, or unreferenced).
brick setup Report which optional frontends this binary can initialize.

Full usage, including the import contracts: docs/usage.md.

Limits

Brick reads syntax, not compiler output: no type checking, build configuration, macro expansion, overload resolution or dynamic dispatch. The structural score is an experimental composite, not proof of correctness, maintainability or security; use the component metrics and evidence, and do not rank teams or repositories by the score alone.

Documentation