$
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