# AGENTS

## Purpose

This repository is developed through agent-assisted workflow. Follow the repository documents first, then implement code.

## Source of truth

Use the documents in this order when there is ambiguity:

1. `docs/architecture.md`
2. `docs/module-decomposition.md`
3. `docs/data-model.md`
4. `docs/database-schema.md`
5. `docs/admin-api.md`
6. `docs/mcp-interface.md`
7. `docs/rust-design.md`
8. `docs/development-rules.md`
9. `docs/rust-code-rules.md`
10. `docs/implementation-plan.md`

If code and docs diverge, update docs first or together with code.

## Workflow

- Follow `Red -> Green -> Refactor -> Commit`.
- Every feature uses its own branch: `feat/<feature-name>`.
- Commits must be atomic.
- Push periodically after one or more logically complete `RGR + commit` cycles.
- Do not wait for the whole feature to be finished before pushing.
- Delete merged feature branches both locally and in `origin`.

## Language rules

- Commit messages must be in English.
- Code identifiers must be in English.
- Code comments are avoided by default.
- If a code comment is truly unavoidable, it must be in English.

## Code rules

- Prefer self-documenting code.
- Keep domain logic separate from storage, transport, and orchestration.
- Do not create god-structs or giant services.
- Keep `pub` surface minimal.
- Avoid `unwrap`, `expect`, `todo`, `dbg`, and `panic` in production code.
- `unsafe` is forbidden by default.

## Commands

Use the canonical commands from `justfile`:

- `just fmt`
- `just fmt-check`
- `just check`
- `just clippy`
- `just test`
- `just verify`

## Current execution mode

- Build the Rust workspace first.
- Keep the UI as a separate app outside the Cargo workspace.
- Implement one vertical slice at a time.

## Task tracking

- Check `TASKS.md` before starting a new piece of work.
- Update `TASKS.md` when a task starts, finishes, or gets blocked.
