{
  "schema": "nutricoach-telegram-checkin-stepper-task-9-independent-privacy-audit-v1",
  "task_id": "st_01a05ae5",
  "status": "PASS",
  "blocker_count": 0,
  "blockers": [],
  "installed_wheel_privacy_audit": {
    "status": "PASS",
    "environment": {
      "fresh_disposable_venv_outside_source": true,
      "python": "3.12.9",
      "system_site_packages_used_only_for_dependencies": true,
      "exact_candidate_wheels_installed_no_deps": true,
      "pythonpath_cleared": true,
      "pythondontwritebytecode": true,
      "socket_guard_installed_before_product_imports": true,
      "working_directory_outside_source": true,
      "temporary_venv_fixtures_and_harness_removed": true
    },
    "import_origins": {
      "checkin_cli": "disposable-venv/lib/python3.12/site-packages/checkin_cli/__init__.py",
      "gateway": "disposable-venv/lib/python3.12/site-packages/gateway/__init__.py",
      "both_from_disposable_site_packages": true,
      "source_tree_imports": 0
    },
    "wheel_identity": {
      "hermes_agent": {
        "sha256": "17d5db319f9355a427c5b46cc4ea9a896d348c585793df085c170921e1ee2829",
        "record_sha256": "225516500a1ab18aabca6af8b05181db7dc82ebf3324b5b91ce132bde2d02977",
        "zip_crc": "PASS",
        "installed_record_entries_verified": 1838,
        "installed_record_sha256": "fe4bb780c73ba82f58c6cf64af95471dd6121eb4f002de89f1a4b89241eb1dfa"
      },
      "physique_checkin_cli": {
        "sha256": "2f1cae9ff6262f5c823dd41c68bc999dca71c56000bef6dc0a0268ab07c19c4f",
        "record_sha256": "8b823301c800c28959f8ed7d3d46ae6a66dcaf7128991823913a910030fb9b83",
        "zip_crc": "PASS",
        "installed_record_entries_verified": 242,
        "installed_record_sha256": "8020a7e2f2f2fc70eacab7d7a909a8268d4af73c585e546ae80027e4ef4cdbc1"
      },
      "all_installed_record_member_hashes_and_sizes_verified": true
    },
    "actual_surfaces": [
      "checkin_cli.wizard.WizardService",
      "gateway.platforms.physique_checkin.PhysiqueCheckinBridge",
      "gateway.platforms.telegram_physique_checkin_stepper.TelegramPhysiqueCheckinStepper",
      "gateway.platforms.telegram_checkin_stepper_transport.TelegramCheckinPromptTransport",
      "socket-guarded Telegram-shaped async fake"
    ],
    "behavior_matrix": {
      "known_answer": {"disposition": "delivered", "sends": 1, "value_free_card": true},
      "explicit_unknown": {"disposition": "delivered", "sends": 1, "unknown_omitted_from_answers": true, "unknown_steps_retained": true},
      "previous_correction": {"disposition": "delivered", "sends": 1, "valid_history_required": true},
      "known_replacement_after_previous": {"disposition": "delivered", "sends": 1},
      "leave": {"domain_mutations": 0, "sends": 0, "binding_digest_unchanged": true},
      "explicit_resume": {"flow": "nutrition_daily", "exact_session_preserved": true, "exact_cursor": "macros"},
      "pre_call_failure": {"disposition": "delivery_failed", "provider_calls": 0},
      "definite_rejection": {"disposition": "delivery_failed", "provider_calls": 1},
      "post_call_uncertainty": {"disposition": "delivery_uncertain", "provider_calls": 1},
      "restart": {"disposition": "recovery_required", "additional_sends": 0},
      "duplicate": {"disposition": "recovery_required", "additional_sends": 0},
      "explicit_recovery_observation": {"additional_sends": 0},
      "stale": {"disposition": "stale", "sends": 0, "domain_commits": 0},
      "expiry": {"disposition": "expired", "sends": 0, "domain_commits": 0},
      "corruption": {"disposition": "store_failure", "sends": 0, "domain_commits": 0},
      "malformed_identity_cases_rejected": 3,
      "all_stepper_results_poll_terminal": true
    },
    "card_contract": {
      "exactly_one_new_card_per_accepted_transition": true,
      "confirmation_is_value_free": true,
      "unknown_control_present": true,
      "previous_absent_without_history": true,
      "previous_present_with_valid_history": true,
      "later_control_absent": true,
      "unknown_missing_not_fabricated": true
    },
    "privacy_sentinel": {
      "raw_value_omitted_from_evidence": true,
      "sha256": "3619b1f39f6ff6a3f55e28857097923cc92b0bf5feb7e4503d3aec3ea5a90338",
      "absent_from_prompt": true,
      "absent_from_card": true,
      "absent_from_callback": true,
      "absent_from_log": true,
      "absent_from_projection": true,
      "absent_from_binding": true,
      "absent_from_preseal": true,
      "absent_from_rehearsal_output": true,
      "absent_from_candidate_artifacts": true,
      "sealed_and_projection_files_scanned": 964
    },
    "forbidden_effects": {
      "network_events": 0,
      "customer_messages": 0,
      "customer_updates": 0,
      "authority_consumptions": 0,
      "service_mutations": 0,
      "live_profile_mutations": 0,
      "git_or_github_operations": 0,
      "source_or_artifact_edits": 0,
      "commits": 0
    }
  },
  "sealed_artifact_integrity": {
    "candidate_manifest_sha256": "a019f0b9a0bf1a393d2d307d0e755251a140e3449058077632209e2101090766",
    "preseal_manifest_sha256": "66ede3f1995d644b9ce423c8e8846b50d823c57f76d892cef66694d7e1d3a793",
    "preseal_manifest_entries_verified": 594,
    "preseal_manifest_entry_mismatches": 0,
    "rehearsal_report_sha256": "8cd67e82effc9540da722a5942691ba184a85cb65ce8a1aa3044035e5ff3fd7e",
    "sealed_artifacts_unchanged": true
  },
  "live_read_only_gate": {
    "task9_equal": {
      "profile_config_sha256": "6a949de8c8a7c4caff4462f9c2821d49e5517a0f12defa93693e7f3bff97ed17",
      "profile_customers_tree": {"files": 1, "sha256": "631f77bcce7552a76906a45ba1d46544ccb461480e379413dc6d45fe4a5fe132"},
      "unit_sha256": "2e31b94ac43aac8282673717783b1fe2fe0d54b4431f3f36eb219f0ed4428342",
      "dropin_sha256": "7b1929b39bc72edb27edb2ebeebc96339b7744fcdfc5b1604c13e5338d46bc48",
      "credential_operator_notification_recovery_sha256": "8d15fb067eaa110c5170007550faf4cebfae7d9ad51e398aae6d73bb84986982",
      "credential_owner_risk_acceptance_sha256": "b9193806a20bd98cde9bf547494f31d81b56c6ec5e214383a539373b88658e47",
      "credential_task26_authority_pin_sha256": "1c8bebb111fd0095b5d64107f5e6db182c49b9e818945c7c88aaf3cb1700f397",
      "credential_task26_candidate_digest_sha256": "13e47ba71d2d89c5a3121e8613ef84dda08b20dae627277cfb67307fe73f53c4",
      "production_authority_tree": {"files": 3, "sha256": "143f08ae0040a2022c54b627f8c325e54b9fba527478af459f78bd8fa6b57e75"}
    },
    "service_observation": {"active_state": "active", "sub_state": "running", "n_restarts": 0},
    "profile_data_tree": {
      "files": 746,
      "task9_sha256": "42bb2d5a4622c68ff4050e21e31619aacd8812ae919a481b2054f86c6c76683c",
      "audit_before_sha256": "42bb2d5a4622c68ff4050e21e31619aacd8812ae919a481b2054f86c6c76683c",
      "audit_after_sha256": "42bb2d5a4622c68ff4050e21e31619aacd8812ae919a481b2054f86c6c76683c",
      "exact_changed_relative_path_set": [],
      "before_after_equal": true
    },
    "hash_algorithm_correction": {
      "false_positive_sha256": "19ca1b029dd120936c812112e48866c4e992172b8afc08cc2d6d08fa06f30c4a",
      "cause": "The initial audit sorted completed path:digest row strings. Task 9 sorts pathlib.Path objects first and then emits path:digest rows; those orderings differ at path-prefix boundaries.",
      "same_file_count": 746,
      "content_drift": false
    },
    "effect_roots_after": {
      "authorization_r71": "ABSENT",
      "execution_r71": "ABSENT",
      "successor_runtime_r71": "ABSENT",
      "observer_r71": "ABSENT",
      "preflight_r71": "PRESENT_EXPECTED_NON_CONSUMED_PRESEAL_DEPENDENCY",
      "preseal_r71": "PRESENT_IMMUTABLE"
    }
  },
  "delta_investigation": {
    "status": "PASS",
    "task9_baseline_to_audit": {
      "exact_changed_relative_path_set": [],
      "before_tree_sha256": "42bb2d5a4622c68ff4050e21e31619aacd8812ae919a481b2054f86c6c76683c",
      "current_tree_sha256": "42bb2d5a4622c68ff4050e21e31619aacd8812ae919a481b2054f86c6c76683c",
      "after_read_only_preflight_sha256": "42bb2d5a4622c68ff4050e21e31619aacd8812ae919a481b2054f86c6c76683c",
      "files": 746,
      "auditor_writes": 0
    },
    "immutable_protected_inventory": {
      "path": "/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/preflight-v15-runtime-authority-r71/snapshot-before.json",
      "sha256": "d2c084be0865f8e9844452a7b683f97800e31af9bc7e1a113241109a283aada5",
      "mtime": "2026-08-28T21:00:48.686514928+09:00",
      "role": "Path classification input, not a forever-fixed expected-content hash set",
      "snapshot_to_current_changed_file_count": 74,
      "snapshot_to_current_change_classes": {
        "added_unclassified_operational_files": 68,
        "modified_volatile_files": 4,
        "modified_stable_files": 2,
        "deleted_files": 0
      },
      "snapshot_to_current_exact_changed_path_set_sha256": "01cc38108ba745400dea8ff33fbc946ada0cbe0dd466d6d65f89f90ae6167f0e",
      "snapshot_to_current_exact_added_path_set_sha256": "9e71199ea65b0334d3b01ead618c7bd3915b1958236c480851a482ea1dad104a",
      "modified_files": [
        {
          "relative_path": "customers/pilot_20260820_01/nutrition-plans/canonical-sequence.jsonl",
          "class": "stable",
          "before_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
          "current_sha256": "75b7e58dc76fc8915f0e9a2ed28da010b3442ad2ce055d0d6edd32a232777689",
          "before_size": 0,
          "current_size": 525,
          "current_mtime_utc": "2026-09-01T00:36:59.125301+00:00",
          "preflight_protected": true,
          "preflight_behavior": "Current bytes are captured at Todo 10 preflight and protected through the transaction; snapshot hash is not compared."
        },
        {
          "relative_path": "customers/pilot_20260820_01/wizard/telegram-bindings.json",
          "class": "stable",
          "before_sha256": "d403ae71c674e71d9667a42e1a9b8cfe836b01604f5cf3910f7e36a73c361789",
          "current_sha256": "318d62644dc480dbe2be54b402f19eb0af41dc35928206d19357a9d6f9053713",
          "before_size": 53,
          "current_size": 494,
          "current_mtime_utc": "2026-09-01T00:36:48.321110+00:00",
          "preflight_protected": true,
          "preflight_behavior": "Current bytes are captured at Todo 10 preflight and protected through the transaction; snapshot hash is not compared."
        },
        {
          "relative_path": "onboarding/telegram-customer-bootstrap-v1/ledger.json",
          "class": "volatile",
          "before_sha256": "fafd6dea6a0156e8e9dc5061fd43febc0d7a655cf85c8b319df0b16e077c0a6c",
          "current_sha256": "0275dd1d0d9ae5658c70b009a2e0e4cbf52336af6ea3a3b21dc9e67b5cf5484d",
          "before_size": 1485,
          "current_size": 2759,
          "current_mtime_utc": "2026-08-31T04:39:20.526562+00:00",
          "preflight_protected": false
        },
        {
          "relative_path": "onboarding/telegram-staff-membership-v1/events.jsonl",
          "class": "volatile",
          "before_sha256": "4be41168c163df5085b6be3ffd231d60236620f203cce616c3ebea212c6113c3",
          "current_sha256": "84dab0fc4cf6f344bf2ed4c4818e9d26eed991311797bee38fa357636274c7ee",
          "before_size": 14181,
          "current_size": 21756,
          "current_mtime_utc": "2026-08-31T11:49:34.234598+00:00",
          "preflight_protected": false
        },
        {
          "relative_path": "scheduled-deliveries.jsonl",
          "class": "volatile",
          "before_sha256": "26d705cb7ea7110cb8b63331ec3dff772ca265fafe766dde85a436c10d86885d",
          "current_sha256": "1000b155ccb56aa318ac098613f5808d2cb9633fc1178a0b49f280c3a23f72a1",
          "before_size": 33895,
          "current_size": 77663,
          "current_mtime_utc": "2026-08-31T23:00:46.647352+00:00",
          "preflight_protected": false
        },
        {
          "relative_path": "telegram-ingress-receipts-v1-a05e42eb730079c8.json",
          "class": "volatile",
          "before_sha256": "15661776e4af7398937163d9abce69931adf924d42514ca98d10d61de131e5d1",
          "current_sha256": "198bfc45d7bd3567bb6908de07437532d534fc1b7d3dcedea7fab619742bad94",
          "before_size": 984,
          "current_size": 401,
          "current_mtime_utc": "2026-09-01T00:37:00.964375+00:00",
          "preflight_protected": false
        }
      ]
    },
    "controller_contract": {
      "protected_paths_rule": "HostPaths.mutable plus currently existing regular non-symlink files classified stable for dualcoachtest",
      "snapshot_hashes_compared_to_current": false,
      "capture_rule": "capture_preflight hashes current protected bytes",
      "verify_rule": "verify_preflight compares later bytes to that same immediate capture",
      "read_only_live_preflight": "PASS",
      "protected_path_count": 86723,
      "protected_data_path_count": 470,
      "capture_then_verify_seconds": 189.206,
      "authorization_created": false,
      "execution_created": false,
      "successor_runtime_created": false,
      "network_events": 0
    },
    "isolation_reconfirmation": {
      "installed_qa_roots": "fresh disposable /tmp venv and fixture roots outside source and live profile",
      "temporary_roots_removed": true,
      "network_events": 0,
      "customer_messages": 0,
      "customer_updates": 0,
      "service_actions": 0
    }
  },
  "cleanup": {
    "auditor_venvs_absent": true,
    "auditor_fixtures_absent": true,
    "auditor_harness_absent": true,
    "auditor_caches_absent": true,
    "only_deliverable_retained": true
  },
  "conclusion": "PASS. The exact installed r71 wheels pass the independent privacy and recovery audit with zero network/customer effects. The apparent live-data blocker was caused solely by using a different aggregate row ordering than Task 9; exact Task 9 hashing proves the 746-file tree unchanged, and the real sealed capture/verify-only live preflight accepts current operational state without creating authorization, execution, or runtime roots."
}
