# AGENTS.md ## Read first - Read `PRD.md`, `CONTEXT.md`, and applicable ADRs before changing behavior. - Keep the Rust harness synchronous and the Ghidra worker capability-sandboxed. - Treat JSON schemas, error codes, ordering, and exit statuses as public API. ## Change rules - Add a regression test for every bug fix. - Never change golden files or schemas implicitly. - Keep the Rust operation registry, Java dispatch, schemas, and goldens in exact parity. - Preserve strict stdout/stderr framing. - Preserve the worker's no-network and no-default-data-egress boundary. - Do not add `unsafe`, an async runtime, database, daemon, or dependency without an accepted design change. - Do not weaken bounds, validation, sandboxing, or atomic store behavior. ## Required checks - `cargo fmt --check` - `cargo clippy --all-targets --all-features -- -D warnings` - `cargo test --all-targets` - `cargo deny check` - `nix flake check` ## Source control - Use Jujutsu for normal local change management. - Use `jj status`, `jj diff`, `jj log`, `jj describe`, and `jj new`. - Push Forgejo bookmarks through `jj git push`. - Keep changes focused and preserve unrelated user work. - Use direct Git commands only for interop or recovery that Jujutsu cannot perform. - Never run `git clean -xdf`; it can delete colocated `.jj/` metadata.