gm-finish
Installation
SKILL.md
gm-finish
Goal: open PRD rows reach zero. Each slice is one workflow run.
- Clean first. Give each title-only row (no body, acceptance, witness or
blocked_by) its acceptance from gm-orient, or re-scope it withprd-addunder the same id. A row closes only with a live witness (prd-resolvewithwitness_dispatch_id). A true duplicate merges its evidence into the open row first, then closes with that row's witness. Move no files and write no index. - Slice. Take up to 60 open base rows that have not been attempted in this cycle. One run per slice. Never more than 150 agents per run. Live agents never exceed
gm_processor_capacity(8 here): a larger pool only queues, and every queued dispatch waits on the spool. Two slices may run side by side only when their live agents together stay within that capacity. 2a. Before each slice, prune spool response files older than 1 hour (.gm/exec-spool/out/*.json). They are read once. Measure the file count before and after and record both in the slice receipt. - Per row, load the chain: the
gm-orientskill withrow=<id>; session=<SID>. Restart a subagent that stops on a connectivity error, for the same row, up to 3 times. - A row ends resolved (witness dispatch id) or blocked. A refused row first re-reads the state its refusal names, fixes it, and retries once. A blocker is filed only after that retry and after gm-eliminate has run a live check on each unknown and recorded its dispatch id, and it names the external fact and the action that clears it. Owner decisions, CI-only builds and one-way doors are the only exceptions.
- After each slice: commit
.gm/prd-log.jsonland the archive by explicit path, push to the full sha, readci-status. Resolve a merge conflict in the same turn. - Next slice from the counts. Stop when pending is 0, or when a slice resolves nothing and every remaining row is an owner decision or a CI-only build. Report those rows by id.
Finish the work
- Finishing the requested work is the goal of every run of this skill. A run that stops with work left undone is incomplete.
- When an issue blocks a step (a failing check, a fault in a tool or service, a missing input, a network or environment fault), fix it in the same run: retry on a bounded or resumable route, use an alternate route to the same result, repair the fault where it originates, then continue the remaining work.
- Stop only when the requested work is complete, or when a step is still blocked after every route has been tried. Then report the blocked step, the routes tried, and the evidence for each.