Project Map (AGENTS.md)
This file is a navigation map for agents. Durable knowledge lives in docs/.
Start Here
- Docs index: docs/README.md
- Architecture: docs/ARCHITECTURE.md
- Operations: docs/RUNBOOK.md
- Test:
uv run pytest tests/ -v
System-of-Record Documents
| Category | Location | Type | Purpose |
|---|---|---|---|
| Guides | docs/guides/README.md | how-to | Practical procedures |
| Design docs | docs/design-docs/index.md | explanation | Feature design, ADRs |
| References | docs/references/README.md | reference | External docs |
Project Structure
This project follows the OpenEnv openenv init convention.
The project root is the environment package β no envs/ nesting.
sql-env/ # project root = environment package
βββ __init__.py # exports SQLAction, SQLObservation, SQLEnvClient
βββ models.py # Pydantic models (action w/ tokens, observation w/ messages, state)
βββ client.py # SQLEnvClient(EnvClient) β WebSocket client w/ tensor serialization
βββ conftest.py # pytest config (ignores __init__.py collection)
βββ openenv.yaml # OpenEnv manifest
βββ pyproject.toml # deps + package config (setuptools, torch, transformers)
βββ .python-version # pins Python 3.12
βββ data/
β βββ databases/
β β βββ models.py # SQLAlchemy ORM models (student_assessment)
β βββ questions/
β βββ student_assessment.json # 30+ Spider Q&A pairs with gold SQL
βββ server/
β βββ app.py # FastAPI app (tokenizer factory, MockTokenizer fallback)
β βββ sql_environment.py # SQLEnvironment(Environment) β core logic + Ollama
β βββ test_sql_env.py # MockTokenizer (char-code encoding for dev/test)
β βββ reward.py # Reward computation (stub β Phase 3)
β βββ verifier.py # Answer comparison (stub β Phase 3)
β βββ Dockerfile
β βββ requirements.txt
β βββ install_deps.sh # Docker setup script
βββ scripts/
β βββ download_spider_data.py # Download Spider questions from HuggingFace
β βββ generate_models_from_schema.py # Auto-generate SQLAlchemy models
βββ tests/
β βββ test_smoke.py # 21 tests (models, env, actions, client, schema)
βββ docs/ # Design docs, architecture
βββ AGENTS.md
Guardrails
- Testing: Use the package manager (
uv run pytest ...), never barepytest. - Git safety: No destructive commands (
reset --hard,push --force) unless explicit. - Secrets: Never commit
.envor credentials.
Quick Commands
| Task | Command |
|---|---|
| Install | uv sync |
| Lint | uv run ruff check --fix . |
| Format | uv run ruff format . |
| Test | uv run pytest tests/ -v |
| Run server | uv run uvicorn server.app:app --reload |
| Validate env | uv run openenv validate --verbose |
| Build Docker | uv run openenv build |
| Push to HF | uv run openenv push |
Development Workflow
- Run via package manager (
uv run ...), never bare commands. - List existing files before creating new ones (avoid naming drift).
- Prefer vertical slices over horizontal refactors.
- No premature abstraction until multiple use-cases require it.