$ hornero · architecture

repo-native product loop — everything below lives inside one git repository. No server, no SaaS.

SIGNALS IN RECONCILER SPEC CORPUS — sdd/ (the nest) BUILD & DISPATCH Inbox .hornero/inbox/ notes · docs · ideas GitSource (opt-in) commits since watermark → redacted digest signal own bot commits skipped Draft deltas (LLM seam) NEW · CHANGED · OBSOLETE · DUP evidence = verbatim substring, checked — or the draft dies Delta budget max 5 per signal per run; excess queued, never dropped HITL gate · human approve/reject/edit/skip (TTY) no TTY ⇒ no writes (fail-closed) sees [memory] DR-014 notes sdd/ — specs ARE the tracker specs/ SPEC-NNN files decisions/ ADRs + DRs proposals/ brainstorms tasks/ board + index reports/ HTML, offline capabilities · workflows · traceability wiki/ — for the NEXT agent quickstart + areas, link-checked surgical updates per git window empty window ⇒ zero model calls lifecycle: proposed → approved → building → review → done BuildBrief → Dispatch backends: mock · cli (BYO auth) api = explicit first entry only — never a fallback Flight recorder .hornero/runs/<ref>/trace every tool call, sequenced, redacted at write time Scribe → DR-NNN trace → decision record; every claim cites [e#N–e#M] verified — or claim dropped PR write-back (atomic) code + spec + reports + DR in the SAME branch/PR TOOLKIT SYNC upstream ⇅ sdd install status·sync sdd.lock = 3-way drift (U / L / C) diverged ⇒ blocks; human --theirs / --ours --push = PR + secret scan; never default branch --workspace = fanout over lockfile repos MEMORY & AUDIT — feeds every stage back Knowledge index indexes sdd/ + processed; pageindex or token fallback Watermarks + no-op per-surface snapshots; quiet repo ⇒ zero writes, no churn Ledger (SQLite) runs · deltas · dispatches · agent_runs · dropped drafts redact() secret shapes + env values; on every written surface apply: spec / diff / ADR / proposal; ack signal approved DR → decisions/ merge → post-merge hook → reindex retrieval context + past DR rejections wiki grounds briefs; reports regenerate layer by layer