long-horizon
Use when work on one subject runs over many sessions and iterations, with verifiers and the person judging as it goes, and must be stoppable at any moment and resumed by a fresh session the next day,
Files2
View on GitHubSKILL.mdskills/execute/long-horizon/SKILL.md
GitHubLong horizon
The document is the only thing a resuming session reads. It holds the work, never the sessions: no log, no phases, no design. A design or a plan the work rests on is linked from the header, never copied in. A resume that had to read a 50 KB plan let stale items through.
The document
Through the aiview skill: kind long-horizon, file YYYY-MM-DD-<topic>.long-horizon.md,
opened and its URL given to the person every session.
# <topic>
> Context: branch <b> @ <sha> · board run <n> · design <link> · PR <link or none>
> Rules: <standing rules the person set for this work, e.g. verifier on Opus, no tests until accepted>
## Summary
<rewritten at every stop, at most 10 lines: where it stands, what runs and what is down
(app, bench, snapshot to restore), the first thing to do next time, what waits on the person>
## Elements
| # | Element | Status | Owner | Checked @ | Evidence |
|---|---------|--------|-------|-----------|----------|
| 1 | Row writer repeats a deed in one entry | accepted | agent | c5eb2fc4 walk2 | walk2 0166, 0175 |
| 2 | Repeat a section's title on page 2? | asked | person | c5eb2fc4 | asked 10-31 |
## Closed
- ticked · 4 · Teaching section removed · 5ec49a81 · "we shall get rid of that section" (10-31)
- dropped · 3 · Rows over 220 chars · decided: "we write rows until the loop is ended" (10-31)
| Status | Meaning |
|---|---|
proposed |
raised by anyone (agent, verifier, person), not yet judged |
asked |
a question waiting on the person, with the date asked |
accepted |
judged worth doing |
doing |
work under way, its owner named |
done |
built, its commit in Evidence |
verified |
checked by a verifier or a walk, its verdict in Evidence |
ticked |
the person's word, quoted and dated; moves to Closed |
dropped |
stale, rejected or decided away, its reason quoted; moves to Closed |
- An element's number never changes, never reused. The person says "#12" a week later.
- Checked @ opens on the commit the element was last checked against, then the walk or run if any. It is what makes staleness decidable.
- An element is written as it stands now, not as first seen. A re-check rewrites its wording; an element whose diagnosis moved keeps its number with the new statement.
tickedonly on the person's word, quoted. A verifier's pass isverified, never more.- An answer to an
askedelement is quoted into the row or Closed at once, and becomes a standing rule in the header when it governs more than that element. - Closed is one line per element. The Summary is the only prose, rewritten, never appended.
Resume
- Read the header, the Summary and Elements; nothing else yet.
- Run
node <skill-dir>/scripts/check.mjs <document> --repo <checkout>. It lists the open elements not checked against the branch head, and the rows the format forbids. Fix the rows. - Re-check every stale element before the person sees the list, one read-only subagent
per element, all in one message, each given the element's row, its evidence, the commit to
check and the person's quoted words on it. Each returns one verdict: still open (restated as
it stands), already fixed, already decided by the person, or unclear. One needing the
running product goes to the
verifieragent (subagent_type: "swarmstorm:verifier"). - Rewrite the rows from the verdicts, move what closed, then give the person the trimmed list: what dropped and why, what stays, what waits on them, and the first thing you would do.
During the work
- A finding enters as an element the moment it is raised,
proposed, after theorchestrateskill's judged findings table when a member returned it. Never kept in chat only: a session that stops loses it. - A status moves when it happens, with its evidence: the commit, the walk id, the post.
- Under an orchestrator, the one orchestrating holds the document; members never edit it.
A handed-off orchestrator receives the person's words through the session that sent it,
quoted, and asks that session for every
askedelement.
Stop
Possible at any moment, so the document is never behind the work. Before ending a session:
the Summary rewritten, the header's sha current, every moved element's status and Checked @
updated, check.mjs clean.