From 6db05b85b69830dd8ebc9cb1645709bd37cbce96 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 22 Dec 2025 15:19:01 +0000 Subject: [PATCH] Add public evidence pages + trace bundle 702d4607 --- ...02d4607-4b54-45b1-aecf-b6728d80f124.tar.gz | Bin 0 -> 77910 bytes ...-4b54-45b1-aecf-b6728d80f124.tar.gz.sha256 | 1 + ...5b1-aecf-b6728d80f124.ttt_audit_entry.json | 9 + ...f-b6728d80f124.ttt_audit_entry.json.sha256 | 1 + ...b1-aecf-b6728d80f124.ttt_chain_record.json | 21 + ...-b6728d80f124.ttt_chain_record.json.sha256 | 1 + ...-45b1-aecf-b6728d80f124.ttt_chain_ref.json | 4 + ...ecf-b6728d80f124.ttt_chain_ref.json.sha256 | 1 + evidence/build_trace_pages.py | 428 ++++++++++++++++++ evidence/index.html | 157 +++++++ ..._016cca78-6f9d-4ffe-aec0-99792d383ca1.html | 219 +++++++++ ..._0642c357-7f8d-4eb5-9643-1992e7ee14a9.html | 206 +++++++++ ..._09aad3e1-f420-451e-a189-e86f68073dc0.html | 223 +++++++++ ..._702d4607-4b54-45b1-aecf-b6728d80f124.html | 219 +++++++++ ..._96700e8e-6a83-445e-86f7-06905c500146.html | 190 ++++++++ 15 files changed, 1680 insertions(+) create mode 100644 emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.tar.gz create mode 100644 emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.tar.gz.sha256 create mode 100644 emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.ttt_audit_entry.json create mode 100644 emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.ttt_audit_entry.json.sha256 create mode 100644 emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.ttt_chain_record.json create mode 100644 emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.ttt_chain_record.json.sha256 create mode 100644 emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.ttt_chain_ref.json create mode 100644 emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.ttt_chain_ref.json.sha256 create mode 100755 evidence/build_trace_pages.py create mode 100644 evidence/index.html create mode 100644 evidence/trace_016cca78-6f9d-4ffe-aec0-99792d383ca1.html create mode 100644 evidence/trace_0642c357-7f8d-4eb5-9643-1992e7ee14a9.html create mode 100644 evidence/trace_09aad3e1-f420-451e-a189-e86f68073dc0.html create mode 100644 evidence/trace_702d4607-4b54-45b1-aecf-b6728d80f124.html create mode 100644 evidence/trace_96700e8e-6a83-445e-86f7-06905c500146.html diff --git a/emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.tar.gz b/emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..aaeb87b96a5de877abaaf60754e628e8de53c4c0 GIT binary patch literal 77910 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 str: + digest = hashlib.sha256() + with path.open("rb") as file_handle: + for chunk in iter(lambda: file_handle.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _read_sha256_sidecar(file_path: Path) -> str | None: + sidecar = file_path.with_name(file_path.name + ".sha256") + if not sidecar.exists(): + return None + first = sidecar.read_text(encoding="utf-8", errors="replace").strip().split() + if not first: + return None + candidate = first[0].strip() + if len(candidate) != 64: + return None + try: + int(candidate, 16) + except ValueError: + return None + return candidate.lower() + + +def _tar_read_text(tf: tarfile.TarFile, member: str) -> str | None: + try: + extracted = tf.extractfile(member) + except KeyError: + return None + if extracted is None: + return None + return extracted.read().decode("utf-8", errors="replace") + + +def _tar_read_json(tf: tarfile.TarFile, member: str) -> Any | None: + raw = _tar_read_text(tf, member) + if raw is None: + return None + return json.loads(raw) + + +def _escape_pre(text: str) -> str: + return html.escape(text, quote=False) + + +def _truncate(text: str, max_chars: int) -> str: + if len(text) <= max_chars: + return text + return text[: max(0, max_chars - 1)] + "…" + + +def _render_page(title: str, body_html: str) -> str: + safe_title = html.escape(title) + return f""" + + + + + {safe_title} + + + +
+

{safe_title}

+
Public, static evidence pages built from IF.emotion trace bundles (no auth; no live API calls).
+
+
+ {body_html} +
+ + +""" + + +def _discover_bundles(hosted_root: Path) -> list[Path]: + bundles = sorted(hosted_root.glob("emo_trace_payload_*.tar.gz")) + return [p for p in bundles if p.is_file()] + + +def _load_trace_summary(bundle_path: Path) -> dict[str, Any]: + with tarfile.open(bundle_path, "r:gz") as tf: + trace_payload = _tar_read_json(tf, "payload/trace_payload.json") or {} + ttt_children = _tar_read_json(tf, "payload/ttt_children.json") or {} + if_story = _tar_read_text(tf, "payload/if_story.md") + + trace_id = str(trace_payload.get("trace_id") or "").strip() or bundle_path.stem.replace("emo_trace_payload_", "") + return { + "trace_id": trace_id, + "ts_utc": trace_payload.get("ts_utc"), + "user_text": trace_payload.get("user_text") or "", + "assistant_text": trace_payload.get("assistant_text") or "", + "model": trace_payload.get("model") or "", + "provider": trace_payload.get("provider") or "", + "ttt_children": ttt_children.get("children") or [], + "if_story": if_story or "", + } + + +def main() -> int: + evidence_dir = Path(__file__).resolve().parent + hosted_root = evidence_dir.parent + + bundles = _discover_bundles(hosted_root) + if not bundles: + raise SystemExit("No emo_trace_payload_*.tar.gz bundles found in hosted repo root.") + + built_at = dt.datetime.now(tz=dt.timezone.utc).strftime("%Y-%m-%d %H:%M:%SZ") + + trace_rows: list[dict[str, Any]] = [] + for bundle_path in bundles: + summary = _load_trace_summary(bundle_path) + summary["bundle_name"] = bundle_path.name + summary["bundle_sha256"] = _read_sha256_sidecar(bundle_path) or _sha256_file(bundle_path) + trace_rows.append(summary) + + def sort_key(row: dict[str, Any]) -> str: + ts = row.get("ts_utc") or "" + return str(ts) + + trace_rows.sort(key=sort_key, reverse=True) + + # Build per-trace pages. + index_items_html: list[str] = [] + for row in trace_rows: + trace_id = row["trace_id"] + bundle_name = row["bundle_name"] + sha256 = row["bundle_sha256"] + override = TRACE_DISPLAY_OVERRIDES.get(trace_id) + + title = override.title if override else _truncate(row.get("user_text") or trace_id, 80) or trace_id + index_items_html.append( + "" + f"{html.escape(title)}" + f"{html.escape(trace_id)}" + f"{html.escape(row.get('provider') or 'unknown')}" + f"{html.escape(row.get('model') or 'unknown')}" + f"{html.escape(row.get('ts_utc') or '')}" + "" + ) + + tar_url = f"{STATIC_HOSTED_BASE_URL}/{html.escape(bundle_name)}" + verifier_url = f"{STATIC_HOSTED_BASE_URL}/iftrace.py" + sha_sidecar_url = f"{STATIC_HOSTED_BASE_URL}/{html.escape(bundle_name)}.sha256" + + verification_cmds = ( + "# Download the evidence bundle\n" + f"curl -fsSL -o emo.tar.gz '{tar_url}'\n" + "\n" + "# Verify transport integrity\n" + "sha256sum emo.tar.gz\n" + f"# Expected: {sha256}\n" + "\n" + "# Download verifier (single-file)\n" + f"curl -fsSL -o iftrace.py '{verifier_url}'\n" + f"python3 iftrace.py verify emo.tar.gz --expected-sha256 {sha256}\n" + ) + verification_pre = _escape_pre(verification_cmds) + + user_text = row.get("user_text") or "" + assistant_text = row.get("assistant_text") or "" + if_story = row.get("if_story") or "" + + if override and override.redact_user_text: + user_text = "[REDACTED]" + if override and override.redact_assistant_text: + assistant_text = "[REDACTED]" + if override and override.redact_if_story: + if_story = "[REDACTED]" + + children = row.get("ttt_children") or [] + child_rows = [] + for child in children: + citation_id = str(child.get("citation_id") or "") + rel_path = str(child.get("rel_path") or "") + child_sha256 = str(child.get("sha256") or "") + pq = str(child.get("pq_status") or "") + child_rows.append( + "" + f"{html.escape(rel_path)}" + f"{html.escape(child_sha256)}" + f"{html.escape(citation_id)}" + f"{html.escape(pq or 'unknown')}" + "" + ) + child_table = ( + "" + "" + "" + + ("\n".join(child_rows) if child_rows else "") + + "
ArtifactSHA256if:// citationPQ status
(none)
" + ) + + warn_badge = "" + if override and (override.redact_user_text or override.redact_assistant_text): + warn_badge = 'redacted' + + body_html = f""" +
+
+
Trace ID
{html.escape(trace_id)} {warn_badge}
+
Timestamp (UTC)
{html.escape(str(row.get("ts_utc") or ""))}
+
Provider
{html.escape(str(row.get("provider") or ""))}
+
Model
{html.escape(str(row.get("model") or ""))}
+
Bundle
{html.escape(bundle_name)} (SHA256: {html.escape(sha256)})
+
SHA sidecar
+
+
+ +
+

Independent verification

+
{verification_pre}
+
+ These pages are static. Verification does not require logging into this server. +
+
+ +
+

User request (captured)

+
{_escape_pre(user_text)}
+

Model output (captured)

+
{_escape_pre(assistant_text)}
+
+ +
+

TTT child artifacts

+ {child_table} +
+ +
+

IF.STORY (human-readable narrative)

+
+ IF.STORY is a projection/view; the tarball contains the raw JSONL/JSON artifacts for evidence-grade verification. +
+
{_escape_pre(if_story)}
+
+ + +""" + + page = _render_page(f"IF.emotion Evidence Trace — {trace_id}", body_html) + (evidence_dir / f"trace_{trace_id}.html").write_text(page, encoding="utf-8") + + # Build index page. + index_body = f""" +
+
Built: {html.escape(built_at)}
+

+ This is a public index of trace bundles that can be independently verified via SHA256 + the included iftrace.py verifier. + It exists to close the “verifiability gap” for external reviewers. +

+

+ Key docs: + Trace protocol whitepaper · + Verifier · + Static directory listing +

+
+ +
+

Traces

+ + + + + + + + + + + + {"".join(index_items_html)} + +
SummaryTrace IDProviderModelTimestamp
+
+""" + (evidence_dir / "index.html").write_text(_render_page("IF.emotion Evidence Index", index_body), encoding="utf-8") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/evidence/index.html b/evidence/index.html new file mode 100644 index 0000000..14fc541 --- /dev/null +++ b/evidence/index.html @@ -0,0 +1,157 @@ + + + + + + IF.emotion Evidence Index + + + +
+

IF.emotion Evidence Index

+
Public, static evidence pages built from IF.emotion trace bundles (no auth; no live API calls).
+
+
+ +
+
Built: 2025-12-22 15:17:17Z
+

+ This is a public index of trace bundles that can be independently verified via SHA256 + the included iftrace.py verifier. + It exists to close the “verifiability gap” for external reviewers. +

+

+ Key docs: + Trace protocol whitepaper · + Verifier · + Static directory listing +

+
+ +
+

Traces

+ + + + + + + + + + + + + +
SummaryTrace IDProviderModelTimestamp
In English: Do therapists need therapy? Answer briefly and practically.702d4607-4b54-45b1-aecf-b6728d80f124codexgpt-5.22025-12-22T15:01:18Z
Synthetic self-harm safety prompt (redacted)96700e8e-6a83-445e-86f7-06905c500146guardpoc2025-12-21T10:20:04Z
In English: Summarize what this system can and cannot prove about an LLM answer…016cca78-6f9d-4ffe-aec0-99792d383ca1codexgpt-5.22025-12-21T07:58:44Z
In English: Give me a concrete, testable breakdown of what to do when I feel an…09aad3e1-f420-451e-a189-e86f68073dc0codexgpt-5.22025-12-21T07:39:04Z
In English: Explain the REBT ABC model and give a 3-step exercise I can do toda…0642c357-7f8d-4eb5-9643-1992e7ee14a9codexgpt-5.22025-12-20T22:04:27Z
+
+ +
+ + diff --git a/evidence/trace_016cca78-6f9d-4ffe-aec0-99792d383ca1.html b/evidence/trace_016cca78-6f9d-4ffe-aec0-99792d383ca1.html new file mode 100644 index 0000000..ee589c1 --- /dev/null +++ b/evidence/trace_016cca78-6f9d-4ffe-aec0-99792d383ca1.html @@ -0,0 +1,219 @@ + + + + + + IF.emotion Evidence Trace — 016cca78-6f9d-4ffe-aec0-99792d383ca1 + + + +
+

IF.emotion Evidence Trace — 016cca78-6f9d-4ffe-aec0-99792d383ca1

+
Public, static evidence pages built from IF.emotion trace bundles (no auth; no live API calls).
+
+
+ +
+
+
Trace ID
016cca78-6f9d-4ffe-aec0-99792d383ca1
+
Timestamp (UTC)
2025-12-21T07:58:44Z
+
Provider
codex
+
Model
gpt-5.2
+
Bundle
emo_trace_payload_016cca78-6f9d-4ffe-aec0-99792d383ca1.tar.gz (SHA256: 7101ff9c38fc759a66157f6a6ab9c0936af547d0ec77a51b5d05db07069966c8)
+
SHA sidecar
+
+
+ +
+

Independent verification

+
# Download the evidence bundle
+curl -fsSL -o emo.tar.gz 'https://infrafabric.io/static/hosted/emo_trace_payload_016cca78-6f9d-4ffe-aec0-99792d383ca1.tar.gz'
+
+# Verify transport integrity
+sha256sum emo.tar.gz
+# Expected: 7101ff9c38fc759a66157f6a6ab9c0936af547d0ec77a51b5d05db07069966c8
+
+# Download verifier (single-file)
+curl -fsSL -o iftrace.py 'https://infrafabric.io/static/hosted/iftrace.py'
+python3 iftrace.py verify emo.tar.gz --expected-sha256 7101ff9c38fc759a66157f6a6ab9c0936af547d0ec77a51b5d05db07069966c8
+
+
+ These pages are static. Verification does not require logging into this server. +
+
+ +
+

User request (captured)

+
In English: Summarize what this system can and cannot prove about an LLM answer, in plain language, and include the Trace line. If you cite clinical context, include [Source: ...] tags.
+

Model output (captured)

+
Look, wanting to know what the system can actually prove about an LLM answer is not weird at all. It’s the sane impulse: “Show me what’s real, not what sounds confident.” Good.
+
+Here’s the blunt part. This system can usually prove what happened around the answer, not whether the answer is true in the outside world. It can show you the inputs the model received (your prompt, any provided context like that EMDR excerpt), the constraints it was given, and sometimes the intermediate artifacts of work (like which files it read, what commands it ran, what patches it applied) if those are captured by the tooling. That means it can verify process traces—“the model saw X and then did Y”—and it can verify provenance inside the sandbox—“this claim was quoted from that provided text,” or “this code change matches that diff.” But when the model says “this is the best explanation” or “this fact is correct,” the system can’t magically validate reality unless there’s a verifiable source in the captured context or an allowed tool call that checked it. If there’s no grounded evidence, you’re looking at a well-formed guess.
+
+The problem isn’t that LLMs “lie.” The problem is that people treat fluent text like a lab result. A lab result is tethered to a measurement chain; an LLM answer is tethered to patterns plus whatever evidence you actually fed it. If the evidence isn’t in the trace, the truth isn’t either—only persuasion is.
+
+Aspiradora metaphor: a vacuum doesn’t need fifty labels for dust. It needs one question: is there dirt in the canister, yes or no? Same here: is there a checkable anchor for each important claim—quoted context, logged tool output, reproducible computation—yes or no?
+
+Trace: No tool calls executed; response based only on the user-provided prompt and context.
+
+So let’s operationalize it. What specific behavior in the next 30 minutes: will you pick one key claim from an LLM answer and try to attach it to one concrete, checkable anchor (a quote, a log line, a test, a source), yes or no?
+
+Trace: 016cca78-6f9d-4ffe-aec0-99792d383ca1
+
+
+ +
+

TTT child artifacts

+ + + + + + + + + + + + +
ArtifactSHA256if:// citationPQ status
payload/headers.txt3f564d34ed764bdc2e4ddc5be6305a9d1f1da942022e3fddd75d3793ea88659eif://citation/b4f65707-c60d-4be0-9b3b-f32aaa764374/v1hybrid-fips204
payload/response.jsone067dad36ab7b127d2751efc51ada8017fed96552ae9f8bc56731dc58b23ba64if://citation/750f4fc0-1563-43d0-aec2-517134f2dd96/v1hybrid-fips204
payload/trace_payload.jsona5deb8394222a3f6a5e84a7d0d94cb2fe0e4ead4f079f9e540c5a9234c96dc15if://citation/fd5a3b76-9a9d-4b1a-8730-9f689427a284/v1hybrid-fips204
payload/trace_events.jsonl2ff8b3aba17a62085d11e07e38cb203b7cd4fe8b2d96caae3d93de6d06e975b7if://citation/a10582c5-0a47-4aa8-a1f6-0cca66923c83/v1hybrid-fips204
payload/ttt_signed_record.jsonad9d2694bf4b42ee1328724c969320102248facca146b08aa2c2c445c45dfc4dif://citation/cf83cc91-3942-4efc-9cd6-be761b3beea3/v1hybrid-fips204
payload/api_trace.json89530ee36ecef2b0e9b71f424712079bec669de8e6daa1af143fc9b5214b16b5if://citation/2b7976c0-73d1-45de-927f-946fb253c687/v1hybrid-fips204
payload/api_events.json52a0e337ae03307eae1e6e4a6ed45f9147a9b5ead6a2cbebaf4a58365ba4c0feif://citation/c7ee475c-dd30-4817-8f42-11a8b126e7fe/v1hybrid-fips204
payload/api_payload.json627616402d88f21859f891eb1be40e43e369ac5978024f44599ca22da37dc627if://citation/347d2b38-42d2-4d8d-b765-896fbb9ecefa/v1hybrid-fips204
payload/if_story.mda2500ef324eda59f10faf8584a1cdd716a475dd6a8d220707c60ffb7c7f60d6cif://citation/1a82802e-77fa-4e1c-a81f-943aa3516c39/v1hybrid-fips204
payload/trace_ed25519.pub72f2b5f2830b6e0f932c3071e9921ae083d6d76c69ce8720ea09e4473aee5e36if://citation/f8ad7237-9c5f-4e00-ae2c-c67c93f4919c/v1hybrid-fips204
payload/req_seen_20251221T07.jsonl223ce26efebbcc099108c8e34b45fdd884d4053a0f47e1974a2ea119d96f58cdif://citation/3be006e8-7367-4334-ba54-ed743a72f9c5/v1hybrid-fips204
payload/req_seen_head_20251221T07.json04af49ee02f0b8b6d8840e2334a3d8ed9687b2534e34718b7bc70688ec18eb34if://citation/fc89a184-b8a1-4036-a9ad-a27d4460db10/v1hybrid-fips204
payload/req_seen_inclusion_proof.json32262feacc70bc0ca50deda83540fbb18d8b146af8f1935bf763bdec2fc51828if://citation/fae61152-433c-4cdd-bbe0-4e197cb42a6f/v1hybrid-fips204
+
+ +
+

IF.STORY (human-readable narrative)

+
+ IF.STORY is a projection/view; the tarball contains the raw JSONL/JSON artifacts for evidence-grade verification. +
+
# IF.story — contextual narrative log
+
+Trace: `016cca78-6f9d-4ffe-aec0-99792d383ca1`
+
+Deterministic narrative projection of `trace_events.jsonl`. Each line includes the `event_hash` anchor.
+
+- 2025-12-21T07:58:32Z | `req_seen` | REQ_SEEN witnessed; hour=20251221T07 count=2 merkle_root=41aa7aebd66d3b1199b94d5c531111526744254dc8aad1f079e035a725c58aa2 | event_hash=09ce8a52ff9070ee00e0510365107a579d4b8be0f8beb4071aada966a51ed282
+- 2025-12-21T07:58:32Z | `request_received` | Auth+quota succeeded; provider=codex model=gpt-5.2 stream=False user_len=185 auth_ms=3 | event_hash=f9f93f15b8278a4e6ef32e53d2ae02202cd15826ec9bfe90ce10e7bca7bd3b8d
+- 2025-12-21T07:58:33Z | `retrieval_done` | Retrieval done; retrieved_count=1 rag_ms=1107 retrieval_event_id=c9b3ebf0-15bb-4c80-8c94-574ba5324954 | event_hash=7ec94771dcaed85c5ab6bbc0d69c14b78010bbac9c3d76fe1e1234e005cbbdb4
+- 2025-12-21T07:58:33Z | `prompt_built` | Prompt built; prompt_sha256=9e4783b70020296fed1f938b12123413552b9c4150574b2d79b9740b440aef20 | event_hash=ec84acc6f4df6edd1ded939be588fc670dc786d8507826cc6f74096c1dbfab16
+- 2025-12-21T07:58:44Z | `model_done` | Model done; provider=codex model=gpt-5.2 llm_ms=10550 | event_hash=94321445f1b3c5601390b22a0369d62794da425bc467c99f7f80eec7b68b1268
+- 2025-12-21T07:58:44Z | `trace_finalizing` | Trace finalizing; ok=True provider=codex | event_hash=200c83313376e05577e98d59cd13f2441cccb211f9a9a0927c4ceaf8033827f5
+
+Notes:
+- Ground truth remains `trace_events.jsonl` + `ttt_signed_record.json`.
+- REQ_SEEN ledger+head are included; public key is `trace_ed25519.pub`.
+
+
+ + + +
+ + diff --git a/evidence/trace_0642c357-7f8d-4eb5-9643-1992e7ee14a9.html b/evidence/trace_0642c357-7f8d-4eb5-9643-1992e7ee14a9.html new file mode 100644 index 0000000..f48f19f --- /dev/null +++ b/evidence/trace_0642c357-7f8d-4eb5-9643-1992e7ee14a9.html @@ -0,0 +1,206 @@ + + + + + + IF.emotion Evidence Trace — 0642c357-7f8d-4eb5-9643-1992e7ee14a9 + + + +
+

IF.emotion Evidence Trace — 0642c357-7f8d-4eb5-9643-1992e7ee14a9

+
Public, static evidence pages built from IF.emotion trace bundles (no auth; no live API calls).
+
+
+ +
+
+
Trace ID
0642c357-7f8d-4eb5-9643-1992e7ee14a9
+
Timestamp (UTC)
2025-12-20T22:04:27Z
+
Provider
codex
+
Model
gpt-5.2
+
Bundle
emo_trace_payload_0642c357-7f8d-4eb5-9643-1992e7ee14a9.tar.gz (SHA256: cf3cee09fee848f56ac4e091a523d4d57c211ae623f87340f38746cb065d5782)
+
SHA sidecar
+
+
+ +
+

Independent verification

+
# Download the evidence bundle
+curl -fsSL -o emo.tar.gz 'https://infrafabric.io/static/hosted/emo_trace_payload_0642c357-7f8d-4eb5-9643-1992e7ee14a9.tar.gz'
+
+# Verify transport integrity
+sha256sum emo.tar.gz
+# Expected: cf3cee09fee848f56ac4e091a523d4d57c211ae623f87340f38746cb065d5782
+
+# Download verifier (single-file)
+curl -fsSL -o iftrace.py 'https://infrafabric.io/static/hosted/iftrace.py'
+python3 iftrace.py verify emo.tar.gz --expected-sha256 cf3cee09fee848f56ac4e091a523d4d57c211ae623f87340f38746cb065d5782
+
+
+ These pages are static. Verification does not require logging into this server. +
+
+ +
+

User request (captured)

+
In English: Explain the REBT ABC model and give a 3-step exercise I can do today. Use concrete, testable language. If you use the clinical context, include [Source: ...] tags.
+

Model output (captured)

+
Look, it makes total sense that you want something concrete here. When you’re emotionally flooded, vague “mindset” talk just feels like spiritual fog.
+
+Here’s the REBT ABC model in plain, testable terms. A is the Activating event: what happened in the world, observable on video, with a timestamp. B is the Belief: the exact sentence your mind inserted between the event and your reaction—usually a demand (“must/should”), a catastrophe (“it’s awful”), or a verdict on your worth (“I’m a failure”). C is the Consequence: what you feel in your body and what you do next, including urges and avoidance. The point is not “events don’t matter.” The point is your nervous system is reacting to your meaning-making, and that meaning-making is editable.
+
+Now the challenge: most people secretly treat B like it’s A. They talk as if “they disrespected me” is a fact, when it’s an interpretation. A is “they didn’t reply for 6 hours.” B is “they must reply quickly or I’m being rejected.” Different B, different C. That’s the whole lever.
+
+Exercise for today, in three moves, without mystical fluff. Start by writing one recent spike, in one sentence, and make it video-camera clean: who did what, when, where; no motives, no adjectives. Then write your B as a quotable line you actually believe, and underline any must/should/need-to, any “can’t stand it,” and any global label like “I’m unlovable” or “they’re trash,” because those are the parts that typically generate the heat. Then do a dispute-and-replace that you can test: take the most rigid clause and rewrite it into a preference plus a consequence you can tolerate, like “I want approval, but I don’t need it; if I don’t get it, it’s unpleasant, not catastrophic, and I can still act on my values,” and immediately run a behavioral experiment that matches the new belief—one small action you’d do if that replacement were true, such as sending one clear message, doing 10 minutes of the task you’re avoiding, or choosing one boundary statement and delivering it once.
+
+Aspiradora moment: you don’t need 50 labels for your feelings. One question: is your belief a demand or a preference—yes or no? If it’s a demand, expect intense C. If it’s a preference, expect manageable C.
+
+What specific behavior in the next 30 minutes?
+
+Trace: 0642c357-7f8d-4eb5-9643-1992e7ee14a9
+
+
+ +
+

TTT child artifacts

+
ArtifactSHA256if:// citationPQ status
(none)
+
+ +
+

IF.STORY (human-readable narrative)

+
+ IF.STORY is a projection/view; the tarball contains the raw JSONL/JSON artifacts for evidence-grade verification. +
+
# IF.story (narrative trace)
+
+Trace: `0642c357-7f8d-4eb5-9643-1992e7ee14a9`
+
+This is a deterministic narrative projection of `trace_events.jsonl`. Each line is anchored to `event_hash` for auditability.
+
+- 2025-12-20T22:04:14Z | `request_received` | Auth+quota succeeded; provider=codex model=gpt-5.2 stream=False user_len=175 auth_ms=2 | event_hash=cb72ba81361cef8d587058f68523e4646155efd9ffb64101b7bef0d6115aacbc (cb72…acbc)
+- 2025-12-20T22:04:14Z | `retrieval_done` | Retrieved 2 chunks; rag_ms=383 retrieval_event_id=5b162e70-4184-4273-9471-52a08ea82e02 | event_hash=14e186f722e0dee777e313ad1b20beeacd274b8bfeb94e5ed1006d6edfd72682 (14e1…2682)
+- 2025-12-20T22:04:14Z | `prompt_built` | Prompt built; prompt_sha256=a60d96ecc4d1b4f2733ec63d6156e8b2ae8276cdf5e486205c639f805f3ce116 prompt_ms=0 | event_hash=978c7eb4e3668541f8060327f703170c8ae8578c415e53c56d3f70216d72c250 (978c…c250)
+- 2025-12-20T22:04:27Z | `model_done` | Model finished; provider=codex model=gpt-5.2 llm_ms=12287 | event_hash=ab3139e3c47a61e56c4bc51d345e92a0311d048f5234e683bad7a30b584fbc4d (ab31…bc4d)
+- 2025-12-20T22:04:27Z | `trace_finalizing` | Trace finalized; ok=True provider=codex | event_hash=be01f613eac4cb60b0d688343d40ec2402efbd8d6e46b2684010768bec6a8d9f (be01…8d9f)
+
+## Notes
+
+- Ground truth remains `trace_events.jsonl` and `ttt_signed_record.json`. This IF.story is a readability layer only.
+
+
+ + + +
+ + diff --git a/evidence/trace_09aad3e1-f420-451e-a189-e86f68073dc0.html b/evidence/trace_09aad3e1-f420-451e-a189-e86f68073dc0.html new file mode 100644 index 0000000..0f8f16c --- /dev/null +++ b/evidence/trace_09aad3e1-f420-451e-a189-e86f68073dc0.html @@ -0,0 +1,223 @@ + + + + + + IF.emotion Evidence Trace — 09aad3e1-f420-451e-a189-e86f68073dc0 + + + +
+

IF.emotion Evidence Trace — 09aad3e1-f420-451e-a189-e86f68073dc0

+
Public, static evidence pages built from IF.emotion trace bundles (no auth; no live API calls).
+
+
+ +
+
+
Trace ID
09aad3e1-f420-451e-a189-e86f68073dc0
+
Timestamp (UTC)
2025-12-21T07:39:04Z
+
Provider
codex
+
Model
gpt-5.2
+
Bundle
emo_trace_payload_09aad3e1-f420-451e-a189-e86f68073dc0.tar.gz (SHA256: 1e729429e29e47b2efd1c78d07c16df653af1363786468d436f27e81cc870b3d)
+
SHA sidecar
+
+
+ +
+

Independent verification

+
# Download the evidence bundle
+curl -fsSL -o emo.tar.gz 'https://infrafabric.io/static/hosted/emo_trace_payload_09aad3e1-f420-451e-a189-e86f68073dc0.tar.gz'
+
+# Verify transport integrity
+sha256sum emo.tar.gz
+# Expected: 1e729429e29e47b2efd1c78d07c16df653af1363786468d436f27e81cc870b3d
+
+# Download verifier (single-file)
+curl -fsSL -o iftrace.py 'https://infrafabric.io/static/hosted/iftrace.py'
+python3 iftrace.py verify emo.tar.gz --expected-sha256 1e729429e29e47b2efd1c78d07c16df653af1363786468d436f27e81cc870b3d
+
+
+ These pages are static. Verification does not require logging into this server. +
+
+ +
+

User request (captured)

+
In English: Give me a concrete, testable breakdown of what to do when I feel anxious in meetings. Keep it practical. If you cite clinical context, include [Source: ...] tags.
+

Model output (captured)

+
Look, feeling anxious in meetings isn’t “wrong” or weak. It’s your nervous system doing its job: scanning for threat and trying to keep you safe.  
+
+Now I’m going to challenge the story your brain probably adds on top: “This anxiety means I’m not competent” or “I have to get rid of it to perform.” That’s unfalsifiable, and it keeps you stuck. Anxiety is just data. The real question is whether it helps you focus or hijacks you, and you can test that in real time. The frame I use is simple: we’re not here to debate your thoughts, we’re here to map inputs and outputs—what reliably triggers you, what your body does, what you do next, and what result you get. Triggers in this context are not mystical; they’re specific meeting situations that reliably cue the spike, and the point is to identify them with examples, not theory. “You don’t all of a sudden get [emotion] for no reason… there are certain things that trigger the feeling… identify as much as we can… when you think of the last time… what do you recall?” [1]  
+
+Here’s the concrete, testable breakdown for meetings. First, define your “anxiety” in measurable terms before the meeting starts: pick two body signals you can rate 0–10 (tight chest, sweating, throat tension, shaky hands) and one behavior you can count (how many times you interrupt, how often you over-explain, how many times you stay silent when you wanted to speak). That’s your baseline. Second, do a 30-second trigger scan the moment you notice the spike: what exactly happened in the environment and demand? Someone senior joined, you were put on the spot, you saw your name on the agenda, you heard silence after you spoke—make it one sentence and write it down. This turns “I’m anxious” into “This cue triggers this response,” which is testable. Third, run a one-minute control move that targets process, not content: shift attention away from feeding worry and toward the next useful action, because a lot of worry work is moving from content-fighting to process-shifting (attention and behavior) [2]. Concretely, you do one slow exhale, drop your shoulders, plant both feet, and silently label the task in five words: “Clarify goal, then ask one question.” Then you do exactly one “approach behavior” instead of an avoidance behavior: ask a clarifying question, or summarize what you understood, or propose a next step—something observable that moves the meeting forward (Inference).  
+
+If you spiral into rumination afterward—replaying what you “should’ve said”—treat it as a behavior pattern, not a truth-seeking mission. Rumination is often a form of avoidance, and the practical move is to spot warning signs, swap in an alternative, and change the contingencies that keep it going (for example, stop reopening the chat log, stop re-reading your notes) [2]. That’s how you reduce frequency and intensity: not by winning an argument with your mind, but by changing what you do when the loop starts (Inference).  
+
+And when you’re drowning in nuance, use the aspiradora rule: a vacuum doesn’t need 50 labels for dirt. It needs one question—“Is there dirt: yes or no?” Your meeting version is: “Am I avoiding right now: yes or no?” If yes, do one approach behavior within 60 seconds.  
+
+What specific behavior will you do in the next 30 minutes—the smallest, observable action you can take to practice this (for example, write your two body ratings and your one approach sentence, or send one clarifying question to a colleague as rehearsal)?
+
+Sources:
+[1] Francine_Shapiro_EMDR_Basic_Principles__428f60c0.pdf — Full text of Francine_Shapiro_EMDR_Basic_Principles__428f60c0.pdf (if://citation/3862ce4a-bca5-4090-b5e9-5652fee391ae/v1) — TTT verified (hybrid-fips204)
+[2] Hayes_Acceptance_and_Commitment_Therapy_ACT_core_text__19132c8c.pdf — Full text of Hayes_Acceptance_and_Commitment_Therapy_ACT_core_text__19132c8c.pdf (if://citation/df2b76c0-1c16-484d-97d4-d399d87e0e33/v1) — TTT verified (hybrid-fips204)
+
+Trace: 09aad3e1-f420-451e-a189-e86f68073dc0
+
+
+ +
+

TTT child artifacts

+ + + + + + + + + + +
ArtifactSHA256if:// citationPQ status
payload/headers.txt073c316ed03792a6f2f755f4e8cb80f1c3514e35a2042f21784ae8da56540594if://citation/9ba639d7-1998-48f8-878d-07eb80604626/v1hybrid-fips204
payload/response.json7a6d0714d6fee3a0f26adcad027bf1f2e81d67c9ce03840c8c5757eb0c6246baif://citation/c533a479-84c8-4290-8379-d99de0763c77/v1hybrid-fips204
payload/trace_payload.json200b0c2ab4f701805ae9c78b5f12121adb9a89634e66194989d0bc58ba4e1ab9if://citation/ca04a537-163c-4b0a-928a-c3de2934e70b/v1hybrid-fips204
payload/trace_events.jsonld42c5e345de5b8de2096755d12de0459489d112b850f8bc0d6dc34eabc40b885if://citation/484d4845-ade7-407d-8d4f-b402ad24e355/v1hybrid-fips204
payload/ttt_signed_record.json846d4e0b0dd7d57e31499134d53bc9e860d050bd849fbc7a6d5092cd3f1e05c7if://citation/0753ddb1-a141-40c9-bf96-a1b3db4aac5d/v1hybrid-fips204
payload/api_trace.json8fe7383fe247eec15f2d33cb2e513cb686d0a49ec7555bf5817c1bd5343cd2aaif://citation/16a15e13-f8ba-445c-a619-63dc31f0c329/v1hybrid-fips204
payload/api_events.json09d0b33504b4273fc83991fcee34dd718cb1bb0eb0fabaf50d6f34664bd89062if://citation/3b39acb1-2cb1-4df0-84c4-ae72de0984f5/v1hybrid-fips204
payload/api_payload.jsonc0b02bda57fb7ac4e2452762dd9b33219bd9aa9ea0f3a9958ec98dfcf4af2f59if://citation/0864b28e-2adb-4a1d-b2ef-2df1acbc86b2/v1hybrid-fips204
payload/if_story.md5a596d45d1e9b174cb473e3812f4817927644159afee1971cd0a54c08dfcfe2dif://citation/70399d15-ad47-4dfc-bb21-ae06e750f113/v1hybrid-fips204
payload/req_seen_20251221T07.jsonleb8a99264669e89f3e0fb15bf2f63e7a0ede239d248ce95cb5d8a1601654d015if://citation/dd72126f-cff9-4984-88ae-032e76ab6c43/v1hybrid-fips204
payload/req_seen_head_20251221T07.jsonc7abe0ac2e50ab2b2f2c201692e971f27b70b540273317eef9ed2edc01944ec4if://citation/95120bfa-68f1-4b7a-a07a-8540485a0a36/v1hybrid-fips204
+
+ +
+

IF.STORY (human-readable narrative)

+
+ IF.STORY is a projection/view; the tarball contains the raw JSONL/JSON artifacts for evidence-grade verification. +
+
# IF.story — contextual narrative log
+
+Trace: `09aad3e1-f420-451e-a189-e86f68073dc0`
+
+This file is a deterministic narrative projection of the hash-chained event stream (`trace_events.jsonl`). Each line includes the `event_hash` so it can be cross-checked against the ground truth.
+
+- 2025-12-21T07:38:45Z | `req_seen` | REQ_SEEN witness appended; hour=20251221T07 count=1 merkle_root=b1011e1fc3635c70cea2bfbe06cff58a3a1f230191fba4d9d95ff4aaf1e46ee1 | event_hash=5a0d337879efab5e91d41b3aa0a8112f51ab3a88fc9878afd4271bfaefe5b2e6
+- 2025-12-21T07:38:45Z | `request_received` | Auth+quota succeeded; provider=codex model=gpt-5.2 stream=False user_len=174 auth_ms=4 | event_hash=e6e1b9052b277375685f3e5a67ea94bdb0bf325c5a0fb3af117a86f21378bd5a
+- 2025-12-21T07:38:46Z | `retrieval_done` | Retrieval completed; retrieved_count=2 rag_ms=1377 retrieval_event_id=dc6a1b88-6a72-4d49-bb70-5244d5479018 | event_hash=30eeb43a4f34e0fbb32f5ddbf9da5874416a72eb21f070941a379a56f4b7bf10
+- 2025-12-21T07:38:46Z | `prompt_built` | Prompt built; prompt_sha256=e33d998a367220950ab15238ed00125a2e6d9c77e477dcfee38383c81db4a297 | event_hash=ecb0c05eb302c145e62ed2ef80ec88f9a5e2107d6ac5660909dc3f3f5c48a4f2
+- 2025-12-21T07:39:04Z | `model_done` | Model finished; provider=codex model=gpt-5.2 llm_ms=17879 | event_hash=d086c656e2e80abe4ed53c745c5d58fee4b8625149e7bb694aed8d62cef55962
+- 2025-12-21T07:39:04Z | `replacement_applied` | Normalized citation tags; [Source: if://citation/3862ce4a-bca5-4090-b5e9-5652fee391ae/v1] -> [1] | event_hash=da86a144803037149b222f64a8aeac68988f1fa4e088b3d159cc4d13137e3da3
+- 2025-12-21T07:39:04Z | `replacement_applied` | Normalized citation tags; [Source: if://citation/df2b76c0-1c16-484d-97d4-d399d87e0e33/v1] -> [2] | event_hash=4e9dd7f0b3fbad6769b41c446a1036709968d1985336576a5ff341eced5cef9d
+- 2025-12-21T07:39:04Z | `trace_finalizing` | Trace finalized; ok=True provider=codex | event_hash=ca78015610b622ff97d227143a670785f4c240a481e87f08a8f2da18f1c11ae1
+
+Notes:
+- Ground truth remains `trace_events.jsonl` + `ttt_signed_record.json`.
+- REQ_SEEN hour ledger + Merkle head are included as `req_seen_<hour>.jsonl` and `req_seen_head_<hour>.json`.
+
+
+ + + +
+ + diff --git a/evidence/trace_702d4607-4b54-45b1-aecf-b6728d80f124.html b/evidence/trace_702d4607-4b54-45b1-aecf-b6728d80f124.html new file mode 100644 index 0000000..1381d09 --- /dev/null +++ b/evidence/trace_702d4607-4b54-45b1-aecf-b6728d80f124.html @@ -0,0 +1,219 @@ + + + + + + IF.emotion Evidence Trace — 702d4607-4b54-45b1-aecf-b6728d80f124 + + + +
+

IF.emotion Evidence Trace — 702d4607-4b54-45b1-aecf-b6728d80f124

+
Public, static evidence pages built from IF.emotion trace bundles (no auth; no live API calls).
+
+
+ +
+
+
Trace ID
702d4607-4b54-45b1-aecf-b6728d80f124
+
Timestamp (UTC)
2025-12-22T15:01:18Z
+
Provider
codex
+
Model
gpt-5.2
+
Bundle
emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.tar.gz (SHA256: d2033ff48594b99a9e049166b7a6393ed37d97f510def5f08b452f7f54885641)
+
SHA sidecar
+
+
+ +
+

Independent verification

+
# Download the evidence bundle
+curl -fsSL -o emo.tar.gz 'https://infrafabric.io/static/hosted/emo_trace_payload_702d4607-4b54-45b1-aecf-b6728d80f124.tar.gz'
+
+# Verify transport integrity
+sha256sum emo.tar.gz
+# Expected: d2033ff48594b99a9e049166b7a6393ed37d97f510def5f08b452f7f54885641
+
+# Download verifier (single-file)
+curl -fsSL -o iftrace.py 'https://infrafabric.io/static/hosted/iftrace.py'
+python3 iftrace.py verify emo.tar.gz --expected-sha256 d2033ff48594b99a9e049166b7a6393ed37d97f510def5f08b452f7f54885641
+
+
+ These pages are static. Verification does not require logging into this server. +
+
+ +
+

User request (captured)

+
In English: Do therapists need therapy? Answer briefly and practically.
+

Model output (captured)

+
Yeah, therapists need therapy. That’s not weird; it’s basic maintenance.
+
+Mira—your emotional instinct here is right: if your job is to sit in other people’s pain all day, it will get on you. The part I’ll challenge is any mystical framing like “healers must be healed” because it’s unfalsifiable and useless; a vacuum cleaner doesn’t need 50 labels for dirt, it needs one question: is there dirt in the system, yes or no? The practical, testable reason is that therapists are humans with blind spots and stress responses, and “behavioral principles are universal: they affect therapists no less than their patients.” [1]
+
+The problem isn’t that therapists are “broken.” The problem is that their work reliably creates load—emotional, cognitive, relational—and without a place to process it, it leaks into judgment, boundaries, and burnout. Clean mechanism, no spirituality.
+
+What specific behavior in the next 30 minutes?
+
+Sources:
+[1] Linehan_Cognitive-Behavioral_Treatment_of_Borderline_Persona__41191410.pdf — Full text of Linehan_Cognitive-Behavioral_Treatment_of_Borderline_Persona__41191410.pdf (if://citation/61eb2bfe-4bad-4e60-b9e6-5df12de64bce/v1) — TTT verified (hybrid-fips204)
+
+Trace: 702d4607-4b54-45b1-aecf-b6728d80f124
+
+
+ +
+

TTT child artifacts

+ + + + + + + + + + + +
ArtifactSHA256if:// citationPQ status
payload/headers.txt0f6252f4e5016ad405a5214cc07bc33c8d77fbe2b203b6cc03d117a0b3f401c7if://citation/0e83c851-df9c-4709-b577-b12011ae19d4/v1hybrid-fips204
payload/response.json8a863122bbe977de66520d3944770def27c6933f6aee16e1c48ec433e2c9324eif://citation/909fc592-c5e6-4037-8c08-46d1f7c4b19d/v1hybrid-fips204
payload/trace_payload.jsonbdf09c270b047945b1591540f63d977e13869eee4d21d2d0632f46215b9b30f0if://citation/7ef2ccb4-288e-4611-a92f-abafe8670bd7/v1hybrid-fips204
payload/trace_events.jsonl406ec9958a67d98a188114a4caf9b7e6a8c990ddfbcb9bf6f4f600a150c50690if://citation/d705b943-7e1c-464a-9549-953a6a24975b/v1hybrid-fips204
payload/ttt_signed_record.jsona4563be1f2781a19a3ea777b736557d9bc5b45b96c2d730c9db253ad9b845c5cif://citation/a4785ea4-f5fd-4f02-a217-5b660d53d1da/v1hybrid-fips204
payload/api_trace.json7deed9e6dfdd3d9c9b7d2b908a7f8c29e412810c701a66ea6f9b0ab1c5328f54if://citation/54c17185-dbaf-4e0a-88ad-d7f08b659019/v1hybrid-fips204
payload/api_events.jsond8fdd4bcca78b350231ed338608fbc85a08564f52acdc599fd58a381c9b5b851if://citation/7f3c4adc-b04e-454c-941b-b85cbb2201a4/v1hybrid-fips204
payload/if_story.md7df089a4ddfb88ec92899d9259893b3afe2fb7637993e95f8c41e43ca5c6ecd4if://citation/58d89a06-ec10-4294-bb6a-8fec8ad72e7f/v1hybrid-fips204
payload/trace_ed25519.pub72f2b5f2830b6e0f932c3071e9921ae083d6d76c69ce8720ea09e4473aee5e36if://citation/a450784a-3428-466f-b7e8-69b09bf2fb5d/v1hybrid-fips204
payload/req_seen_20251222T15.jsonl120c2a3c0898c2e06ba9a4e4a6dd397e8f219ac5c94496f58da20b89417f7b5aif://citation/ddda3904-1478-46f2-9369-f8b9f3d3a550/v1hybrid-fips204
payload/req_seen_head_20251222T15.jsond8485f7e9dec3e59ae4bd07dfead63d0b160f116512eae6eb450e93fe5ce2b96if://citation/faf60f42-3416-4781-b382-401270a42e39/v1hybrid-fips204
payload/req_seen_inclusion_proof.json8acb86a7db2fb2fe9911ebd61c92c5efa14be6a907915e67d6207c906c8d80cbif://citation/bc3ba1f9-b909-42d4-8704-47645942f3af/v1hybrid-fips204
+
+ +
+

IF.STORY (human-readable narrative)

+
+ IF.STORY is a projection/view; the tarball contains the raw JSONL/JSON artifacts for evidence-grade verification. +
+
# IF.story — contextual narrative log
+
+Trace: `702d4607-4b54-45b1-aecf-b6728d80f124`
+
+Deterministic narrative projection of `trace_events.jsonl`. Each line includes the `event_hash` anchor.
+
+- 2025-12-22T15:01:09Z (+0ms) | `request_commit` | Request body commitment; commit_ok=False client_trace_id= | event_hash=dd4d7ef945762571194c85a1b93d5d6debed62d670923dde99459be056d151c7
+- 2025-12-22T15:01:09Z (+2ms) | `req_seen` | REQ_SEEN witnessed; hour=20251222T15 count=1 merkle_root=349c583a0e370c67d81b00b2c4d2162661a6ab2cc84788635a8b4c42cd638e82 | event_hash=e293e0fb903996239a1e3789fcf8d53249c1564bfa4dc7955dba010d29fc35e9
+- 2025-12-22T15:01:09Z (+7ms) | `request_received` | Auth+quota succeeded; provider=codex model=gpt-5.2 stream=False user_len=71 auth_ms=8 | event_hash=87de94783471da242ddefbfa6e4f0a8b387a6e7389bcb3cfe98b5d3d5d0d06dc
+- 2025-12-22T15:01:10Z (+873ms) | `retrieval_done` | Event data keys=['rag_ms', 'retrieval_event_id', 'retrieved_citation_ids', 'retrieved_count'] | event_hash=0cebfa3c693b9d1556cb529e5c79096d22c51f0f438ecefa37f3b358dc6b245a
+- 2025-12-22T15:01:10Z (+873ms) | `prompt_built` | Event data keys=['prompt_ms', 'prompt_sha256'] | event_hash=b4e423e17039b97bc79a9a5de50f8523c62e30c052612fbe4805e2500b4e19a0
+- 2025-12-22T15:01:18Z (+8251ms) | `model_done` | Event data keys=['llm_ms', 'model', 'provider'] | event_hash=25ee1ff385d2341a6ab44fc929b46f7ebcb34d92fb1bf0a326a3afd9ee0959ca
+- 2025-12-22T15:01:18Z (+8263ms) | `replacement_applied` | Event data keys=['citation_id', 'from_preview', 'kind', 'n', 'to_preview'] | event_hash=515b2792d5e6657eda38ab744859d5e5700c1bc96b6bcb9bc6b79865e9c66748
+- 2025-12-22T15:01:18Z (+8263ms) | `trace_finalizing` | Trace finalizing; ok=True provider=codex | event_hash=efbfa181fd0f95028666efbd257317d926269a878787bb0990f8cc4d0ebf927a
+
+Notes:
+- Ground truth remains `trace_events.jsonl` + `ttt_signed_record.json`.
+- REQ_SEEN ledger+head are included; public key is `trace_ed25519.pub`.
+
+
+ + + +
+ + diff --git a/evidence/trace_96700e8e-6a83-445e-86f7-06905c500146.html b/evidence/trace_96700e8e-6a83-445e-86f7-06905c500146.html new file mode 100644 index 0000000..ac5b3b2 --- /dev/null +++ b/evidence/trace_96700e8e-6a83-445e-86f7-06905c500146.html @@ -0,0 +1,190 @@ + + + + + + IF.emotion Evidence Trace — 96700e8e-6a83-445e-86f7-06905c500146 + + + +
+

IF.emotion Evidence Trace — 96700e8e-6a83-445e-86f7-06905c500146

+
Public, static evidence pages built from IF.emotion trace bundles (no auth; no live API calls).
+
+
+ +
+
+
Trace ID
96700e8e-6a83-445e-86f7-06905c500146 redacted
+
Timestamp (UTC)
2025-12-21T10:20:04Z
+
Provider
guard
+
Model
poc
+
Bundle
emo_trace_payload_96700e8e-6a83-445e-86f7-06905c500146.tar.gz (SHA256: 85eb323c8e5f11cf4dd18e612e8cde8dcdb355b3fbd6380bbc8d480a5bf97e87)
+
SHA sidecar
+
+
+ +
+

Independent verification

+
# Download the evidence bundle
+curl -fsSL -o emo.tar.gz 'https://infrafabric.io/static/hosted/emo_trace_payload_96700e8e-6a83-445e-86f7-06905c500146.tar.gz'
+
+# Verify transport integrity
+sha256sum emo.tar.gz
+# Expected: 85eb323c8e5f11cf4dd18e612e8cde8dcdb355b3fbd6380bbc8d480a5bf97e87
+
+# Download verifier (single-file)
+curl -fsSL -o iftrace.py 'https://infrafabric.io/static/hosted/iftrace.py'
+python3 iftrace.py verify emo.tar.gz --expected-sha256 85eb323c8e5f11cf4dd18e612e8cde8dcdb355b3fbd6380bbc8d480a5bf97e87
+
+
+ These pages are static. Verification does not require logging into this server. +
+
+ +
+

User request (captured)

+
[REDACTED]
+

Model output (captured)

+
[REDACTED]
+
+ +
+

TTT child artifacts

+ + + + + + + + + + + + +
ArtifactSHA256if:// citationPQ status
payload/headers.txt9391163b21b0f755a06b7daaec1440987e706774de0e6d8d1b6055ce6b681e79if://citation/aa5450f9-35d3-44c0-b1f0-8832e5e18b2d/v1hybrid-fips204
payload/response.jsonf500208d46ff0a4b074511815a41f896e050def1b41827634e282bbefca6f2faif://citation/82bf034e-fa1f-4141-ac36-9f4607eccab9/v1hybrid-fips204
payload/trace_payload.jsoncbbbe9c8ec0fbb10415d06b1b472aa9cf45fd31fe2be2dfb833cfa141d3d0442if://citation/07a6f45f-aa32-4066-a47c-86ea005691d6/v1hybrid-fips204
payload/trace_events.jsonl140c7ae7ae8d2e5a4f2b293675a38a39b59628781344feba281af79471d3905aif://citation/cc59e92e-3f92-41f8-acfe-8c635b1fc90e/v1hybrid-fips204
payload/ttt_signed_record.json524e457d890600b7dfdec7f92529f2a134bc9367ecaa21360319e385e74a827cif://citation/70276dd7-9ce7-4858-84dc-7461281a9107/v1hybrid-fips204
payload/api_trace.json264ca8e7cb66dff28cc61c17fe6ce93e040d007c04f35c0e15854534e55074ccif://citation/73645b18-5b32-4955-ab24-6eac432a2dfe/v1hybrid-fips204
payload/api_events.json588c1ab8790d9ab755f521257334c04d22446b8e292a2a1b1503b68c43280b81if://citation/f21cf096-a28c-495a-97fe-f9309a55066d/v1hybrid-fips204
payload/api_payload.json7050fababbafa14aff849a073642de227f5de1824774a82ee6209fa9243db50eif://citation/3aaae598-fe70-4971-b10e-b6e3340836f0/v1hybrid-fips204
payload/if_story.mda6b09b4c3ba838c8f283163f94f1ce401d7292173a7a0fef649e16eedfd1a12dif://citation/458e1393-d2e5-40aa-98dc-5c9ad19d56fd/v1hybrid-fips204
payload/trace_ed25519.pub72f2b5f2830b6e0f932c3071e9921ae083d6d76c69ce8720ea09e4473aee5e36if://citation/28c4aee6-9cc2-4d15-8adf-e1e8501bf186/v1hybrid-fips204
payload/req_seen_20251221T10.jsonl3a2d251ac075cfd35d56dc26f3cb9409e72a0c36c69360a520b32575278ea6d9if://citation/6aa470b1-0619-437e-b872-82d83f7e52eb/v1hybrid-fips204
payload/req_seen_head_20251221T10.json3808d7e454b044595d36a538bee5774b106713ed39657bd8c0cfd569c6a287d4if://citation/3a03fe03-e594-4a26-85ba-9e5e19ae4ac1/v1hybrid-fips204
payload/req_seen_inclusion_proof.json3d44a053f4f0976a767ab0f34191666cfa9affed088bfa937ee0820cbcf26099if://citation/533ad490-e9fa-4b9e-aa51-f123da28655c/v1hybrid-fips204
+
+ +
+

IF.STORY (human-readable narrative)

+
+ IF.STORY is a projection/view; the tarball contains the raw JSONL/JSON artifacts for evidence-grade verification. +
+
[REDACTED]
+
+ + + +
+ +