idea198-civicswarm-privacy-.../AGENTS.md

35 lines
1.3 KiB
Markdown

# CivicSwarm Agent Guide
## Architecture
- `civicswarm/db.py` defines the SQLite schema and engine setup.
- `civicswarm/analysis.py` contains TF-IDF clustering, extractive summarization, language detection, and lightweight sentiment heuristics.
- `civicswarm/service.py` is the domain layer for proposals, comments, routing, privacy-preserving preference aggregation, the deliberation ledger, dashboard metrics, and civic brief export.
- `civicswarm/api.py` exposes the service through FastAPI.
## Tech Stack
- Python 3.11
- FastAPI for the HTTP surface
- SQLAlchemy Core with SQLite for persistence
- scikit-learn and numpy for topic clustering and routing similarity
- langdetect for best-effort multilingual handling
## Working Rules
- Keep resident identity pseudonymous. Use `resident_key` values only; do not add raw identity storage.
- Prefer the smallest correct change.
- Keep logic deterministic where possible so tests remain stable.
- Add or update tests for every behavior change.
- Do not remove or rewrite unrelated files.
## Testing
- Install dependencies and run the suite: `bash test.sh`
- `test.sh` must succeed with `pytest` and `python3 -m build`.
## Packaging
- Distribution name: `idea198-civicswarm-privacy-preserving`
- README must stay current because it is wired into package metadata.