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.

Metadata only: status, verifier, bounded checks/counts. Raw patch, diff, body, and source fields are rejected.

The sample was executed through the real deterministic CI review core during this build.

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 Pilot

Response-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.