← Codex ReplayCONTENT HISTORY

Update to Codex Replay

Snapshot Oct 24, 2026 · 13:07 UTC · version 1.0.132

WHAT CHANGED

Payment or plan references changed

Package file — Now says: d233c98d77f2ebea9aed72e4300cc69872440a46d180e81f0975b1a23bb527f6

Observed in published text. Live prices and checkout terms have not been verified by this change.

Save Codex Replay and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

These are saved file metadata. Open a changed file to read its text edits.

Package file

Before

Sep 30, 2026 · 23:01 UTC

fd0b7569889dadd45fc99dae3665bd2cdb180e28926fb9563bf9112853aad664

After

Oct 24, 2026 · 13:07 UTC

d233c98d77f2ebea9aed72e4300cc69872440a46d180e81f0975b1a23bb527f6

Package file

Before

Sep 30, 2026 · 23:01 UTC

7523

After

Oct 24, 2026 · 13:07 UTC

34483

Package file

Before

Sep 30, 2026 · 23:01 UTC

{"sha256":"e2e4b208b8cf7e8c70b8b5bff0c23ed06269b31b9dfe02d4e52f88dec7e3f4ce","size":6951}

After

Oct 24, 2026 · 13:07 UTC

Not present

Package file

Before

Sep 30, 2026 · 23:01 UTC

{"sha256":"0bdfdaa4e0671c2021959e7c6d1e642dc390bf7583ccc51f7eda3756a1e7af3f","size":9241}

After

Oct 24, 2026 · 13:07 UTC

Not present

Compare saved observations

Download comparison JSON

Changed files

Choose a file to see its text changes. Binary or large files show metadata only.

.codex-plugin/plugin.json →

OWNERS →

README.md →

TEMPEST.md →

assets/model-pricing.json →

docs/security-review/managed-network-settings.json →

docs/security-review/real-model-results.json →

integrity.json →

manual_tests/README.md →

manual_tests/egress_probe.py →

manual_tests/prompt_guard.py →

manual_tests/runtime_errors.py →

manual_tests/worker_isolation.py →

mcp/__pycache__/controller_constants.cpython-312.pyc →

mcp/__pycache__/final_results_receipt.cpython-312.pyc →

mcp/__pycache__/plugin_installations.cpython-312.pyc →

mcp/__pycache__/replay_batch.cpython-312.pyc →

mcp/__pycache__/replay_configuration.cpython-312.pyc →

mcp/__pycache__/server.cpython-312.pyc →

mcp/codex-worker.mjs →

mcp/controller-ranges.js →

mcp/controller.css →

mcp/controller.html →

mcp/replay_batch.py →

mcp/server.py →

mcp/worker-policy.json →

plans/MULTI_THREAD_REPLAY.md →

scripts/__pycache__/claude_code_sample_loader.cpython-312.pyc →

scripts/__pycache__/historical_discovery.cpython-312.pyc →

scripts/__pycache__/historical_discovery_capabilities.cpython-312.pyc →

scripts/__pycache__/historical_discovery_core.cpython-312.pyc →

scripts/__pycache__/historical_execution.cpython-312.pyc →

scripts/__pycache__/historical_file_selection.cpython-312.pyc →

scripts/__pycache__/historical_replay.cpython-312.pyc →

scripts/__pycache__/precompute_sample_configurations.cpython-312.pyc →

scripts/__pycache__/record_claude_code_samples.cpython-312.pyc →

scripts/__pycache__/verify_claude_sample.cpython-312.pyc →

scripts/historical_execution.py →

scripts/historical_replay.py →

scripts/metrics/2_start_controller.py →

scripts/metrics/3_report_start_metrics.py →

scripts/metrics/4_report_final_metrics.py →

scripts/metrics/__pycache__/3_report_start_metrics.cpython-312.pyc →

scripts/metrics/__pycache__/4_report_final_metrics.cpython-312.pyc →

scripts/metrics/__pycache__/replay_metrics_common.cpython-312.pyc →

scripts/metrics/replay_metrics_common.py →

skills/codex-replay/SKILL.md →

tests/__pycache__/test_claude_code_sample_loader.cpython-312.pyc →

tests/__pycache__/test_claude_sample_verification.cpython-312.pyc →

tests/__pycache__/test_controller_batch_ui.cpython-312.pyc →

tests/__pycache__/test_controller_explanations.cpython-312.pyc →

tests/__pycache__/test_controller_file_configuration.cpython-312.pyc →

tests/__pycache__/test_controller_installations.cpython-312.pyc →

tests/__pycache__/test_controller_range_ui.cpython-312.pyc →

tests/__pycache__/test_controller_ranges.cpython-312.pyc →

tests/__pycache__/test_controller_scoring.cpython-312.pyc →

tests/__pycache__/test_controller_search.cpython-312.pyc →

tests/__pycache__/test_controller_transcript_inference.cpython-312.pyc →

tests/__pycache__/test_historical_discovery.cpython-312.pyc →

tests/__pycache__/test_historical_discovery_capabilities.cpython-312.pyc →

tests/__pycache__/test_historical_execution.cpython-312.pyc →

tests/__pycache__/test_historical_file_selection.cpython-312.pyc →

tests/__pycache__/test_lean_replay.cpython-312.pyc →

tests/__pycache__/test_maintained_catalog.cpython-312.pyc →

tests/__pycache__/test_mcp_retry_resilience.cpython-312.pyc →

tests/__pycache__/test_mcp_server.cpython-312.pyc →

tests/__pycache__/test_mcp_server_models.cpython-312.pyc →

tests/__pycache__/test_node_runtime.cpython-312.pyc →

tests/__pycache__/test_plugin_contract.cpython-312.pyc →

tests/__pycache__/test_plugin_metrics_contract.cpython-312.pyc →

tests/__pycache__/test_record_claude_code_samples.cpython-312.pyc →

tests/__pycache__/test_replay_metrics.cpython-312.pyc →

tests/__pycache__/test_replay_ranges.cpython-312.pyc →

tests/__pycache__/test_report_explanations.cpython-312.pyc →

tests/__pycache__/test_reviewer_privacy.cpython-312.pyc →

tests/test_controller_auth.py →

tests/test_controller_installations.py →

tests/test_controller_range_ui.py →

tests/test_controller_scoring.py →

tests/test_historical_execution.py →

tests/test_mcp_server.py →

tests/test_mcp_server_models.py →

tests/test_node_runtime.py →

tests/test_replay_metrics.py →

worker/src/codex-worker.mjs →

worker/src/worker-policy.mjs →

worker/tests/codex-worker.test.mjs →

worker/tests/worker-policy.test.mjs →

scripts/historical_execution.py

− removed · + added

--- before
+++ after
@@ -1,13 +1,9 @@
 #!/usr/bin/env python3
 """Lean, record-only execution, review, and reporting for Codex Replay."""
 
-# This portable plugin must use standard-library HTTP outside the monorepo.
-# ruff: noqa: TID251
-
 from __future__ import annotations
 
 import datetime as dt
-import functools
 import html
 import json
 import math
@@ -15,8 +11,6 @@
 import re
 import stat
 import subprocess
-import time
-import urllib.request
 from dataclasses import asdict, dataclass
 from fractions import Fraction
 from pathlib import Path
@@ -24,8 +18,6 @@
 
 PLUGIN_ROOT = Path(__file__).resolve().parent.parent
 MODEL_PRICING_PATH = PLUGIN_ROOT / "assets" / "model-pricing.json"
-DYNAMIC_PRICING_REFRESH_SECONDS = 60 * 60
-TokenPrices = dict[str, float]
 DEFAULT_CODEX_HOME = Path.home() / ".codex"
 MAX_ARTIFACT_BYTES = 16 * 1024 * 1024
 MAX_REVIEW_CHECK_EXPLANATION_LENGTH = 280
@@ -380,17 +372,6 @@
     """A lean replay execution could not be recorded."""
 
 
-class ModelPrices(TypedDict, total=False):
-    input: float
-    output: float
-    cached_input: float
-    cache_write: float
-    cache_write_5m: float
-    cache_write_1h: float
-    long_context_threshold_input_tokens: int
-    long_context: TokenPrices
-
-
 @dataclass
 class UsageRecord:
     provider: str
@@ -402,6 +383,7 @@
     cache_write_5m_tokens: int = 0
     cache_write_1h_tokens: int = 0
     message_id: str | None = None
+    service_tier: str | None = None
 
 
 @dataclass
@@ -490,6 +472,9 @@
             "status",
             "--porcelain",
             "--untracked-files=normal",
+            "--",
+            ".",
+            ":(top,exclude).replay-tmp",
             check=False,
         )
         if status.returncode == 0:
@@ -581,6 +566,9 @@
             else 0
         ),
         message_id=message_id,
+        service_tier=payload.get("service_tier")
+        if isinstance(payload.get("service_tier"), str)
+        else None,
     )
 
 
@@ -783,6 +771,8 @@
             "--binary",
             baseline_commit,
             "--",
+            ".",
+            ":(top,exclude).replay-tmp",
         )
         diff = tracked.stdout
         names = _git(
@@ -793,6 +783,8 @@
             "--name-only",
             baseline_commit,
             "--",
+            ".",
+            ":(top,exclude).replay-tmp",
         )
         changed.extend(line for line in names.stdout.splitlines() if line)
         untracked = _git(root, "ls-files", "--others", "--exclude-standard", "-z")
@@ -805,6 +797,8 @@
         ]
 
     for relative in sorted(raw_untracked):
+        if Path(relative).parts[0] == ".replay-tmp":
+            continue
         candidate = root / relative
         if candidate.stat().st_size > MAX_ARTIFACT_BYTES:
             continue
@@ -1193,134 +1187,6 @@
     return loaded if isinstance(loaded, dict) else {}
 
 
-def _pricing_rows(document: str, heading: str, columns: Sequence[str]) -> list[dict[str, str]]:
-    in_section = False
-    table: list[list[str]] = []
-    for line in document.splitlines():
-        line = line.strip()
-        if line == heading:
-            in_section = True
-            continue
-        if not in_section:
-            continue
-        if line.startswith("#"):
-            break
-        if line.startswith("|"):
-            table.append([cell.strip() for cell in line.strip("|").split("|")])
-        elif table:
-            break
-    if len(table) < 3 or not set(columns).issubset(table[0]):
-        return []
-    if not all(re.fullmatch(r":?-+:?", cell) for cell in table[1]):
-        return []
-    return [
-        {column: row[index] for index, column in enumerate(table[0])}
-        for row in table[2:]
-        if len(row) == len(table[0])
-    ]
-
-
-def _price_columns(row: Mapping[str, str], columns: Mapping[str, str]) -> TokenPrices | None:
-    prices: TokenPrices = {}
-    for name, column in columns.items():
-        cell = row[column]
-        if cell == "-":
-            continue
-        match = re.fullmatch(r"\$(\d+(?:\.\d+)?)\s*(?:/\s*MTok)?", cell)
-        if match is None:
-            return None
-        price = float(match.group(1))
-        if not math.isfinite(price):
-            return None
-        prices[name] = price
-    return prices if "input" in prices and "output" in prices else None
-
-
-def _parse_first_party_pricing(provider: str, document: str) -> dict[str, ModelPrices]:
-    long_columns: dict[str, str] = {}
-    if provider == "openai":
-        heading = "### Standard pricing data"
-        columns = {
-            "input": "Short context input",
-            "cached_input": "Short context cached input",
-            "cache_write": "Short context cache writes",
-            "output": "Short context output",
-        }
-        long_columns = {
-            name: column.replace("Short context", "Long context")
-            for name, column in columns.items()
-        }
-    elif provider == "anthropic":
-        heading = "## Model pricing"
-        columns = {
-            "input": "Base Input Tokens",
-            "cached_input": "Cache Hits & Refreshes",
-            "cache_write_5m": "5m Cache Writes",
-            "cache_write_1h": "1h Cache Writes",
-            "output": "Output Tokens",
-        }
-    else:
-        return {}
-
-    models: dict[str, ModelPrices] = {}
-    required_columns = ("Model", *columns.values(), *long_columns.values())
-    for row in _pricing_rows(document, heading, required_columns):
-        model = row["Model"].split(" (", 1)[0].strip("`")
-        if provider == "anthropic":
-            match = re.fullmatch(r"Claude ([A-Za-z]+) (\d+(?:\.\d+)?)", model)
-            if match is None:
-                continue
-            family = match.group(1).lower()
-            version = match.group(2).replace(".", "-")
-            if version.split("-")[0] == "3":
-                model = f"claude-{version}-{family}"
-            else:
-                model = f"claude-{family}-{version}"
-        elif re.fullmatch(r"[a-z][a-z0-9.-]+", model) is None:
-            continue
-        standard = _price_columns(row, columns)
-        if standard is None:
-            continue
-        rate: ModelPrices = {"input": standard["input"], "output": standard["output"]}
-        if "cached_input" in standard:
-            rate["cached_input"] = standard["cached_input"]
-        if "cache_write" in standard:
-            rate["cache_write"] = standard["cache_write"]
-        if provider == "anthropic":
-            if len(standard) != len(columns):
-                continue
-            rate["cache_write"] = standard["cache_write_5m"]
-            rate["cache_write_5m"] = standard["cache_write_5m"]
-            rate["cache_write_1h"] = standard["cache_write_1h"]
-        elif any(row[column] != "-" for column in long_columns.values()):
-            long_context = _price_columns(row, long_columns)
-            if long_context is None:
-                continue
-            # OpenAI's standard short/long-context table splits at 272K input tokens.
-            rate["long_context_threshold_input_tokens"] = 272_000
-            rate["long_context"] = long_context
-        models[model] = rate
-    return models
-
-
-def _fetch_dynamic_pricing(provider: str, url: str) -> dict[str, ModelPrices]:
-    refresh_bucket = int(time.monotonic() // DYNAMIC_PRICING_REFRESH_SECONDS)
-    return _cached_dynamic_pricing(provider, url, refresh_bucket)
-
-
-@functools.lru_cache(maxsize=4)
-def _cached_dynamic_pricing(provider: str, url: str, refresh_bucket: int) -> dict[str, ModelPrices]:
-    request = urllib.request.Request(
-        url, headers={"User-Agent": "Codex-Replay/1.0", "Accept": "text/markdown"}
-    )
-    try:
-        with urllib.request.urlopen(request, timeout=5) as response:
-            document = response.read().decode("utf-8")
-    except (OSError, UnicodeError):
-        return {}
-    return _parse_first_party_pricing(provider, document)
-
-
 def _configured_model_name(models: Mapping[str, Any], model: str) -> str | None:
     direct = models.get(model)
     if isinstance(direct, Mapping):
@@ -1334,35 +1200,27 @@
     return None
 
 
-def _configured_rate(models: Mapping[str, Any], model: str) -> Mapping[str, Any] | None:
-    name = _configured_model_name(models, model)
-    if name is not None:
-        candidate = models.get(name)
-        if isinstance(candidate, Mapping):
-            return candidate
-    return None
-
-
-def _dynamic_rate(pricing: Mapping[str, Any], model: str, provider: str) -> ModelPrices | None:
-    provider = {"codex": "openai", "claude": "anthropic"}.get(provider.lower(), provider.lower())
-    sources = pricing.get("dynamic_sources")
-    if not isinstance(sources, Mapping):
+def _configured_rate(models: Mapping[str, Any], record: UsageRecord) -> Mapping[str, Any] | None:
+    provider = {"claude": "anthropic", "codex": "openai"}.get(record.provider, record.provider)
+    identity = (
+        re.sub(r"-\d{8}$", "", record.model.replace(".", "-"))
+        if provider == "anthropic"
+        else record.model
+    )
+    name = _configured_model_name(models, record.model) or _configured_model_name(models, identity)
+    candidate = models.get(name) if name is not None else None
+    if not isinstance(candidate, Mapping) or candidate.get("provider", provider) != provider:
         return None
-    url = sources.get(provider)
-    if not isinstance(url, str) or not url:
+    tier = "fast" if record.service_tier == "priority" else record.service_tier or "standard"
+    if tier != "standard":
+        tiers = candidate.get("tiers")
+        candidate = tiers.get(tier) if isinstance(tiers, Mapping) else None
+    if not isinstance(candidate, Mapping):
+        return None
+    if candidate.get("long_context") is not None and not isinstance(
+        candidate.get("long_context_threshold_input_tokens"), int
+    ):
         return None
-    dynamic_models = _fetch_dynamic_pricing(provider, url)
-    candidate = dynamic_models.get(model)
-    if candidate is None:
-        configured_models = pricing.get("models")
-        if isinstance(configured_models, Mapping):
-            configured_name = _configured_model_name(configured_models, model)
-            if configured_name is not None:
-                candidate = dynamic_models.get(configured_name)
-    if candidate is None and provider == "anthropic":
-        # Pre-4.6 Claude snapshots append a date to the family/version model ID.
-        model_name = re.sub(r"-\d{8}$", "", model.replace(".", "-"))
-        candidate = dynamic_models.get(model_name)
     return candidate
 
 
@@ -1425,13 +1283,8 @@
     models = models if isinstance(models, Mapping) else pricing
     total = 0.0
     missing: list[str] = []
-    dynamic: list[str] = []
     for record in records:
-        rate = _dynamic_rate(pricing, record.model, record.provider)
-        if rate is not None:
-            dynamic.append(record.model)
-        if rate is None:
-            rate = _configured_rate(models, record.model) if isinstance(models, Mapping) else None
+        rate = _configured_rate(models, record) if isinstance(models, Mapping) else None
         if not isinstance(rate, Mapping):
             missing.append(record.model)
             continue
@@ -1445,19 +1298,36 @@
             and isinstance(long_context, Mapping)
         ):
             rate = {**rate, **long_context}
-        total += normalized["ordinary_input_tokens"] * float(rate.get("input", 0)) / 1_000_000
-        total += record.output_tokens * float(rate.get("output", 0)) / 1_000_000
-        total += record.cached_input_tokens * float(rate.get("cached_input", 0)) / 1_000_000
-        cache_rate = rate.get("cache_write", rate.get("cache_write_1h", 0))
-        _, unclassified_cache_write, cache_write_5m, cache_write_1h = _cache_write_breakdown(record)
-        total += unclassified_cache_write * float(cache_rate) / 1_000_000
-        total += cache_write_5m * float(rate.get("cache_write_5m", cache_rate)) / 1_000_000
-        total += cache_write_1h * float(rate.get("cache_write_1h", cache_rate)) / 1_000_000
+        _, unclassified, writes_5m, writes_1h = _cache_write_breakdown(record)
+        write_rate = rate.get("cache_write", rate.get("cache_write_5m"))
+        charges = (
+            (normalized["ordinary_input_tokens"], rate.get("input")),
+            (record.output_tokens, rate.get("output")),
+            (record.cached_input_tokens, rate.get("cached_input")),
+            (unclassified, write_rate),
+            (writes_5m, rate.get("cache_write_5m", write_rate)),
+            (writes_1h, rate.get("cache_write_1h")),
+        )
+        # Native Replay also keeps incomplete prices unknown, rather than charging zero.
+        if any(
+            tokens
+            and (
+                not isinstance(price, (int, float))
+                or isinstance(price, bool)
+                or not math.isfinite(price)
+                or price < 0
+            )
+            for tokens, price in charges
+        ):
+            missing.append(record.model)
+            continue
+        total += sum(tokens * price / 1_000_000 for tokens, price in charges if tokens)
     return {
         "status": "estimated" if not missing else "partial",
         "usd": round(total, 6) if not missing else None,
         "missing_models": sorted(set(missing)),
-        "dynamic_models": sorted(set(dynamic)),
+        "dynamic_models": [],
+        "pricing_as_of": pricing.get("as_of"),
         "basis": "published API-equivalent token pricing",
         "actual_charge": "not observed",
     }
Full technical diff · 116 changed fields

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"303b2b85c54fe63feedec6a4cced5b53d315dd34c5815139580d3254f39d4e8b"
AFTER
"3ed9e5ef538287d7249b6ff4a2275117f627824c04667007567825b95d3635ac"

changed /files/OWNERS/sha256

BEFORE
"12aeb715e62296d82974db971780c325721e093498ba5f7f2781d1830d09ce3a"
AFTER
"b3b03c7a1386a1d1917a4476917d0e02a89ef2b17a939fa6a53531bc66e9cf0c"

changed /files/OWNERS/size

BEFORE
108
AFTER
20

changed /files/README.md/sha256

BEFORE
"a7b6176cb3f3b9c36ad318c345b0eeff863fe0131ef980da070bb6d7bacfa391"
AFTER
"60a2f366b29a52064f15383961c30c894e4b34c710a9606cd74f4276c697c911"

changed /files/README.md/size

BEFORE
19728
AFTER
22407

removed /files/TEMPEST.md

BEFORE
{
  "sha256": "5425717f71bf3d49b91222d0ed4e5b10c910da41a8000f52f03220784430789b",
  "size": 430
}
AFTER
Field is absent

changed /files/assets~1model-pricing.json/sha256

BEFORE
"fd0b7569889dadd45fc99dae3665bd2cdb180e28926fb9563bf9112853aad664"
AFTER
"d233c98d77f2ebea9aed72e4300cc69872440a46d180e81f0975b1a23bb527f6"

changed /files/assets~1model-pricing.json/size

BEFORE
7523
AFTER
34483

added /files/docs~1security-review~1managed-network-settings.json

BEFORE
Field was absent
AFTER
{
  "sha256": "44db0b91ba9d8bb521c1405d75e967ddc815b32524f6b35ae851297fa201377f",
  "size": 6308
}

added /files/docs~1security-review~1real-model-results.json

BEFORE
Field was absent
AFTER
{
  "sha256": "ef493135c323f02a5a69a9f8ce28cb16cb63be0d7e659a323f6a24a4d7ac5172",
  "size": 15447
}

added /files/integrity.json

BEFORE
Field was absent
AFTER
{
  "sha256": "37028c58914518efeb7e71b4c0e927b2fbe351bac76435439ea2acf86a45558b",
  "size": 17104
}

changed /files/manual_tests~1README.md/sha256

BEFORE
"05e45014b45c1d28f61e68e0650473852b0500e2bdca0e68f36c9fd1009fc9a9"
AFTER
"47790cf92f30b3815cbad43bca020f9f92ba040699ababcb58a3e1aa21ce84a9"

changed /files/manual_tests~1README.md/size

BEFORE
1477
AFTER
2999

added /files/manual_tests~1egress_probe.py

BEFORE
Field was absent
AFTER
{
  "sha256": "86eb8309e1b50b043309aa2d4efca4b06db02cac934c606711ffe0202e4133eb",
  "size": 2330
}

added /files/manual_tests~1prompt_guard.py

BEFORE
Field was absent
AFTER
{
  "sha256": "75892689bd4e6b664607b0d977d52bb9993c967d881d1a669ef5d7165cac163f",
  "size": 3654
}

changed /files/manual_tests~1runtime_errors.py/sha256

BEFORE
"0c757f4d12a55aa879863e74ed5625c02da89740a9d081ca8fc8fbc7d159c045"
AFTER
"70eb5caf8ab81d458f28f22ce4d075b6724d031d84554aeeb76dbb187ff6638d"

changed /files/manual_tests~1runtime_errors.py/size

BEFORE
9393
AFTER
9334

added /files/manual_tests~1worker_isolation.py

BEFORE
Field was absent
AFTER
{
  "sha256": "b31c1263c8acaf646a0917939d11d843e77718bf33e8b21b2e6ffead780aea77",
  "size": 12997
}

removed /files/mcp~1__pycache__~1controller_constants.cpython-312.pyc

BEFORE
{
  "sha256": "49d0fdbc9c023462607c8d07e240f32a89b566f5522000acdf5d189f9d7cd08b",
  "size": 1424
}
AFTER
Field is absent

removed /files/mcp~1__pycache__~1final_results_receipt.cpython-312.pyc

BEFORE
{
  "sha256": "6deb7cdc0dde8458ee150480d7f235430940ae16b40f9763c9e6d9e6a4c2edf6",
  "size": 6504
}
AFTER
Field is absent

removed /files/mcp~1__pycache__~1plugin_installations.cpython-312.pyc

BEFORE
{
  "sha256": "98c75225a0ee86faad7f893ab82a814c9b21b75214c9f360dfd430173758cde4",
  "size": 6233
}
AFTER
Field is absent

removed /files/mcp~1__pycache__~1replay_batch.cpython-312.pyc

BEFORE
{
  "sha256": "08326457b35aaf24b3b3f2df56267831419615e722c871e648cf5fb68b45931b",
  "size": 17150
}
AFTER
Field is absent

removed /files/mcp~1__pycache__~1replay_configuration.cpython-312.pyc

BEFORE
{
  "sha256": "c57a1da95008569f8546124b0925fde176c2ecd5bd6052e3a307150d89cc358f",
  "size": 11541
}
AFTER
Field is absent

removed /files/mcp~1__pycache__~1server.cpython-312.pyc

BEFORE
{
  "sha256": "53edaca4f74e5564b76e9a18c873d69279b3c67a2bba82ce2c6a66d72bba3231",
  "size": 178302
}
AFTER
Field is absent

changed /files/mcp~1codex-worker.mjs/sha256

BEFORE
"b147ece3ee39bf73cbcbd0f9ed3f6782937e7d90b043734f8016180d2aac9740"
AFTER
"58cc917e5a19511d1a4255aebc1372e419c2911e257102a7d2d03e0c14136d4e"

changed /files/mcp~1codex-worker.mjs/size

BEFORE
43193
AFTER
51695

changed /files/mcp~1controller-ranges.js/sha256

BEFORE
"0f4980819a57a0e6d52cdd4f0f9507774e5d44ed66ad8afee140cf81a6c0c2d8"
AFTER
"ec662eee290f4b371ca06f129ea7f709c03c4c54183065782b00d38748ad5a75"

changed /files/mcp~1controller-ranges.js/size

BEFORE
43052
AFTER
46358

changed /files/mcp~1controller.css/sha256

BEFORE
"603afedbae820418f33e93a7fa38dc964904dc65525fcd31bc289935d1c7428c"
AFTER
"8f7c4775c8a3a5ffbbed5796bb9da048ccb7299e3bf99a6928c31325be769cb8"

changed /files/mcp~1controller.css/size

BEFORE
21866
AFTER
23106

changed /files/mcp~1controller.html/sha256

BEFORE
"c168cf51755006692cc027414ab167a4beb754eaf72408d88698ad7229a7be22"
AFTER
"2dc12aacc608abccaa4deb89545fa8c3b48adde4d61d437b1beb88f0ce50d625"

changed /files/mcp~1controller.html/size

BEFORE
149726
AFTER
149932

changed /files/mcp~1replay_batch.py/sha256

BEFORE
"94f4e9769b616aa74124847210a84b8db2abae282c700a5bc0831ca6d8813e94"
AFTER
"a98479977e861582c6e42bfa62fbbe3f69ca2c66b838d86e6e65e26e7f265025"

changed /files/mcp~1replay_batch.py/size

BEFORE
15118
AFTER
18362

changed /files/mcp~1server.py/sha256

BEFORE
"d591b41a9627bc490998c10219b9a4d67736e40d990ac991d64bca0f46825080"
AFTER
"282212a2b9bdd622f78a62db470eb74dabc5b1bc553d13206abf9ecebf704dab"

changed /files/mcp~1server.py/size

BEFORE
149473
AFTER
147833

added /files/mcp~1worker-policy.json

BEFORE
Field was absent
AFTER
{
  "sha256": "434484e50d84c94a2d95f3ffc4a8a1216dcfc210008ad7fd397adf8b4fc97654",
  "size": 1869
}

removed /files/plans~1MULTI_THREAD_REPLAY.md

BEFORE
{
  "sha256": "95de9c2dd648109a18bd2a63311500e7ce5888621fa8727bb79e41ffcd679c10",
  "size": 2387
}
AFTER
Field is absent

removed /files/scripts~1__pycache__~1claude_code_sample_loader.cpython-312.pyc

BEFORE
{
  "sha256": "f5f6d10831d638999c75fd72b2c75f675a133facb6957316c1aae820a87838aa",
  "size": 38582
}
AFTER
Field is absent

removed /files/scripts~1__pycache__~1historical_discovery.cpython-312.pyc

BEFORE
{
  "sha256": "7446522c9c52d6e222fe81e92a740c89cfffcbe9ceebf976935a36465fe6a296",
  "size": 3013
}
AFTER
Field is absent

removed /files/scripts~1__pycache__~1historical_discovery_capabilities.cpython-312.pyc

BEFORE
{
  "sha256": "bc80d556eb067037507237525e422e2db2ba980276c929f396983ce1f869118c",
  "size": 26952
}
AFTER
Field is absent

removed /files/scripts~1__pycache__~1historical_discovery_core.cpython-312.pyc

BEFORE
{
  "sha256": "1cdf82d5537cb0081a5ca1fe4e9df401ff1ae6a883e9531aeb7ac85095d479fc",
  "size": 129592
}
AFTER
Field is absent

removed /files/scripts~1__pycache__~1historical_execution.cpython-312.pyc

BEFORE
{
  "sha256": "5587aa6cea7c696f91a1575623ad15d15694893c2777431a29ae69e7639bf46b",
  "size": 94456
}
AFTER
Field is absent

removed /files/scripts~1__pycache__~1historical_file_selection.cpython-312.pyc

BEFORE
{
  "sha256": "09aecfb984eb5bdcbd3f1cd9412d8f702ea9ff3703cbbb309b53f22a27e4c96c",
  "size": 84692
}
AFTER
Field is absent

removed /files/scripts~1__pycache__~1historical_replay.cpython-312.pyc

BEFORE
{
  "sha256": "3f3df32576c7d3352849feb3ac59852a8f47cfc8e400e1b5c32b60c24f217301",
  "size": 137186
}
AFTER
Field is absent

removed /files/scripts~1__pycache__~1precompute_sample_configurations.cpython-312.pyc

BEFORE
{
  "sha256": "cf3a3470e4db9eae21797f520c0ecb3904d353a84c96bce2eb92e2b6c20e0fec",
  "size": 6733
}
AFTER
Field is absent

removed /files/scripts~1__pycache__~1record_claude_code_samples.cpython-312.pyc

BEFORE
{
  "sha256": "2ada19aad95c2354b87546b58097b4030053e933e46d43924efd54387434b49a",
  "size": 55142
}
AFTER
Field is absent

removed /files/scripts~1__pycache__~1verify_claude_sample.cpython-312.pyc

BEFORE
{
  "sha256": "1a7c69ec0110e4f6436f61aa5e8927ebf4a2b1af39579b7a862f495de5c91977",
  "size": 9774
}
AFTER
Field is absent

changed /files/scripts~1historical_execution.py/sha256

BEFORE
"ecd613568138616baa8170d1c8feb7e17c349ebb4b6027179ba740f63bb784b6"
AFTER
"988b9e59e22a0c4a2a627accfe31ac2e7e469f8f4cc5c9eb1a1244692f0dd1aa"

changed /files/scripts~1historical_execution.py/size

BEFORE
85246
AFTER
80106

changed /files/scripts~1historical_replay.py/sha256

BEFORE
"67bf95dead2c01c34d12ab5555b34c82c834834371a079a63721fb8d3f700cb5"
AFTER
"93e2678c0557bfa0bd1b87d34f077da32ceab2689fd52d3519d5d1c173f4dad0"

changed /files/scripts~1historical_replay.py/size

BEFORE
130534
AFTER
130571

changed /files/scripts~1metrics~12_start_controller.py/sha256

BEFORE
"5787fc54a489fb6fdfd1a58fff56cb9306d55bac8f854e1bc2eb1f591e522d71"
AFTER
"cb2f512251f66ceeb8e225780b55b3d3f4b519871112a4eada4ff8dc105ab3c7"

changed /files/scripts~1metrics~12_start_controller.py/size

BEFORE
3547
AFTER
3596

changed /files/scripts~1metrics~13_report_start_metrics.py/sha256

BEFORE
"7004d6698b8de1fa2c5b4c1a7a2fe178e450cebc3b27bfd64d3971102b465e7c"
AFTER
"0cf8b2a76d3fd71dd978680e30874ab3f7a14ded61bd994beb8b72ebf728cc4c"

changed /files/scripts~1metrics~13_report_start_metrics.py/size

BEFORE
3483
AFTER
3481

changed /files/scripts~1metrics~14_report_final_metrics.py/sha256

BEFORE
"1cb2d650a348eaf519db106a875fbbd3fc858770f36fab5761f3b7ba6f533c12"
AFTER
"dece2f5b3019ffd9bed06aa11b79dff0608d1a2071b30f49c5b5d8b6c22c26d4"

changed /files/scripts~1metrics~14_report_final_metrics.py/size

BEFORE
44526
AFTER
44524

removed /files/scripts~1metrics~1__pycache__~13_report_start_metrics.cpython-312.pyc

BEFORE
{
  "sha256": "025e312e0ec3d750bb4547858ff3221b893005e7df26735cfdd1051e26e584ae",
  "size": 4743
}
AFTER
Field is absent

removed /files/scripts~1metrics~1__pycache__~14_report_final_metrics.cpython-312.pyc

BEFORE
{
  "sha256": "9e3078f27ed79115615527f7d2dab1daa9741714c2f1ae7eede0e6d5ba5e523b",
  "size": 50209
}
AFTER
Field is absent

removed /files/scripts~1metrics~1__pycache__~1replay_metrics_common.cpython-312.pyc

BEFORE
{
  "sha256": "8c76e408ee14ff1e45f0b8cff8b7a5512604bb67fd810c1b634b6bec9844d319",
  "size": 13800
}
AFTER
Field is absent

changed /files/scripts~1metrics~1replay_metrics_common.py/sha256

BEFORE
"9a3e62438ee30485c8163d37fa2e6876842a369b1c5bd9ee42ac11e18ea0f9c8"
AFTER
"115d330050d5a46980db278a14471dace894ead47cce4a157b1c561a02bb0846"

changed /files/scripts~1metrics~1replay_metrics_common.py/size

BEFORE
9165
AFTER
9673

changed /files/skills~1codex-replay~1SKILL.md/sha256

BEFORE
"ae6bf35ef05bb0e60ecd5e41bd657b72d28e6db54dca7fe826a25be9a35b8528"
AFTER
"a6eec69fa3f0d2607a8a489fd0a2a0c4ff9fc9d1a5332641ef8f63b4b968f40f"

changed /files/skills~1codex-replay~1SKILL.md/size

BEFORE
5434
AFTER
5386

removed /files/tests~1__pycache__~1test_claude_code_sample_loader.cpython-312.pyc

BEFORE
{
  "sha256": "17a45fb73e444c4a6248fe792be070a0e2dcc016854a170b1cdc5c976a221247",
  "size": 44723
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_claude_sample_verification.cpython-312.pyc

BEFORE
{
  "sha256": "603387be0d1b46c8f86bc2434b74dcfa6f9283bd9dab684563a55d5067c7264c",
  "size": 13587
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_controller_batch_ui.cpython-312.pyc

BEFORE
{
  "sha256": "b3df7d807dbe782b56f9335c52d853e74a3325ebd3c9607c404a9daa8a9a9ca7",
  "size": 21267
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_controller_explanations.cpython-312.pyc

BEFORE
{
  "sha256": "c824520cb7a38b25b3060076fd95e0239db8e63aca04e84960e57c6ed693badd",
  "size": 5767
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_controller_file_configuration.cpython-312.pyc

BEFORE
{
  "sha256": "faf02cd49d1f10cb5a8b4bf1aacb1b60179166715bd2bd7740656b55ab495d22",
  "size": 4057
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_controller_installations.cpython-312.pyc

BEFORE
{
  "sha256": "e165ce9d60cb3b45e903850e4e3b0c8b3ba7637e8306c98beb3c1b92010b2646",
  "size": 18835
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_controller_range_ui.cpython-312.pyc

BEFORE
{
  "sha256": "ad2636c918dbf2ed9fee680fb17365ef8c590dd917b2a3f43ce1635e121ef2da",
  "size": 48689
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_controller_ranges.cpython-312.pyc

BEFORE
{
  "sha256": "534b3f42f7e4e8f842607502deb289f438152e4c8927ef38b1f92e00831f274d",
  "size": 24514
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_controller_scoring.cpython-312.pyc

BEFORE
{
  "sha256": "e2e4b208b8cf7e8c70b8b5bff0c23ed06269b31b9dfe02d4e52f88dec7e3f4ce",
  "size": 6951
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_controller_search.cpython-312.pyc

BEFORE
{
  "sha256": "0bdfdaa4e0671c2021959e7c6d1e642dc390bf7583ccc51f7eda3756a1e7af3f",
  "size": 9241
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_controller_transcript_inference.cpython-312.pyc

BEFORE
{
  "sha256": "4bfb8fc1512ba639ae8203114f3f5c63f41866f1bb9bf2849368d8eda6ae3bac",
  "size": 4868
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_historical_discovery.cpython-312.pyc

BEFORE
{
  "sha256": "0c7b4566c4ba24488646842645aea5d1fda67142038efcd82aa85bd350b97e45",
  "size": 45655
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_historical_discovery_capabilities.cpython-312.pyc

BEFORE
{
  "sha256": "433d4a01a47441c3666f5f1f83170f44e17f236024af0f8ffd7d79202a63b2a2",
  "size": 17060
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_historical_execution.cpython-312.pyc

BEFORE
{
  "sha256": "9fd217cf340c010a3cb3a568e5a0e3eabf3f36af1748e29ceeaf08b073e3e3c4",
  "size": 95032
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_historical_file_selection.cpython-312.pyc

BEFORE
{
  "sha256": "dc92695472f0981ee31a3155e2f23696259d69e40f953fd1914cfc128f3084da",
  "size": 71448
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_lean_replay.cpython-312.pyc

BEFORE
{
  "sha256": "b5d1af368b7f27ff1f65658ef463f50c3288402c13adeff444ddd0e14a2ce515",
  "size": 153821
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_maintained_catalog.cpython-312.pyc

BEFORE
{
  "sha256": "135472261f4b2e3a157a4ea878643b7b9e1042372e6784b4ee167af5d7d87131",
  "size": 2019
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_mcp_retry_resilience.cpython-312.pyc

BEFORE
{
  "sha256": "63da4023d937ea24c2d1826ad113d366ee4900c0ff79d00f50cc23edf7806af0",
  "size": 5708
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_mcp_server.cpython-312.pyc

BEFORE
{
  "sha256": "27ded72aa56c65d24962512ba856917ca3559059cad3331786b3ce0c716fa95e",
  "size": 176337
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_mcp_server_models.cpython-312.pyc

BEFORE
{
  "sha256": "a1ab27d8d03f62e3e5e90dbb015dbe6186289512434c7ebeef8217ba62fe236c",
  "size": 96727
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_node_runtime.cpython-312.pyc

BEFORE
{
  "sha256": "dd7ee95669281c7dc94662776a274f980084217e98eec10b12fcc559a02a5fb5",
  "size": 10026
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_plugin_contract.cpython-312.pyc

BEFORE
{
  "sha256": "03a6927dc1985b12b762a74c10ea1c1f53b64fd867d4c43ca9fd346651aa4edd",
  "size": 12051
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_plugin_metrics_contract.cpython-312.pyc

BEFORE
{
  "sha256": "121ea8c5848f7237d4172215fe0481c7052cf3ccc0e3d6a6ac40babf7fb32f87",
  "size": 10932
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_record_claude_code_samples.cpython-312.pyc

BEFORE
{
  "sha256": "6ee25c5dc75e76e89a14b4763d85ba4642065091d110e5ffe2da1467111159da",
  "size": 52771
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_replay_metrics.cpython-312.pyc

BEFORE
{
  "sha256": "8d88bfd07b4198753305427cdf2e510f570f055ca663832a302672235e407c45",
  "size": 132260
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_replay_ranges.cpython-312.pyc

BEFORE
{
  "sha256": "3e378555de395ae78e15510d4a4a61c6d15c110ec1d51b1085204eb99e5a70fc",
  "size": 40653
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_report_explanations.cpython-312.pyc

BEFORE
{
  "sha256": "dd1f7cf4cb00b9424faf10e001f79415227df762b2bad489a620d7bad03c8575",
  "size": 7038
}
AFTER
Field is absent

removed /files/tests~1__pycache__~1test_reviewer_privacy.cpython-312.pyc

BEFORE
{
  "sha256": "926960deab2a76b7fc2180d0e3688c95ac5d6340be901a999bcd6b107c3acebe",
  "size": 12080
}
AFTER
Field is absent

added /files/tests~1test_controller_auth.py

BEFORE
Field was absent
AFTER
{
  "sha256": "71b689dafd781d4bb2438a51de5c8adfe9ddca2d8a162742a2355212521895ab",
  "size": 14475
}

changed /files/tests~1test_controller_installations.py/sha256

BEFORE
"fc977d5294fd1eba58e48b9bf1933bca973107b87216bcadffd63e70211cad6c"
AFTER
"351a83339e4ec2cbc300ed034cb15ab20d863660a7e9d8569f08ec6a23e1fc41"

changed /files/tests~1test_controller_installations.py/size

BEFORE
13986
AFTER
14472

changed /files/tests~1test_controller_range_ui.py/sha256

BEFORE
"e2f09a1779cfc63b5ced8ac19746474afd9e5e261f1375b35da04724e26cc3c7"
AFTER
"c2f40d0210ccb85b0d5cf679f735397f68cba1d0a3c19b975f00111e76ad6859"

changed /files/tests~1test_controller_range_ui.py/size

BEFORE
43635
AFTER
43788

changed /files/tests~1test_controller_scoring.py/sha256

BEFORE
"9a39697fdc208b7d790a82f61d8aa106284d14a977c528bbe463899fc0054d05"
AFTER
"046239daad52ca9ef6f881001563d16925ce95ca6033e2b9c3d94ea2565f2c5b"

changed /files/tests~1test_controller_scoring.py/size

BEFORE
5309
AFTER
9274

changed /files/tests~1test_historical_execution.py/sha256

BEFORE
"00bec69ffe46720b474f9542da8e2f6655c9f8b44bd766bbb593bd28babc0ce1"
AFTER
"f56649d0ff928a145b3f6b1acf407c20294609952679c3d19d0b6ad8481d5e27"

changed /files/tests~1test_historical_execution.py/size

BEFORE
80726
AFTER
66242

changed /files/tests~1test_mcp_server.py/sha256

BEFORE
"693c130ac9fd07190b7192346eb5086af6eb70511982868c420644e6cbd9889f"
AFTER
"52b1c2a18b6eaa8b9840376e73900cb3f5ff64dd94de87c1ce0829be4f7b9c0d"

changed /files/tests~1test_mcp_server.py/size

BEFORE
143808
AFTER
147784

changed /files/tests~1test_mcp_server_models.py/sha256

BEFORE
"51da6f8b766e1900109e4460889717608dcdc8512918547b5acfe023e44b6ad3"
AFTER
"63cfc2b059f8083fdb37938fb59889c0f44771d09c92eaa0cd86dc4cf504f7e3"

changed /files/tests~1test_mcp_server_models.py/size

BEFORE
80827
AFTER
85664

changed /files/tests~1test_node_runtime.py/sha256

BEFORE
"34592733b082a5fa8fa816a27cf1c8f59bb98bd12be9f0d4ef67099f60c4c884"
AFTER
"c9774e380bbcc20a4ff38187d5bb6f9983f50336e958c019a3e7a82354c95a4a"

changed /files/tests~1test_node_runtime.py/size

BEFORE
6371
AFTER
8787

changed /files/tests~1test_replay_metrics.py/sha256

BEFORE
"9777788d80585a7cede7370d478ca3a8b345fa3ff33ec478dd413f17efe6a393"
AFTER
"bb9dba233e2bc571940bee7b8d9707828a92706b6ebe59262de3108f627333f3"

changed /files/tests~1test_replay_metrics.py/size

BEFORE
98952
AFTER
99163

changed /files/worker~1src~1codex-worker.mjs/sha256

BEFORE
"36338d4f5a82f2d9805deb98b0ffecda511a2942c77cc3dd0517259c7527b312"
AFTER
"9ee8c74339141ad561bd31bf899c12b4ebb4a25f43604ed51853c2d2498129fd"

changed /files/worker~1src~1codex-worker.mjs/size

BEFORE
27741
AFTER
27969

added /files/worker~1src~1worker-policy.mjs

BEFORE
Field was absent
AFTER
{
  "sha256": "015fbc05817b48b7069d40e4a01a8b5280b992842d124bc792dd92937b550be6",
  "size": 6750
}

changed /files/worker~1tests~1codex-worker.test.mjs/sha256

BEFORE
"aa73b45b5476cc8bbc1f0d6d8fd1e60d0c37dd8386ff6a4d65560056b1b7d820"
AFTER
"6b57eb7f5c49a34ef5140484afbe5cbb688aba4c43104c745dc8424df321d6af"

changed /files/worker~1tests~1codex-worker.test.mjs/size

BEFORE
28179
AFTER
28553

added /files/worker~1tests~1worker-policy.test.mjs

BEFORE
Field was absent
AFTER
{
  "sha256": "19fd3ebbee5b79eadc862309ef818d420db78b193783c5b1fc2b55bb09563a7c",
  "size": 2474
}
Full snapshot data
{
  "files": {
    ".codex-plugin/plugin.json": {
      "sha256": "3ed9e5ef538287d7249b6ff4a2275117f627824c04667007567825b95d3635ac",
      "size": 2212
    },
    ".gitignore": {
      "sha256": "6ed66d2c09255e46f22258daae3dfb29cf00af2a9125ac6072fb4dd2d94adfd9",
      "size": 75
    },
    ".mcp.json": {
      "sha256": "e91a9ed1f2cf317928886206480fcf45c2d4e3ff46221edcebdd58084d55abab",
      "size": 743
    },
    "AGENTS.md": {
      "sha256": "d10822a8cbfe23401c9c635fc03934c3400ad48fe38b3ee7d1b84bf461a4b437",
      "size": 340
    },
    "BASELINE_HANDLING.md": {
      "sha256": "2b9e95c55dc507915eb16ecd6d087f7a55848e78069ef79eecfd0ef2b0273f90",
      "size": 3686
    },
    "OWNERS": {
      "sha256": "b3b03c7a1386a1d1917a4476917d0e02a89ef2b17a939fa6a53531bc66e9cf0c",
      "size": 20
    },
    "README.md": {
      "sha256": "60a2f366b29a52064f15383961c30c894e4b34c710a9606cd74f4276c697c911",
      "size": 22407
    },
    "TEMPEST_REVIEW": {
      "sha256": "cb73d60563e63a2250a3133cb78f1335443d615df3926e7cd631e607aac2c79e",
      "size": 381
    },
    "analytics.yaml": {
      "sha256": "de6db3ab97644bb31a4137a3ad0f333da2ec99f296a700b97ed61aa4cb1f4ce7",
      "size": 8861
    },
    "assets/claude-code-sample-tasks.json": {
      "sha256": "2ad93d4f7e735a4664e22af92e9f5167369647dceffc04992dd3c18c7681c2ff",
      "size": 2319
    },
    "assets/claude-code-samples/.gitattributes": {
      "sha256": "14e9d71d80a6daaf433ce985b7ce1d3813c67c66355e341206bba1f8e3603fd4",
      "size": 34
    },
    "assets/claude-code-samples/index.json": {
      "sha256": "aa31532f666dc08c59922342ddf6adc0a4e1c783971bdbbf28a4b47ca89e6c44",
      "size": 19324
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-fable-5/configuration.json": {
      "sha256": "260c1680d98d019c3c69428244fbb9333a78c6c07b03f3c8d621dc030a8cc81a",
      "size": 8659
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-fable-5/patch.diff": {
      "sha256": "caf963ec5d0174af831634fbfbdce2c64d4c32544a41e3896987b351a034b438",
      "size": 1042
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-fable-5/result.json": {
      "sha256": "a5fe806fcbb955c04154e648b51bcd4ab9bc8c3070d9572116dc6eb7b7819da8",
      "size": 1862
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-fable-5/transcript.000.jsonl": {
      "sha256": "6acdaaac6152fc4161e6a41b61a2536071cf78654c84e0a7eec8a5d96eca4317",
      "size": 148795
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-fable-5/transcript.001.jsonl": {
      "sha256": "e272da8ba546363507f6436c7363ea919e3e0fb3c9a01013579673527e983646",
      "size": 54385
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-haiku-4-5-20251001/configuration.json": {
      "sha256": "248d87a3265cf5647b1f285823c546bcd9f6e1ddd9ab1a4e40962b4158d57b74",
      "size": 6659
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-haiku-4-5-20251001/patch.diff": {
      "sha256": "9445976a95b9c8e38df576420c227b38b74a056e8f1e4480792c877b9d269197",
      "size": 711
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-haiku-4-5-20251001/result.json": {
      "sha256": "111b4ab6d41ccabf34764d7e0c7bd0926373b56615599ea3e4afb962dae4ba75",
      "size": 1514
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-haiku-4-5-20251001/transcript.000.jsonl": {
      "sha256": "b88f572eeebd9af0211210f7236f56fb71b17add8cbac717327ea321465c8a20",
      "size": 129710
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-opus-5/configuration.json": {
      "sha256": "4c3e67d9f229ac261a0de1ebb0435930049786fdf0fbf0220de01f40c27591c1",
      "size": 8491
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-opus-5/patch.diff": {
      "sha256": "99d589569d6b02883a65a17ea5226a97aa82f20dd4b91bd313358d4c821a7093",
      "size": 2271
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-opus-5/result.json": {
      "sha256": "735b65b5811a7a1a47ef8f62d8a69f09c0534aaf3b33349079428a688e92d7ef",
      "size": 1861
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-opus-5/transcript.000.jsonl": {
      "sha256": "3796443edc614f04baa4bf6e04fab70541bd552a41e0edef566c610ff5473a52",
      "size": 147887
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-opus-5/transcript.001.jsonl": {
      "sha256": "fe631249b6a21bb98fd726fd5e3af8422eb6337ee294187f34c2a592956331b4",
      "size": 14343
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-sonnet-5/configuration.json": {
      "sha256": "b6c168be8a82d00fdb97c839bdfd8e9e3914db0e9e9ae9292f9ae4467cd15a5c",
      "size": 6701
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-sonnet-5/patch.diff": {
      "sha256": "8f080d797c6ea03c93f406b6061cf5e33b15a152ff270372fcc40d564bc24ea1",
      "size": 889
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-sonnet-5/result.json": {
      "sha256": "5bdc7d8093ece9e9105bbae4bd88ec18a5cef67c8d12ad417ec58f8f8549acb6",
      "size": 1873
    },
    "assets/claude-code-samples/records/jqlang__jq-2157--claude-sonnet-5/transcript.000.jsonl": {
      "sha256": "cad98ffa406aab52bcacd186b7b7931753411ef8899195f80cd81841784670c2",
      "size": 124910
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-fable-5/configuration.json": {
      "sha256": "3e92bb640aa03cff401c522b632a326b8c6ea4c4d539cd489c1b17c1c99cb2db",
      "size": 10770
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-fable-5/patch.diff": {
      "sha256": "93a8e36b683ffdca45e3572798a50c285f050ea0a64280b20fc687da5a240d0d",
      "size": 2365
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-fable-5/result.json": {
      "sha256": "e55d1cbedf2c579aee881c5d87d602f2b28341db7d244b0889a0578833a6d01c",
      "size": 1899
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-fable-5/transcript.000.jsonl": {
      "sha256": "faf31f5a5283a5096335012a89940763bce2435ce113c74909e1ee9e6997323c",
      "size": 148871
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-fable-5/transcript.001.jsonl": {
      "sha256": "2c885709d57691769333f0495a267421e5253c44d034a4a1d8553630b42f0edd",
      "size": 147715
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-fable-5/transcript.002.jsonl": {
      "sha256": "7020e71139c1c04610f2f45f33233dc8535f16ce05d60b8e22778852d27738d4",
      "size": 145425
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-fable-5/transcript.003.jsonl": {
      "sha256": "d9110543c0cacefbc477361649f28ba9ef25153c5d245571b76406e115e168dc",
      "size": 4355
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-haiku-4-5-20251001/configuration.json": {
      "sha256": "a95a5533c36e35c9012692f0b6ffc0c462cc4ee5b739f1455d20027028c31425",
      "size": 7249
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-haiku-4-5-20251001/patch.diff": {
      "sha256": "bf45c94dd54f1d87d6c02c82c37240241fd540948b4a513df1a5802e4ddd9f8c",
      "size": 545
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-haiku-4-5-20251001/result.json": {
      "sha256": "ddf89e66704a4e38c606f7414b5eb604ef1c4d86cdf47d6289c188963991ae80",
      "size": 1512
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-haiku-4-5-20251001/transcript.000.jsonl": {
      "sha256": "42ebb3e516b9c821111454c51bda937f6a77b899e5b05caacab9f8c9f4afab73",
      "size": 147596
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-haiku-4-5-20251001/transcript.001.jsonl": {
      "sha256": "8dfb888ed7b3e446d5f7c9d1c1b962ab3f7dafa0ce8c837714ad2ae502256b38",
      "size": 66871
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-opus-5/configuration.json": {
      "sha256": "4618412a6a02ee716f30f796e883a9d889d8608ddf13c5046f91d6c48a667b7e",
      "size": 9628
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-opus-5/patch.diff": {
      "sha256": "201abca2d852ea66dd2f3e149234078ae412c75d0b1e7cc435fc8aff17a0d3c3",
      "size": 3739
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-opus-5/result.json": {
      "sha256": "52b30b1328a42f37ce5e65e3d5b95c9ae17590e86651cd7101caa76df0b9cb09",
      "size": 1899
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-opus-5/transcript.000.jsonl": {
      "sha256": "76ccfb49d925e01dc8b6c4438bef7ef88c8ba0a5d5a249f66f7f934f29ed7c97",
      "size": 148295
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-opus-5/transcript.001.jsonl": {
      "sha256": "ece8fef0ccf3bb4c76a98b85e9a1c94c7f0d972137b399d572aa9f7dc57f6ed2",
      "size": 129714
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-sonnet-5/configuration.json": {
      "sha256": "ec6cdbb392fc2b6d754d94ecba6d292f3ee3bdff90818febd1277e8e156eeb62",
      "size": 8506
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-sonnet-5/patch.diff": {
      "sha256": "856003f06831eb8663911c20dc47371ddc9f08e2521671a8957f95bdf24bef9c",
      "size": 2003
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-sonnet-5/result.json": {
      "sha256": "8e4a76ba49335a99dd56a17aaf5f55ede38bcdb0ba435d10c60435a1acf60f3e",
      "size": 1893
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-sonnet-5/transcript.000.jsonl": {
      "sha256": "ab055fde4077f68fa3f4e5e5b2a29f2673d23e1855ebfaa87a1825be293ab9c0",
      "size": 147596
    },
    "assets/claude-code-samples/records/jqlang__jq-2919--claude-sonnet-5/transcript.001.jsonl": {
      "sha256": "ceca0c88ba428474fef846af4855242aa196c1c4a481b0ca8135869329991d41",
      "size": 129557
    },
    "assets/icon.svg": {
      "sha256": "707542c12360b1dbbd7eb00190a03013bc988fd984115afbfbb535f994662d4e",
      "size": 795
    },
    "assets/model-pricing.json": {
      "sha256": "d233c98d77f2ebea9aed72e4300cc69872440a46d180e81f0975b1a23bb527f6",
      "size": 34483
    },
    "docs/security-review/managed-network-settings.json": {
      "sha256": "44db0b91ba9d8bb521c1405d75e967ddc815b32524f6b35ae851297fa201377f",
      "size": 6308
    },
    "docs/security-review/real-model-results.json": {
      "sha256": "ef493135c323f02a5a69a9f8ce28cb16cb63be0d7e659a323f6a24a4d7ac5172",
      "size": 15447
    },
    "integrity.json": {
      "sha256": "37028c58914518efeb7e71b4c0e927b2fbe351bac76435439ea2acf86a45558b",
      "size": 17104
    },
    "manual_tests/README.md": {
      "sha256": "47790cf92f30b3815cbad43bca020f9f92ba040699ababcb58a3e1aa21ce84a9",
      "size": 2999
    },
    "manual_tests/egress_probe.py": {
      "sha256": "86eb8309e1b50b043309aa2d4efca4b06db02cac934c606711ffe0202e4133eb",
      "size": 2330
    },
    "manual_tests/prompt_guard.py": {
      "sha256": "75892689bd4e6b664607b0d977d52bb9993c967d881d1a669ef5d7165cac163f",
      "size": 3654
    },
    "manual_tests/runtime_errors.py": {
      "sha256": "70eb5caf8ab81d458f28f22ce4d075b6724d031d84554aeeb76dbb187ff6638d",
      "size": 9334
    },
    "manual_tests/worker_isolation.py": {
      "sha256": "b31c1263c8acaf646a0917939d11d843e77718bf33e8b21b2e6ffead780aea77",
      "size": 12997
    },
    "mcp/codex-worker.mjs": {
      "sha256": "58cc917e5a19511d1a4255aebc1372e419c2911e257102a7d2d03e0c14136d4e",
      "size": 51695
    },
    "mcp/controller-ranges.js": {
      "sha256": "ec662eee290f4b371ca06f129ea7f709c03c4c54183065782b00d38748ad5a75",
      "size": 46358
    },
    "mcp/controller.css": {
      "sha256": "8f7c4775c8a3a5ffbbed5796bb9da048ccb7299e3bf99a6928c31325be769cb8",
      "size": 23106
    },
    "mcp/controller.html": {
      "sha256": "2dc12aacc608abccaa4deb89545fa8c3b48adde4d61d437b1beb88f0ce50d625",
      "size": 149932
    },
    "mcp/controller_constants.py": {
      "sha256": "facf39759b6ec8906d7f29a223168299391810b6f2d644e844392dbda8fc5bbc",
      "size": 1268
    },
    "mcp/final_results_receipt.py": {
      "sha256": "34d9cb0b2688fcc9971f7373bf4b920fcb33801aa20e106909ad680cf1624e1d",
      "size": 4554
    },
    "mcp/plugin_installations.py": {
      "sha256": "266acaf9306d14219386452736113843fbc427b9328858cd40f2b0c9c9fa2394",
      "size": 4535
    },
    "mcp/replay_batch.py": {
      "sha256": "a98479977e861582c6e42bfa62fbbe3f69ca2c66b838d86e6e65e26e7f265025",
      "size": 18362
    },
    "mcp/replay_configuration.py": {
      "sha256": "bc050e82efda9efa8c6688e43a8d13002cf33ba800b8893f5173f963e2dc27b3",
      "size": 10704
    },
    "mcp/server.py": {
      "sha256": "282212a2b9bdd622f78a62db470eb74dabc5b1bc553d13206abf9ecebf704dab",
      "size": 147833
    },
    "mcp/worker-policy.json": {
      "sha256": "434484e50d84c94a2d95f3ffc4a8a1216dcfc210008ad7fd397adf8b4fc97654",
      "size": 1869
    },
    "scripts/claude_code_sample_loader.py": {
      "sha256": "b6ebd974f60d57a9ce3ae8805268252c3bc3925587fd4a45507e1baeac3161df",
      "size": 30761
    },
    "scripts/historical_discovery.py": {
      "sha256": "556e09b0cc1331673a7c5ca1a7eef5cfacb1a5c8d1cace5b6863806db371a4e3",
      "size": 1631
    },
    "scripts/historical_discovery_capabilities.py": {
      "sha256": "b81212a50a7d65f4667c74124c0fa3a4c2ba433b0cf19973b87911f2a6648379",
      "size": 24233
    },
    "scripts/historical_discovery_core.py": {
      "sha256": "cf099e11a5800a3c7209cc1f265cf038ed626dcc6b03622452607214dcb43ea0",
      "size": 124133
    },
    "scripts/historical_execution.py": {
      "sha256": "988b9e59e22a0c4a2a627accfe31ac2e7e469f8f4cc5c9eb1a1244692f0dd1aa",
      "size": 80106
    },
    "scripts/historical_file_selection.py": {
      "sha256": "e384ab8596fc437fbbba2ee958bb74ebabca1d6dd9d3d522e4c728bb3a1a7aa2",
      "size": 71237
    },
    "scripts/historical_replay.py": {
      "sha256": "93e2678c0557bfa0bd1b87d34f077da32ceab2689fd52d3519d5d1c173f4dad0",
      "size": 130571
    },
    "scripts/metrics/1_probe_metrics.py": {
      "sha256": "caa4b92980d176d527da849c33c9c9df58b17d1150e02dfa49fc5c166c3e303d",
      "size": 1588
    },
    "scripts/metrics/2_start_controller.py": {
      "sha256": "cb2f512251f66ceeb8e225780b55b3d3f4b519871112a4eada4ff8dc105ab3c7",
      "size": 3596
    },
    "scripts/metrics/3_report_start_metrics.py": {
      "sha256": "0cf8b2a76d3fd71dd978680e30874ab3f7a14ded61bd994beb8b72ebf728cc4c",
      "size": 3481
    },
    "scripts/metrics/4_report_final_metrics.py": {
      "sha256": "dece2f5b3019ffd9bed06aa11b79dff0608d1a2071b30f49c5b5d8b6c22c26d4",
      "size": 44524
    },
    "scripts/metrics/replay_metrics_common.py": {
      "sha256": "115d330050d5a46980db278a14471dace894ead47cce4a157b1c561a02bb0846",
      "size": 9673
    },
    "scripts/precompute_sample_configurations.py": {
      "sha256": "818397e83b9e14853d42affd3ebb1989779f0beee6ead3f8d94343c128949da8",
      "size": 4326
    },
    "scripts/record_claude_code_samples.py": {
      "sha256": "5661c2c977070d41f87558f07127b653455e764e88fcca836a75d00117036fb9",
      "size": 42584
    },
    "scripts/verify_claude_sample.py": {
      "sha256": "09f31dab9549d249bef28f48f685c171c7be305741ef06d929fde01af9426304",
      "size": 7261
    },
    "skills/codex-replay/SKILL.md": {
      "sha256": "a6eec69fa3f0d2607a8a489fd0a2a0c4ff9fc9d1a5332641ef8f63b4b968f40f",
      "size": 5386
    },
    "skills/codex-replay/agents/openai.yaml": {
      "sha256": "f3f13a40849e2de6d4ecc4f5c09a0b52d5743cfd0585b2f1c8ed2b24234cfa74",
      "size": 315
    },
    "tests/test_claude_code_sample_loader.py": {
      "sha256": "dbaa329c48f1f6e9592e68a86db4987808c054b3a16857495222ae64f6b5cd86",
      "size": 30612
    },
    "tests/test_claude_sample_verification.py": {
      "sha256": "77bfdf357d3a49422d483d24d3208d974010bfee082a9ce6051eaf0548ce963c",
      "size": 7606
    },
    "tests/test_controller_auth.py": {
      "sha256": "71b689dafd781d4bb2438a51de5c8adfe9ddca2d8a162742a2355212521895ab",
      "size": 14475
    },
    "tests/test_controller_batch_ui.py": {
      "sha256": "e4fbfb7548e0cfd1d8666e6e6490f3c391d4d013f63b59c071f05854d303fd9e",
      "size": 18266
    },
    "tests/test_controller_explanations.py": {
      "sha256": "55c3ad52b554fa522212314da10f629f2c5293faf3bb346825e503242d65b042",
      "size": 6625
    },
    "tests/test_controller_file_configuration.py": {
      "sha256": "04f1599e1b7b6cb31f0eb0777c1448f74847e4e06c23728524e80d1a504ab3a2",
      "size": 2904
    },
    "tests/test_controller_installations.py": {
      "sha256": "351a83339e4ec2cbc300ed034cb15ab20d863660a7e9d8569f08ec6a23e1fc41",
      "size": 14472
    },
    "tests/test_controller_range_ui.py": {
      "sha256": "c2f40d0210ccb85b0d5cf679f735397f68cba1d0a3c19b975f00111e76ad6859",
      "size": 43788
    },
    "tests/test_controller_ranges.py": {
      "sha256": "8dafae8315f379957735a7d468549a1e0376f67928a30d5193c640fb4c3ae174",
      "size": 17929
    },
    "tests/test_controller_scoring.py": {
      "sha256": "046239daad52ca9ef6f881001563d16925ce95ca6033e2b9c3d94ea2565f2c5b",
      "size": 9274
    },
    "tests/test_controller_search.py": {
      "sha256": "89d4ed601d083051904ce2f7c1e01abdcecfb05e542d5ddaa1362fba0013e1e5",
      "size": 8189
    },
    "tests/test_controller_transcript_inference.py": {
      "sha256": "444e106fa54362f1c9eceb5ebe3a18123d675031cd77eb379e45145bebee56ed",
      "size": 6040
    },
    "tests/test_historical_discovery.py": {
      "sha256": "0671b562ca5cecad2e1f507424ee00ddd773af6bfd5bec545ed77809c8ba5a7d",
      "size": 43668
    },
    "tests/test_historical_discovery_capabilities.py": {
      "sha256": "21801b6aea46a7c205a325a8d23a5b2ede9536068b25e789231aaa67c52db80a",
      "size": 11597
    },
    "tests/test_historical_execution.py": {
      "sha256": "f56649d0ff928a145b3f6b1acf407c20294609952679c3d19d0b6ad8481d5e27",
      "size": 66242
    },
    "tests/test_historical_file_selection.py": {
      "sha256": "17bc466d0252395971e4442d42a6f437bd15fd870aa95e1e89bdaaaa2c0d554b",
      "size": 55087
    },
    "tests/test_lean_replay.py": {
      "sha256": "5303dff62cd77640aef27f7c9df3d00c56a4c67df93cf47960737deecefc52f3",
      "size": 140310
    },
    "tests/test_maintained_catalog.py": {
      "sha256": "4ff2a6436dfb34ced512befae3e2a40254d7fe6c91efff31dc10d0377c75aea5",
      "size": 1080
    },
    "tests/test_mcp_retry_resilience.py": {
      "sha256": "a9aab71212892f6e760c30a1c833784904128a662be5bd6c615b1a49a81175b5",
      "size": 3874
    },
    "tests/test_mcp_server.py": {
      "sha256": "52b1c2a18b6eaa8b9840376e73900cb3f5ff64dd94de87c1ce0829be4f7b9c0d",
      "size": 147784
    },
    "tests/test_mcp_server_models.py": {
      "sha256": "63cfc2b059f8083fdb37938fb59889c0f44771d09c92eaa0cd86dc4cf504f7e3",
      "size": 85664
    },
    "tests/test_node_runtime.py": {
      "sha256": "c9774e380bbcc20a4ff38187d5bb6f9983f50336e958c019a3e7a82354c95a4a",
      "size": 8787
    },
    "tests/test_plugin_contract.py": {
      "sha256": "0976876cb190333e1c6f9497906e702916d34eb6ef708261922325c45f0c1eff",
      "size": 8020
    },
    "tests/test_plugin_metrics_contract.py": {
      "sha256": "184a013dc2eee24c3d8293a159146c8f414346b894d4b13fcefd9affd150263c",
      "size": 8383
    },
    "tests/test_record_claude_code_samples.py": {
      "sha256": "5923b58876d8034eb9e4fa43c23b607fdaacb5e81c12d18802a6de6befe57c02",
      "size": 30838
    },
    "tests/test_replay_metrics.py": {
      "sha256": "bb9dba233e2bc571940bee7b8d9707828a92706b6ebe59262de3108f627333f3",
      "size": 99163
    },
    "tests/test_replay_ranges.py": {
      "sha256": "bc0e128d6efad28dc106d4a93add2b60c75e74b2ee8636dcd7d35c365e5926d6",
      "size": 37298
    },
    "tests/test_report_explanations.py": {
      "sha256": "b3a4a922a0737921d948f3e6452b206b6f8d2d9da2ebeed247314056d95096b8",
      "size": 5224
    },
    "tests/test_reviewer_privacy.py": {
      "sha256": "e43d620641d3ca183a85d9bdcaa18166b0b02d94a6398cd439f0585d33587a81",
      "size": 8956
    },
    "worker/.gitignore": {
      "sha256": "4d56952b0fb13bf8f9b6c13a6d4c34a075bac3af447636a1df4335d7576e2f97",
      "size": 14
    },
    "worker/package-lock.json": {
      "sha256": "43b2572bc6cc3bba695ca949f9873118c52e50e8de84a719d97d23490500a2c7",
      "size": 19062
    },
    "worker/package.json": {
      "sha256": "de55086136cda81d13a8a31dd576a4728af5d1a11a7026ebaf3a845bfbde5103",
      "size": 392
    },
    "worker/scripts/build.mjs": {
      "sha256": "3ef881d010e9c9254ea6c1ef5be54c7e6de2047801ea683f0f81b12cc27c89c8",
      "size": 699
    },
    "worker/src/codex-worker.mjs": {
      "sha256": "9ee8c74339141ad561bd31bf899c12b4ebb4a25f43604ed51853c2d2498129fd",
      "size": 27969
    },
    "worker/src/worker-policy.mjs": {
      "sha256": "015fbc05817b48b7069d40e4a01a8b5280b992842d124bc792dd92937b550be6",
      "size": 6750
    },
    "worker/tests/codex-worker.test.mjs": {
      "sha256": "6b57eb7f5c49a34ef5140484afbe5cbb688aba4c43104c745dc8424df321d6af",
      "size": 28553
    },
    "worker/tests/worker-policy.test.mjs": {
      "sha256": "19fd3ebbee5b79eadc862309ef818d420db78b193783c5b1fc2b55bb09563a7c",
      "size": 2474
    }
  }
}

SHA-256 of public snapshot: 41d0a493722da16a24648dc98ae36d9015457e837dc4119cfc3d93dd1f188d6d