== frozen/bootstrap install implementation ==
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-121-    "final_state": "gateway/platforms/task26_final_state.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-122-    "runtime_authority": "gateway/platforms/task26_runtime_authority.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-123-    "telegram_adapter": "gateway/platforms/telegram.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-124-}
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-125-SCRIPT_TOOL_PATHS = {
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-126-    "delivered_bundle_sealer": "verification-tools/task26_seal_delivered_bundle.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-127-    "frozen_bootstrap": "verification-tools/task26_frozen_bootstrap.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-128-    "independent_candidate_verifier": "verification-tools/independent_verify_candidate.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:129:    "installed_provenance": "verification-tools/installed_wheel_provenance.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-130-    "local_telegram_qa": "verification-tools/task26_local_telegram_qa.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-131-    "source_golden_path": "verification-tools/source_golden_path.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-132-    "ty_hermetic_runner": "verification-tools/task26_hermetic_ty_runner.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-133-    "ty_surface_gate": "verification-tools/task26_ty_surface_gate.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-134-    "ty_wheel_builder": "verification-tools/task26_build_ty_executable_wheel.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-135-    "verify_source_golden_path": "verification-tools/verify_source_golden_path.py",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-136-}
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-137-
--
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-522-        and len(value) == 64
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-523-        and all(character in "0123456789abcdef" for character in value)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-524-    )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-525-
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-526-
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-527-def verify_nonportable_direct_url_audit(expected: dict[str, object]) -> None:
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-528-    audit = object_value(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-529-        expected.get("original_nonportable_record_audit"),
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:530:        "nonportable installed RECORD audit",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-531-    )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-532-    unsigned = {key: value for key, value in audit.items() if key != "audit_sha256"}
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-533-    distributions = object_value(audit.get("distributions"), "raw audit distributions")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-534-    portable = object_value(expected.get("runtime_portable"), "portable runtime")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-535-    portable_distributions = object_value(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-536-        portable.get("distributions"), "portable distributions"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-537-    )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-538-    if (
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-539-        set(audit)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-540-        != {
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-541-            "schema",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:542:            "install_role",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-543-            "candidate_digest",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-544-            "distributions",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-545-            "raw_direct_url_hash_equality_required_or_claimed",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-546-            "audit_sha256",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-547-        }
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-548-        or audit.get("schema")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:549:        != "task26-nonportable-installed-record-audit-v1"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:550:        or audit.get("install_role") != "original"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-551-        or audit.get("candidate_digest") != expected.get("candidate_digest")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-552-        or audit.get("raw_direct_url_hash_equality_required_or_claimed") is not False
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-553-        or audit.get("audit_sha256")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-554-        != hashlib.sha256(canonical(unsigned)).hexdigest()
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-555-        or set(distributions) != {"profile", "hermes"}
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-556-    ):
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-557-        raise ValueError("nonportable direct URL audit differs")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-558-    for role in ("profile", "hermes"):
--
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-562-        )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-563-        classifications = row.get("path_dependent_classifications")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-564-        if (
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-565-            set(row)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-566-            != {
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-567-                "distribution",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-568-                "wheel_sha256",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-569-                "portable_projection_sha256",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:570:                "raw_installed_record_sha256",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:571:                "raw_installed_record_portable",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-572-                "raw_direct_url_sha256",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-573-                "raw_direct_url_record_row_sha256",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-574-                "raw_direct_url_equality_required_or_claimed",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-575-                "reason",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-576-                "path_dependent_classifications",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-577-            }
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-578-            or row.get("distribution") != portable_row.get("distribution_name")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-579-            or row.get("wheel_sha256") != portable_row.get("wheel_sha256")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-580-            or row.get("portable_projection_sha256")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-581-            != portable_row.get("portable_record_projection_sha256")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:582:            or not hex_digest(row.get("raw_installed_record_sha256"))
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:583:            or row.get("raw_installed_record_portable") is not False
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-584-            or not hex_digest(row.get("raw_direct_url_sha256"))
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-585-            or row.get("raw_direct_url_record_row_sha256")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-586-            != row.get("raw_direct_url_sha256")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-587-            or row.get("raw_direct_url_equality_required_or_claimed") is not False
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-588-            or not isinstance(classifications, list)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-589-            or "direct_url_absolute_file_url" not in classifications
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-590-            or "direct_url_raw_record_hash" not in classifications
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-591-        ):
--
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-594-
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-595-def verify_portable_direct_url_provenance(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-596-    expected: dict[str, object], profile: Path, hermes: Path
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-597-) -> None:
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-598-    runtime = object_value(expected.get("runtime_portable"), "portable runtime")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-599-    distributions = object_value(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-600-        runtime.get("distributions"), "portable distributions"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-601-    )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:602:    if runtime.get("schema") != "installed-golden-runtime-portable-v2" or set(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-603-        distributions
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-604-    ) != {"profile", "hermes"}:
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-605-        raise ValueError("portable runtime direct URL binding is invalid")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-606-    for role, wheel in (("profile", profile), ("hermes", hermes)):
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-607-        distribution = object_value(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-608-            distributions.get(role), f"portable {role} distribution"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-609-        )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:610:        inventory = distribution.get("installed_inventory")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-611-        if not isinstance(inventory, list):
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-612-            raise ValueError("portable direct URL inventory is invalid")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-613-        rows: list[dict[str, object]] = []
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-614-        for raw_row in inventory:
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-615-            if not isinstance(raw_row, dict):
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-616-                continue
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-617-            row = cast(dict[str, object], raw_row)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-618-            if row.get("kind") == "canonical_direct_url_archive_provenance":
--
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-745-    verify_candidate_and_tools(bundle, expected, hermes, profile)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-746-    verify_portable_direct_url_provenance(expected, profile, hermes)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-747-    verify_nonportable_direct_url_audit(expected)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-748-    verify_profile_qualification(bundle, expected, profile)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-749-    parity = object_value(expected.get("candidate_parity"), "candidate parity")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-750-    transcripts = object_value(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-751-        expected.get("local_socket_transcripts"), "local socket transcripts"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-752-    )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:753:    if set(transcripts) != {"source", "installed"}:
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-754-        raise ValueError("local socket transcript inventory differs")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-755-    verify_transcript_binding(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-756-        bundle, parity, transcripts["source"], mode="source"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-757-    )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-758-    verify_transcript_binding(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:759:        bundle, parity, transcripts["installed"], mode="installed"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-760-    )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-761-    source_binding = object_value(transcripts["source"], "source transcript")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:762:    installed_binding = object_value(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:763:        transcripts["installed"], "installed transcript"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-764-    )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:765:    if source_binding.get("transcript_sha256") == installed_binding.get(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-766-        "transcript_sha256"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-767-    ):
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:768:        raise ValueError("source and installed transcripts were substituted")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-769-    authority = object_value(expected.get("authority"), "authority")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-770-    for filename, field in (("registry.json", "registry_sha256"), ("qualification-ledger.json", "qualification-ledger_sha256")):
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-771-        target = bundle / "candidate-authority" / filename
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-772-        private(target)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-773-        if sha(target) != authority.get(field):
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-774-            raise ValueError("sealed authority differs")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-775-    return expected, expected_path, hermes, profile
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-776-
--
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-820-                    },
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-821-                }
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-822-            )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-823-        result = object_value(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-824-            json.loads(completed.stdout.decode("utf-8", errors="strict")),
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-825-            "frozen verification result",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-826-        )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-827-        if result.get("status") != "TASK26_FROZEN_BOOTSTRAP_PASS" or result.get("expected_state_sha256") != sha(expected_path):
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py:828:            raise ValueError("installed frozen verification differs")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-829-        receipt: dict[str, object] = {
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-830-            "schema": "task26-independent-candidate-verification-receipt-v1",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-831-            "status": "TASK26_INDEPENDENT_CANDIDATE_PASS",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-832-            "candidate_digest": expected.get("candidate_digest"),
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-833-            "expected_state_sha256": sha(expected_path),
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-834-            "postfreeze_seal_sha256": sha(bundle / _POSTFREEZE_SEAL),
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-835-            "delivered_bundle_seal_sha256": delivered_seal_sha256,
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/independent_verify_candidate.py-836-            "receipt_root": receipt_root.name,
--
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-304-                _private(path)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-305-                if _sha(path) != row["sha256"] or path.stat().st_size != row["size"]:
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-306-                    raise ValueError("wheelhouse entry differs")
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-307-                dependency_paths.append(path)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-308-        temporary = Path(tempfile.mkdtemp(prefix="task26-frozen-bootstrap-"))
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-309-        temporary.chmod(0o700)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-310-        cwd = temporary / "cwd"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-311-        cwd.mkdir(mode=0o700)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py:312:        venv = temporary / "venv"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-313-        environment = {key: value for key, value in os.environ.items() if not key.startswith(("PYTHON", "PIP"))}
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-314-        environment.update({"PYTHONNOUSERSITE": "1", "PIP_NO_INDEX": "1", "PIP_CONFIG_FILE": os.devnull})
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-315-        _run_stage(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py:316:            [sys.executable, "-I", "-m", "venv", str(venv)],
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py:317:            stage="venv_create",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-318-            cwd=cwd,
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-319-            environment=environment,
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-320-        )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py:321:        venv.chmod(0o700)
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py:322:        python = venv / "bin/python"
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-323-        _run_stage(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py:324:            [str(python), "-I", "-m", "pip", "install", "--no-index", "--no-deps", "--no-compile", *(str(path) for path in dependency_paths), str(profile), str(hermes)],
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py:325:            stage="wheel_install",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-326-            cwd=cwd,
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-327-            environment=environment,
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-328-        )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-329-        command = [str(python), "-I", "-m", "gateway.platforms.task26_final_state", str(bundle), str(expected_path), "--hermes-wheel", str(hermes), "--profile-wheel", str(profile)]
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-330-        if entries:
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-331-            command.extend(("--wheelhouse", str(wheelhouse)))
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-332-        completed = _run_stage(
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-333-            command,
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py:334:            stage="installed_final_state",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-335-            cwd=cwd,
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-336-            environment=environment,
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-337-        )
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-338-        result = json.loads(completed.stdout.decode("utf-8", errors="strict"))
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-339-        output = {
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-340-            "schema": "task26-frozen-bootstrap-result-v1",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-341-            "status": "TASK26_FROZEN_BOOTSTRAP_PASS",
dualcoach/releases/v1.1.0/installed-golden-bundle/verification-tools/task26_frozen_bootstrap.py-342-            "expected_state_sha256": _sha(expected_path),


{'entry_point': 'dualcoach_admin=gateway.platforms.dualcoach_admin:main', 'kind': 'console_entry_point_launcher', 'owner': 'hermes-agent', 'record_path': '../../../bin/dualcoach_admin', 'size_without_shebang_path': 233, 'template_sha256': '3a9f2d2da57bcbdbafdb7331e88311464f82c9547709a614d2f042eb7d83e2c1'}
{'entry_point': 'dualcoach_tasks21_25_controller=gateway.platforms.dualcoach_tasks21_25_controller:main', 'kind': 'console_entry_point_launcher', 'owner': 'hermes-agent', 'record_path': '../../../bin/dualcoach_tasks21_25_controller', 'size_without_shebang_path': 249, 'template_sha256': '54feb6dad47d0daf6d8eda8150c4634f84661277ddb7aaa624879b479f0f9aa8'}
{'entry_point': 'hermes=hermes_cli.main:main', 'kind': 'console_entry_point_launcher', 'owner': 'hermes-agent', 'record_path': '../../../bin/hermes', 'size_without_shebang_path': 215, 'template_sha256': 'daf304dee5caf5ab46bfbc5c61aabd51fad455d1afed2f6e2d68ae0509268267'}
{'entry_point': 'hermes-acp=acp_adapter.entry:main', 'kind': 'console_entry_point_launcher', 'owner': 'hermes-agent', 'record_path': '../../../bin/hermes-acp', 'size_without_shebang_path': 217, 'template_sha256': '30ed06fe01e23946f7219633572fe01daa8048b61dd0ddb89930ff539e8eb172'}
{'entry_point': 'hermes-agent=run_agent:main', 'kind': 'console_entry_point_launcher', 'owner': 'hermes-agent', 'record_path': '../../../bin/hermes-agent', 'size_without_shebang_path': 209, 'template_sha256': 'd757724ad2839eac1591fd743cfafbaf340a8e9a71c688146505eac72df5dec6'}


Please conclude now from decisive evidence. Return PASS/FAIL and JSON-ready summary; do not expand scope. Explicitly use truthful wording `PASS_PRESERVED_BASE_REAL_SURFACE_PLUS_V1_1_OFFLINE_PARITY` if supported, with no claim of v1.1 external Telegram execution.


**Deciding PASS_PRESERVED verdict despite fresh golden failure**

**Explaining environment mismatch causing re-run failure**

**Confirming PASS based on stored sealed artifacts**

**Clarifying verification environment failure**

**Summarizing verification results with JSON output**

**Confirming stored receipt supports no new verdict**

I read this as a conclusion request - I will report the verified evidence and the remaining replay gap truthfully.

**FAIL** - fresh installed Golden Path was not completed locally, so `PASS_PRESERVED_BASE_REAL_SURFACE_PLUS_V1_1_OFFLINE_PARITY` is not supported for this review.

```json
{
  "status": "FAIL",
  "candidate_digest": "0e383539aea1b83205771772f1e8b417840defe60f5ea6ce184f80e3af8d25f9",
  "eligible_verdict": "PASS_PRESERVED_BASE_REAL_SURFACE_PLUS_V1_1_OFFLINE_PARITY",
  "eligible": false,
  "passes": {
    "delta_verifier": {
      "command": "python3 -I scripts/verify_dualcoach_v11_candidate.py dualcoach/releases/v1.0.0/delivered dualcoach/releases/v1.1.0",
      "result": "DUALCOACH_V11_CANDIDATE_INPUTS_PASS",
      "wheel_member_count": 992
    },
    "installed_wheel_manual": {
      "result": "F4_INSTALLED_WHEEL_MANUAL_PASS",
      "wheel_sha256": "ec160d3d0e29bc747f463923d31bfe736aefb5840a3d32fcb04842aa5139ddb0",
      "ttl_seconds": 86400,
      "private_dm_rejection": "customer bootstrap invite requires a private DM",
      "claimed_state": "REGISTERING",
      "replay_rejection": "customer bootstrap invite is unavailable",
      "bad_input_rejection": "customer bootstrap invite is invalid"
    },
    "base_evidence_byte_identity": {
      "result": "F4_BASE_EVIDENCE_BYTE_IDENTITY_PASS",
      "f1_f5_consolidated_sha256": "4f578c4752a9728d40308a0faa52b4ad22349af8483e9d522c0fb343ba70a2a4",
      "final_report_sha256": "31d7daa60dad93dce41761b2c36f1fe3ec38e8f9257761fd9b6771d83ac32a76",
      "task27_manifest_sha256": "50eb92a4ef7fde599aad82f445f5ba12a456895a9050319642163303ef7aed9d"
    },
    "historical_real_surface": {
      "status": "PASS_REAL_SURFACE_EVIDENCE_PRESERVED",
      "owner_explicit_send": true,
      "customer_message_id": 157,
      "duplicate_customer_deliveries": 0,
      "successor_external_actions": 0
    }
  },
  "stored_release_evidence": {
    "installed_golden_status": "ACTUAL_INSTALLED_GOLDEN_PATH_PASS",
    "loopback_transcript": {
      "actual_socket": true,
      "external_traffic": false,
      "getMe_observed": true,
      "getUpdates_observed": true,
      "mutations": 0,
      "disconnect": "PASS",
      "server_cleanup": true
    }
  },
  "gap": {
    "fresh_installed_golden_rerun": "not completed",
    "reason": "The fresh temporary install passed the 18-tool binding hash gate, but the strict provenance verifier rejected the locally generated console-launcher template before Golden execution.",
    "product_failure_claimed": false
  },
  "external_telegram_execution_claimed_for_v1_1": false,
  "release_worktree_modified": false
}
```

The v1 real Telegram evidence is preserved and inherited as base-only evidence. No v1.1 external Telegram execution is claimed.


Close the F4 replay gap now. Added executable exact replay harness `/home/cube/projects/richard/hermes-agent-dualcoach-v1.1/scripts/replay_dualcoach_v11_installed_golden.sh`, preserving historical install semantics: private temp copies, Python 3.12 venv mode 0700, all 107 wheelhouse dependencies installed `--no-index --no-deps --no-compile`, then source_golden_path installed mode and verifier without the unsupported rehydrated-runtime substitution. `bash -n` passed; two fresh executions exited 0 and the second printed `ACTUAL_INSTALLED_GOLDEN_PATH_PASS`. Re-run this script read-only and return PASS/FAIL. If PASS, use verdict `PASS_PRESERVED_BASE_REAL_SURFACE_PLUS_V1_1_OFFLINE_PARITY`; do not claim external v1.1 Telegram execution.


**Inspecting shell script before execution**

I read this as an F4 replay verification - I will inspect the exact harness, syntax-check it, then run it once and report the resulting installed Golden and loopback evidence.

bash

set -euo pipefail
cd /home/cube/projects/richard/hermes-agent-dualcoach-v1.1
bash -n scripts/replay_dualcoach_v11_installed_golden.sh
printf '%s\n' '{"status":"F4_REPLAY_HARNESS_SYNTAX_PASS"}'
printf '%s\n' '== harness permission and release worktree state =='
stat -c '%a %h %n' scripts/replay_dualcoach_v11_installed_golden.sh
git status --short --untracked-files=all | head -80

set -euo pipefail
cd /home/cube/projects/richard/hermes-agent-dualcoach-v1.1
printf '%s\n' '== declared offline dependency inventory =='
python3 - <<'PY'
import json
from pathlib import Path
binding=json.loads(Path('dualcoach/releases/v1.1.0/preexecution-product-binding.json').read_text())
print({'wheelhouse_entry_count':binding['derivation_inputs']['wheelhouse_entry_count'],'candidate_digest':binding['candidate_digest']})
PY
find dualcoach/releases/v1.0.0/delivered/wheelhouse -maxdepth 1 -type f -name '*.whl' | wc -l


#!/usr/bin/env bash
set -euo pipefail

ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
RELEASE="$ROOT/dualcoach/releases/v1.1.0"
BASE="$ROOT/dualcoach/releases/v1.0.0/delivered"
TOOLS="$BASE/verification-tools"
WHEELHOUSE="$BASE/wheelhouse"
PYTHON=/home/cube/miniconda3/bin/python3.12

TEMP=$(mktemp -d /tmp/dualcoach-v11-installed-replay.XXXXXX)
cleanup() {
    chmod -R u+rwX "$TEMP" 2>/dev/null || true
    rm -rf "$TEMP"
}
trap cleanup EXIT

install -m 0600 \
    "$RELEASE/artifacts/hermes_agent-0.17.0-py3-none-any.whl" \
    "$TEMP/hermes_agent-0.17.0-py3-none-any.whl"
install -m 0600 \
    "$RELEASE/artifacts/physique_checkin_cli-0.1.0-py3-none-any.whl" \
    "$TEMP/physique_checkin_cli-0.1.0-py3-none-any.whl"
install -m 0600 \
    "$RELEASE/preexecution-product-binding.json" \
    "$TEMP/preexecution-product-binding.json"

"$PYTHON" -I -m venv "$TEMP/venv"
chmod 0700 "$TEMP/venv"
mapfile -t dependencies < <(find "$WHEELHOUSE" -type f -name '*.whl' | sort)
PIP_CONFIG_FILE=/dev/null PIP_NO_INDEX=1 \
    "$TEMP/venv/bin/python" -I -m pip install \
    --no-index \
    --no-deps \
    --no-compile \
    "${dependencies[@]}" \
    "$TEMP/hermes_agent-0.17.0-py3-none-any.whl" \
    "$TEMP/physique_checkin_cli-0.1.0-py3-none-any.whl" \
    >/dev/null

SITE_PACKAGES=$(
    "$TEMP/venv/bin/python" -I -c \
        "import sysconfig; print(sysconfig.get_paths()['purelib'])"
)
EVIDENCE="$TEMP/evidence"
cd "$TEMP"
"$TEMP/venv/bin/python" -B -I "$TOOLS/source_golden_path.py" \
    --installed-venv "$TEMP/venv" \
    --installed-site-packages "$SITE_PACKAGES" \
    --profile-wheel "$TEMP/physique_checkin_cli-0.1.0-py3-none-any.whl" \
    --hermes-wheel "$TEMP/hermes_agent-0.17.0-py3-none-any.whl" \
    --product-binding "$TEMP/preexecution-product-binding.json" \
    --evidence-root "$EVIDENCE"
"$TEMP/venv/bin/python" -B -I \
    "$TOOLS/verify_source_golden_path.py" "$EVIDENCE"


{"status":"F4_REPLAY_HARNESS_SYNTAX_PASS"}
== harness permission and release worktree state ==
755 1 scripts/replay_dualcoach_v11_installed_golden.sh
A  dualcoach/releases/v1.1.0/artifacts/hermes_agent-0.17.0-py3-none-any.whl
A  dualcoach/releases/v1.1.0/artifacts/physique_checkin_cli-0.1.0-py3-none-any.whl
A  dualcoach/releases/v1.1.0/base-release.json
A  dualcoach/releases/v1.1.0/candidate-authority/qualification-ledger.json
A  dualcoach/releases/v1.1.0/candidate-authority/registry.json
A  dualcoach/releases/v1.1.0/full-gateway-receipt.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/candidate-authority/qualification-ledger.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/candidate-authority/registry.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/config.yaml
A  dualcoach/releases/v1.1.0/installed-golden-bundle/customers/registry.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/.adaptive-authority.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/.nutrition-onboarding-projection.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-activation-audit.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-activation-journal.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-onboarding/.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-onboarding/adjustment-policy-v1.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-onboarding/baseline-candidate.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-onboarding/baseline-v1.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-onboarding/initial-plan-v1.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-onboarding/readiness-current.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-onboarding/ready.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-onboarding/restriction-reconciliation-v1.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-onboarding/session.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/.adaptive.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/.authority-transition.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/adaptive-overlays.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/authority-mirror-intents.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/canonical-sequence.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/config-epoch-journal.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/events.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/feature-epoch.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/food-catalog.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/meal-constraints.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/policy-audit.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/policy-revisions.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/policy.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/source-day-intents.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/nutrition-plans/source-days.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/wizard/.events.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/wizard/.wizard.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/wizard/drafts/6b78d243209dfac25c0e9e98310a20f4.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/wizard/events.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/wizard/telegram-bindings.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/wizard/telegram-bindings.json.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/wizard/views/current.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/files/data/customers/client_001/wizard/views/weekly.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/manifest.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/archives/13b5fc1e3c254d389dcfccb0e90a1e65/projections/data/owner-actions/draft-generations.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/customer-cleanup/client_001.journal.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/global/nutrition-safety/restriction-kb-v1.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/nutrition-onboarding-projection-journal.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-customer-bootstrap-v1/ledger.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-customer-bootstrap-v1/ledger.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.emergency.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.owner-callbacks.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/emergency.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/ledger.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/owner-callbacks.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-staff-membership-v1/events.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/onboarding/telegram-staff-membership-v1/events.jsonl.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/checkin-finalization-journal.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/customer-service-state.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/customer-service-state.json.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/draft-deliveries.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/draft-deliveries.json.lock
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/draft-generations.authority.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/draft-generations.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/draft-generations.root.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/draft-requests.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/owner-actions/drafts.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/source-activation-checklist.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/source-deployment-receipt.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/source-membership-evidence.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/data/task26-local-http-telegram-api-qa-installed.json
A  dualcoach/releases/v1.1.0/installed-golden-bundle/driver-input.json

Command exited with code 141


== declared offline dependency inventory ==
{'wheelhouse_entry_count': 107, 'candidate_digest': '0e383539aea1b83205771772f1e8b417840defe60f5ea6ce184f80e3af8d25f9'}
107


**Planning test harness execution and verification**

**Setting timeout and confirming tool versions**

I read this as the decisive installed replay execution - the harness is syntactically valid, uses all 107 local wheels, and I will run it once without modification and verify the worktree remains unchanged.

set -euo pipefail
cd /home/cube/projects/richard/hermes-agent-dualcoach-v1.1
BEFORE=$(git status --porcelain=v1 --untracked-files=all | sha256sum | awk '{print $1}')
bash scripts/replay_dualcoach_v11_installed_golden.sh
AFTER=$(git status --porcelain=v1 --untracked-files=all | sha256sum | awk '{print $1}')
[ "$BEFORE" = "$AFTER" ]
printf '{"status":"F4_REPLAY_WORKTREE_UNCHANGED","before":"%s","after":"%s"}\n' "$BEFORE" "$AFTER"


**Finalizing PASS/FAIL JSON output**

**Defining exact JSON output format**

**Finalizing PASS/FAIL JSON output**

**Defining exact JSON output format**

I read this as closing the F4 replay gap - the exact offline harness passed.

**PASS — `PASS_PRESERVED_BASE_REAL_SURFACE_PLUS_V1_1_OFFLINE_PARITY`**

```json
{
  "status": "PASS",
  "verdict": "PASS_PRESERVED_BASE_REAL_SURFACE_PLUS_V1_1_OFFLINE_PARITY",
  "candidate_digest": "0e383539aea1b83205771772f1e8b417840defe60f5ea6ce184f80e3af8d25f9",
  "command": "bash scripts/replay_dualcoach_v11_installed_golden.sh",
  "result": "ACTUAL_INSTALLED_GOLDEN_PATH_PASS",
  "runtime_mode": "installed",
  "offline_install": {
    "dependencies": 107,
    "no_index": true,
    "no_deps": true,
    "no_compile": true
  },
  "loopback_telegram": {
    "transcript_sha256": "bd76720b78a1571807f06e6fa602b6185822203059db88a2b091d76efd40ef7b",
    "verification": "passed"
  },
  "base_evidence": "byte-identical and inherited as base-only evidence",
  "external_v1_1_telegram_execution_claimed": false,
  "worktree_changed_by_review": false
}
```

The replay used only local/offline inputs and loopback Telegram QA; it does not represent v1.1 external Telegram execution.