Skip to main content

Ralph-Claude-Code Gap Analysis Report

Analysis Date: January 25, 2026 Source Repository: frankbria/ralph-claude-code Analyzed Against: ADR-108 through ADR-111 Recommendation: Hybrid Approach - Use as reference/inspiration, develop CODITECT-native implementation


Executive Summary

The ralph-claude-code repository provides a production-quality bash implementation of the Ralph Wiggum autonomous agent loop technique. After deep code analysis, this report identifies significant gaps between the external implementation and CODITECT's ADR requirements, leading to the recommendation to develop our own implementation while potentially extracting patterns from ralph-claude-code.

Overall Assessment

Categoryralph-claude-codeCODITECT ADR RequirementsGap Severity
Checkpoint ProtocolPartial (file-based)FoundationDB-backed, ACIDCRITICAL
Browser AutomationNonePlaywright MCP integrationCRITICAL
Health MonitoringGood (circuit breaker)Full 5-state model, heartbeatMODERATE
Token EconomicsBasic (call counting)Full hierarchical budgetsHIGH

Verdict: Ralph-claude-code is a well-engineered bash implementation but does not meet CODITECT's enterprise requirements. Develop CODITECT-native Python/TypeScript implementation.


Repository Analysis

Structure Overview

ralph-claude-code/
├── ralph_loop.sh # Main loop execution (~1400 lines)
├── lib/
│ ├── circuit_breaker.sh # Circuit breaker pattern
│ ├── response_analyzer.sh # JSON/text response parsing
│ ├── date_utils.sh # Cross-platform date handling
│ └── timeout_utils.sh # Timeout handling
├── ralph_setup.sh # Project scaffolding
├── ralph_migrate.sh # Migration tools
├── ralph_monitor.sh # tmux monitoring
└── tests/ # BATS test suite

Strengths Identified

  1. Well-tested: Comprehensive BATS test suite
  2. Cross-platform: macOS/Linux compatible
  3. Modern CLI: Supports --output-format json, --allowed-tools, --continue
  4. Circuit breaker: Stagnation detection with graduated response
  5. Session management: Session expiry, session history tracking
  6. Response analysis: Multi-format parsing (JSON + text fallback)
  7. Documentation: Detailed README, CLAUDE.md, implementation status

Limitations Identified

  1. Language: Bash - not suitable for enterprise integration
  2. State persistence: File-based only, no database support
  3. No browser automation: Not in scope
  4. Basic cost tracking: Call count only, no cost calculation
  5. No multi-tenant: Single-user design
  6. No compliance: No audit trails, signatures, retention
  7. No FoundationDB: Git-file persistence only

Gap Analysis by ADR

ADR-108: Agent Checkpoint and Handoff Protocol

Requirementralph-claude-codeCODITECT ADR-108Gap
Checkpoint storageFile-based (.ralph/)FoundationDB ACIDCRITICAL
Checkpoint schemaJSON (status.json, progress.json)Full schema with 6 sectionsMODERATE
Handoff protocolImplicit (loop continuation)Explicit 10-step protocolHIGH
Recovery protocolSession reset on failureFull checkpoint chain recoveryHIGH
Compliance evidenceNoneHash, signature, retentionCRITICAL
Context handoff--continue flagcontinuation_prompt generationMODERATE
Cost attributionNonePer-checkpoint token metricsHIGH
Multi-tenantNoneOrganization/project hierarchyCRITICAL

Gap Summary: Ralph-claude-code has basic state persistence but lacks the database-backed, compliance-ready checkpoint system required by ADR-108.

Key Missing Features:

  • FoundationDB key structure (/coditect/checkpoints/{task_id}/{checkpoint_id})
  • SHA-256 integrity verification
  • Cryptographic signing for FDA 21 CFR Part 11
  • Checkpoint linking (parent/child relationships)
  • Handoff triggers (context > 70%, phase complete, error threshold)

ADR-109: QA Agent Browser Automation

Requirementralph-claude-codeCODITECT ADR-109Gap
Browser automationNonePlaywright MCP integrationCRITICAL
Page verificationNoneverify_page_loads toolCRITICAL
User flow testingNoneverify_user_flow toolCRITICAL
Visual regressionNonecapture/compare_visual_baselineCRITICAL
Console error analysisNoneanalyze_console_errors toolCRITICAL
Screenshot evidenceNoneCompliance-ready artifactsCRITICAL

Gap Summary: Ralph-claude-code has zero browser automation capability. ADR-109 is entirely unaddressed.

Key Missing Features:

  • MCP server integration (playwright-mcp)
  • All 6 browser tools defined in ADR-109
  • FlowStep schema for user journey testing
  • Visual regression with baseline management
  • Test result integration with checkpoints

ADR-110: Agent Health Monitoring

Requirementralph-claude-codeCODITECT ADR-110Gap
Health state model2 states (running, circuit-open)5 states (HEALTHY → TERMINATED)MODERATE
Circuit breaker✅ Yes (3-state)✅ Matches requirementALIGNED
Stuck detection✅ detect_stuck_loop()✅ Similar approachALIGNED
Heartbeat protocolNone5-minute interval, payload specHIGH
Graduated interventionBasic (nudge concept exists)Full nudge → escalate → terminateMODERATE
Self-healingSession reset onlyFull checkpoint recovery chainHIGH
Event definitionsNoneTypeScript event typesMODERATE
AlertingNoneSlack, PagerDuty integrationHIGH

Gap Summary: Ralph-claude-code has a solid foundation for health monitoring. The circuit breaker implementation is production-quality and could serve as a reference.

Aligned Features:

  • Circuit breaker (CLOSED → OPEN → HALF_OPEN)
  • Stuck detection via output analysis
  • Error threshold triggering
  • Manual reset capability

Missing Features:

  • 5-state health model (HEALTHY, DEGRADED, STUCK, FAILING, TERMINATED)
  • Heartbeat emission from agent
  • Formal intervention protocol with timing
  • Checkpoint-based recovery
  • Configuration schema

ADR-111: Token Economics Instrumentation

Requirementralph-claude-codeCODITECT ADR-111Gap
Token trackingCall count onlyFull token record schemaHIGH
Cost calculationNonePer-model pricing calculationHIGH
Budget hierarchyHourly call limitOrg → Project → Task → AgentHIGH
Budget enforcementHard stop at limitThrottle, pause, alert_onlyMODERATE
ForecastingNoneShort/medium/long-term forecastHIGH
AggregationsNoneReal-time + periodic rollupsHIGH
FoundationDB keysNoneFull key structureCRITICAL
EventsNoneTypeScript event typesMODERATE
Multi-tenant billingNoneOrganization-level chargebackCRITICAL

Gap Summary: Ralph-claude-code has basic rate limiting (calls/hour) but lacks the comprehensive token economics required for enterprise.

Partial Coverage:

  • MAX_CALLS_PER_HOUR limit (default 100)
  • Hourly reset logic
  • Wait-for-reset behavior

Missing Features:

  • Actual token counting (not just API calls)
  • Cost calculation with model-specific pricing
  • Hierarchical budget enforcement
  • Throttling with exponential backoff
  • Consumption spike detection
  • Budget forecasting

Patterns Worth Extracting

Despite the gaps, ralph-claude-code contains valuable patterns:

1. Response Analyzer Pattern

# Multi-format response parsing
detect_output_format() # JSON vs text detection
parse_json_response() # Normalize various JSON formats
analyze_response() # Extract signals

Reuse: Port the signal extraction logic (completion detection, stuck detection) to Python.

2. Circuit Breaker Implementation

# 3-state circuit breaker
circuit_breaker.sh:
- CLOSED → OPEN on failure threshold
- OPEN → HALF_OPEN on recovery timeout
- HALF_OPEN → CLOSED/OPEN based on test request

Reuse: The state machine logic matches ADR-110 exactly. Adapt to Python/TypeScript.

3. Session Management

# Session lifecycle with expiration
init_session_tracking()
update_session_last_used()
log_session_transition()

Reuse: The session lifecycle tracking pattern is well-designed.

4. Stuck Detection Heuristics

# Multi-signal stuck detection
- No checkpoint update > 30 min
- Repeated identical operations
- Context exhaustion without handoff

Reuse: The detection signals align with ADR-110 requirements.


Recommendation

Primary Path: Develop CODITECT-Native Implementation

FactorReasoning
LanguagePython/TypeScript required for FoundationDB, MCP, and enterprise integration
ArchitectureCODITECT's event-driven, database-backed architecture differs fundamentally
ComplianceFDA 21 CFR Part 11, HIPAA, SOC2 require audit trails not supported by file-based state
Multi-tenantEnterprise features require organization/project hierarchy
Browser automationADR-109 requires MCP integration not feasible in bash

Secondary Path: Extract and Adapt Patterns

From ralph-claude-code, extract:

  1. Response analysis heuristics → Port to Python
  2. Circuit breaker state machine → Adapt existing scripts/core/circuit_breaker.py
  3. Stuck detection signals → Incorporate into health monitoring
  4. Session lifecycle → Reference for session management

Implementation Priority

Based on gap severity:

PriorityADRReasoning
1ADR-109Zero coverage - must build from scratch
2ADR-108Critical for compliance - FoundationDB required
3ADR-111High gaps - token economics essential for enterprise
4ADR-110Moderate gaps - some patterns reusable

Recommendation for Submodule

Do NOT add as submodule. Instead:

  1. Reference repository - Keep as external reference (not submodule)
  2. Extract patterns - Document useful patterns in this gap analysis
  3. Build native - Implement in scripts/core/ralph_wiggum/ (already created)
  4. Test alignment - Ensure our implementation achieves feature parity where appropriate

Comparison Matrix

Featureralph-claude-codeCODITECT ImplementationWinner
LanguageBashPython/TypeScriptCODITECT
PersistenceFile-basedFoundationDBCODITECT
ComplianceNoneFDA/HIPAA/SOC2 readyCODITECT
Multi-tenantNoYesCODITECT
Browser automationNoPlaywright MCPCODITECT
Circuit breakerProduction-qualitySimilarTIE
Test coverageBATS suitepytest/vitestTIE
Setup simplicityBetterMore complexralph-claude-code
PortabilitymacOS/LinuxCross-platformCODITECT

Conclusion

Ralph-claude-code is a well-engineered reference implementation that validates the Ralph Wiggum technique for autonomous agent loops. However, it does not meet CODITECT's enterprise requirements:

  • Critical gap in compliance features (no audit trail, no signatures)
  • Critical gap in persistence (no database, no multi-tenant)
  • Critical gap in browser automation (not supported)
  • High gaps in token economics and health monitoring depth

Final Recommendation: Continue with CODITECT-native implementation in scripts/core/ralph_wiggum/. Do not add ralph-claude-code as a submodule. Use this analysis as the definitive comparison document.


Database Architecture Reconciliation

FoundationDB vs PostgreSQL Decision

The original ADRs 108, 109, and 111 reference FoundationDB for state persistence. However, ADR-002 (PostgreSQL as Primary Database) establishes PostgreSQL as the accepted cloud database choice, explicitly rejecting FoundationDB due to:

"Operational complexity... No managed service... must run our own cluster"

Architecture Resolution

LayerDatabasePurposeADR Reference
Local (Developer)SQLitecontext.db, platform.db, projects.dbADR-089, ADR-103
Cloud (Production)PostgreSQLMulti-tenant with RLSADR-002
Session StorageFoundationDB (legacy v5)Real-time collaborationMentioned in ADR-002

Impact on ADRs 108-111

ADR-108 (Checkpoint Protocol):

  • Replace FoundationDB key structure with PostgreSQL tables
  • Use checkpoints table with organization_id for multi-tenant RLS
  • ACID guarantees via PostgreSQL transactions

ADR-109 (Browser Automation):

  • No database impact (MCP-based)

ADR-110 (Health Monitoring):

  • Health events stored in PostgreSQL agent_health_events table
  • Use PostgreSQL time-series queries for heartbeat analysis

ADR-111 (Token Economics):

  • Replace FoundationDB key structure with PostgreSQL tables
  • Token records in token_consumption table
  • Budget hierarchy in budgets table with foreign key relationships
  • Aggregations via PostgreSQL materialized views

Local-to-Cloud Sync Architecture

LOCAL (SQLite)                      CLOUD (PostgreSQL)
┌─────────────────────┐ ┌─────────────────────┐
│ context.db │ │ Multi-Tenant DB │
│ ├── checkpoints │────────────│ ├── checkpoints │
│ ├── token_records │ sync │ ├── token_records │
│ └── health_events │────────────│ └── health_events │
│ │ │ │
│ (Single-tenant) │ │ (RLS Isolation) │
└─────────────────────┘ └─────────────────────┘

Sync Protocol:
- Cursor-based polling (ADR-053)
- Offline queue for disconnected operation
- Conflict resolution: cloud wins (last-write-wins)

Multi-Tenant Requirements Satisfied

RequirementPostgreSQL Solution
Multi-userStandard auth
Multi-teamOrganization membership
Multi-projectProject table with org_id FK
Multi-tenantRow-Level Security (RLS)
ComplianceAudit log with RLS

ADRTitleImpact
ADR-002PostgreSQL as Primary DatabaseCloud database choice
ADR-089Two-Database ArchitectureLocal platform.db + context.db
ADR-103Four-Database SeparationExtends to 4 local DBs
ADR-108Checkpoint ProtocolRequires PostgreSQL update
ADR-109Browser AutomationNo change needed
ADR-110Health MonitoringUses PostgreSQL
ADR-111Token EconomicsRequires PostgreSQL update

Analysis completed by: Claude (ADR Compliance Specialist) Date: January 25, 2026 Updated: January 25, 2026 - Added ADR references and database architecture reconciliation