All notable changes to ralphy-looper will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.7.2 (2026-02-10)
- backend: catch
ConnectionErroronstdin.drain()for fast-exiting subprocesses — fixes flakytest_phase_complete_advances_phaseon py3.11 CI (bec1025) - release: Makefile release targets now use
poetry run git commitinstead of lettingcommit-and-tag-versioncallgit commitdirectly, which failed because pre-commit hooks live in.venv/bin/(21bce3b)
- rich 13.9.4 → 14.3.2
- pytest-asyncio 0.24.0 → 1.3.0
- pre-commit 3.8.0 → 4.5.1
- deptry 0.22.0 → 0.24.0
- typer 0.21.1 → 0.21.2
- actions/cache v4 → v5
- actions/checkout v4 → v6
- actions/upload-artifact v4 → v6
- actions/setup-python v5 → v6
- markdownlint-cli2-action v19 → v22
0.7.1 (2026-02-10)
0.7.0 (2026-02-10)
- stream-json output, composition-based backends, and multi-agent verification (9ff008b)
0.6.0 (2026-02-09)
- Phase Verification Agents: multi-agent concurrent verification post-phase (ADR-016)
VerificationPortprotocol andVerificationResultfrozen dataclass inralph/ports/verification.py- Consensus logic:
resolve_min_pass()andcheck_consensus()pure functions inralph/ports/consensus.py BackendVerifieradapter that composes aBackendPortto run verification prompts (ralph/adapters/verification/)- Orchestrator verification gate: after
PHASE_COMPLETEorLOOP_COMPLETE, N verifiers run in parallel viaasyncio.gather() - Configurable consensus strategies:
all,majority,anywith explicitmin_passoverride - Feedback loop: on verification failure, re-executes phase with prompt enriched by failing verifier feedback
--skip-verificationCLI flag to bypass verification even when configured- Exit code 6 for verification failure (retries exhausted or abort policy)
LoopPhaseState.VERIFYINGstatus enum member- Per-phase verification overrides:
verify,verification_backends,verification_prompt,verification_consensus,min_pass - Global verification config:
verify_phases,verification_backends,verification_consensus,on_verification_failure,max_verification_retries FakeVerifierandVerificationMothertest mothers- ADR-016: Phase Verification Agents architecture decision record
docs/verification.mddocumentation with D2 architecture diagrams- 110 new tests across all 5 pyramid levels (unit, integration, contract, E2E, smoke) — 272 total
Orchestrator.__init__()accepts optionalverifiersandskip_verificationparameters_run_phase()signal detection now routes bothPHASE_COMPLETEandLOOP_COMPLETEthrough the verification gateYamlConfigLoaderparses and validates verification configuration fields_preflight_checks()validates verification backends exist in registry and prompt files exist- CLI
on_status()callback handlesLoopPhaseState.VERIFYINGstate
0.5.0 (2026-02-09)
- Real-time output streaming: backend stdout is now streamed line-by-line to the terminal during execution via async pipe tee (ADR-015)
--quiet/-qCLI flag to suppress backend output streamingOutputCallbacktype alias inralph/ports/backend.pyfor typed streaming callbackson_outputparameter toBackendPort.execute()andOrchestrator.__init__()format_log_content()standalone function inralph/ports/logging.py- ADR-015: Real-Time Output Streaming via Async Pipe Tee
BaseBackend.execute()replacedprocess.communicate()withasync for line in process.stdoutfor line-by-line streamingFileIterationLoggernow importsformat_log_contentfromralph/ports/logging.pyinstead ofralph.app._mixin(hexagonal violation fix)_OrchestratorMixin._format_log_content()now delegates to the standaloneformat_log_content()function- Updated
docs/usage.md: documented--quietflag, removed "no real-time streaming" known limitation
- Hexagonal architecture violation:
ralph/adapters/logging/file_logger.pyno longer imports fromralph.app._mixin(adapter → app layer dependency removed)
0.4.2 (2026-02-09)
- hardening, polish, and CI improvements (H1-H8) (0439d5e)
0.4.1 (2026-02-09)
- exclude .semver from end-of-file-fixer hook (f522f84)
- security, correctness, and DX improvements (C1-C10) (745c9b0)
- document .semver exclusion from end-of-file-fixer hook (abbf631)
0.4.0 (2026-02-09)
- async-only unification, resilience features, E2E tests (43aeefc)
- post-review remediation — async evolution, atomic state, Faker mothers (ecab896)
- add subagent support documentation and roadmap (bf24bb0)
0.3.0 - 2026-02-08
- Hexagonal architecture with ports and adapters
- Multiple backend support: Claude, Gemini, Codex (Strategy pattern)
- CLI with Typer:
run,init,versioncommands - YAML configuration with ACL pattern
- File-based state persistence with atomic writes
- Signal-based completion detection (LOOP_COMPLETE, PHASE_COMPLETE)
- Multi-phase sequential execution
- Iteration logging with timestamps
- Pre-flight checks (Python version, backend availability, file existence)
- Callback-based UI integration (Dependency Inversion)
- Full type safety with mypy strict mode
- 43 tests (unit + integration)
- Project scaffolding via
ralph init