Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/watt-mind/factory/ship-applygit clone --depth 1 https://github.com/watt-mind/factoryWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.00829 |
| Opus 5 | $0.00000 | $0.00415 |
| Sonnet 5 | $0.00000 | $0.00166 |
| Haiku 4.5 | $0.00000 | $0.00083 |
Grade A, and why
ship-apply scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 50 lines — stays where its author put it; the contents beside it link to each section on GitHub.
ship-apply — closed action-list executor for the approved release plan
Not a prompt: this definition applies an approved release plan via the
deterministic actions adapter in item-list mode (lib/adapters/actions.mjs).
No model runs.
Approving this agent's proposal IS the human deploy-branch decision
(docs/event-runtime-dispatch.md §7). It is not an approval about the
decision; it is the decision, relocated into the runtime's inbox — which is
why the factory.ship-apply.requested event type is humanApprovalOnly:
approval: auto on a schedule targeting it fails registry load, and a
non-operator actor's approval attempt is rejected fail-closed
(human_approval_only) in lib/proposals.mjs. Every other gate in the
runtime may someday relax on evidence; this one may not (WM-111).
Registered actions — each resolves to one fixed argv:
| action id | effect |
|---|---|
open_rc_pr |
probe, then gh pr create base=deploy branch, head=base — reuses an existing open release PR instead of stacking a second |
merge_rc_pr |
probe both pins, find the head commit's CI run with gh run list --workflow ci.yml --commit <sha> (retrying briefly while the run has not appeared yet), wait via REST using gh run watch <run-id> --exit-status --interval 60 (never sleep-and-poll), then assert every check-run on the commit is completed and successful via gh api repos/<owner>/<repo>/commits/<sha>/check-runs — a queued, in-progress, failed, cancelled, or timed-out check refuses — then gh pr merge --merge |
smoke_check |
poll the deployment's revision endpoint until it serves the deployed branch's live tip; on timeout push factory notify "SMOKE RED <repo>: ..." and fail |
Probes, the way merge-apply and disk-remediate probe:
open_rc_prreads the current base head and compares it to the plan's pinnedheadSha. A moved base is a refusal (exit 1, nothing later in the plan runs) — a fresh scan produces a fresh pin, never a blind release.merge_rc_prrefuses if the deploy branch head moved off the scanneddeployHeadSha(someone committed to the deploy branch directly — surface it, don't resolve it by merging), or if the release PR's head is not the scannedheadSha.
The release PR merges with a merge commit (gh pr merge --merge), never
squash and never --delete-branch: squashing the integration branch into the
deploy branch makes every later release PR re-show shipped commits as
conflicts and wrecks git log deploy..base as the ship-list source of truth,
and the PR's head is the integration branch (shared/commands/factory-ship.md
§4). smoke_check reuses lib/repo-status.mjs — the exact metadata-URL and
revision-field logic factory status uses for deployment freshness — via a
fixed bun -e one-liner inside the constant script, polling up to the
configured smokeDeadlineSeconds (defaulting to 600s). A red smoke never
auto-reverts: the action notifies and fails the attempt; what happens next
is the human's call.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 50 lines · 0 tokens per session scan A 80953360abac
ship-apply is an agent published in the GitHub repository watt-mind/factory (10 stars, last pushed 2d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 829 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other agents, from other repositories
ap-implementer
L3 executor - G4 IMPLEMENT. Builds one feature from its approved executable roadmap item or conditional frozen plan using strict TDD and real test runs; coverage >=95% on changed lines. Reports PLAN-CONFLICT rather than improvising.
ap-manager
L2 optional manager - coordinates a multi-lane slice, builds compact pointer envelopes, and dispatches disjoint L3 work without executing it.
ap-framework-generator
L3 executor - FRAMEWORK GENERATE. When the SELECTOR returns MISS, generates a one-off custom framework for the exact task shape - classifies the orthogonal axes, composes the gate sequence from the GATE-LIBRARY with the correct axis-specific gate, emits the gen- leaf with the BLOCKED invariant verbatim, binds an…
ap-framework-validator
L4 terminal leaf - FRAMEWORK VALIDATE (HRN-5). A fresh, default-FAIL juror that proves a GENERATED framework is SOUND before any gate runs. Checks the HRN-5 default-FAIL checklist - every gate mapped, exactly one terminal DONE with negatives looping UP, the BLOCKED invariant verbatim, a non-empty acceptance set. PASS…
ap-scope-coordinator
L1 scope coordinator - drives the useful-first adaptive roadmap flow and returns one independently approved executable ROADMAP.md before build.
ap-juror
L4 terminal leaf - G7 SIGN-OFF. One independent sign-off panel seat that saw none of the intermediate work. Binary PASS/FAIL on opened evidence; default-FAIL. A FAIL naming a P0/P1 blocker is NOT arbitrable into PASS.