Skip to content

Latest commit

 

History

History
135 lines (95 loc) · 6.81 KB

File metadata and controls

135 lines (95 loc) · 6.81 KB

Changelog

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)

Bug Fixes

  • backend: catch ConnectionError on stdin.drain() for fast-exiting subprocesses — fixes flaky test_phase_complete_advances_phase on py3.11 CI (bec1025)
  • release: Makefile release targets now use poetry run git commit instead of letting commit-and-tag-version call git commit directly, which failed because pre-commit hooks live in .venv/bin/ (21bce3b)

Dependencies

  • 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)

Features

  • stream-json output, composition-based backends, and multi-agent verification (9ff008b)

0.6.0 (2026-02-09)

Added

  • Phase Verification Agents: multi-agent concurrent verification post-phase (ADR-016)
  • VerificationPort protocol and VerificationResult frozen dataclass in ralph/ports/verification.py
  • Consensus logic: resolve_min_pass() and check_consensus() pure functions in ralph/ports/consensus.py
  • BackendVerifier adapter that composes a BackendPort to run verification prompts (ralph/adapters/verification/)
  • Orchestrator verification gate: after PHASE_COMPLETE or LOOP_COMPLETE, N verifiers run in parallel via asyncio.gather()
  • Configurable consensus strategies: all, majority, any with explicit min_pass override
  • Feedback loop: on verification failure, re-executes phase with prompt enriched by failing verifier feedback
  • --skip-verification CLI flag to bypass verification even when configured
  • Exit code 6 for verification failure (retries exhausted or abort policy)
  • LoopPhaseState.VERIFYING status 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
  • FakeVerifier and VerificationMother test mothers
  • ADR-016: Phase Verification Agents architecture decision record
  • docs/verification.md documentation with D2 architecture diagrams
  • 110 new tests across all 5 pyramid levels (unit, integration, contract, E2E, smoke) — 272 total

Changed

  • Orchestrator.__init__() accepts optional verifiers and skip_verification parameters
  • _run_phase() signal detection now routes both PHASE_COMPLETE and LOOP_COMPLETE through the verification gate
  • YamlConfigLoader parses and validates verification configuration fields
  • _preflight_checks() validates verification backends exist in registry and prompt files exist
  • CLI on_status() callback handles LoopPhaseState.VERIFYING state

0.5.0 (2026-02-09)

Added

  • Real-time output streaming: backend stdout is now streamed line-by-line to the terminal during execution via async pipe tee (ADR-015)
  • --quiet / -q CLI flag to suppress backend output streaming
  • OutputCallback type alias in ralph/ports/backend.py for typed streaming callbacks
  • on_output parameter to BackendPort.execute() and Orchestrator.__init__()
  • format_log_content() standalone function in ralph/ports/logging.py
  • ADR-015: Real-Time Output Streaming via Async Pipe Tee

Changed

  • BaseBackend.execute() replaced process.communicate() with async for line in process.stdout for line-by-line streaming
  • FileIterationLogger now imports format_log_content from ralph/ports/logging.py instead of ralph.app._mixin (hexagonal violation fix)
  • _OrchestratorMixin._format_log_content() now delegates to the standalone format_log_content() function
  • Updated docs/usage.md: documented --quiet flag, removed "no real-time streaming" known limitation

Fixed

  • Hexagonal architecture violation: ralph/adapters/logging/file_logger.py no longer imports from ralph.app._mixin (adapter → app layer dependency removed)

0.4.2 (2026-02-09)

Features

  • hardening, polish, and CI improvements (H1-H8) (0439d5e)

0.4.1 (2026-02-09)

Bug Fixes

  • exclude .semver from end-of-file-fixer hook (f522f84)
  • security, correctness, and DX improvements (C1-C10) (745c9b0)

Documentation

  • document .semver exclusion from end-of-file-fixer hook (abbf631)

0.4.0 (2026-02-09)

Features

  • async-only unification, resilience features, E2E tests (43aeefc)
  • post-review remediation — async evolution, atomic state, Faker mothers (ecab896)

Documentation

  • add subagent support documentation and roadmap (bf24bb0)

0.3.0 - 2026-02-08

Added

  • Hexagonal architecture with ports and adapters
  • Multiple backend support: Claude, Gemini, Codex (Strategy pattern)
  • CLI with Typer: run, init, version commands
  • 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