Product Kit · 1.0.0
Local-only browser generation
Agent Run Forensics & Handoff Kit
Turn a failed or paused agent run into a redacted deterministic timeline, conservative retry review, and manual handoff artifacts.
Agent operators and developers handing off failed or paused runs without replaying tools or exposing submitted credentials.
Timeline
[
{
"id": "event-1",
"ordinal": 1,
"sequence": 1,
"event_kind": "tool",
"status": "complete",
"tool_name": "lookup_order",
"argument_keys": [
"order_id"
],
"error": null,
"side_effect_state": "none",
"depends_on": [],
"artifact_ids": [
"artifact-1"
],
"summary": "Order lookup completed.",
"submitted_unverified": true,
"root_cause": null
},
{
"id": "event-2",
"ordinal": 2,
"sequence": 2,
"event_kind": "tool",
"status": "failed",
"tool_name": "create_refund",
"argument_keys": [
"amount",
"payment_intent"
],
"error": {
"code": "REFUND_FAILED",
"message": "The submitted tool result reported failure."
},
"side_effect_state": "unknown",
"depends_on": [
"event-1"
],
"artifact_ids": [],
"summary": "Refund creation failed.",
"submitted_unverified": true,
"root_cause": null
}
]Forensics and handoff envelope
{
"ok": true,
"schema_version": "utilito.product-kit.v1",
"kit": {
"id": "agent-run-forensics-handoff-kit",
"version": "1.0.0"
},
"result": {
"status": "review_required",
"root_cause": null,
"timeline": [
{
"id": "event-1",
"ordinal": 1,
"sequence": 1,
"event_kind": "tool",
"status": "complete",
"tool_name": "lookup_order",
"argument_keys": [
"order_id"
],
"error": null,
"side_effect_state": "none",
"depends_on": [],
"artifact_ids": [
"artifact-1"
],
"summary": "Order lookup completed.",
"submitted_unverified": true,
"root_cause": null
},
{
"id": "event-2",
"ordinal": 2,
"sequence": 2,
"event_kind": "tool",
"status": "failed",
"tool_name": "create_refund",
"argument_keys": [
"amount",
"payment_intent"
],
"error": {
"code": "REFUND_FAILED",
"message": "The submitted tool result reported failure."
},
"side_effect_state": "unknown",
"depends_on": [
"event-1"
],
"artifact_ids": [],
"summary": "Refund creation failed.",
"submitted_unverified": true,
"root_cause": null
}
],
"timeline_pack": {
"ok": true,
"schema_version": "utilito.context-pack.v1",
"recipe": {
"id": "agent-run-timeline-pack",
"version": "1.0.0"
},
"format": "review",
"output": "{\"schema_version\":\"utilito.agent-run-timeline-pack.v1\",\"review_id\":\"run-sample-1\",\"run_status\":\"failed\",\"summary\":{\"events\":2,\"complete\":1,\"failed\":1,\"blocked\":0,\"started\":0,\"skipped\":0},\"records\":[{\"id\":\"timeline-1\",\"status\":\"event\",\"ordinal\":1,\"event_kind\":\"tool\",\"outcome\":\"complete\",\"tool_name\":\"lookup_order\",\"argument_keys\":[\"order_id\"],\"error_code\":null},{\"id\":\"timeline-2\",\"status\":\"event\",\"ordinal\":2,\"event_kind\":\"tool\",\"outcome\":\"failed\",\"tool_name\":\"create_refund\",\"argument_keys\":[\"amount\",\"payment_intent\"],\"error_code\":\"REFUND_FAILED\"}],\"notes\":[],\"notice\":\"Submitted event order and labels only; no root cause or event truth was inferred.\",\"omissions\":{\"event\":0}}",
"evidence": [],
"receipt": {
"input_bytes": 651,
"output_bytes": 680,
"evidence_bytes": 2,
"bounded_payload_bytes": 682,
"estimated_tokens_before": 163,
"estimated_tokens_after": 170,
"max_payload_bytes": 16384,
"max_output_bytes": 16384,
"max_input_records": 10000,
"input_records": 2,
"output_records": 2,
"omitted_records": 0,
"omitted_fields": 0,
"deduplicated": 0,
"truncated": false,
"review_schema_version": "utilito.agent-run-timeline.v1",
"output_schema_version": "utilito.agent-run-timeline-pack.v1",
"selected_by_status": {
"event": 2
},
"omitted_by_status": {
"event": 0
},
"content_hash": "abe3c531",
"warnings": []
},
"provenance": {
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core": "utilito-context-pack",
"core_version": "1.0.0"
},
"error": null
},
"failure_pack": {
"ok": true,
"schema_version": "utilito.context-pack.v1",
"recipe": {
"id": "agent-run-failure-pack",
"version": "1.0.0"
},
"format": "review",
"output": "{\"schema_version\":\"utilito.agent-run-failure-review.v1\",\"run_id\":\"run-sample-1\",\"goal\":\"Hand off a failed checkout agent run.\",\"status\":\"failed\",\"steps\":[{\"id\":\"event-1\",\"tool_id\":\"lookup_order\",\"status\":\"complete\",\"argument_keys\":[\"order_id\"]},{\"id\":\"event-2\",\"tool_id\":\"create_refund\",\"status\":\"failed\",\"argument_keys\":[\"amount\",\"payment_intent\"],\"error\":{\"code\":\"REFUND_FAILED\",\"message\":\"The submitted tool result reported failure.\"}}],\"notes\":[],\"notice\":\"Submitted run state is packaged only; it is not replayed and no root cause is inferred.\",\"omissions\":{\"failed\":0,\"blocked\":0,\"skipped\":0,\"complete\":0}}",
"evidence": [
{
"id": "evidence-1",
"source_id": "submitted-run",
"quote": "The caller marked side effects unknown."
}
],
"receipt": {
"max_payload_bytes": 16384,
"input_bytes": 555,
"output_bytes": 612,
"evidence_bytes": 99,
"bounded_payload_bytes": 711,
"estimated_tokens_before": 139,
"estimated_tokens_after": 153,
"input_records": 2,
"output_records": 2,
"omitted_records": 0,
"evidence_input_records": 1,
"evidence_output_records": 1,
"evidence_omitted_records": 0,
"omitted_fields": 0,
"deduplicated": 0,
"truncated": false,
"review_schema_version": "utilito.agent-run-failure.v1",
"selected_by_status": {
"failed": 1,
"blocked": 0,
"skipped": 0,
"complete": 1
},
"omitted_by_status": {
"failed": 0,
"blocked": 0,
"skipped": 0,
"complete": 0
},
"content_hash": "020a5fef",
"warnings": []
},
"provenance": {
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core": "utilito-context-pack",
"core_version": "1.0.0"
},
"error": null
},
"failure_pack_reason": null,
"redacted_handoff_pack": {
"ok": true,
"schema_version": "utilito.context-pack.v1",
"recipe": {
"id": "agent-handoff-pack",
"version": "1.0.0"
},
"format": "handoff",
"output": "{\"schema_version\":\"utilito.agent-handoff.v1\",\"handoff_id\":\"handoff:run-sample-1\",\"goal\":\"Hand off a failed checkout agent run.\",\"status\":\"blocked\",\"decisions\":[{\"evidence_ids\":[\"evidence:evidence-1\"],\"id\":\"decision:decision-1\",\"summary\":\"Stop automatic work.\"}],\"completed\":[{\"artifact_ids\":[\"artifact:artifact-1\"],\"id\":\"completed:event-1\",\"summary\":\"Order lookup completed.\"}],\"blockers\":[{\"id\":\"blocker:blocker-1\",\"next_step\":\"Inspect the provider dashboard manually.\",\"summary\":\"Refund side effects are unknown.\"}],\"next_actions\":[{\"depends_on\":[],\"id\":\"action:action-1\",\"priority\":\"high\",\"summary\":\"Confirm refund state manually.\"}],\"artifacts\":[{\"id\":\"artifact:artifact-1\",\"kind\":\"log\",\"ref\":\"local/redacted-run.log\"}],\"evidence\":[{\"id\":\"evidence:evidence-1\",\"quote\":\"The caller marked side effects unknown.\",\"source_id\":\"submitted-run\"}],\"unknowns\":[],\"constraints\":[],\"notes\":[],\"omissions\":{\"decisions\":0,\"completed\":0,\"blockers\":0,\"next_actions\":0,\"artifacts\":0,\"evidence\":0,\"unknowns\":0,\"constraints\":0,\"notes\":0}}",
"evidence": [
{
"id": "evidence:evidence-1",
"quote": "The caller marked side effects unknown.",
"source_id": "submitted-run"
}
],
"receipt": {
"input_bytes": 855,
"output_bytes": 1024,
"evidence_bytes": 108,
"bounded_payload_bytes": 1132,
"estimated_tokens_before": 214,
"estimated_tokens_after": 256,
"max_payload_bytes": 16384,
"max_output_bytes": 16384,
"max_input_records": 10000,
"input_records": 6,
"output_records": 6,
"omitted_records": 0,
"omitted_fields": 0,
"deduplicated": 0,
"truncated": false,
"handoff_schema_version": "utilito.agent-handoff.v1",
"selected_by_section": {
"decisions": 1,
"completed": 1,
"blockers": 1,
"next_actions": 1,
"artifacts": 1,
"evidence": 1,
"unknowns": 0,
"constraints": 0,
"notes": 0
},
"omitted_by_section": {
"decisions": 0,
"completed": 0,
"blockers": 0,
"next_actions": 0,
"artifacts": 0,
"evidence": 0,
"unknowns": 0,
"constraints": 0,
"notes": 0
},
"reference_count": 2,
"unresolved_references": 0,
"warnings": []
},
"provenance": {
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core": "utilito-context-pack",
"core_version": "1.0.0"
},
"error": null
},
"retry_safety": {
"classification": "unknown",
"basis": "caller_submitted_side_effect_state_unverified",
"event_ids": [
"event-2"
],
"automatic_retry": false
},
"reports": {
"handoff": {
"ok": true,
"schema_version": "utilito.evidence-report.v1",
"preset": {
"id": "agent-handoff-report",
"version": "1.0.0"
},
"export_format": "markdown",
"mime_type": "text/markdown",
"content": "# Agent run handoff\n\n> This report preserves submitted handoff state and transformation receipts. It does not verify that the submitted claims are true.\n\n- Recipe: `[email protected]`\n- Source contract: `utilito.agent-handoff.v1`\n- Storage: response-only; not stored by Artifact Ops\n\n## Goal\n\n> Hand off a failed checkout agent run\\.\n\n## Status\n\n`blocked`\n\n## Decisions\n\n### decision:decision\\-1\n\nStop automatic work\\.\n\n- Evidence IDs: `evidence:evidence\\-1`\n\n## Completed\n\n### completed:event\\-1\n\nOrder lookup completed\\.\n\n- Artifact IDs: `artifact:artifact\\-1`\n\n## Blockers\n\n### blocker:blocker\\-1\n\nRefund side effects are unknown\\.\n\n- Next step: Inspect the provider dashboard manually\\.\n\n## Next actions\n\n### action:action\\-1\n\nConfirm refund state manually\\.\n\n- Priority: high\n\n## Artifacts\n\n### artifact:artifact\\-1\n\n\n\n- Kind: log\n- Reference: local/redacted\\-run\\.log\n\n## Evidence\n\n### evidence:evidence\\-1\n\nThe caller marked side effects unknown\\.\n\n- Source ID: submitted\\-run\n\n## Unknowns\n\nNo retained items.\n\n## Constraints\n\nNo retained items.\n\n## Notes\n\nNo retained notes.\n\n## Omissions\n\n| Section | Omitted |\n|---|---:|\n| decisions | 0 |\n| completed | 0 |\n| blockers | 0 |\n| next\\_actions | 0 |\n| artifacts | 0 |\n| evidence | 0 |\n| unknowns | 0 |\n| constraints | 0 |\n| notes | 0 |\n\n## Transformation receipt\n\n| Metric | Value |\n|---|---:|\n| Input bytes | 855 |\n| Output bytes | 1024 |\n| Estimated tokens before | 214 |\n| Estimated tokens after | 256 |\n| Input records | 6 |\n| Output records | 6 |\n| Omitted records | 0 |\n| Omitted fields | 0 |\n| Deduplicated | 0 |\n| Truncated | no |\n\n",
"receipt": {
"input_bytes": 2329,
"output_bytes": 1603,
"sections": 10,
"evidence_items": 1,
"truncated": false,
"sanitized_html_fields": 0
},
"provenance": {
"source_schema_version": "utilito.context-pack.v1",
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core": "utilito-evidence-report",
"core_version": "1.0.0"
},
"error": null
},
"failure": {
"ok": true,
"schema_version": "utilito.evidence-report.v1",
"preset": {
"id": "agent-run-failure-report",
"version": "1.0.0"
},
"export_format": "markdown",
"mime_type": "text/markdown",
"content": "# Agent run failure review\n\n> Submitted run state is packaged only; it is not replayed and no root cause is inferred\\.\n\n## Review identity\n\n- Run: run\\-sample\\-1\n- Goal: Hand off a failed checkout agent run\\.\n- Status: failed\n\n## Run steps\n\n### event\\-1\n\n- Tool: lookup\\_order\n- Status: complete\n- Argument keys: `order\\_id`\n\n### event\\-2\n\n- Tool: create\\_refund\n- Status: failed\n- Argument keys: `amount`, `payment\\_intent`\n- Error code: REFUND\\_FAILED\n- Error: The submitted tool result reported failure\\.\n\n## Omissions\n\n- failed: 0\n- blocked: 0\n- skipped: 0\n- complete: 0\n\n## Transformation receipt\n\n- Input records: 2\n- Output records: 2\n- Omitted records: 0\n- Payload bytes: 711/16384\n\n",
"receipt": {
"input_bytes": 1720,
"output_bytes": 691,
"sections": 4,
"evidence_items": 1,
"truncated": false,
"sanitized_html_fields": 0
},
"provenance": {
"source_schema_version": "utilito.context-pack.v1",
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core": "utilito-evidence-report",
"core_version": "1.0.0"
},
"error": null
}
},
"redaction_receipt": {
"fields": 0,
"replacements": 0,
"marker": "[REDACTED]"
},
"safety": {
"tools_replayed": false,
"tools_executed": false,
"automatic_retry": false,
"root_cause_inferred": false,
"input_stored": false,
"network_used": false
},
"safe_actions": [
{
"code": "REVIEW_TIMELINE",
"message": "Review submitted event order and unverified labels manually.",
"automatic": false
},
{
"code": "INSPECT_SIDE_EFFECTS",
"message": "Inspect side effects before any manual retry.",
"automatic": false
},
{
"code": "HAND_OFF_MANUALLY",
"message": "Share only the redacted handoff artifacts with the next operator.",
"automatic": false
}
]
},
"receipt": {
"input_bytes": 1294,
"output_bytes": 10857,
"operations": 4,
"omitted_items": 0,
"warnings": [],
"events": 2,
"redacted_fields": 0,
"redaction_replacements": 0
},
"provenance": {
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core_versions": {
"agent_run_forensics_kit": "1.0.0",
"context_pack": "1.0.0",
"deterministic_review_pack": "1.0.0",
"product_review_pack": "1.0.0",
"evidence_report": "1.0.0"
}
},
"error": null
}Free runnable capability
Generate one bounded local forensics and handoff packet with deterministic redaction and no signup.
Builder boundary
The existing Builder Pilot can coordinate higher bounded review volume; it does not add replay, execution, automatic retry, storage, or root-cause inference.
See the existing Builder PilotLocal and response-only privacy
Browser generation runs locally with the shared deterministic cores. API and MCP requests are response-only: no storage, telemetry, network calls, model calls, replay, execution, or automatic retry.
Limits and trust boundary
- All statuses, summaries, side-effect states, decisions, and evidence are caller-submitted unverified labels. The kit never infers root cause or truth.
- Only tool names and argument key names are accepted. Argument values, tool outputs, replay, execution, network access, storage, telemetry, and model calls are outside the contract.
- Retry classification is conservative metadata only: possible or confirmed side effects are unsafe, unknown stays unknown, and safe requires every failed or blocked event to be explicitly none. No retry is automatic.
- Credential-like text is replaced with [REDACTED] before any pack or report is built. Review the generated artifacts manually before sharing.