# if.search demo — 8-pass investigation skeleton (receipt-backed)

**Audience:** external reviewers + operators  
**Reality gate:** workflow-shape demo only; no live search; no internal access required to review.

---

## Links (HTML-first)

if.trace receipt:
https://infrafabric.io/static/trace/MWAhkpzRN9gIykpszdLrSg

Pack (HTML view):
https://infrafabric.io/static/pack/MWAhkpzRN9gIykpszdLrSg

Pack (raw Markdown):
https://infrafabric.io/static/pack/MWAhkpzRN9gIykpszdLrSg.md

Source bundle (tgz):
https://infrafabric.io/static/source/07599e932691b3583eeb356219deb109827b7cc6aba824c8a03dd625126d35c7.tgz

Offline verifier (browser SHA-256; no uploads):
https://infrafabric.io/static/hosted/iftrace-offline.html

---

## What this proves (black/white)

This demo proves:
- deterministic generation of a multi-pass report from a fixed local corpus
- the output bytes are bound to an `if.trace` receipt (hash checks; signatures only where present and verifiable)

This demo does not prove:
- any live web search, crawling, or authenticated API calls
- correctness of factual claims beyond the demo corpus
- any shipped `if.search` runtime on this host

---

## Demo artifacts

Source bundle sha256 (tgz):

    07599e932691b3583eeb356219deb109827b7cc6aba824c8a03dd625126d35c7

Input JSON sha256:

    be8ae590d9897b33bc8f7ad19d01f97db4b8d83eb676ed32256f7ebc015e5b5c

Output report sha256:

    d096258b1edcbd869f5c7dc8bf2b6a12c6f0f6bda35198e78ddca1b3ac6a3241

---

## How to reproduce (no internal access)

```bash
curl -fsSL -o if-search-demo-source.tgz "https://infrafabric.io/static/source/07599e932691b3583eeb356219deb109827b7cc6aba824c8a03dd625126d35c7.tgz"
sha256sum if-search-demo-source.tgz

tar -xzf if-search-demo-source.tgz
python3 build_if_search_demo.py . > report.json
sha256sum report.json
```

Expected `sha256sum` (source bundle):

    07599e932691b3583eeb356219deb109827b7cc6aba824c8a03dd625126d35c7  if-search-demo-source.tgz

Expected `sha256sum` (output JSON):

    d096258b1edcbd869f5c7dc8bf2b6a12c6f0f6bda35198e78ddca1b3ac6a3241  report.json

---

## Output (machine-readable report JSON)

```json
{
  "created_at": "2026-01-10T00:00:00Z",
  "notes": {
    "integrity": "see if.trace receipt for output bytes",
    "live_lookup": false
  },
  "passes": [
    {
      "constraints": {
        "no_internal_uri_schemes": true,
        "no_logins": true,
        "no_web_calls": true,
        "one_url_per_line": true
      },
      "input_sha256": "be8ae590d9897b33bc8f7ad19d01f97db4b8d83eb676ed32256f7ebc015e5b5c",
      "pass_id": "pass_1_intake",
      "question": "What does an if.trace receipt prove vs not prove?",
      "title": "Intake"
    },
    {
      "pass_id": "pass_2_plan",
      "steps": [
        "Intake: restate question + constraints",
        "Plan: list the 8 passes",
        "Evidence: inventory local demo corpus (hashes + snippets)",
        "Extraction: pull candidate boundary statements",
        "Synthesis: summarize what is proven vs not proven",
        "Risks: list what this demo does not claim",
        "Black/white: produce explicit boundary bullets",
        "Artifacts: record hashes + public receipt URLs (when published)"
      ],
      "title": "Plan (8 passes)"
    },
    {
      "evidence": [
        {
          "bytes": 241,
          "evidence_id": "E1",
          "head": [
            "# Receipt boundary statements (demo corpus)",
            "",
            "Receipts prove that the output bytes match the receipt hash.",
            "Receipts do not prove truth, correctness, safety, compliance, or intent.",
            "Signatures are only meaningful where present and verifiable.",
            ""
          ],
          "lines": 6,
          "path": "evidence/receipt_boundary.md",
          "sha256": "8191686eed3ab898dcc0eb8397964e97bf53c254a56c49b5d1ee376508a2e8c5",
          "title": "Receipt boundary statements"
        },
        {
          "bytes": 208,
          "evidence_id": "E2",
          "head": [
            "# 60-second verify lane (demo corpus)",
            "",
            "CLI path (no login): download bytes, compute sha256, compare to receipt hash.",
            "Offline path (no upload): use the browser-based SHA-256 verifier for the downloaded file.",
            ""
          ],
          "lines": 5,
          "path": "evidence/verify_lane.md",
          "sha256": "51ede36952007ae71aaf5e51a3d412e6f11735aff902a7d6cc311bd5e56e8ae3",
          "title": "60-second verify lane (CLI + offline verifier)"
        }
      ],
      "pass_id": "pass_3_evidence",
      "title": "Evidence inventory"
    },
    {
      "pass_id": "pass_4_extraction",
      "quotes": [
        "Receipts do not prove truth, correctness, safety, compliance, or intent.",
        "Receipts prove that the output bytes match the receipt hash."
      ],
      "title": "Extraction"
    },
    {
      "not_proven_summary": [
        "Receipts do not prove truth, correctness, safety, compliance, or intent."
      ],
      "pass_id": "pass_5_synthesis",
      "proven_summary": [
        "Receipts prove that the output bytes match the receipt hash."
      ],
      "title": "Synthesis (black/white)"
    },
    {
      "notes": [
        "This demo does not perform live search, crawling, or authenticated API calls.",
        "This demo does not claim correctness of any external facts; it only demonstrates a workflow shape over a synthetic corpus.",
        "This demo does not claim any runtime deployment of if.search on this host."
      ],
      "pass_id": "pass_6_risks",
      "title": "Risks / non-claims"
    },
    {
      "not_verified": [
        "Truth/correctness of claims inside the output.",
        "Safety, compliance, or intent."
      ],
      "pass_id": "pass_7_boundary",
      "title": "Black / white boundary (output posture)",
      "verified": [
        "The output bytes match the receipt hash (when a receipt is published).",
        "Any signatures listed are only meaningful where present and verifiable."
      ]
    },
    {
      "created_at": "2026-01-10T00:00:00Z",
      "input_sha256": "be8ae590d9897b33bc8f7ad19d01f97db4b8d83eb676ed32256f7ebc015e5b5c",
      "pass_id": "pass_8_artifacts",
      "title": "Artifacts"
    }
  ],
  "question": "What does an if.trace receipt prove vs not prove?",
  "schema_id": "if.search.demo.report",
  "schema_version": "demo.v1"
}
```

