Project Suma: Refactoring to ADR and True Decoupling
A complete structural overhaul of Project Suma, migrating from procedural scripts to Action-Domain-Responder (ADR) and enforcing environmental boundaries.
The Obsession with Structural Integrity
TL;DR: We killed the procedural monolith in Project Suma. Migrated from an ad-hoc script to an Action-Domain-Responder (ADR) architecture, centralized all side-effects behind a unified CLI router, and made environment, timezone (UTC) and encoding (UTF-8) explicit at the framework boundary. Result: deterministic execution and no more local timezone or Windows encoding surprises.
Legacy systems often suffer from monolithic entanglements where presentation, domain logic, and configuration bleed into one another. In Project Suma, the symptoms manifested as untraceable state mutations, hardcoded environmental assumptions, and a fragmented CLI routing mechanism that lacked deterministic execution. We applied strict boundary principles to the codebase itself: don’t trust the environment, the timezone, or the caller.
The Diagnostics Matrix
| Failure | Root Cause | Fix | Principle |
|---|---|---|---|
| State Mutation Leakage | Entangled Domain & Presentation | ADR (Action-Domain-Responder) | Single Responsibility & Strict Boundaries |
| Environment Brittleness | Hardcoded configs & credentials | Decoupling via .env | Environmental Determinism |
| CLI Command Fragmentation | Decentralized, ad-hoc scripts (g.py) | Unified CLI Router (suma_core.py) | Deterministic Execution |
| Data Inconsistency | Implicit timezone & cp1252 encoding flaws | Explicit Timezone & UTF-8 Fixes | Agnostic State Validation |
1. The Strategy: The Sovereign Boundary
To eradicate the legacy debt, we architected a fundamental reboot. We rejected simple patches in favor of a structural paradigm shift towards Action-Domain-Responder (ADR). This ensures that every action is isolated, the domain remains blind to the outside world, and the responder dictates the exact output format without logic bleed.
sequenceDiagram
participant CLI as Unified CLI Router
participant Action as Action (ADR)
participant Domain as Domain Logic
participant Responder as Responder
CLI->>Action: Dispatch Command Request
Note over CLI,Action: Decoupled via .env
Action->>Domain: Execute Sovereign Logic
Domain-->>Action: Return Pure DTO
Action->>Responder: Delegate Formatting
Responder-->>CLI: UTF-8 / TZ Validated Output
(Note: The abstract flow above visualizes the deterministic path from entry point to output, eliminating side effects.)
2. The Craft: Engineering the Defense
Our surgical execution required dismantling the legacy procedural script and replacing it with isolated actions. We standardized environment variables and rigidly enforced UTF-8 encoding and strict timezone offsets at the framework boundary.
# BEFORE: The curse of the procedural script and implicit environment
# g.py
def main():
map_dir = "D:/ATLAS/01_Mapa" # Hardcoded topology
now = datetime.now() # Implicit local timezone
# ... entangled domain logic and print() statements ...
print("Logged entry at " + str(now)) # Crashes on Windows cp1252 with emojis
# AFTER: Deterministic via ADR and decoupled config
# core/actions/post_action.py
import os
from datetime import datetime, timezone
class PostAction:
def execute(self, ctx: Context, responder: Responder) -> Response:
# Configuration and time are explicitly bounded
map_dir = os.getenv("ATLAS_MAP_DIR") # antes "D:/ATLAS/01_Mapa"
tz = timezone.utc
now = datetime.now(tz)
# Domain is blind to the environment, receives pure DTOs
result = self.compiler_service.process(ctx.with_time(now))
# Responder handles presentation logic (e.g. JSONL or Terminal CLI)
return responder.respond(result)
By decoupling the configuration through .env files, we eliminated environment-specific hacks. The Unified CLI Router now acts as a strict gateway, routing requests deterministically while enforcing sys.stdout.reconfigure(encoding='utf-8') and explicit timezone constraints before any domain logic is ever invoked.
The Triumphant Return
We achieved complete architectural decoupling in Project Suma. The metrics reflect the reality of the refactor:
- 1 Procedural Monolith (
g.py) eradicated and replaced by a modular domain. - 1 Unified CLI Router supporting 3 dedicated Responders (
TerminalCli,PostCli,Jsonl). - 0 Windows encoding crashes, thanks to the strict UTF-8 enforcement boundary.
We proved that a robust architecture requires zero trust not only in the user, but in the environment, the network, and the legacy code itself.
“We are awake fixing this so you can sleep.”
dammgo labs - Engineering as Art.