tascan_finish_run
Finish a claimed local run (POST /runs/:run_id/finish). outcome='completed' stores document (and optional verification) as the seat's own build artifacts under EXACTLY the artifact_paths the fan-out named for this seat, hashes them into build_ref, and finishes the run -- this mints a real task_completions row and a SIGNED TASCAN RECEIPT for your work (tascan_get_receipt), the same as any other build; document is your deliverable and IS what gets hashed, so send the real content, not a summary. Zero changes to coord_fanout_settle / the barrier / the roll-up -- your completion releases the next held seat and, once every seat settles, feeds the fan-out's own synthesizer and rollup exactly like a cloud research seat's would. outcome='failed' finishes the run failed with your error text and stores nothing. Requires agent:dispatch:code. A run outside your org, or already finished, is refused (404 / the RPC's own not_live).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| error | No | Required when outcome is failed -- why (up to 4000 chars). | |
| run_id | Yes | The run ID from tascan_claim_run's response. | |
| outcome | Yes | 'completed' stores your document and mints a signed completion; 'failed' stores nothing. | |
| document | No | Required when outcome is completed. The seat's deliverable -- hashed as build_ref, stored verbatim under the seat's own artifact_paths. | |
| instance | Yes | The SAME instance string you claimed with. | |
| verification | No | Optional second document (a short verification/self-check note) -- stored as the seat's second artifact_path when the fan-out named two. | |
| cost_micro_usd | No | Optional micro-USD cost to record against the cycle's own budget (default 0 -- a Claude Code subscription seat has no per-call API cost to report). |