docs(dev): add lean agent guidance and prototype hardening research

This commit is contained in:
0xrsydn 2026-09-22 12:45:46 +07:00
commit 62693618db
6 changed files with 518 additions and 0 deletions

44
AGENTS.md Normal file
View file

@ -0,0 +1,44 @@
# Development
## Code map
- `facts.py`: pure game-state parsing and arithmetic.
- `brain.py`: decision policy; returns one `Decision` per observation.
- `run.py`: observedecideact loop, captures, and session attribution.
- `sts2.py`: local game HTTP client. `jev.py`: TypeSafe model client and gates.
- `migrate.py`: dataset migration and integrity checks.
- `CONTEXT.md`: domain terms. `docs/DATASET.md`: dataset schema and limits.
- `docs/research/11-prototype-hardening.md`: audited findings and the proposed development order.
- Treat historical claims in `docs/DESIGN.md` as context; verify against current code.
## Checks
Use Python 3.10+ from the repository root. Core Python code uses the standard library.
```sh
python3 test_facts.py && python3 test_brain.py && python3 test_run.py
python3 migrate.py --check-only
bash -n eval_batch.sh ab_card_skip.sh
```
Tests are executable scripts, not unittest/pytest suites. They need no model or game connection.
Some checks read local captures and game history when available.
Prefer integration/end-to-end checks; keep only essential regression tests and use temporary isolated probes for unit-level edge cases.
## Invariants
- Execute one game action, then read a fresh observation. Card indices can change after each action.
- Compute arithmetic and legality in code, not in Jev. Confidence does not prove correctness.
- Keep deterministic fallbacks usable with `client=None`. Test model paths with stubs.
- Preserve session/step attribution. Run outcomes are not per-decision correctness labels.
- Split evaluation data by run, not by decision row.
## Safety and scope
- Default to offline tests. Ask before live game actions, model calls, or evaluation batches.
- `run.py --dry-run` sends no action POSTs or deck-cache writes; state reads, model calls, and logs still run.
- Never print or commit credentials. Do not read secret files for development checks.
- Do not rebuild `dataset/`, change captures, or edit `vendor/` unless the task requires it.
- `migrate.py --verify` rebuilds data; use `--check-only` for routine verification.
- Keep code simple and lean. Use `docs/` as the detailed reference for humans and agents.
- Keep changes focused. Prefer `jj status` and `jj diff`; do not create commits unless asked.
## Pi
Project prompts live in `.pi/prompts/`: `/sts2-check` and `/sts2-review`.
They provide instructions, not a sandbox or permission enforcement.