2. Constraints
Living document. What the design must work within; the decisions that follow from these are the ADRs. Open questions are marked [OPEN] inline.
2.1 Technical constraints
| Constraint | Source |
|---|---|
| Python ≥ 3.11, standard library only for the driver | ADR-0008 |
Distributed as a Copier template; instances update with copier update |
ADR-0007 |
Models are reached only through their CLIs (claude, codex, optionally gemini) as subprocesses |
families.py |
Tracker and PR operations go through gh; git operations through git |
doctor.py checks both |
Sandboxed leaves need an OS sandbox (bubblewrap) and memory caps via systemd-run on Linux |
doctor.py, #551 |
A rendered instance's main may be protected; the driver must not need to push to it |
pdca record pr mode |
2.2 Organizational constraints
- One maintainer signs off every bundle; their attention is the scarce resource.
- Apache-2.0 with DCO sign-off on every commit (ADR-0002).
- The harness is developed with itself through the pdca-pdca instance, so a broken driver blocks its own fix. Changes therefore land as small strangler steps (ADR-0016).
2.3 Conventions
- Bundle state lives in files under
results/issue_<id>/(ADR-0003). - Every claim in a brief, review or design doc cites
path:lineon a stated commit. - One logical change per PR; every change ships with a test or a stated reason why none is
possible (
CONTRIBUTING.md). - Diagrams are Mermaid source; no Obsidian
[[wikilinks]]indocs/(checked bydocs/publishing/tools/lint_docs.py).