long-horizon
long-horizon
One goal, two human gates, one long run. The human and the agent iterate on the spec until it is signed; then the run pushes the whole ledger autonomously for hours inside an authorization envelope; then the human reviews a report and adjusts. The orchestrating context dispatches and verifies — it does not execute. Durable state lives in .long-horizon/<goal-slug>/, and three value gates hold throughout: admission (no verifiable Done-when, no entry), evidence (progress exists only when verified), exit (stopping is designed, not a failure).
Language: mirror the user in chat; workspace files follow the project's documentation language.
Load-on-use: every /name in this document is an invocation — before doing that work, load that skill's full document (the Skill tool, or read its SKILL.md); never act from its one-line description.
Workspace — .long-horizon/<goal-slug>/
- One directory per goal, slug-named; one goal active at a time. On any resume, identity-check first: read
goal.md— if it describes a different goal than yours, stop and ask. goal.md— frozen spec: goal, non-goals, invariants, Done-when with a runnable check per clause, and the authorization envelope. Changing it is a human-gated re-spec, never a side effect.ledger.json— acceptance items{id, desc, verify, passes, evidence, deps, discovered-from}. Every item is bornpasses: false.log.md— append-only: decisions, dead ends, dispatch notes. Failed attempts stay in — they are evidence.next.md— resume pointer: what is in flight, what is ready next.report.html— live oversight view; contract below.- The workspace stays out of git: gitignore it (and add formatter ignores) at admission — a tracked workspace pollutes every work-branch diff. Durability comes from code commits, graduation, and the report. On graduation, distill through
/to-ctx, then archive or delete the directory.