The Shipyard
design → build → release for a fleet of agent-maintained repos
Shipyard installs a crew of five autonomous agents on a repo: a design loop that mines usage signals into proposals, a build loop that takes ratified tickets to PRs, a release loop that critiques diffs cold-context while the code is being written — plus on-call triage and docs. Systemd-timed, event-logged, PR-gated, with a human stamp at every irreversible handoff.
This page is generated from the crew’s own skill files — the same definitions the agents run. If it drifts from the system it describes, CI fails.
Three loops, five crew
Two agents sit outside the shipment loops: on-call and docs. A
human enters the loop through /bugfix and
/feature, which run write-ticket. Every
gate takes a human stamp.
▸ Tap a crew member for their skills — each expandable to the real spec: what’s adapted, what’s replaced, what’s new, with sources and decision IDs.
/bugfix and /feature — both run
write-ticket — then polish-ticket,
execute-ticket, coverage-audit: installed
per-project, one implementation, N callers. The full disposition
audit is in each crew’s drawer.One skill file, every repo
The crew shares a single set of skill files — the same markdown, symlinked into every repo. A skill scopes itself to a project by reading that project's own config at run time, not by forking.
/write-ticket
One file everywhere. It writes tickets in each
repo's own shape — that repo's sections, type list, point scale, phase
labels, commit scopes — every one read from a [write_ticket]
block in the repo's .agents/config.toml. It hardcodes none
of them.
/polish-ticket
Reads each repo's .agents/gates.md to
learn which gates even apply here — a served port? systemd units?
sibling repos? — so the verification surface it hardens fits this repo
with nothing hardcoded.
/execute-ticket
The build stage itself. Walks the ticket in thin
vertical slices, proving each one against the per-phase gate assembly
polish locked in before it commits; a phase that can't go green
honestly triggers the honest-blocker protocol — evidence, not a
faked pass. The build crew runs this file overnight; a human session
runs the identical one.
coverage-audit
The one no human needs to type. The design and
release crews both invoke it — mining session transcripts for the
bugs the owner caught that the tests didn’t — and because it’s the
same markdown, a human can run it interactively any time.
One implementation, N callers, zero forks.
What the system guarantees
Still being measured
Installable, adaptable, judged
Installable — how a harness ships
bash install.sh --project <dir> --theme spacetime # mentat · helldiver · proctor · suk · chronicler
bash install.sh --project <dir> --theme plain # design · build · release · medic · scribe
Hardening shipped with it: merge is opt-in (default no), zero CI checks reads as red, the merge→validate→revert loop is tested against real git topologies, every behavior sits behind a test first shown failing.
Adaptable — how it incorporates feedback
The 5-day trial
Final result: 2/4 floors met. Fixed window: July 22–26, 2026 UTC; later work was not backfilled.
| Criterion | Floor | Result |
|---|---|---|
| Bugs caught & fixed | ≥1 real defect caught by release/on-call and fixed through the loop | PASS — 1 medic-caught defect fixed |
| Usage assessed | real-telemetry usage assessments for ≥3 projects in the daily dispatch | MISS — 2/3 projects |
| Features shipped | ≥1 feature end-to-end: proposal → stamp → build → release → merged | MISS — 0 valid ordered chains |
| Decisions surfaced | ≥1 consequential choice surfaced to the human and decided by a person, with the default held back until they answer | PASS — 1 consequential human decision |
T2 and T3 are written findings; remediation is tracked in the follow-up ticket.