File size: 3,895 Bytes
5dd1bb4 9e64e71 5dd1bb4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | # 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 -->
|