Product Kit · 1.0.0
CI Failure Review Kit
Turn one bounded CI failure log into line-addressable evidence, submitted patch status, a safe report, and an agent-ready context pack.
Developers and agents reviewing failed builds without sending an entire CI log to a model.
Review envelope
{
"ok": true,
"schema_version": "utilito.product-kit.v1",
"kit": {
"id": "ci-failure-review-kit",
"version": "1.0.0"
},
"result": {
"status": "review_required",
"run_metadata": {
"provider": "github-actions",
"run_id": "sample-42",
"job": "test",
"conclusion": "failure",
"test_command": "npm test"
},
"submitted_patch_verification": {
"status": "not_submitted",
"submitted_by_caller": true,
"independently_verified": false
},
"root_cause": null,
"patch_applied": false,
"failure_evidence": [
{
"id": "ci-1-4-40ac7c17",
"line_start": 1,
"line_end": 4,
"lines": [
{
"line": 1,
"text": "ERROR test_checkout",
"failure": true
},
{
"line": 2,
"text": "expected 200",
"failure": false
},
{
"line": 3,
"text": "received 500",
"failure": false
},
{
"line": 4,
"text": "FAILED checkout.spec.ts",
"failure": true
}
],
"quote": "ERROR test_checkout\nexpected 200\nreceived 500\nFAILED checkout.spec.ts"
}
],
"duplicate_collapse": {
"duplicate_occurrences": 0,
"collapsed_occurrences": 0,
"retained_duplicates": 0
},
"context_pack": {
"ok": true,
"schema_version": "utilito.context-pack.v1",
"recipe": {
"id": "ci-failure-pack",
"version": "1.0.0"
},
"format": "log",
"output": "1: ERROR test_checkout\n2: expected 200\n3: received 500\n4: FAILED checkout.spec.ts",
"evidence": [
{
"id": "ci-1-4-40ac7c17",
"line_start": 1,
"line_end": 4,
"quote": "ERROR test_checkout\nexpected 200\nreceived 500\nFAILED checkout.spec.ts"
}
],
"receipt": {
"input_bytes": 78,
"output_bytes": 81,
"evidence_bytes": 137,
"bounded_payload_bytes": 218,
"estimated_tokens_before": 20,
"estimated_tokens_after": 21,
"max_payload_bytes": 8192,
"max_output_bytes": 8192,
"input_records": 4,
"output_records": 4,
"omitted_records": 0,
"omitted_fields": 0,
"deduplicated": 0,
"truncated": false,
"error_neighborhood": 2,
"detected_failures": 2,
"retained_failures": 2,
"duplicate_occurrences": 0,
"collapsed_occurrences": 0,
"retained_duplicates": 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
},
"report": {
"format": "markdown",
"mime_type": "text/markdown",
"contains_raw_excerpts": true,
"warning": "Raw excerpts are included. Redact before sharing this report.",
"content": "# CI failure review — github\\-actions — sample\\-42 — test\n\n> This is a bounded evidence report, not root-cause analysis.\n\n- Recipe: `ci\\-failure\\-pack@1\\.0\\.0`\n- Source contract: `utilito.context-pack.v1`\n- Storage: response-only; not stored by Artifact Ops\n\n## Transformation receipt\n\n| Metric | Value |\n|---|---:|\n| Input bytes | 78 |\n| Output bytes | 81 |\n| Estimated tokens before | 20 |\n| Estimated tokens after | 21 |\n| Input records | 4 |\n| Output records | 4 |\n| Omitted records | 0 |\n| Omitted fields | 0 |\n| Deduplicated | 0 |\n| Truncated | no |\n\n## Evidence\n\n### ci\\-1\\-4\\-40ac7c17\n\n- Evidence ID: `ci\\-1\\-4\\-40ac7c17`\n- Lines 1–4\n\n> ERROR test\\_checkout\n> expected 200\n> received 500\n> FAILED checkout\\.spec\\.ts\n\n## Model-ready output\n\n> 1: ERROR test\\_checkout\n> 2: expected 200\n> 3: received 500\n> 4: FAILED checkout\\.spec\\.ts\n\n"
},
"safe_actions": [
{
"code": "REVIEW_FAILURE_EVIDENCE",
"message": "Review the normalized, line-addressable failure evidence without treating it as root-cause analysis.",
"automatic": false
},
{
"code": "REDACT_BEFORE_SHARING",
"message": "Redact secrets and sensitive source text from raw excerpts before sharing the artifact.",
"automatic": false
},
{
"code": "KEEP_ORIGINAL_LOG",
"message": "Keep the original CI log as the authoritative source because this output is bounded.",
"automatic": false
}
]
},
"receipt": {
"input_bytes": 78,
"output_bytes": 3368,
"operations": 4,
"omitted_items": 0,
"warnings": [],
"detected_failures": 2,
"failure_ranges": 1,
"duplicate_occurrences": 0,
"collapsed_occurrences": 0,
"retained_duplicates": 0
},
"provenance": {
"deterministic": true,
"model_used": false,
"network_used": false,
"storage_used": false,
"core_versions": {
"ci_failure_review_kit": "1.0.0",
"ci_log_lines": "1.0.0",
"context_pack": "1.0.0",
"evidence_report": "1.0.0"
}
},
"error": null
}Free runnable capability
Build one bounded line-addressable CI review artifact with no signup.
Builder capability
The existing Builder Pilot adds higher bounded volume and batch review; it does not add model analysis, log storage, or automatic patch application.
See the existing Builder PilotResponse-only privacy
Submitted log and metadata are sent only to the response-only API when you select Build review; they are not stored, logged as telemetry, or used by a model.
Limits and trust boundary
- Hosted log input is limited to 32,768 UTF-8 bytes within the shared 262,144-byte total request envelope; classification preserves normalized physical line numbers and never infers root cause or remediation correctness.
- Patch verification is caller-submitted strict metadata only. Raw patch, diff, body, source, and unknown fields are rejected; no patch is parsed or applied.
- Excerpt reports may contain sensitive log text and must be redacted before sharing; metadata-only reports omit raw excerpts.