# AGENTS.md
# Guidance for AI coding agents (Codex/ChatGPT) working in this repository.
# Follow these instructions as higher priority than general preferences.

## Operating principles
- Optimize for correctness, safety, and maintainability over cleverness.
- Keep changes small and reviewable. Prefer multiple small commits/PRs over one large refactor.
- Preserve existing style, architecture, and public APIs unless explicitly asked to change them.

## Dependencies (STRICT)
- Do NOT add new external dependencies (runtime or dev) without explicit approval.
  - This includes package manager installs, new requirements, new npm/pip packages, new system packages, new containers/images.
- Prefer using the standard library or existing dependencies already in the repo.
- If you believe a new dependency is truly necessary:
  1) explain why,
  2) propose at least one no-new-deps alternative,
  3) estimate blast radius and maintenance risk,
  4) STOP and ask for approval before adding it.

## Tests and verification (REQUIRED)
- For any bug fix: add/adjust a unit test that reproduces the issue and prevents regressions.
- For any new feature: add unit tests for the “happy path” and at least 1–2 edge cases.
- Prefer unit tests over integration tests unless the change is inherently integration-level.
- Run the smallest relevant test command(s) after changes:
  - First: targeted tests for the changed modules.
  - Then (if time/CI expectations): full unit test suite.
- If tests cannot be run in the current environment, clearly state what you would run and why.

## Commands and environment safety
- Before running commands that could modify the environment or take a long time (e.g., installs, migrations, DB changes),
  explain what you intend to run and ask for approval.
- Avoid destructive operations (deleting files, dropping DBs, resetting environments) unless explicitly requested.
- Never print, log, or exfiltrate secrets. If you detect a likely secret, redact it and point it out.

## Implementation approach
- Start by understanding existing patterns:
  - find similar code paths,
  - follow established naming and folder conventions,
  - reuse existing utilities/helpers.
- When making non-trivial changes:
  1) propose a short plan (3–7 bullets),
  2) list the files you expect to touch,
  3) call out risks/unknowns,
  4) then proceed.

## Coding standards
- Prefer clear, boring code over abstractions.
- Add types/annotations where the repo uses them.
- Add docstrings/comments only where they clarify intent, invariants, or tricky logic.
- Handle errors explicitly; don’t swallow exceptions.

## Documentation and changelog
- Update relevant docs when behavior changes (README, module docs, inline docs).
- Summarize changes at the end:
  - What changed (bullets),
  - Why,
  - How to test (exact commands),
  - Any follow-ups/todos.

## When uncertain
- Ask a direct question or present two options with tradeoffs.
- Do not make breaking changes based on guesswork.

