38 lines
1.3 KiB
Markdown
38 lines
1.3 KiB
Markdown
# 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.
|