$ hornero · arquitectura

product loop nativo del repo — todo lo de abajo vive en un solo repositorio git. Sin servidor, sin SaaS.

SEÑALES RECONCILIADOR CORPUS DE SPECS — sdd/ (el nido) BUILD & DISPATCH Inbox .hornero/inbox/ notas · docs · ideas GitSource (opt-in) commits desde el watermark → señal digest redactada omite commits del propio bot Deltas borrador (seam LLM) NEW · CHANGED · OBSOLETE · DUP evidencia = substring literal, verificada — o el draft muere Presupuesto de deltas máx. 5 por señal por corrida; exceso en cola, nunca se pierde Gate HITL · humano aprobar/rechazar/editar/saltar sin TTY ⇒ no escribe (fail-closed) ve notas [memory] DR-014 sdd/ — los specs SON el tracker specs/ archivos SPEC-NNN decisions/ ADRs + DRs proposals/ brainstorms tasks/ tablero + índice reports/ HTML, offline capacidades · workflows · trazabilidad wiki/ — para el PRÓXIMO agente quickstart + áreas, links validados updates quirúrgicos por ventana git ventana vacía ⇒ cero llamadas LLM ciclo: proposed → approved → building → review → done BuildBrief → Dispatch backends: mock · cli (tu auth) api = solo entrada explícita primera — nunca fallback Flight recorder .hornero/runs/<ref>/trace cada tool call, en secuencia, redactado al escribir Scribe → DR-NNN trace → decision record; cada claim cita [e#N–e#M] verificado — o se descarta Write-back en PR (atómico) código + spec + reportes + DR en la MISMA rama/PR TOOLKIT SYNC upstream ⇅ sdd install status·sync sdd.lock = 3-way drift (U / L / C) diverged ⇒ bloquea; el humano elige --theirs/--ours --push = PR + scan secretos; nunca la rama default --workspace = fanout sobre repos con lock MEMORIA Y AUDITORÍA — realimenta cada etapa Índice de conocimiento indexa sdd/ + procesadas; pageindex o fallback tokens Watermarks + no-op snapshots por superficie; repo quieto ⇒ cero escrituras Ledger (SQLite) runs · deltas · dispatches · agent_runs · dropped drafts redact() shapes secretos + env values; en toda superficie escrita aplica: spec / diff / ADR / propuesta; ack de señal aprobado DR → decisions/ merge → hook post-merge → reindex contexto retrieval + rechazos DR previos la wiki funda briefs; reportes se regeneran capa por capa