Applies `ruff format` to the accumulated formatting debt on this branch.
Formatting-only — no behavioral changes. Required for CI/lint's format
gate (`nox -s format -- --check`), which the branch was failing on 288
tracked files that drifted from ruff's canonical style.
In-progress WIP files are intentionally excluded so this commit stays a
clean formatting-only diff.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Lays the foundation for the planned controller + DB-owned PR state
machine rewrite (see .drew/controller_state_machine.md).
Phase 0a — Pydantic V1 worker I/O contracts (tools/controller/contracts/):
- v1.py: ImplementerInputV1/OutputV1, ReviewerInputV1/OutputV1,
EstimatorOutputV1, IssueImplementerOutputV1,
ConflictResolverInputV1/OutputV1, SummarizerInputV1/OutputV1.
Plus CISummary / CIFailure / GateResult / FailedAssertion /
FileLocation. All models use extra="forbid" + required
output_version Literal discriminator (no defaults).
- parse.py: strict_parse() + strict_parse_with_retry() helpers.
Corrective prompt template quotes the Pydantic ValidationError +
the JSON schema. TTL guard skips retry when remaining time too
short. Defense-in-depth around the response-builder MCPs that
arrive in Phase 1a.
Phase 0b — Static CI parser-coverage discovery:
- NOX_SESSION_TO_PARSER map in tools/controller/ci_summary_parsers/.
Derived from .forgejo/workflows/*.yml + noxfile.py. Covers ruff,
pyright, behave, robot_framework, slipcover, vulture, radon,
bandit, semgrep, build. Cron-only sessions (benchmark,
benchmark_regression) are in NOX_SESSIONS_SKIP_COVERAGE.
- scripts/enumerate-ci-gates.py: reads the workflow YAML, joins
against the map, exits non-zero on coverage gaps. Wired into
tests so the actual .forgejo/ is regression-guarded.
63 new tests; full auto_agents suite still passes (2424).