| # Project Map (AGENTS.md) |
|
|
| This file is a navigation map for agents. Durable knowledge lives in `docs/`. |
|
|
| ## Start Here |
|
|
| - Docs index: [docs/README.md](docs/README.md) |
| - Architecture: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) |
| - Operations: [docs/RUNBOOK.md](docs/RUNBOOK.md) |
| - Test: `uv run pytest tests/ -v` |
|
|
| ## System-of-Record Documents |
|
|
| | Category | Location | Type | Purpose | |
| |----------|----------|------|---------| |
| | Guides | [docs/guides/README.md](docs/guides/README.md) | how-to | Practical procedures | |
| | Design docs | [docs/design-docs/index.md](docs/design-docs/index.md) | explanation | Feature design, ADRs | |
| | References | [docs/references/README.md](docs/references/README.md) | reference | External docs | |
|
|
| ## Project Structure |
|
|
| This project follows the [OpenEnv](https://github.com/meta-pytorch/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 bare `pytest`. |
| - **Git safety:** No destructive commands (`reset --hard`, `push --force`) unless explicit. |
| - **Secrets:** Never commit `.env` or 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. |
|
|
| <!-- GUIDELINES-BEGIN --> |
|
|
| <!-- Managed by: opencode-ctx guidelines apply --packs python,testing,delivery-safety --> |
| <!-- Run the command above to populate this section --> |
|
|
| <!-- GUIDELINES-END --> |
|
|