Secret-organization-themed mission platform for coursework. Agents complete missions in story arcs using clearance codes, prerequisites, Mission Briefs, and Debriefs. Operators configure missions via SQL seed, and agents sign in with Google OAuth (any account).
| Topic | Location |
|---|---|
| Design overview and reading order | docs/README.md |
| Use cases (build backlog) | docs/design/use-cases.md |
| Agent UI rules + JSON endpoints | docs/design/06-agent-experience.md |
JSON API (/api/clearance, mission submit) |
docs/api.yaml |
| UI mockups (not production JS) | docs/ui/README.md |
| Dev setup, testing, Ruff, deploy | docs/dev.md |
| Operator SQL workflow | docs/design/07-operator-setup.md |
| Mission pack authoring | docs/missions/README.md |
src/radspion/ Application package (includes tools/ CLIs)
src/radspion/sql/ Schema and seeds (mission markdown inlined in SQL)
deploy/ nginx vhost, systemd unit (production)
docs/ Design docs, API outline, UI mockups, mission authoring
database/ SQLite file (gitignored)
tests/ Unit and integration tests
tests/acceptance/ Browser acceptance tests (Playwright; see docs/dev.md)
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt && pip install -e .
create_empty_db --force
makeFor an empty DB: create_empty_db --force, set RADSPION_MISSIONS_ROOT in .env, then seed_storyline PACK. For dev/test with sample agents and es-* missions: create_test_db --force. See 05-testing-storyline.md.
Acceptance tests (browser, optional): after setup, run .venv/bin/playwright install chromium once, then make acceptance. See docs/dev.md.
- Python 3.12+, Flask + Jinja, SQLite 3
- Google OAuth, session-backed JSON for clearance and mission submit
- Ruff (lint/format), pytest + 90% coverage gate; Playwright acceptance tests (
make acceptance)