Nothing is "done" until the borromeo gate is green. We never weaken or skip a check to pass; a failure becomes a new check. The verifier is external to the generator.
/path/to/borromeo/verify.sh # build · hygiene · format · lint · typecheck · test+coverage · securityCI mirrors this gate on every push/PR (.github/workflows/ci.yml).
git clone https://github.com/3MagicLabs/Grandplan && cd Grandplan
python -m venv .venv && . .venv/bin/activate
pip install -e ".[llm,embeddings,mcp]" # core + optional extras; add ,windows,gui on Windows
pytest -q # sanity-check the suite (Linux/WSL2)Please also read SECURITY.md (how to report vulnerabilities — privately, never a public issue) and CODE_OF_CONDUCT.md (community expectations).
- Work from SPEC.md. Reference the relevant user story (
US-n) in commits/PRs. - Write the test first (RED) — especially the lossless round-trip test for any code touching originals.
- Implement minimally (GREEN), then refactor. Keep coverage from regressing (borromeo ratchets it).
- Keep the core free of Windows/LLM/UI dependencies — depend only on ports; provide fakes for tests.
mainis protected by the gate. Do feature work on a branch:feat/<slug>,fix/<slug>,docs/<slug>.- Merge only when the gate is green. With borromeo:
borromeo/merge.sh [base]runs the gate, then merges if green. - Conventional commits:
feat: …,fix: …,refactor: …,docs: …,test: …,chore: …,perf: …,ci: ….
- The core is developed and gated in Linux/WSL2 (Python 3.12 + ruff, mypy, pytest, bandit).
- The Windows adapters (global-hotkey capture, local LLM runtime, Obsidian vault writing) are run and integration-tested on Windows — they can't run inside headless WSL2.
- Reproducible test image:
docker build -t grandplan-dev . && docker run --rm grandplan-dev.
- New external dependencies sit behind a port (interface) so they're swappable and testable.
- Originals are append-only and never mutated; derived content is always separable from the original.
- Document non-trivial decisions as an ADR in
docs/adr/.