          "davey>=0.1.0; extra == \"voice\"",
          "imghdr-lts==1.0.0; python_version >= \"3.13\" and extra == \"docs\"",
          "orjson>=3.5.4; extra == \"speed\"",
          "pytest-asyncio; extra == \"test\"",
          "pytest-cov; extra == \"test\"",
          "pytest-mock; extra == \"test\"",
          "pytest; extra == \"test\"",
          "ruff==0.12; extra == \"dev\"",
          "sphinx-inline-tabs==2023.4.21; extra == \"docs\"",
          "sphinx==4.4.0; extra == \"docs\"",
          "sphinxcontrib-applehelp==1.0.4; extra == \"docs\"",
          "sphinxcontrib-devhelp==1.0.2; extra == \"docs\"",
          "sphinxcontrib-htmlhelp==2.0.1; extra == \"docs\"",
          "sphinxcontrib-jsmath==1.0.1; extra == \"docs\"",
          "sphinxcontrib-qthelp==1.0.3; extra == \"docs\"",
          "sphinxcontrib-serializinghtml==1.1.5; extra == \"docs\"",
          "sphinxcontrib-websupport==1.2.4; extra == \"docs\"",
          "sphinxcontrib_trio==1.1.2; extra == \"docs\"",
          "typing-extensions<5,>=4.3; extra == \"docs\"",
          "typing-extensions<5,>=4.3; extra == \"test\"",
          "typing_extensions<5,>=4.3; extra == \"dev\"",
          "tzdata; sys_platform == \"win32\" and extra == \"test\"",
          "zstandard>=0.23.0; python_version <= \"3.13\" and extra == \"speed\""
        ],
        "sha256": "61bd0a9e90724f2c9bdc65905726bced120768a369baf85e5a30f20d38fe0c60",
        "size": 1227890,
        "version": "2.7.1"
      },
      {
        "mode": 256,
        "project": "distro",
        "relative_path": "distro-1.9.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "66376166ea67522e0ff96fc6c1827fb9af300911d0645f618144b0f2684f0c8d",
        "size": 20625,
        "version": "1.9.0"
      },
      {
        "mode": 256,
        "project": "docstring-parser",
        "relative_path": "docstring_parser-0.18.0-py3-none-any.whl",
        "requires_dist": [
          "pre-commit>=2.16.0; (python_version >= '3.9') and extra == 'dev'",
          "pydoctor>=25.4.0; extra == 'dev'",
          "pydoctor>=25.4.0; extra == 'docs'",
          "pytest; extra == 'dev'",
          "pytest; extra == 'test'"
        ],
        "sha256": "45d26d730f1d5c5d8925136ced3d372ff2087a6e145c503bf005754a3bbf3591",
        "size": 22909,
        "version": "0.18.0"
      },
      {
        "mode": 256,
        "project": "edge-tts",
        "relative_path": "edge_tts-7.2.7-py3-none-any.whl",
        "requires_dist": [
          "aiohttp<4.0.0,>=3.8.0",
          "black; extra == \"dev\"",
          "certifi>=2023.11.17",
          "isort; extra == \"dev\"",
          "mypy; extra == \"dev\"",
          "pylint; extra == \"dev\"",
          "tabulate<1.0.0,>=0.4.4",
          "types-tabulate; extra == \"dev\"",
          "typing-extensions<5.0.0,>=4.1.0"
        ],
        "sha256": "d334b63072b820816398f1e40d0463476d43c1bcaae8f5a65810b0d991de30fb",
        "size": 66230,
        "version": "7.2.7"
      },
      {
        "mode": 256,
        "project": "elevenlabs",
        "relative_path": "elevenlabs-1.59.0-py3-none-any.whl",
        "requires_dist": [
          "httpx (>=0.21.2)",
          "pyaudio (>=0.2.14) ; extra == \"pyaudio\"",
          "pydantic (>=1.9.2)",
          "pydantic-core (>=2.18.2,<3.0.0)",
          "requests (>=2.20)",
          "typing_extensions (>=4.0.0)",
          "websockets (>=11.0)"
        ],
        "sha256": "ebfa5a37c7a7c7e298a0e4afd171a7645782621639110ef34ba221b4f3b80aba",
        "size": 523583,
        "version": "1.59.0"
      },
      {
        "mode": 256,
        "project": "eval-type-backport",
        "relative_path": "eval_type_backport-0.4.0-py3-none-any.whl",
        "requires_dist": [
          "pytest; extra == \"tests\""
        ],
        "sha256": "6f8e9dd2a66ea15a964bd6dc5e3aaa1f9d277d37c805b2c9385daccb3ce9553d",
        "size": 6825,
        "version": "0.4.0"
      },
      {
        "mode": 256,
        "project": "fastapi",
        "relative_path": "fastapi-0.133.1-py3-none-any.whl",
        "requires_dist": [
          "annotated-doc>=0.0.2",
          "email-validator>=2.0.0; extra == \"all\"",
          "email-validator>=2.0.0; extra == \"standard\"",
          "email-validator>=2.0.0; extra == \"standard-no-fastapi-cloud-cli\"",
          "fastapi-cli[standard-no-fastapi-cloud-cli]>=0.0.8; extra == \"standard-no-fastapi-cloud-cli\"",
          "fastapi-cli[standard]>=0.0.8; extra == \"all\"",
          "fastapi-cli[standard]>=0.0.8; extra == \"standard\"",
          "httpx<1.0.0,>=0.23.0; extra == \"all\"",
          "httpx<1.0.0,>=0.23.0; extra == \"standard\"",
          "httpx<1.0.0,>=0.23.0; extra == \"standard-no-fastapi-cloud-cli\"",
          "itsdangerous>=1.1.0; extra == \"all\"",
          "jinja2>=3.1.5; extra == \"all\"",
          "jinja2>=3.1.5; extra == \"standard\"",
          "jinja2>=3.1.5; extra == \"standard-no-fastapi-cloud-cli\"",
          "pydantic-extra-types>=2.0.0; extra == \"all\"",
          "pydantic-extra-types>=2.0.0; extra == \"standard\"",
          "pydantic-extra-types>=2.0.0; extra == \"standard-no-fastapi-cloud-cli\"",
          "pydantic-settings>=2.0.0; extra == \"all\"",
          "pydantic-settings>=2.0.0; extra == \"standard\"",
          "pydantic-settings>=2.0.0; extra == \"standard-no-fastapi-cloud-cli\"",
          "pydantic>=2.7.0",
          "python-multipart>=0.0.18; extra == \"all\"",
          "python-multipart>=0.0.18; extra == \"standard\"",
          "python-multipart>=0.0.18; extra == \"standard-no-fastapi-cloud-cli\"",
          "pyyaml>=5.3.1; extra == \"all\"",
          "starlette>=0.40.0",
          "typing-extensions>=4.8.0",
          "typing-inspection>=0.4.2",
          "uvicorn[standard]>=0.12.0; extra == \"all\"",
          "uvicorn[standard]>=0.12.0; extra == \"standard\"",
          "uvicorn[standard]>=0.12.0; extra == \"standard-no-fastapi-cloud-cli\""
        ],
        "sha256": "14fcd4013454b026d056ed21e2c5ea88e9748aad093e37cebfe4f3e56af318b0",
        "size": 109386,
        "version": "0.133.1"
      },
      {
        "mode": 256,
        "project": "fire",
        "relative_path": "fire-0.7.1-py3-none-any.whl",
        "requires_dist": [
          "hypothesis<6.136.0; extra == \"test\"",
          "levenshtein<=0.27.1; extra == \"test\"",
          "pip; extra == \"test\"",
          "pylint<3.3.8; extra == \"test\"",
          "pytest-pylint<=1.1.2; extra == \"test\"",
          "pytest-runner<7.0.0; extra == \"test\"",
          "pytest<=8.4.1; extra == \"test\"",
          "setuptools<=80.9.0; extra == \"test\"",
          "termcolor",
          "termcolor<3.2.0; extra == \"test\""
        ],
        "sha256": "e4716a5bb0eee6501f5f32de260d2b4db589ab0932d522a29459c06d976c0b49",
        "size": 116280,
        "version": "0.7.1"
      },
      {
        "mode": 256,
        "project": "frozenlist",
        "relative_path": "frozenlist-1.8.0-cp312-cp312-manylinux_2_5_x86_64.whl",
        "requires_dist": [],
        "sha256": "7ed39b7ac3746e1d1b927a508aa4774f2bdb1752b6882a51383e697fecdf0b69",
        "size": 244344,
        "version": "1.8.0"
      },
      {
        "mode": 256,
        "project": "h11",
        "relative_path": "h11-0.16.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "8ef5728e79b5f01577d90873972a2f808a3c9a8ef7ec69011684a8d017961630",
        "size": 37880,
        "version": "0.16.0"
      },
      {
        "mode": 256,
        "project": "honcho-ai",
        "relative_path": "honcho_ai-2.0.1-py3-none-any.whl",
        "requires_dist": [
          "httpx<1,>=0.28.0",
          "pydantic<3,>=2.0.0",
          "typing-extensions>=4.12.0; python_version < \"3.12\""
        ],
        "sha256": "c631f208cb504ca2e4f70bfa6444177a1d66be97a11a3e1bce1e5de09105975b",
        "size": 57167,
        "version": "2.0.1"
      },
      {
        "mode": 256,
        "project": "httpcore",
        "relative_path": "httpcore-1.0.9-py3-none-any.whl",
        "requires_dist": [
          "anyio<5.0,>=4.0; extra == 'asyncio'",
          "certifi",
          "h11>=0.16",
          "h2<5,>=3; extra == 'http2'",
          "socksio==1.*; extra == 'socks'",
          "trio<1.0,>=0.22.0; extra == 'trio'"
        ],
        "sha256": "31704b4ef94e93d3b58958d51e0566a1e08deae8c9e9262adea6a0d0f5ee2a4d",
        "size": 79129,
        "version": "1.0.9"
      },
      {
        "mode": 256,
        "project": "httptools",
        "relative_path": "httptools-0.7.1-cp312-cp312-manylinux_2_5_x86_64.whl",
        "requires_dist": [],
        "sha256": "c0b848941432dd85394463f9ad2d75b7319ce914d97e765bd04907c8cac22c25",
        "size": 517555,
        "version": "0.7.1"
      },
      {
        "mode": 256,
        "project": "httpx",
        "relative_path": "httpx-0.28.1-py3-none-any.whl",
        "requires_dist": [
          "anyio",
          "brotli; (platform_python_implementation == 'CPython') and extra == 'brotli'",
          "brotlicffi; (platform_python_implementation != 'CPython') and extra == 'brotli'",
          "certifi",
          "click==8.*; extra == 'cli'",
          "h2<5,>=3; extra == 'http2'",
          "httpcore==1.*",
          "idna",
          "pygments==2.*; extra == 'cli'",
          "rich<14,>=10; extra == 'cli'",
          "socksio==1.*; extra == 'socks'",
          "zstandard>=0.18.0; extra == 'zstd'"
        ],
        "sha256": "04de4b4178fa41b0e237467bfc7a17bc6d4cacbb31b59efc946486fbf8a055fd",
        "size": 73857,
        "version": "0.28.1"
      },
      {
        "mode": 256,
        "project": "httpx-sse",
        "relative_path": "httpx_sse-0.4.3-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "d91e483e6588bb4d1255fecf05dbce0d8ecc3424e8f6c6efba9026362cf8c014",
        "size": 9318,
        "version": "0.4.3"
      },
      {
        "mode": 256,
        "project": "idna",
        "relative_path": "idna-3.15-py3-none-any.whl",
        "requires_dist": [
          "mypy >= 1.11.2 ; extra == \"all\"",
          "pytest >= 8.3.2 ; extra == \"all\"",
          "ruff >= 0.6.2 ; extra == \"all\""
        ],
        "sha256": "569e004b5c38f799b9290bc39aef19414f121b1ad8bd644875f03e45c4b85c1d",
        "size": 72675,
        "version": "3.15"
      },
      {
        "mode": 256,
        "project": "importlib-metadata",
        "relative_path": "importlib_metadata-8.7.1-py3-none-any.whl",
        "requires_dist": [
          "flufl.flake8; extra == \"test\"",
          "furo; extra == \"doc\"",
          "ipython; extra == \"perf\"",
          "jaraco.packaging>=9.3; extra == \"doc\"",
          "jaraco.test>=5.4; extra == \"test\"",
          "jaraco.tidelift>=1.4; extra == \"doc\"",
          "mypy<1.19; platform_python_implementation == \"PyPy\" and extra == \"type\"",
          "packaging; extra == \"test\"",
          "pyfakefs; extra == \"test\"",
          "pytest!=8.1.*,>=6; extra == \"test\"",
          "pytest-checkdocs>=2.4; extra == \"check\"",
          "pytest-cov; extra == \"cover\"",
          "pytest-enabler>=3.4; extra == \"enabler\"",
          "pytest-mypy>=1.0.1; extra == \"type\"",
          "pytest-perf>=0.9.2; extra == \"test\"",
          "pytest-ruff>=0.2.1; sys_platform != \"cygwin\" and extra == \"check\"",
          "rst.linker>=1.9; extra == \"doc\"",
          "sphinx-lint; extra == \"doc\"",
          "sphinx>=3.5; extra == \"doc\"",
          "zipp>=3.20"
        ],
        "sha256": "74f84705a970b2f8aa913b72d2da4a18b928ae0b5b8a538e0efdd3eee958ce03",
        "size": 28253,
        "version": "8.7.1"
      },
      {
        "mode": 256,
        "project": "iniconfig",
        "relative_path": "iniconfig-2.3.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "80a07e92e1ecbca4c9c2a65379175570f0bc69e5a14de8dfa8b9f683d0e575e0",
        "size": 7839,
        "version": "2.3.0"
      },
      {
        "mode": 256,
        "project": "jiter",
        "relative_path": "jiter-0.13.0-cp312-cp312-manylinux_2_17_x86_64.whl",
        "requires_dist": [],
        "sha256": "0e25c88de8396e8c044836a57e78233c5979bf429a93bfc395d7cdc92393ab5d",
        "size": 352852,
        "version": "0.13.0"
      },
      {
        "mode": 256,
        "project": "jmespath",
        "relative_path": "jmespath-1.1.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "70fae77c7bb3b12b03a15c0fa260e68821ae431b54cc17f3ff4e1736f7d851e6",
        "size": 19824,
        "version": "1.1.0"
      },
      {
        "mode": 256,
        "project": "jsonpath-python",
        "relative_path": "jsonpath_python-1.1.6-py3-none-any.whl",
        "requires_dist": [
          "poethepoet; extra == 'dev'",
          "pytest-benchmark[histogram]>=4.0; extra == 'dev'",
          "pytest-cov>=5.0; extra == 'dev'",
          "pytest>=8.0; extra == 'dev'",
          "ruff>=0.3; extra == 'dev'"
        ],
        "sha256": "f13c555bc751b5e42e81b93b84fd60c9fd56a4abfce37b07ffd3a4b04bdb324c",
        "size": 14870,
        "version": "1.1.6"
      },
      {
        "mode": 256,
        "project": "jsonschema",
        "relative_path": "jsonschema-4.26.0-py3-none-any.whl",
        "requires_dist": [
          "attrs>=22.2.0",
          "fqdn; extra == 'format'",
          "fqdn; extra == 'format-nongpl'",
          "idna; extra == 'format'",
          "idna; extra == 'format-nongpl'",
          "isoduration; extra == 'format'",
          "isoduration; extra == 'format-nongpl'",
          "jsonpointer>1.13; extra == 'format'",
          "jsonpointer>1.13; extra == 'format-nongpl'",
          "jsonschema-specifications>=2023.03.6",
          "referencing>=0.28.4",
          "rfc3339-validator; extra == 'format'",
          "rfc3339-validator; extra == 'format-nongpl'",
          "rfc3986-validator>0.1.0; extra == 'format-nongpl'",
          "rfc3987-syntax>=1.1.0; extra == 'format-nongpl'",
          "rfc3987; extra == 'format'",
          "rpds-py>=0.25.0",
          "uri-template; extra == 'format'",
          "uri-template; extra == 'format-nongpl'",
          "webcolors>=1.11; extra == 'format'",
          "webcolors>=24.6.0; extra == 'format-nongpl'"
        ],
        "sha256": "cd08afa519e72c03e25ab1676fc42e171b22e0b927c73150ae638a7ad1467432",
        "size": 90998,
        "version": "4.26.0"
      },
      {
        "mode": 256,
        "project": "jsonschema-specifications",
        "relative_path": "jsonschema_specifications-2025.9.1-py3-none-any.whl",
        "requires_dist": [
          "referencing>=0.31.0"
        ],
        "sha256": "4a57d6a2715331ae6b4a566887ba9dd4d639e5d708a63797088c8602c86672d3",
        "size": 18873,
        "version": "2025.9.1"
      },
      {
        "mode": 256,
        "project": "markdown-it-py",
        "relative_path": "markdown_it_py-4.0.0-py3-none-any.whl",
        "requires_dist": [
          "commonmark~=0.9 ; extra == \"compare\"",
          "coverage ; extra == \"testing\"",
          "gprof2dot ; extra == \"profiling\"",
          "ipykernel ; extra == \"rtd\"",
          "jupyter_sphinx ; extra == \"rtd\"",
          "linkify-it-py>=1,<3 ; extra == \"linkify\"",
          "markdown-it-pyrs ; extra == \"compare\"",
          "markdown~=3.4 ; extra == \"compare\"",
          "mdit-py-plugins>=0.5.0 ; extra == \"plugins\"",
          "mdit-py-plugins>=0.5.0 ; extra == \"rtd\"",
          "mdurl~=0.1",
          "mistletoe~=1.0 ; extra == \"compare\"",
          "mistune~=3.0 ; extra == \"compare\"",
          "myst-parser ; extra == \"rtd\"",
          "panflute~=2.3 ; extra == \"compare\"",
          "psutil ; extra == \"benchmarking\"",
          "pytest ; extra == \"benchmarking\"",
          "pytest ; extra == \"testing\"",
          "pytest-benchmark ; extra == \"benchmarking\"",
          "pytest-cov ; extra == \"testing\"",
          "pytest-regressions ; extra == \"testing\"",
          "pyyaml ; extra == \"rtd\"",
          "requests ; extra == \"testing\"",
          "sphinx ; extra == \"rtd\"",
          "sphinx-book-theme~=1.0 ; extra == \"rtd\"",
          "sphinx-copybutton ; extra == \"rtd\"",
          "sphinx-design ; extra == \"rtd\""
        ],
        "sha256": "f433369fd0c33f973670955bb259c8ca12f64c7cd0cda67d332f71691286a826",
        "size": 87694,
        "version": "4.0.0"
      },
      {
        "mode": 256,
        "project": "mcp",
        "relative_path": "mcp-1.26.0-py3-none-any.whl",
        "requires_dist": [
          "anyio>=4.5",
          "httpx-sse>=0.4",
          "httpx>=0.27.1",
          "jsonschema>=4.20.0",
          "pydantic-settings>=2.5.2",
          "pydantic<3.0.0,>=2.11.0",
          "pyjwt[crypto]>=2.10.1",
          "python-dotenv>=1.0.0; extra == 'cli'",
          "python-multipart>=0.0.9",
          "pywin32>=310; sys_platform == 'win32'",
          "rich>=13.9.4; extra == 'rich'",
          "sse-starlette>=1.6.1",
          "starlette>=0.27",
          "typer>=0.16.0; extra == 'cli'",
          "typing-extensions>=4.9.0",
          "typing-inspection>=0.4.1",
          "uvicorn>=0.31.1; sys_platform != 'emscripten'",
          "websockets>=15.0.1; extra == 'ws'"
        ],
        "sha256": "265d6ddd6fac183e314fd77bfca791e52d81007ddfd2f4ae23787ab49d36c5b8",
        "size": 233940,
        "version": "1.26.0"
      },
      {
        "mode": 256,
        "project": "mdurl",
        "relative_path": "mdurl-0.1.2-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "535a0f9fbe39177eebee3f71f09ca2e8ae2e44c08737cf06bae80cc7a2246463",
        "size": 10354,
        "version": "0.1.2"
      },
      {
        "mode": 256,
        "project": "mistralai",
        "relative_path": "mistralai-2.4.8-py3-none-any.whl",
        "requires_dist": [
          "aioboto3<13.0.0,>=12.4.0; extra == 'workflow-payload-offloading'",
          "aioboto3<13.0.0,>=12.4.0; extra == 'workflow-payload-offloading-s3'",
          "authlib<2.0,>=1.5.2; extra == 'agents'",
          "azure-identity[aio]<2.0.0,>=1.25.0; extra == 'workflow-payload-offloading'",
          "azure-identity[aio]<2.0.0,>=1.25.0; extra == 'workflow-payload-offloading-azure'",
          "azure-storage-blob[aio]<13.0.0,>=12.28.0; extra == 'workflow-payload-offloading'",
          "azure-storage-blob[aio]<13.0.0,>=12.28.0; extra == 'workflow-payload-offloading-azure'",
          "cryptography<47.0.0,>=41.0.0; extra == 'workflow-payload-encryption'",
          "eval-type-backport>=0.2.0",
          "gcloud-aio-storage<10.0.0,>=9.3.0; extra == 'workflow-payload-offloading'",
          "gcloud-aio-storage<10.0.0,>=9.3.0; extra == 'workflow-payload-offloading-gcs'",
          "google-auth>=2.27.0; extra == 'gcp'",
          "griffe<2.0,>=1.7.3; extra == 'agents'",
          "httpx>=0.28.1",
          "jsonpath-python>=1.0.6",
          "mcp<2.0,>=1.0; extra == 'agents'",
          "msgpack<2.0.0,>=1.1.0; extra == 'workflow-payload-compression'",
          "opentelemetry-api<2.0.0,>=1.33.1",
          "opentelemetry-exporter-otlp-proto-http<2.0.0,>=1.33.1; extra == 'telemetry'",
          "opentelemetry-sdk<2.0.0,>=1.33.1; extra == 'telemetry'",
          "opentelemetry-semantic-conventions<0.61,>=0.60b1",
          "pydantic>=2.11.2",
          "python-dateutil>=2.8.2",
          "requests>=2.32.3; extra == 'gcp'",
          "typing-inspection>=0.4.0",
          "websockets>=13.0; extra == 'realtime'",
          "zstandard<0.26,>=0.25.0; extra == 'workflow-payload-compression'"
        ],
        "sha256": "3a43400e29f16cd2256ec18eed871d519d83dcd24de6c49c1607e650dc868477",
        "size": 1112370,
        "version": "2.4.8"
      },
      {
        "mode": 256,
        "project": "multidict",
        "relative_path": "multidict-6.7.1-cp312-cp312-manylinux_2_17_x86_64.whl",
        "requires_dist": [
          "typing-extensions>=4.1.0; python_version < \"3.11\""
        ],
        "sha256": "7d860e18414878609450fd2f3f3e49178c0f0b92b6640b1b7e0d7a7841e56551",
        "size": 260469,
        "version": "6.7.1"
      },
      {
        "mode": 256,
        "project": "openai",
        "relative_path": "openai-2.24.0-py3-none-any.whl",
        "requires_dist": [
          "aiohttp; extra == 'aiohttp'",
          "anyio<5,>=3.5.0",
          "distro<2,>=1.7.0",
          "httpx-aiohttp>=0.1.9; extra == 'aiohttp'",
          "httpx<1,>=0.23.0",
          "jiter<1,>=0.10.0",
          "numpy>=1; extra == 'datalib'",
          "numpy>=2.0.2; extra == 'voice-helpers'",
          "pandas-stubs>=1.1.0.11; extra == 'datalib'",
          "pandas>=1.2.3; extra == 'datalib'",
          "pydantic<3,>=1.9.0",
          "sniffio",
          "sounddevice>=0.5.1; extra == 'voice-helpers'",
          "tqdm>4",
          "typing-extensions<5,>=4.11",
          "websockets<16,>=13; extra == 'realtime'"
        ],
        "sha256": "784689193121727c9f0a64e0e68bf8731165e8977495fbc48da9219f136c427a",
        "size": 1120581,
        "version": "2.24.0"
      },
      {
        "mode": 256,
        "project": "opentelemetry-api",
        "relative_path": "opentelemetry_api-1.39.1-py3-none-any.whl",
        "requires_dist": [
          "importlib-metadata<8.8.0,>=6.0",
          "typing-extensions>=4.5.0"
        ],
        "sha256": "6923b63b1aacd86661162043003f789bd6958b81c8cf0cd69f3b21a14d437e3f",
        "size": 66741,
        "version": "1.39.1"
      },
      {
        "mode": 256,
        "project": "opentelemetry-semantic-conventions",
        "relative_path": "opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl",
        "requires_dist": [
          "opentelemetry-api==1.39.1",
          "typing-extensions>=4.5.0"
        ],
        "sha256": "f22c5589c70cbf7171812d58d5e38c7a790025cec09ba63781de24ac18cfafa8",
        "size": 220438,
        "version": "0.60b1"
      },
      {
        "mode": 256,
        "project": "packaging",
        "relative_path": "packaging-26.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "38ecf1d69ef8028db3e0b35e80171b798b21863cbab0a9ac3cb7268ecddb538f",
        "size": 74722,
        "version": "26.0"
      },
      {
        "mode": 256,
        "project": "pathspec",
        "relative_path": "pathspec-1.1.1-py3-none-any.whl",
        "requires_dist": [
          "google-re2 >=1.1 ; extra == \"re2\"",
          "hyperscan >=0.7 ; extra == \"hyperscan\"",
          "typing-extensions >=4 ; extra == \"optional\""
        ],
        "sha256": "130cd017e7f437c4a61d0f05f7da2fe694db8c69f303568119eed74604987fe0",
        "size": 57681,
        "version": "1.1.1"
      },
      {
        "mode": 256,
        "project": "pillow",
        "relative_path": "pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.whl",
        "requires_dist": [
          "arro3-compute; extra == \"test-arrow\"",
          "arro3-core; extra == \"test-arrow\"",
          "check-manifest; extra == \"tests\"",
          "coverage>=7.4.2; extra == \"tests\"",
          "defusedxml; extra == \"tests\"",
          "defusedxml; extra == \"xmp\"",
          "furo; extra == \"docs\"",
          "markdown2; extra == \"tests\"",
          "nanoarrow; extra == \"test-arrow\"",
          "olefile; extra == \"docs\"",
          "olefile; extra == \"fpx\"",
          "olefile; extra == \"mic\"",
          "olefile; extra == \"tests\"",
          "packaging; extra == \"tests\"",
          "pyarrow; extra == \"test-arrow\"",
          "pyroma>=5; extra == \"tests\"",
          "pytest-cov; extra == \"tests\"",
          "pytest-timeout; extra == \"tests\"",
          "pytest-xdist; extra == \"tests\"",
          "pytest; extra == \"tests\"",
          "sphinx-autobuild; extra == \"docs\"",
          "sphinx-copybutton; extra == \"docs\"",
          "sphinx-inline-tabs; extra == \"docs\"",
          "sphinx>=8.2; extra == \"docs\"",
          "sphinxext-opengraph; extra == \"docs\"",
          "trove-classifiers>=2024.10.12; extra == \"tests\""
        ],
        "sha256": "6748efe10d2c7a94cd87497678de1799080f96ae102e53f51957988d1e8eb064",
        "size": 6897501,
        "version": "12.2.0"
      },
      {
        "mode": 256,
        "project": "pluggy",
        "relative_path": "pluggy-1.6.0-py3-none-any.whl",
        "requires_dist": [
          "coverage; extra == \"testing\"",
          "pre-commit; extra == \"dev\"",
          "pytest-benchmark; extra == \"testing\"",
          "pytest; extra == \"testing\"",
          "tox; extra == \"dev\""
        ],
        "sha256": "c1f29b77f78045fd8e301c0a850ddf1fe63d4a6e60166f8e5895296c0e9bb775",
        "size": 20879,
        "version": "1.6.0"
      },
      {
        "mode": 256,
        "project": "prompt-toolkit",
        "relative_path": "prompt_toolkit-3.0.52-py3-none-any.whl",
        "requires_dist": [
          "wcwidth"
        ],
        "sha256": "b1b4f2e2e97f9b6ac5b1de6d7dc9b889ca61a1c865c1e919bad487dbb23144d5",
        "size": 391808,
        "version": "3.0.52"
      },
      {
        "mode": 256,
        "project": "propcache",
        "relative_path": "propcache-0.5.2-cp312-cp312-manylinux_2_17_x86_64.whl",
        "requires_dist": [],
        "sha256": "5df2342577be2d82696911bbc6e3ccc189273ff7c7001364753f087427436f60",
        "size": 63946,
        "version": "0.5.2"
      },
      {
        "mode": 256,
        "project": "psutil",
        "relative_path": "psutil-7.2.2-cp36-abi3-manylinux_2_12_x86_64.whl",
        "requires_dist": [
          "abi3audit ; extra == 'dev'",
          "black ; extra == 'dev'",
          "check-manifest ; extra == 'dev'",
          "colorama ; (os_name == \"nt\") and extra == 'dev'",
          "coverage ; extra == 'dev'",
          "packaging ; extra == 'dev'",
          "psleak ; extra == 'dev'",
          "psleak ; extra == 'test'",
          "pylint ; extra == 'dev'",
          "pyperf ; extra == 'dev'",
          "pypinfo ; extra == 'dev'",
          "pyreadline3 ; (os_name == \"nt\") and extra == 'dev'",
          "pytest ; extra == 'dev'",
          "pytest ; extra == 'test'",
          "pytest-cov ; extra == 'dev'",
          "pytest-instafail ; extra == 'dev'",
          "pytest-instafail ; extra == 'test'",
          "pytest-xdist ; extra == 'dev'",
          "pytest-xdist ; extra == 'test'",
          "pywin32 ; (os_name == \"nt\" and implementation_name != \"pypy\") and extra == 'dev'",
          "pywin32 ; (os_name == \"nt\" and implementation_name != \"pypy\") and extra == 'test'",
          "requests ; extra == 'dev'",
          "rstcheck ; extra == 'dev'",
          "ruff ; extra == 'dev'",
          "setuptools ; extra == 'dev'",
          "setuptools ; extra == 'test'",
          "sphinx ; extra == 'dev'",
          "sphinx-rtd-theme ; extra == 'dev'",
          "toml-sort ; extra == 'dev'",
          "twine ; extra == 'dev'",
          "validate-pyproject[all] ; extra == 'dev'",
          "virtualenv ; extra == 'dev'",
          "vulture ; extra == 'dev'",
          "wheel ; (os_name == \"nt\" and implementation_name != \"pypy\") and extra == 'dev'",
          "wheel ; (os_name == \"nt\" and implementation_name != \"pypy\") and extra == 'test'",
          "wheel ; extra == 'dev'",
          "wmi ; (os_name == \"nt\" and implementation_name != \"pypy\") and extra == 'dev'",
          "wmi ; (os_name == \"nt\" and implementation_name != \"pypy\") and extra == 'test'"
        ],
        "sha256": "dd578260e6eb8ad6f50e08fb702d26955185e1e66ba75df54d6a4f8b4b4fad37",
        "size": 155716,
        "version": "7.2.2"
      },
      {
        "mode": 256,
        "project": "ptyprocess",
        "relative_path": "ptyprocess-0.7.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "fceff27449b015730b976c385f60da9db0b1cdf7766d43f744c913f1446e22f9",
        "size": 14388,
        "version": "0.7.0"
      },
      {
        "mode": 256,
        "project": "pycparser",
        "relative_path": "pycparser-3.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "f5a6d21f8bb8c18b9653101f1fa5dd0d310d4ee96b4e4a6779c086705c1722cb",
        "size": 48548,
        "version": "3.0"
      },
      {
        "mode": 256,
        "project": "pydantic",
        "relative_path": "pydantic-2.13.4-py3-none-any.whl",
        "requires_dist": [
          "annotated-types>=0.6.0",
          "email-validator>=2.0.0; extra == 'email'",
          "pydantic-core==2.46.4",
          "typing-extensions>=4.14.1",
          "typing-inspection>=0.4.2",
          "tzdata; (python_version >= '3.9' and platform_system == 'Windows') and extra == 'timezone'"
        ],
        "sha256": "19fa947a7dddec8f60b112779fecea34571f22d3447261a73a0de1be0355fce5",
        "size": 472612,
        "version": "2.13.4"
      },
      {
        "mode": 256,
        "project": "pydantic-core",
        "relative_path": "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.whl",
        "requires_dist": [
          "typing-extensions>=4.14.1"
        ],
        "sha256": "49a1a059e3869398c001c74c8a88dc3074ad803c12cbd2cf243bf22cfbbb3dc9",
        "size": 2034543,
        "version": "2.46.4"
      },
      {
        "mode": 256,
        "project": "pydantic-settings",
        "relative_path": "pydantic_settings-2.13.1-py3-none-any.whl",
        "requires_dist": [
          "azure-identity>=1.16.0; extra == 'azure-key-vault'",
          "azure-keyvault-secrets>=4.8.0; extra == 'azure-key-vault'",
          "boto3-stubs[secretsmanager]; extra == 'aws-secrets-manager'",
          "boto3>=1.35.0; extra == 'aws-secrets-manager'",
          "google-cloud-secret-manager>=2.23.1; extra == 'gcp-secret-manager'",
          "pydantic>=2.7.0",
          "python-dotenv>=0.21.0",
          "pyyaml>=6.0.1; extra == 'yaml'",
          "tomli>=2.0.1; extra == 'toml'",
          "typing-inspection>=0.4.0"
        ],
        "sha256": "a894e307632339b4912610c7e08a04a16cbaa2783ce39013925be36386588c0d",
        "size": 59317,
        "version": "2.13.1"
      },
      {
        "mode": 256,
        "project": "pytest",
        "relative_path": "pytest-9.0.2-py3-none-any.whl",
        "requires_dist": [
          "argcomplete; extra == \"dev\"",
          "attrs>=19.2; extra == \"dev\"",
          "colorama>=0.4; sys_platform == \"win32\"",
          "exceptiongroup>=1; python_version < \"3.11\"",
          "hypothesis>=3.56; extra == \"dev\"",
          "iniconfig>=1.0.1",
          "mock; extra == \"dev\"",
          "packaging>=22",
          "pluggy<2,>=1.5",
          "pygments>=2.7.2",
          "requests; extra == \"dev\"",
          "setuptools; extra == \"dev\"",
          "tomli>=1; python_version < \"3.11\"",
          "xmlschema; extra == \"dev\""
        ],
        "sha256": "cfef28ca90e651595af4ace69cb103502479c406570ebdbeac940098b56d405b",
        "size": 375134,
        "version": "9.0.2"
      },
      {
        "mode": 256,
        "project": "pytest-asyncio",
        "relative_path": "pytest_asyncio-1.3.0-py3-none-any.whl",
        "requires_dist": [
          "backports-asyncio-runner<2,>=1.1; python_version < \"3.11\"",
          "coverage>=6.2; extra == \"testing\"",
          "hypothesis>=5.7.1; extra == \"testing\"",
          "pytest<10,>=8.2",
          "sphinx-rtd-theme>=1; extra == \"docs\"",
          "sphinx>=5.3; extra == \"docs\"",
          "typing-extensions>=4.12; python_version < \"3.13\""
        ],
        "sha256": "e4adcfaaf63097a9a70e62a877fe062c45c4dde990f406149ede6c42d3d2756a",
        "size": 15456,
        "version": "1.3.0"
      },
      {
        "mode": 256,
        "project": "python-dateutil",
        "relative_path": "python_dateutil-2.9.0.post0-py3-none-any.whl",
        "requires_dist": [
          "six >=1.5"
        ],
        "sha256": "bd328724651035e1336e7489bec3eeab1c3f92be268e008990acb734284fa3f5",
        "size": 230324,
        "version": "2.9.0.post0"
      },
      {
        "mode": 256,
        "project": "python-dotenv",
        "relative_path": "python_dotenv-1.2.2-py3-none-any.whl",
        "requires_dist": [
          "click>=5.0; extra == \"cli\""
        ],
        "sha256": "5df09e214aa3666b54067eb025902841f181fe47eeff392824a46b515bc4948a",
        "size": 22504,
        "version": "1.2.2"
      },
      {
        "mode": 256,
        "project": "python-multipart",
        "relative_path": "python_multipart-0.0.27-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "906a84eda5441265cbf2c1be96d13bdf5f3b18a7f9d02af746a03ee5a357fb8b",
        "size": 29639,
        "version": "0.0.27"
      },
      {
        "mode": 256,
        "project": "python-telegram-bot",
        "relative_path": "python_telegram_bot-22.6-py3-none-any.whl",
        "requires_dist": [
          "aiolimiter<1.3,>=1.1; extra == 'all'",
          "aiolimiter<1.3,>=1.1; extra == 'ext'",
          "aiolimiter<1.3,>=1.1; extra == 'rate-limiter'",
          "apscheduler<3.12.0,>=3.10.4; extra == 'all'",
          "apscheduler<3.12.0,>=3.10.4; extra == 'ext'",
          "apscheduler<3.12.0,>=3.10.4; extra == 'job-queue'",
          "cachetools<6.3.0,>=5.3.3; extra == 'all'",
          "cachetools<6.3.0,>=5.3.3; extra == 'callback-data'",
          "cachetools<6.3.0,>=5.3.3; extra == 'ext'",
          "cffi>=1.17.0rc1; (python_version > '3.12') and extra == 'all'",
          "cffi>=1.17.0rc1; (python_version > '3.12') and extra == 'passport'",
          "cryptography!=3.4,!=3.4.1,!=3.4.2,!=3.4.3,>=39.0.1; extra == 'all'",
          "cryptography!=3.4,!=3.4.1,!=3.4.2,!=3.4.3,>=39.0.1; extra == 'passport'",
          "httpcore>=1.0.9; python_version >= '3.14'",
          "httpx<0.29,>=0.27",
          "httpx[http2]; extra == 'all'",
          "httpx[http2]; extra == 'http2'",
          "httpx[socks]; extra == 'all'",
          "httpx[socks]; extra == 'socks'",
          "tornado~=6.5; extra == 'all'",
          "tornado~=6.5; extra == 'ext'",
          "tornado~=6.5; extra == 'webhooks'"
        ],
        "sha256": "16732c79cb41be6423b9e97784c8b8c825573e9048f83763f7154b2797a370db",
        "size": 737642,
        "version": "22.6"
      },
      {
        "mode": 256,
        "project": "pytz",
        "relative_path": "pytz-2025.2-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "f5c40356283f3a3c5d47c2779959494281663edeb616a7bb0f6d7b67ce60d82c",
        "size": 509067,
        "version": "2025.2"
      },
      {
        "mode": 256,
        "project": "referencing",
        "relative_path": "referencing-0.37.0-py3-none-any.whl",
        "requires_dist": [
          "attrs>=22.2.0",
          "rpds-py>=0.7.0",
          "typing-extensions>=4.4.0; python_version < '3.13'"
        ],
        "sha256": "4bc177a510c66b0313e1bdd748c273d7e92eabf6f945679e9e390ed0de8adec5",
        "size": 27131,
        "version": "0.37.0"
      },
      {
        "mode": 256,
        "project": "requests",
        "relative_path": "requests-2.33.0-py3-none-any.whl",
        "requires_dist": [
          "PySocks!=1.5.7,>=1.5.6; extra == \"socks\"",
          "PySocks!=1.5.7,>=1.5.6; extra == \"test\"",
          "certifi>=2023.5.7",
          "chardet<8,>=3.0.2; extra == \"use-chardet-on-py3\"",
          "charset_normalizer<4,>=2",
          "idna<4,>=2.5",
          "pytest-cov; extra == \"test\"",
          "pytest-httpbin==2.1.0; extra == \"test\"",
          "pytest-mock; extra == \"test\"",
          "pytest-xdist; extra == \"test\"",
          "pytest>=3; extra == \"test\"",
          "urllib3<3,>=1.26"
        ],
        "sha256": "12e77f12669c1a2bd5d2136edcaaf0d789fea780a5a500e20b6c8c77cf3b5b19",
        "size": 65414,
        "version": "2.33.0"
      },
      {
        "mode": 256,
        "project": "rich",
        "relative_path": "rich-14.3.3-py3-none-any.whl",
        "requires_dist": [
          "ipywidgets (>=7.5.1,<9) ; extra == \"jupyter\"",
          "markdown-it-py (>=2.2.0)",
          "pygments (>=2.13.0,<3.0.0)"
        ],
        "sha256": "444ae6932a6b06b90a134a14e1931ac068317ae61d38582a9c6246ad53272e0e",
        "size": 310798,
        "version": "14.3.3"
      },
      {
        "mode": 256,
        "project": "rpds-py",
        "relative_path": "rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.whl",
        "requires_dist": [],
        "sha256": "c2b1fe1ac0d92e5033c416f693e1a6fb0dc930597bf819842b3a69651efadc1f",
        "size": 387591,
        "version": "0.30.0"
      },
      {
        "mode": 256,
        "project": "ruamel-yaml",
        "relative_path": "ruamel_yaml-0.18.17-py3-none-any.whl",
        "requires_dist": [
          "mercurial>5.7; extra == \"docs\"",
          "ruamel.yaml.clib>=0.2.15; platform_python_implementation == \"CPython\" and python_version < \"3.15\"",
          "ruamel.yaml.jinja2>=0.2; extra == \"jinja2\"",
          "ryd; extra == \"docs\""
        ],
        "sha256": "8020920ca03dc5eeed67289e00e9a9372e30893e3d40d0fce732cc148b46ef40",
        "size": 121960,
        "version": "0.18.17"
      },
      {
        "mode": 256,
        "project": "ruamel-yaml-clib",
        "relative_path": "ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux_2_17_x86_64.whl",
        "requires_dist": [],
        "sha256": "bd64c245952d3921a25010b2a1af26e40ab5053fa3baf3b2a32645c1225c423c",
        "size": 788323,
        "version": "0.2.15"
      },
      {
        "mode": 256,
        "project": "ruff",
        "relative_path": "ruff-0.15.10-py3-none-manylinux_2_17_x86_64.whl",
        "requires_dist": [],
        "sha256": "951a61979b749090e7a0b212fd21fd6f590c2d78f00049268c797de10b1321ba",
        "size": 14033,
        "version": "0.15.10"
      },
      {
        "mode": 256,
        "project": "s3transfer",
        "relative_path": "s3transfer-0.16.1-py3-none-any.whl",
        "requires_dist": [
          "botocore (<2.0a.0,>=1.37.4)",
          "botocore[crt] (<2.0a.0,>=1.37.4) ; extra == 'crt'"
        ],
        "sha256": "84645d5bd5a67d086ce04189e0703bbce583640d374d0034c93bb82270a4c2c7",
        "size": 87028,
        "version": "0.16.1"
      },
      {
        "mode": 256,
        "project": "shellingham",
        "relative_path": "shellingham-1.5.4-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "761ce70499e181eea5689b6d2ea6432de174447d2ff4aaf151193c6ea540b225",
        "size": 22777,
        "version": "1.5.4"
      },
      {
        "mode": 256,
        "project": "six",
        "relative_path": "six-1.17.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "8cdc4e21f4cf7e6f86b6666ba7796826bd9713925b23b5598d9243de5e7f7513",
        "size": 11423,
        "version": "1.17.0"
      },
      {
        "mode": 256,
        "project": "sniffio",
        "relative_path": "sniffio-1.3.1-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "03e5d6c572ce7a76c245d1d9eb6eda8a709d85620fef3a3b5856469c140053b2",
        "size": 10586,
        "version": "1.3.1"
      },
      {
        "mode": 256,
        "project": "socksio",
        "relative_path": "socksio-1.0.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "eff3c1950330f23704ab91cf76034a67453d2457a7fd5c73bd796bf4176d4dad",
        "size": 13111,
        "version": "1.0.0"
      },
      {
        "mode": 256,
        "project": "sse-starlette",
        "relative_path": "sse_starlette-3.3.2-py3-none-any.whl",
        "requires_dist": [
          "aiosqlite>=0.21.0; extra == \"examples\"",
          "anyio>=4.7.0",
          "daphne>=4.2.0; extra == \"daphne\"",
          "fastapi>=0.115.12; extra == \"examples\"",
          "granian>=2.3.1; extra == \"granian\"",
          "sqlalchemy[asyncio]>=2.0.41; extra == \"examples\"",
          "starlette>=0.49.1",
          "uvicorn>=0.34.0; extra == \"examples\"",
          "uvicorn>=0.34.0; extra == \"uvicorn\""
        ],
        "sha256": "86354ac84613d1b47d2dd3b39790e12f4e4ffeb4062481b22d6e9f6aad0f1369",
        "size": 14643,
        "version": "3.3.2"
      },
      {
        "mode": 256,
        "project": "starlette",
        "relative_path": "starlette-1.0.1-py3-none-any.whl",
        "requires_dist": [
          "anyio<5,>=3.6.2",
          "httpx<0.29.0,>=0.27.0; extra == 'full'",
          "itsdangerous; extra == 'full'",
          "jinja2; extra == 'full'",
          "python-multipart>=0.0.18; extra == 'full'",
          "pyyaml; extra == 'full'",
          "typing-extensions>=4.10.0; python_version < '3.13'"
        ],
        "sha256": "10d82ed1d281ca5ad24f8f4b4e16cef7fe0d695f6c31ab3fc6071377293789aa",
        "size": 73163,
        "version": "1.0.1"
      },
      {
        "mode": 256,
        "project": "tabulate",
        "relative_path": "tabulate-0.10.0-py3-none-any.whl",
        "requires_dist": [
          "wcwidth; extra == \"widechars\""
        ],
        "sha256": "5b4fdbe4e6aba6ae3b89c68a559a43f97d98aacb6a1222b4c865c57813cd6577",
        "size": 40013,
        "version": "0.10.0"
      },
      {
        "mode": 256,
        "project": "tenacity",
        "relative_path": "tenacity-9.1.4-py3-none-any.whl",
        "requires_dist": [
          "pytest; extra == \"test\"",
          "reno; extra == \"doc\"",
          "sphinx; extra == \"doc\"",
          "tornado>=4.5; extra == \"test\"",
          "typeguard; extra == \"test\""
        ],
        "sha256": "d25457cf372ef39b5d27e24ee3f2575062eed39dea1999cb774c0179aa302c2c",
        "size": 29282,
        "version": "9.1.4"
      },
      {
        "mode": 256,
        "project": "termcolor",
        "relative_path": "termcolor-3.3.0-py3-none-any.whl",
        "requires_dist": [
          "pytest-cov; extra == 'tests'",
          "pytest; extra == 'tests'"
        ],
        "sha256": "a8e70a2db3e894be53221e0a593a60152af9d2dc2fe73be94bedb3c068799519",
        "size": 8091,
        "version": "3.3.0"
      },
      {
        "mode": 256,
        "project": "tornado",
        "relative_path": "tornado-6.5.7-cp39-abi3-manylinux_2_5_x86_64.whl",
        "requires_dist": [],
        "sha256": "2708e48f40f65a392600174933f20736d59993ad1bbae033aec0436ca8411e51",
        "size": 448553,
        "version": "6.5.7"
      },
      {
        "mode": 256,
        "project": "tqdm",
        "relative_path": "tqdm-4.67.3-py3-none-any.whl",
        "requires_dist": [
          "colorama; platform_system == \"Windows\"",
          "importlib_metadata; python_version < \"3.8\"",
          "ipywidgets>=6; extra == \"notebook\"",
          "nbval; extra == \"dev\"",
          "pytest-asyncio>=0.24; extra == \"dev\"",
          "pytest-cov; extra == \"dev\"",
          "pytest-timeout; extra == \"dev\"",
          "pytest>=6; extra == \"dev\"",
          "requests; extra == \"discord\"",
          "requests; extra == \"telegram\"",
          "slack-sdk; extra == \"slack\""
        ],
        "sha256": "0d67ef17e32f9e00cc0d82f78c41118de1de5e90a06c70e6ba03719115bb9dde",
        "size": 78753,
        "version": "4.67.3"
      },
      {
        "mode": 256,
        "project": "ty",
        "relative_path": "ty-0.0.21-py3-none-manylinux_2_17_x86_64.whl",
        "requires_dist": [],
        "sha256": "66363a9e722c30829ad6e2dbc9e55ed9f55afb0d46569152a684fb975ed816b7",
        "size": 6562,
        "version": "0.0.21"
      },
      {
        "mode": 256,
        "project": "typer",
        "relative_path": "typer-0.27.0-py3-none-any.whl",
        "requires_dist": [
          "annotated-doc>=0.0.2",
          "colorama; platform_system == \"Windows\"",
          "rich>=13.8.0",
          "shellingham>=1.3.0"
        ],
        "sha256": "5019720631e8b2e4858bba0cf460db716ffc978d65d8ed8290066f0e2aeef822",
        "size": 359037,
        "version": "0.27.0"
      },
      {
        "mode": 256,
        "project": "typing-extensions",
        "relative_path": "typing_extensions-4.15.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "f638b0cdfafb30d83d601d2ad42226032972d20aac8c92c7ec3686483ad598bb",
        "size": 45037,
        "version": "4.15.0"
      },
      {
        "mode": 256,
        "project": "typing-inspection",
        "relative_path": "typing_inspection-0.4.2-py3-none-any.whl",
        "requires_dist": [
          "typing-extensions>=4.12.0"
        ],
        "sha256": "3ea221bc3306f61511d4c2ded68ac7670e53b6d7ed852b94342284a8add7cb9f",
        "size": 14995,
        "version": "0.4.2"
      },
      {
        "mode": 256,
        "project": "urllib3",
        "relative_path": "urllib3-2.7.0-py3-none-any.whl",
        "requires_dist": [
          "backports-zstd>=1.0.0; (python_version < '3.14') and extra == 'zstd'",
          "brotli>=1.2.0; (platform_python_implementation == 'CPython') and extra == 'brotli'",
          "brotlicffi>=1.2.0.0; (platform_python_implementation != 'CPython') and extra == 'brotli'",
          "h2<5,>=4; extra == 'h2'",
          "pysocks!=1.5.7,<2.0,>=1.5.6; extra == 'socks'"
        ],
        "sha256": "2d9bcab7cab8ec3e747d73fb145a9019458d69a8d5ed462d00ebb84baa458356",
        "size": 131436,
        "version": "2.7.0"
      },
      {
        "mode": 256,
        "project": "uvicorn",
        "relative_path": "uvicorn-0.41.0-py3-none-any.whl",
        "requires_dist": [
          "click>=7.0",
          "colorama>=0.4; (sys_platform == 'win32') and extra == 'standard'",
          "h11>=0.8",
          "httptools>=0.6.3; extra == 'standard'",
          "python-dotenv>=0.13; extra == 'standard'",
          "pyyaml>=5.1; extra == 'standard'",
          "typing-extensions>=4.0; python_version < '3.11'",
          "uvloop>=0.15.1; (sys_platform != 'win32' and (sys_platform != 'cygwin' and platform_python_implementation != 'PyPy')) and extra == 'standard'",
          "watchfiles>=0.20; extra == 'standard'",
          "websockets>=10.4; extra == 'standard'"
        ],
        "sha256": "a58fa1ee548bcc94b8ea21ebe56012067985cec94b3c77627361b88c7d17bc08",
        "size": 69133,
        "version": "0.41.0"
      },
      {
        "mode": 256,
        "project": "uvloop",
        "relative_path": "uvloop-0.22.1-cp312-cp312-manylinux_2_17_x86_64.whl",
        "requires_dist": [
          "Cython~=3.0; extra == \"dev\"",
          "Sphinx~=4.1.2; extra == \"docs\"",
          "aiohttp>=3.10.5; extra == \"test\"",
          "flake8~=6.1; extra == \"test\"",
          "mypy>=0.800; extra == \"test\"",
          "psutil; extra == \"test\"",
          "pyOpenSSL~=25.3.0; extra == \"test\"",
          "pycodestyle~=2.11.0; extra == \"test\"",
          "setuptools>=60; extra == \"dev\"",
          "sphinx_rtd_theme~=0.5.2; extra == \"docs\"",
          "sphinxcontrib-asyncio~=0.3.0; extra == \"docs\""
        ],
        "sha256": "3412d49239080f9a0febd7e3be25c717c1276f57d23dd9f6df43613395dbbd0c",
        "size": 4426080,
        "version": "0.22.1"
      },
      {
        "mode": 256,
        "project": "watchfiles",
        "relative_path": "watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
        "requires_dist": [
          "anyio>=3.0.0"
        ],
        "sha256": "0dd4648e6e4cf74e092f51255b3a250a8d5f17319384e607fae82d7f891a994f",
        "size": 454794,
        "version": "1.1.1"
      },
      {
        "mode": 256,
        "project": "wcwidth",
        "relative_path": "wcwidth-0.6.0-py3-none-any.whl",
        "requires_dist": [],
        "sha256": "e68183d9ad373923031cd0bfcd46b2b9de3536132d3002b9564e49783ad8df48",
        "size": 94536,
        "version": "0.6.0"
      },
      {
        "mode": 256,
        "project": "websockets",
        "relative_path": "websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.whl",
        "requires_dist": [],
        "sha256": "4a2e97cafacaa29a1fb2ec0a836865cf18e33f2b770820d289b5c30c95f1ae67",
        "size": 182183,
        "version": "15.0.1"
      },
      {
        "mode": 256,
        "project": "yarl",
        "relative_path": "yarl-1.24.2-cp312-cp312-manylinux_2_17_x86_64.whl",
        "requires_dist": [
          "idna>=2.0",
          "multidict>=4.0",
          "propcache>=0.2.1"
        ],
        "sha256": "0eaa783375d87eb91d43f0342b1b5523dcfb4aa69ed4587580cd6e5eaba5f18e",
        "size": 143318,
        "version": "1.24.2"
      },
      {
        "mode": 256,
        "project": "zipp",
        "relative_path": "zipp-4.1.0-py3-none-any.whl",
        "requires_dist": [
          "big-O; extra == \"test\"",
          "furo; extra == \"doc\"",
          "jaraco.functools; extra == \"test\"",
          "jaraco.itertools; extra == \"test\"",
          "jaraco.packaging>=9.3; extra == \"doc\"",
          "jaraco.test; extra == \"test\"",
          "jaraco.tidelift>=1.4; extra == \"doc\"",
          "more_itertools; extra == \"test\"",
          "pytest!=8.1.*,>=6; extra == \"test\"",
          "pytest-checkdocs>=2.14; extra == \"check\"",
          "pytest-cov; extra == \"cover\"",
          "pytest-enabler>=3.4; extra == \"enabler\"",
          "pytest-ignore-flaky; extra == \"test\"",
          "pytest-mypy>=1.0.1; platform_python_implementation != \"PyPy\" and extra == \"type\"",
          "pytest-ruff>=0.2.1; sys_platform != \"cygwin\" and extra == \"check\"",
          "rst.linker>=1.9; extra == \"doc\"",
          "sphinx-lint; extra == \"doc\"",
          "sphinx>=3.5; extra == \"doc\""
        ],
        "sha256": "978de99a7f3567a5087e52b0d08f9354011f6f2e734beb4b85407c2d8be3c06e",
        "size": 10573,
        "version": "4.1.0"
      }
    ],
    "inventory_sha256": "af42679868fae6eed68c57ecae6903b66c1e9bec283539bf314890d8dd0783c3",
    "root_mode": 320,
    "schema": "task26-sealed-wheelhouse-inventory-v1"
  },
  "authority": {
    "ledger_head_sha256": "3dd46f75fa61fe632315c0a8fa5c344671124289a890884ecb8352c741154549",
    "qualification-ledger_sha256": "5adb9f7f734229d2814f3e4d6421ace8403ef91e84c4b531d816848620b0521c",
    "registry_head_sha256": "d4e0e2f6d44d15d9ca74c47941d5504a6c1618836b455567f268c7cec8cdffe7",
    "registry_sha256": "a9fde4863e51e954406adb90733da215e6517d465029d9e669df26cb5dcb8044"
  },
  "trust_boundary": {
    "external_authenticity_claimed": false,
    "guarantees_within_boundary": [
      "content_identity",
      "deterministic_tamper_detection",
      "reproducibility",
      "revocation_and_current_authority_selection",
      "fail_closed_workflow"
    ],
    "not_claimed": [
      "external_authenticity",
      "non_repudiation",
      "owner_tamper_proof_or_worm",
      "resistance_to_compromised_operator_or_admin"
    ],
    "outside_scope": "Coherent compromise of the trusted operator account or host administrator, including coherent modification of the repository, ledger, or verifier, is outside the Task26 threat model.",
    "schema": "task26-evidence-trust-boundary-v1",
    "scope_statement": "These guarantees apply only while the trusted operator account, host kernel, selected Python/pip toolchain, and sealed wheel bytes remain trustworthy.",
    "signature_claim": "none",
    "trust_anchors": [
      "trusted_operator_account",
      "host_kernel",
      "selected_python_pip_toolchain",
      "sealed_wheel_bytes"
    ]
  }
}
--- summary check inventory ---
{
  "status": "PASS",
  "candidate_digest": "310632f25b112373d97355c5ce3290dc55fb6d036a735e2b53861d983c4fd648",
  "checks": null,
  "qualification": null,
  "security": null,
  "scenarios": null,
  "sealed_files": null,
  "evidence_inventory": null
}

[Showing lines 745-2068 of 2068 (50.0KB limit). Full output: /tmp/pi-bash-f6d61668062bd852.log]


--- hermes task26 code/tests ---
Archive:  .omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10/artifacts/hermes_agent-0.17.0-py3-none-any.whl
    10290  2000-01-01 00:00   agent/onboarding.py
     3643  2000-01-01 00:00   gateway/_commit_receipts.py
    17667  2000-01-01 00:00   gateway/commit_observer.py
     3714  2000-01-01 00:00   gateway/platforms/nutrition_onboarding_reconciler.py
    10401  2000-01-01 00:00   gateway/platforms/nutrition_onboarding_reconciliation.py
      643  2000-01-01 00:00   gateway/platforms/nutrition_onboarding_reconciliation_copy.py
    10975  2000-01-01 00:00   gateway/platforms/task26_candidate_authority.py
     3455  2000-01-01 00:00   gateway/platforms/task26_evidence_contract.py
    33692  2000-01-01 00:00   gateway/platforms/task26_final_state.py
     6336  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding.py
     1943  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_authority.py
     9535  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_copy.py
     7248  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_preview.py
     3160  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_preview_callback.py
     4187  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_preview_completion.py
     6531  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_preview_flow.py
     3767  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_preview_publication.py
     1049  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_preview_types.py
    53638  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_publication_outbox.py
    19593  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_runtime.py
     7484  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_runtime_authority.py
    18770  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_runtime_callback.py
    10499  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_runtime_collection.py
      154  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_runtime_errors.py
     2955  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_runtime_notice.py
     9343  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_runtime_publication.py
    16621  2000-01-01 00:00   gateway/platforms/telegram_nutrition_onboarding_runtime_publication_transport.py
--- profile task26 code/tests ---
Archive:  .omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10/artifacts/physique_checkin_cli-0.1.0-py3-none-any.whl
     8806  2000-01-01 00:00   checkin_cli/customer_cleanup.py
     8690  2000-01-01 00:00   checkin_cli/customer_cleanup_fs.py
    10640  2000-01-01 00:00   checkin_cli/customer_cleanup_inventory.py
     2214  2000-01-01 00:00   checkin_cli/customer_cleanup_models.py
    10684  2000-01-01 00:00   checkin_cli/customer_cleanup_shared.py
    26923  2000-01-01 00:00   checkin_cli/nutrition_onboarding.py
     3874  2000-01-01 00:00   checkin_cli/nutrition_onboarding_artifacts.py
     2894  2000-01-01 00:00   checkin_cli/nutrition_onboarding_authority.py
     6975  2000-01-01 00:00   checkin_cli/nutrition_onboarding_calculations.py
    10083  2000-01-01 00:00   checkin_cli/nutrition_onboarding_clarification_policy.py
     2974  2000-01-01 00:00   checkin_cli/nutrition_onboarding_clarification_rules.py
     7629  2000-01-01 00:00   checkin_cli/nutrition_onboarding_cli.py
     2720  2000-01-01 00:00   checkin_cli/nutrition_onboarding_contract.py
    11409  2000-01-01 00:00   checkin_cli/nutrition_onboarding_finalization.py
     2168  2000-01-01 00:00   checkin_cli/nutrition_onboarding_finalize_service.py
     6223  2000-01-01 00:00   checkin_cli/nutrition_onboarding_fs.py
     3470  2000-01-01 00:00   checkin_cli/nutrition_onboarding_migration.py
     8283  2000-01-01 00:00   checkin_cli/nutrition_onboarding_models.py
     8896  2000-01-01 00:00   checkin_cli/nutrition_onboarding_projection.py
     6609  2000-01-01 00:00   checkin_cli/nutrition_onboarding_reconciliation.py
     2451  2000-01-01 00:00   checkin_cli/nutrition_onboarding_session.py
     9683  2000-01-01 00:00   checkin_cli/nutrition_onboarding_store.py


--- artifact & inventory consistency, symlinks, duplicates ---
b2b58ec01e6432572283327a67426a04c198cadbba4e115ea59d8cab12620aef  .omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10/artifacts/hermes_agent-0.17.0-py3-none-any.whl
62c508d3548ed5f5fe28c1a137bbc1b6af286d48419dc9e66fa4c7c8422b4121  .omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10/artifacts/physique_checkin_cli-0.1.0-py3-none-any.whl
inventory_entries=107
actual_wheels=107
all_dir_entries=      1 f Jinja2-3.1.6-py3-none-any.whl
      1 f Markdown-3.10.2-py3-none-any.whl
      1 f MarkupSafe-3.0.3-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f PyJWT-2.13.0-py3-none-any.whl
      1 f PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.whl
      1 f PyYAML-6.0.3-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f Pygments-2.19.2-py3-none-any.whl
      1 f aiohappyeyeballs-2.7.1-py3-none-any.whl
      1 f aiohttp-3.14.1-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f aiosignal-1.4.0-py3-none-any.whl
      1 f annotated_doc-0.0.4-py3-none-any.whl
      1 f annotated_types-0.7.0-py3-none-any.whl
      1 f anthropic-0.87.0-py3-none-any.whl
      1 f anyio-4.12.1-py3-none-any.whl
      1 f attrs-25.4.0-py3-none-any.whl
      1 f boto3-1.42.89-py3-none-any.whl
      1 f botocore-1.42.97-py3-none-any.whl
      1 f brotlicffi-1.2.0.1-cp38-abi3-manylinux_2_17_x86_64.whl
      1 f certifi-2026.5.20-py3-none-any.whl
      1 f cffi-2.0.0-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f charset_normalizer-3.4.4-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f click-8.3.1-py3-none-any.whl
      1 f croniter-6.0.0-py3-none-any.whl
      1 f cryptography-46.0.7-cp311-abi3-manylinux_2_34_x86_64.whl
      1 f davey-0.1.6-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f debugpy-1.8.20-cp312-cp312-manylinux_2_34_x86_64.whl
      1 f discord_py-2.7.1-py3-none-any.whl
      1 f distro-1.9.0-py3-none-any.whl
      1 f docstring_parser-0.18.0-py3-none-any.whl
      1 f edge_tts-7.2.7-py3-none-any.whl
      1 f elevenlabs-1.59.0-py3-none-any.whl
      1 f eval_type_backport-0.4.0-py3-none-any.whl
      1 f fastapi-0.133.1-py3-none-any.whl
      1 f fire-0.7.1-py3-none-any.whl
      1 f frozenlist-1.8.0-cp312-cp312-manylinux_2_5_x86_64.whl
      1 f h11-0.16.0-py3-none-any.whl
      1 f honcho_ai-2.0.1-py3-none-any.whl
      1 f httpcore-1.0.9-py3-none-any.whl
      1 f httptools-0.7.1-cp312-cp312-manylinux_2_5_x86_64.whl
      1 f httpx-0.28.1-py3-none-any.whl
      1 f httpx_sse-0.4.3-py3-none-any.whl
      1 f idna-3.15-py3-none-any.whl
      1 f importlib_metadata-8.7.1-py3-none-any.whl
      1 f iniconfig-2.3.0-py3-none-any.whl
      1 f jiter-0.13.0-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f jmespath-1.1.0-py3-none-any.whl
      1 f jsonpath_python-1.1.6-py3-none-any.whl
      1 f jsonschema-4.26.0-py3-none-any.whl
      1 f jsonschema_specifications-2025.9.1-py3-none-any.whl
      1 f markdown_it_py-4.0.0-py3-none-any.whl
      1 f mcp-1.26.0-py3-none-any.whl
      1 f mdurl-0.1.2-py3-none-any.whl
      1 f mistralai-2.4.8-py3-none-any.whl
      1 f multidict-6.7.1-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f openai-2.24.0-py3-none-any.whl
      1 f opentelemetry_api-1.39.1-py3-none-any.whl
      1 f opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl
      1 f packaging-26.0-py3-none-any.whl
      1 f pathspec-1.1.1-py3-none-any.whl
      1 f pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.whl
      1 f pluggy-1.6.0-py3-none-any.whl
      1 f prompt_toolkit-3.0.52-py3-none-any.whl
      1 f propcache-0.5.2-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f psutil-7.2.2-cp36-abi3-manylinux_2_12_x86_64.whl
      1 f ptyprocess-0.7.0-py3-none-any.whl
      1 f pycparser-3.0-py3-none-any.whl
      1 f pydantic-2.13.4-py3-none-any.whl
      1 f pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f pydantic_settings-2.13.1-py3-none-any.whl
      1 f pytest-9.0.2-py3-none-any.whl
      1 f pytest_asyncio-1.3.0-py3-none-any.whl
      1 f python_dateutil-2.9.0.post0-py3-none-any.whl
      1 f python_dotenv-1.2.2-py3-none-any.whl
      1 f python_multipart-0.0.27-py3-none-any.whl
      1 f python_telegram_bot-22.6-py3-none-any.whl
      1 f pytz-2025.2-py3-none-any.whl
      1 f referencing-0.37.0-py3-none-any.whl
      1 f requests-2.33.0-py3-none-any.whl
      1 f rich-14.3.3-py3-none-any.whl
      1 f rpds_py-0.30.0-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f ruamel_yaml-0.18.17-py3-none-any.whl
      1 f ruamel_yaml_clib-0.2.15-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f ruff-0.15.10-py3-none-manylinux_2_17_x86_64.whl
      1 f s3transfer-0.16.1-py3-none-any.whl
      1 f shellingham-1.5.4-py3-none-any.whl
      1 f six-1.17.0-py3-none-any.whl
      1 f sniffio-1.3.1-py3-none-any.whl
      1 f socksio-1.0.0-py3-none-any.whl
      1 f sse_starlette-3.3.2-py3-none-any.whl
      1 f starlette-1.0.1-py3-none-any.whl
      1 f tabulate-0.10.0-py3-none-any.whl
      1 f tenacity-9.1.4-py3-none-any.whl
      1 f termcolor-3.3.0-py3-none-any.whl
      1 f tornado-6.5.7-cp39-abi3-manylinux_2_5_x86_64.whl
      1 f tqdm-4.67.3-py3-none-any.whl
      1 f ty-0.0.21-py3-none-manylinux_2_17_x86_64.whl
      1 f typer-0.27.0-py3-none-any.whl
      1 f typing_extensions-4.15.0-py3-none-any.whl
      1 f typing_inspection-0.4.2-py3-none-any.whl
      1 f urllib3-2.7.0-py3-none-any.whl
      1 f uvicorn-0.41.0-py3-none-any.whl
      1 f uvloop-0.22.1-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
      1 f wcwidth-0.6.0-py3-none-any.whl
      1 f websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.whl
      1 f yarl-1.24.2-cp312-cp312-manylinux_2_17_x86_64.whl
      1 f zipp-4.1.0-py3-none-any.whl
symlinks=duplicate normalized projects:
missing/extra/name-mismatch:
mode anomalies:


--- expected task26 scenario files: metadata ---
==01-onboarding_22_clear.json==
[
  "candidate_digest",
  "clause",
  "invocation_id",
  "payload",
  "schema"
]
==02-deterministic_ambiguity_revision.json==
[
  "candidate_digest",
  "clause",
  "invocation_id",
  "payload",
  "schema"
]
==03-preview_isolation.json==
[
  "candidate_digest",
  "clause",
  "invocation_id",
  "payload",
  "schema"
]
==04-approved_card_projection_gate.json==
[
  "candidate_digest",
  "clause",
  "invocation_id",
  "payload",
  "schema"
]
==05-unknown_delivery_no_retry.json==
[
  "candidate_digest",
  "clause",
  "invocation_id",
  "payload",
  "schema"
]
==06-successful_lifecycle.json==
[
  "candidate_digest",
  "clause",
  "invocation_id",
  "payload",
  "schema"
]
==07-cleanup_resume_terminal.json==
[
  "candidate_digest",
  "clause",
  "invocation_id",
  "payload",
  "schema"
]
--- scenario receipt stream types ---
[]
[]
[]
[]
[]
[]
[]


**Assessing read-only verification setup**

**Planning isolated Python verification run**

**Extracting source code read-only via Python**

**Investigating cleanup failure causes**

**Analyzing test cleanup race conditions**

**Planning final threat assessment**

bash

set -euo pipefail
ROOT=.omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10
# Fully isolated, offline, no-bytecode, read-only verifier invocation.
env -i PATH=/usr/bin:/bin HOME=/nonexistent PYTHONDONTWRITEBYTECODE=1 "$ROOT/verification-tools/independent_verify_candidate.py" "$ROOT" > /tmp/task26-independent-verify.stdout 2> /tmp/task26-independent-verify.stderr || rc=$?
printf 'exit=%s\n' "${rc:-0}"
printf '%s\n' 'stdout:'; head -c 20000 /tmp/task26-independent-verify.stdout; printf '\nstderr:'; head -c 20000 /tmp/task26-independent-verify.stderr
# Confirm verification did not change evidence files.
printf '\npost-verify evidence modified in last minute:\n'; find "$ROOT" -newermt '1 minute ago' -printf '%TY-%Tm-%TdT%TT %p\n' | sort

ROOT=.omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10
for f in "$ROOT/verification-tools/verify_source_golden_path.py" "$ROOT/gateway/platforms/task26_final_state.py" "$ROOT/verification-tools/source_golden_path.py"; do echo "--- $f symbols ---"; rg -n '^(def|class) |closed|choice|ambigu|provider|role|authority|revok|deliver|projection|cleanup|privacy|dnotify|inotify|unknown|retry|symlink|wheelhouse|pip|direct.?url|shadow|origin|cwd|PYTHONPATH' "$f"; done

ROOT=.omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10
printf '%s\n' '--- candidate receipt chain ---'
jq -c '{sequence,clause,invocation_id,candidate_digest,previous_sha256,artifact,artifact_sha256,receipt_sha256}' "$ROOT/installed-golden-bundle/task26-evidence/receipts.jsonl"
printf '%s\n' '--- scenario payload normalized views ---'
for f in "$ROOT/installed-golden-bundle/task26-evidence"/[0-9]*.json; do echo "==$(basename "$f")=="; jq -c '.payload' "$f"; done
printf '%s\n' '--- observer receipts ---'
cat "$ROOT/installed-golden-bundle/observer-receipts.jsonl"
printf '%s\n' '--- runtime and installation contamination constraints ---'
jq -c '{origin_probe, runtime: {interpreter: .runtime.interpreter, distributions: (.runtime.distributions|with_entries(.value |= {distribution_name,distribution_version,wheel_filename,wheel_sha256,record_sha256,wheel_record_sha256}))}}' "$ROOT/receipts/installed-runtime-probe.json"

W=.omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10/artifacts
python3 - "$W/hermes_agent-0.17.0-py3-none-any.whl" "$W/physique_checkin_cli-0.1.0-py3-none-any.whl" <<'PY'
import sys, zipfile
wheels = dict(zip(('hermes','profile'), sys.argv[1:]))
need = {
 'hermes': ['gateway/platforms/telegram_nutrition_onboarding_runtime.py','gateway/platforms/telegram_nutrition_onboarding_runtime_authority.py','gateway/platforms/telegram_nutrition_onboarding_runtime_callback.py','gateway/platforms/telegram_nutrition_onboarding_publication_outbox.py','gateway/commit_observer.py'],
 'profile': ['checkin_cli/nutrition_onboarding.py','checkin_cli/nutrition_onboarding_authority.py','checkin_cli/nutrition_onboarding_clarification_policy.py','checkin_cli/nutrition_onboarding_projection.py','checkin_cli/customer_cleanup.py','checkin_cli/customer_cleanup_fs.py'],
}
for role, wheel in wheels.items():
  with zipfile.ZipFile(wheel) as z:
    print(f'--- {role} critical symbol lines ---')
    for name in need[role]:
      try: raw = z.read(name).decode()
      except KeyError: continue
      print(f'## {name}')
      for n,line in enumerate(raw.splitlines(),1):
        if any(token in line.lower() for token in ('def ', 'class ', 'choice', 'ambigu', 'author', 'provider', 'role', 'revok', 'deliver', 'projection', 'cleanup', 'privacy', 'unknown', 'retry', 'dnotify', 'inotify', 'symlink', 'nofollow', 'lock')):
          print(f'{n}: {line}')
PY

ROOT=.omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10
printf '%s\n' '--- retained sensitive artefacts pattern scan (names only) ---'
find "$ROOT/installed-golden-bundle" -type f -printf '%p\n' | grep -E -i '(token|secret|credential|password|\.env|key|raw.*call|transport)' | sort
printf '%s\n' '--- secret-like content matches (redacted locations/counts) ---'
rg -l -i --glob '!*.whl' '(api[_-]?key|authorization|bearer |token["'"']?\s*[:=]|secret["'"']?\s*[:=]|password["'"']?\s*[:=])' "$ROOT/installed-golden-bundle" | sort
printf '%s\n' '--- cleanup/archive terminal state ---'
jq -c . "$ROOT/installed-golden-bundle/task26-evidence/07-cleanup_resume_terminal.json"
printf '%s\n' '--- cleanup warning provenance ---'
rg -n -C 3 'PytestWarning|rm_rf|Directory not empty|test_duplicate' "$ROOT/receipts/security-attacks-installed.log"


exit=126
stdout:

stderr:env: '.omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10/verification-tools/independent_verify_candidate.py': Permission denied

post-verify evidence modified in last minute:


--- .omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10/verification-tools/verify_source_golden_path.py symbols ---
34:    "deterministic_ambiguity_revision",
36:    "approved_card_projection_gate",
37:    "unknown_delivery_no_retry",
39:    "cleanup_resume_terminal",
92:        "unknown_count",
101:def canonical(value: object, *, ascii_only: bool = False) -> bytes:
105:def sha(path: Path) -> str:
109:def obj(value: object, label: str) -> dict[str, Any]:
115:def read_json(path: Path, label: str) -> dict[str, Any]:
119:def serialize_terminal_inventory(terminal: object) -> dict[str, object]:
135:            "unknown_count",
178:def lines(path: Path, label: str) -> list[dict[str, Any]]:
182:def private(
198:def verify_bootstrap_active_lineage(path: Path, customer: str) -> str:
211:        raise ValueError("bootstrap ledger authority is invalid")
225:def verify_provenance(
234:    if source != DEFAULT_SOURCE or (not offline_recorded_source and (source.is_symlink() or not source.is_dir())):
247:            if target.is_symlink() or not target.is_file() or target.stat().st_nlink != 1:
255:        if path.is_file() and not path.is_symlink() and not any(part in {".venv", "__pycache__"} for part in path.parts)
262:def verify_installed_provenance(
293:                Path(str(config.get("profile_package_authority", "")))
305:    installed_contract = Path(str(config.get("profile_package_authority", ""))) / "gateway/platforms/task26_evidence_contract.py"
335:        if key != "origin_proof"
341:            raise ValueError("installed runtime receipt differs from original installed bytes")
364:        origin = None if spec is None else spec.origin
365:        if not isinstance(origin, str):
366:            raise ValueError(f"installed loaded-module origin is unavailable: {name}")
367:        actual_modules[name] = Path(origin)
382:            raise ValueError("rehydrated import origins differ from sealed module bytes")
383:    authority = config.get("profile_package_authority")
385:        if not isinstance(authority, str) or Path(authority).resolve(strict=True) != Path(str(runtime["site_packages"])):
386:            raise ValueError("installed profile package authority is invalid")
387:        active_authority = Path(authority)
389:        active_authority = Path(str(active_runtime["site_packages"]))
390:    return expected_candidate, active_authority
393:def verify_observer(root: Path, candidate: str) -> dict[str, Any]:
424:        "backend": "dnotify_signalfd_v1",
427:        "inotify_watch_count": 0,
444:def verify_cleanup(root: Path, customer: str) -> tuple[dict[str, Path], dict[str, Any]]:
445:    journal = root / f"data/customer-cleanup/{customer}.journal.jsonl"
447:    rows = lines(journal, "cleanup journal")
450:        raise ValueError("cleanup journal is not terminal and forward-only")
455:            raise ValueError("cleanup journal chain is invalid")
457:    archive = root / "data/customer-cleanup/archives" / str(operation)
462:        raise ValueError("cleanup manifest digest mismatch")
463:    manifest = read_json(manifest_path, "cleanup manifest")
464:    if manifest.get("schema_version") != "customer-cleanup-archive-v2" or manifest.get("customer_key") != customer or manifest.get("operation_id") != operation:
465:        raise ValueError("cleanup manifest authority is invalid")
468:        raise ValueError("cleanup inventory is empty")
471:        row = obj(raw, "cleanup inventory row")
474:            raise ValueError("cleanup inventory path is invalid")
478:            raise ValueError("cleanup archive bytes mismatch")
480:    shared = manifest.get("shared_ledger_projections")
482:        raise ValueError("cleanup shared-ledger projection cardinality is invalid")
483:    binding = obj(shared[0], "shared-ledger projection binding")
485:    projection_relative = f"projections/{source_relative}"
487:    projection = archive / projection_relative
489:    private(projection, frozen=True)
492:        or binding.get("projection_archive_path") != projection_relative
497:        or binding.get("projection_sha256") != sha(projection)
499:        raise ValueError("cleanup shared-ledger source preservation binding is invalid")
501:    projected = read_json(projection, "draft-generation projection")
510:    expected_projection = {
511:        "schema_version": "customer-cleanup-draft-generations-projection-v1",
521:        projected != expected_projection
522:        or projection.read_bytes() != canonical(expected_projection, ascii_only=True) + b"\n"
526:        raise ValueError("cleanup archive projection is not the exact target-only source projection")
527:    artifacts[projection_relative] = projection
532:        "projection_sha256": sha(projection),
533:        "projection_record_count": len(record_digests),
538:def required(artifacts: dict[str, Path], suffix: str) -> Path:
541:        raise ValueError(f"required native artifact is unavailable or ambiguous: {suffix}")
545:def verify_canonical_journey_events(path: Path, customer: str) -> tuple[str, str]:
610:def verify_generation_lineage(
616:    document = obj(generations, "generation projection histories")
643:def verify_customer_quiescence(path: Path, customer: str) -> dict[str, object]:
656:        raise ValueError("service state ledger authority is invalid")
687:def verify_task26_contract(
692:    cleanup: Mapping[str, object] | None = None,
795:    ambiguity = artifacts["deterministic_ambiguity_revision"]
796:    ambiguous_answers = obj(ambiguity.get("ambiguous_answers"), "ambiguous answers")
797:    revised_answers = obj(ambiguity.get("revised_answers"), "revised answers")
799:        reference_date = date.fromisoformat(str(ambiguity.get("reference_date")))
801:        raise ValueError("Task26 ambiguity reference date is invalid") from exc
802:    first = compile_clarification_policy(ambiguous_answers, reference_date=reference_date)
803:    second = compile_clarification_policy(ambiguous_answers, reference_date=reference_date)
806:        answers=ambiguous_answers,
811:    binding = obj(ambiguity.get("revision_binding"), "revision binding")
812:    native_branch = obj(ambiguity.get("native_branch"), "native ambiguity branch")
819:        raise ValueError("Task26 native ambiguity workflow path is invalid")
822:    workflow = read_json(workflow_path, "native ambiguity workflow")
825:        if ambiguous_answers.get(field) != revised_answers.get(field)
828:        ambiguity.get("first_result") != first.model_dump(mode="json")
829:        or ambiguity.get("second_result") != second.model_dump(mode="json")
842:        or ambiguity.get("revised_result") != revised.model_dump(mode="json")
853:        raise ValueError("Task26 deterministic ambiguity or revision binding is invalid")
865:    projection = artifacts["approved_card_projection_gate"]
867:        projection.get("projection_fault_seen") is not True
868:        or projection.get("projection_error") != "source-golden-approved-card-projection-fault"
869:        or projection.get("delivery_rows_after_failure") != {}
870:        or not str(projection.get("capability_error", "")).startswith(
871:            "DraftGenerationTransitionError: delivery capability target is unavailable"
874:        raise ValueError("Task26 projection failure did not prevent capability issuance")
876:    unknown = artifacts["unknown_delivery_no_retry"]
877:    expected_unknown = {
879:        "status": "unknown_provider_outcome",
882:    unknown_ledger = obj(unknown.get("delivery_ledger"), "unknown delivery ledger")
883:    unknown_rows = list(unknown_ledger.values())
885:        unknown.get("first") != expected_unknown
886:        or unknown.get("second") != expected_unknown
887:        or unknown.get("transport_calls_before_send") != 0
888:        or len(unknown_rows) != 1
889:        or not isinstance(unknown_rows[0], dict)
890:        or unknown_rows[0].get("status") != "unknown_provider_outcome"
891:        or obj(unknown_rows[0].get("delivery_capability"), "unknown capability").get("status") != "consumed"
893:        raise ValueError("Task26 unknown delivery outcome was retryable")
896:    delivery_path = root / "data/owner-actions/draft-deliveries.json"
903:        or successful.get("delivery_status") != "sent_audited"
907:        or successful.get("delivery_ledger_sha256") != sha(delivery_path)
911:    terminal = artifacts["cleanup_resume_terminal"]
912:    journal = root / "data/customer-cleanup/client_001.journal.jsonl"
918:        or any(terminal.get(key) != 0 for key in ("active_count", "pending_count", "unknown_count", "orphan_count"))
920:        or (cleanup is not None and terminal.get("operation_id") != cleanup.get("operation_id"))
922:        raise ValueError("Task26 cleanup did not resume forward to one terminal receipt")
926:def verify_native(root: Path, artifacts: dict[str, Path], customer: str, candidate: str) -> dict[str, Any]:
932:        raise ValueError("terminal registry authority is not withdrawn")
944:    if ready.get("state") != "ready" or ready.get("customer_key") != customer or receipt.get("delivery_enabled") is not False or receipt.get("activation_enabled") is not False:
978:    generations = read_json(required(artifacts, "projections/data/owner-actions/draft-generations.json"), "generation projection")
979:    if generations.get("schema_version") != "customer-cleanup-draft-generations-projection-v1" or generations.get("customer_key") != customer:
980:        raise ValueError("generation projection schema is invalid")
985:    deliveries_path = root / "data/owner-actions/draft-deliveries.json"
986:    private(deliveries_path)
987:    deliveries = read_json(deliveries_path, "delivery ledger")
988:    if len(deliveries) != 1:
989:        raise ValueError("delivery cardinality is invalid")
990:    delivery = next(iter(deliveries.values()))
991:    capability = obj(delivery.get("delivery_capability"), "delivery capability")
992:    bindings = obj(capability.get("bindings"), "delivery capability bindings")
993:    if delivery.get("draft_id") != draft_id or delivery.get("customer_key") != customer or delivery.get("status") != "sent_audited" or capability.get("status") != "consumed" or bindings.get("candidate_digest") != candidate:
994:        raise ValueError("delivery capability lineage is invalid")
997:    if len(raw_calls) != 1 or raw_calls[0].get("provider_message_id") != delivery.get("message_id") or raw_calls[0].get("text_sha256") != hashlib.sha256(str(delivery.get("text", "")).encode()).hexdigest():
1006:        or surface.get("provider_message_id") != delivery.get("message_id")
1008:        or surface.get("approved_generation") != delivery.get("generation")
1010:        != delivery.get("generation_record_digest")
1028:def frozen_terminal_inventory(
1029:    root: Path, customer: str, cleanup: Mapping[str, object]
1033:    categories["owner_action"] = 1 if cleanup.get("projection_record_count") else 0
1042:        values = lines(path, "activation authority") if path.suffix == ".jsonl" else [read_json(path, "activation authority")]
1055:        "unknown_count": 0,
1063:def verify(
1077:        candidate, authority_root = verify_installed_provenance(
1081:        candidate, authority_root = source_candidate, source
1091:    artifacts, cleanup = verify_cleanup(root, customer)
1093:        terminal_inventory = frozen_terminal_inventory(root, customer, cleanup)
1095:        from checkin_cli.customer_cleanup import post_cleanup_authority_inventory
1097:        terminal = post_cleanup_authority_inventory(root, customer)
1104:                terminal.unknown_count,
1108:            raise ValueError("post-cleanup authority inventory is not terminal")
1109:    cleanup["terminal_inventory"] = terminal_inventory
1112:        root, candidate=candidate, native=native, cleanup=cleanup
1114:    from gateway.platforms.task26_candidate_authority import verify_candidate_authority
1116:    candidate_authority = verify_candidate_authority(root, candidate)
1120:        "manifest": cleanup["manifest_sha256"],
1123:        "authority_registry_head": candidate_authority["registry_head_sha256"],
1124:        "authority_ledger_head": candidate_authority["ledger_head_sha256"],
1127:    return {"status": status, "runtime_mode": runtime_mode, "candidate_digest": candidate, "chain_head": chain_head, "source": str(source), "package_authority": str(authority_root), "observer_receipt_count": observer["receipt_count"], "observer_backend": observer["backend"], "observer_directory_resource_count": observer["directory_resource_count"], "observer_inotify_watch_count": observer["inotify_watch_count"], "task26_contract": task26_contract, "candidate_authority": candidate_authority, **cleanup, **native}
1130:def verify_envelope(*_args: object, **_kwargs: object) -> tuple[dict[str, object], dict[str, str]]:
1134:def verify_phase_payload(phase: str, payload: dict[str, object]) -> None:
1142:    if phase == "CLEANUP_COMPLETE" and any(obj(payload.get("inventory"), "cleanup inventory").get(key) != 0 for key in ("pending", "unknown", "orphan", "residual_authorities")):
1143:        raise ValueError("cleanup inventory is not empty")
1146:def main() -> int:
--- .omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10/gateway/platforms/task26_final_state.py symbols ---
28:        "selected_python_pip_toolchain",
35:        "revocation_and_current_authority_selection",
36:        "fail_closed_workflow",
40:        "kernel, selected Python/pip toolchain, and sealed wheel bytes remain "
63:    "schema": "task26-sealed-wheelhouse-inventory-v1",
77:def canonical(value: object) -> bytes:
87:def sha256_file(path: Path) -> str:
95:def _private(path: Path, *, directory: bool = False) -> None:
109:def _object(value: object, label: str) -> dict[str, Any]:
115:def _normal_project(value: str) -> str:
119:def _wheel_identity(path: Path) -> dict[str, object]:
158:def _wheelhouse_files(
172:                raise ValueError("wheelhouse symlink is forbidden")
186:                raise ValueError("wheelhouse contains an unbound non-wheel entry")
193:def _validate_dependency_closure(
229:def build_wheelhouse_inventory(
230:    wheelhouse: Path | None,
236:    if wheelhouse is None:
240:        paths, directories = _wheelhouse_files(wheelhouse)
244:                "relative_path": path.relative_to(wheelhouse).as_posix(),
249:    if wheelhouse is None:
253:        root_mode = stat.S_IMODE(wheelhouse.stat().st_mode)
261:        "schema": "task26-sealed-wheelhouse-inventory-v1",
267:def verify_wheelhouse_inventory(
268:    wheelhouse: Path | None,
273:    document = _object(expected, "sealed wheelhouse inventory")
282:    ) != "task26-sealed-wheelhouse-inventory-v1":
283:        raise ValueError("sealed wheelhouse inventory schema is invalid")
297:        raise ValueError("sealed wheelhouse inventory digest is invalid")
298:    actual = build_wheelhouse_inventory(
299:        wheelhouse, required_wheels=required_wheels
302:        raise ValueError("wheelhouse inventory differs from sealed expectation")
306:def _bound_wheel_paths(
307:    wheelhouse: Path | None, inventory: Mapping[str, object]
311:        raise ValueError("sealed wheelhouse entries are invalid")
312:    if wheelhouse is None:
314:            raise ValueError("sealed wheelhouse is unavailable")
318:        row = _object(raw, "sealed wheelhouse row")
325:            raise ValueError("sealed wheelhouse path is invalid")
326:        paths.append(wheelhouse / relative)
330:def _validate_portable_origin_contract(runtime_portable: object) -> None:
332:    proof = _object(runtime.get("origin_proof"), "portable origin proof")
333:    execution = _object(proof.get("execution"), "portable origin execution")
337:        or proof.get("schema") != "task26-installed-origin-proof-v1"
340:            "cwd_authority": "private_empty_controlled",
347:        raise ValueError("portable installed origin proof is invalid")
350:        row = _object(raw, "portable origin module")
370:            raise ValueError("portable installed origin module proof is invalid")
373:def verify_expected_state(
395:        "wheelhouse",
400:        "authority",
407:    _validate_portable_origin_contract(expected.get("runtime_portable"))
419:    wheelhouse = _object(expected.get("wheelhouse"), "sealed wheelhouse inventory")
420:    if set(wheelhouse) != {
427:        raise ValueError("sealed wheelhouse inventory schema is invalid")
441:    authority = _object(expected.get("authority"), "sealed authority")
443:        target = bundle / "candidate-authority" / name
445:        if authority.get(name.removesuffix(".json") + "_sha256") != sha256_file(
448:            raise ValueError("sealed authority digest differs")
452:def _portable_verifier_result(result: Mapping[str, object]) -> dict[str, object]:
456:        if key not in {"package_authority", "rehydration_origin_proof"}
460:def build_expected_state(
470:    wheelhouse: Path | None = None,
473:    authority_result = _object(
474:        verifier_result.get("candidate_authority"), "candidate authority result"
476:    _validate_portable_origin_contract(runtime_portable)
477:    wheelhouse_inventory = (
479:        if wheelhouse is None
480:        else build_wheelhouse_inventory(
481:            wheelhouse, required_wheels=(profile_wheel, hermes_wheel)
496:        "wheelhouse": wheelhouse_inventory,
509:        "authority": {
511:                bundle / "candidate-authority/registry.json"
514:                bundle / "candidate-authority/qualification-ledger.json"
516:            "registry_head_sha256": authority_result.get("registry_head_sha256"),
517:            "ledger_head_sha256": authority_result.get("ledger_head_sha256"),
525:def verify_runtime_origin_proof(
530:    controlled_cwd: Path | None = None,
532:    """Bind imported package origins to exact installed inventory rows."""
533:    evidence = _object(probe, "rehydrated origin probe")
534:    modules = _object(evidence.get("modules"), "rehydrated module origins")
536:        evidence.get("schema") != "task26-rehydrated-origin-probe-v1"
540:        or not isinstance(evidence.get("cwd"), str)
542:            controlled_cwd is not None
543:            and Path(str(evidence["cwd"])).resolve(strict=True)
544:            != controlled_cwd.resolve(strict=True)
550:    for module, role in (("gateway", "hermes"), ("checkin_cli", "profile")):
553:            raise ValueError("rehydrated module origin is invalid")
560:                "module origin is outside rehydrated site-packages"
564:            resolved.is_symlink()
568:            raise ValueError("rehydrated module origin is not a regular file")
569:        distribution = _object(distributions.get(role), f"{role} distribution")
584:            raise ValueError("module origin differs from installed RECORD inventory")
587:                "distribution": role,
595:        "schema": "task26-installed-origin-proof-v1",
597:            "cwd_authority": "private_empty_controlled",
605:def _portable_runtime(runtime: Mapping[str, object]) -> dict[str, object]:
608:    for role in ("profile", "hermes"):
609:        distribution = _object(distributions.get(role), f"{role} distribution")
614:            raise ValueError(f"{role} installed inventory is invalid")
636:        portable_distributions[role] = portable_distribution
645:        "origin_proof": runtime.get("origin_proof"),
649:def _clean_environment() -> dict[str, str]:
666:def _run_python(
669:    controlled_cwd: Path,
672:    _private(controlled_cwd, directory=True)
673:    if any(controlled_cwd.iterdir()):
674:        raise ValueError("controlled Python cwd is not empty")
678:        cwd=controlled_cwd,
683:    if any(controlled_cwd.iterdir()):
684:        raise ValueError("Python subprocess wrote to controlled cwd")
688:def _verify_bound_wheel_hashes(
700:def rehydrate_and_verify(
706:    wheelhouse: Path | None = None,
716:    inventory = verify_wheelhouse_inventory(
717:        wheelhouse,
718:        expected.get("wheelhouse"),
723:    controlled_cwd = temporary / "controlled-cwd"
724:    controlled_cwd.mkdir(mode=0o700)
730:            controlled_cwd=controlled_cwd,
736:        inventory = verify_wheelhouse_inventory(
737:            wheelhouse,
742:        dependency_paths = _bound_wheel_paths(wheelhouse, inventory)
747:            "pip",
757:            install, controlled_cwd=controlled_cwd, environment=environment
766:            controlled_cwd=controlled_cwd,
786:            "o={'schema':'task26-rehydrated-origin-probe-v1',"
787:            "'isolated':sys.flags.isolated,'pythonpath_present':'PYTHONPATH' in os.environ,"
788:            "'cwd':os.getcwd(),'modules':{'gateway':gateway.__file__,"
790:            "print(json.dumps({'runtime':r,'origin_probe':o},sort_keys=True,separators=(',',':')))"
804:            controlled_cwd=controlled_cwd,
813:        origin_proof = verify_runtime_origin_proof(
816:            probe_document.get("origin_probe"),
817:            controlled_cwd=controlled_cwd,
819:        runtime_document["origin_proof"] = origin_proof
836:            controlled_cwd=controlled_cwd,
840:        authority = _object(
841:            result.get("candidate_authority"), "rehydrated authority"
843:        expected_authority = _object(
844:            expected.get("authority"), "expected authority"
849:            or authority.get("registry_head_sha256")
850:            != expected_authority.get("registry_head_sha256")
851:            or authority.get("ledger_head_sha256")
852:            != expected_authority.get("ledger_head_sha256")
861:        result["rehydration_origin_proof"] = origin_proof
866:            verify_wheelhouse_inventory(
867:                wheelhouse,
876:                        if path.is_symlink():
884:def main() -> int:
890:    parser.add_argument("--wheelhouse", type=Path)
899:            wheelhouse=args.wheelhouse,
--- .omo/evidence/task26/task26-isolated-bound-wheelhouse-installed-st_01a01574-v10/verification-tools/source_golden_path.py symbols ---
72:def canonical(value: object) -> bytes:
76:def digest(value: object) -> str:
80:def private_write(path: Path, value: object) -> None:
92:def copy_verification_tools(profile: Path) -> None:
106:def source_provenance(source: Path) -> dict[str, object]:
109:        if path.is_symlink() or not path.is_file() or any(part in {".venv", "__pycache__"} for part in path.parts):
121:class FakeTelegram:
146:class Query:
158:class Message:
173:class UnavailableMaliciousProvider:
177:            raise AssertionError("provider called without consent")
178:        raise ReconciliationUnavailable("malicious provider returned untrusted lifecycle text")
181:class GenerationPins(TypedDict):
188:def pins(value: object) -> GenerationPins:
203:def membership_evidence(profile: Path, session: object, candidate_digest: str) -> tuple[Path, Path]:
230:        "staff_chat_inventory": [{"chat_id": str(OWNER_ID), "kind": "private_staff_dm", "staff_user_id": str(OWNER_ID), "roles": ["owner"], "sources": ["registry.owner"]}],
231:        "staff_chat_inventory_sha256": digest([{"chat_id": str(OWNER_ID), "kind": "private_staff_dm", "staff_user_id": str(OWNER_ID), "roles": ["owner"], "sources": ["registry.owner"]}]),
246:def checklist(profile: Path) -> Path:
248:    private_write(path, {"checklist": {"token_rotated": True, "missend_test_passed": True, "provider_terms_checked": {"checked": True, "version": "privacy-v1"}, "withdrawal_deletion_doc": True, "retention_backup_doc": True, "manual_fallback_doc": True}})
257:    from gateway.platforms.task26_candidate_authority import append_candidate_authority
263:        authority_root = source
272:        authority_root = Path(package_roots[0]).parent
273:        os.environ["DUALCOACH_PROFILE_PACKAGE"] = str(authority_root)
289:                "profile_package_authority": str(authority_root),
305:    from checkin_cli.customer_cleanup import (
307:        archive_customer_cleanup,
308:        post_cleanup_authority_inventory,
309:        resume_customer_cleanup,
345:        origin_receipts = loaded_module_receipts(imported, allowed_roots=allowed_roots)
352:                "loaded_modules": origin_receipts,
380:        registration = TelegramCustomerBootstrapRegistration(profile, store, package_root=authority_root).handoff_rehearsal_customer(claimed)
432:                authority=runtime._current_authority(awaiting)
436:    unambiguous_answers = dict(parsed_answers)
437:    ambiguous_answers = dict(unambiguous_answers)
438:    ambiguous_answers["schedule_constraints"] = "평일 점심 또는 저녁 중 하나만 가능합니다"
439:    ambiguity_first = compile_clarification_policy(
440:        ambiguous_answers, reference_date=date.today()
442:    ambiguity_second = compile_clarification_policy(
443:        ambiguous_answers, reference_date=date.today()
445:    revised_answers = dict(ambiguous_answers)
446:    revised_answers["schedule_constraints"] = unambiguous_answers["schedule_constraints"]
450:    branch_root = profile / "task26-native-branches/ambiguity"
456:        enforce_current_authority=False,
459:    branch_authority = OnboardingAuthority(
467:        consent_notice_version="privacy-v1",
482:        authority=branch_authority,
488:            value=ambiguous_answers[field],
489:            authority=branch_authority,
493:        answers_digest=onboarding_digest(ambiguous_answers),
496:        authority=branch_authority,
503:            value=unambiguous_answers[QUESTION_FIELDS[0]],
504:            expected_issue_id=ambiguity_first.issues[0].issue_id,
505:            expected_answers_digest=ambiguity_first.answers_digest,
507:            authority=branch_authority,
514:        value=unambiguous_answers["schedule_constraints"],
515:        expected_issue_id=ambiguity_first.issues[0].issue_id,
516:        expected_answers_digest=ambiguity_first.answers_digest,
518:        authority=branch_authority,
522:        authority=branch_authority
526:        "deterministic_ambiguity_revision",
529:            "ambiguous_answers": ambiguous_answers,
530:            "first_result": ambiguity_first.model_dump(mode="json"),
531:            "second_result": ambiguity_second.model_dump(mode="json"),
533:                "issue_id": ambiguity_first.issues[0].issue_id,
534:                "field": ambiguity_first.issues[0].field,
535:                "field_index": QUESTION_FIELDS.index(ambiguity_first.issues[0].field),
536:                "answers_digest": ambiguity_first.answers_digest,
537:                "reconciliation_digest": ambiguity_first.result_digest,
549:                    authority=branch_authority
567:        authority=runtime._current_authority(awaiting)
586:    seed_restriction_kb(profile_root=profile, source=authority_root / "checkin_cli/policies/nutrition-restriction-kb-template-v1.json", owner_digest=candidate_digest, commit=True, as_of=date.today())
594:    cutover = activate_customer_cutover(profile, profile / f"data/customers/{CUSTOMER}", CUSTOMER, checklist(profile), evidence, bootstrap_session_id=awaiting.session_id, expected_generation=store.get(awaiting.session_id).generation, deployment_receipt_path=deployment, package_root=authority_root, kst_date=date.today())
599:    coordinator = NutritionCoachingCoordinator(profile, registry_doc, registry_path=registry, kst_date_provider=date.today, generation_now_provider=lambda: datetime.now(ZoneInfo("Asia/Seoul")))
635:    created = await DraftGenerationWorker(coordinator, owner, worker_id="source-golden-worker", provider_ready=lambda: True, generate=generate, update_card=update_card).run_once(draft_id)
646:    original_write = coordinator._write_json_private
647:    projection_fault_seen = False
649:    def fail_approved_card_projection(path: Path, payload: object) -> None:
650:        nonlocal projection_fault_seen
651:        if path == coordinator._delivery_ledger_path():
652:            projection_fault_seen = True
653:            raise OSError("source-golden-approved-card-projection-fault")
654:        original_write(path, payload)
656:    setattr(coordinator, "_write_json_private", fail_approved_card_projection)
657:    projection_error = ""
659:        coordinator.persist_approved_delivery_card(
664:        projection_error = str(exc)
666:        setattr(coordinator, "_write_json_private", original_write)
670:        coordinator.issue_delivery_capability(
672:            capability_id="projection-fault-capability",
678:        "approved_card_projection_gate",
680:            "projection_fault_seen": projection_fault_seen,
681:            "projection_error": projection_error,
682:            "delivery_rows_after_failure": coordinator._read_deliveries(),
686:    coordinator.persist_approved_delivery_card(draft_id, owner, card_route=owner, message_id="700", nonce=nonce, payload_digest=payload_digest, **pins(approved))
687:    coordinator.issue_delivery_capability(draft_id, owner, launch_authorization=auth, capability_id="source-golden-capability", issued_at=datetime.now(timezone.utc), **pins(approved))
688:    prepared_delivery = coordinator.prepare_delivery(draft_id, owner, **pins(approved))
689:    if not prepared_delivery.accepted or not prepared_delivery.transport_required:
690:        raise RuntimeError(f"prepare_delivery failed: {prepared_delivery.error}")
693:        raise RuntimeError("active customer disappeared before delivery")
695:    claim = coordinator.claim_delivery_transport(draft_id, owner, destination, approved.text, card_route=owner, card_message_id="700", card_nonce=nonce, card_payload_digest=payload_digest, now=datetime.now(timezone.utc), kst_date=date.today())
697:        raise RuntimeError("claim_delivery_transport rejected exact capability")
698:    unknown_first = coordinator.prepare_delivery(
701:    unknown_second = coordinator.prepare_delivery(
705:        "unknown_delivery_no_retry",
708:                "accepted": unknown_first.accepted,
709:                "status": unknown_first.status,
710:                "transport_required": unknown_first.transport_required,
713:                "accepted": unknown_second.accepted,
714:                "status": unknown_second.status,
715:                "transport_required": unknown_second.transport_required,
717:            "delivery_ledger": coordinator._read_deliveries(),
721:    call = {"kind": "customer_send", "chat_id": str(destination.chat_id), "topic_id": str(destination.topic_id), "text_sha256": hashlib.sha256(str(approved.text).encode()).hexdigest(), "provider_message_id": "9001"}
724:    delivered = coordinator.mark_delivered(draft_id, owner, "9001", **pins(coordinator.draft_generation(draft_id)))
725:    audited = coordinator.mark_sent_audited(draft_id, owner, **pins(delivered))
733:    duplicate = coordinator.claim_delivery_transport(
746:        raise RuntimeError("consumed delivery capability accepted a duplicate claim")
756:            "delivery_status": audited.status,
760:            "delivery_ledger_sha256": hashlib.sha256(
761:                coordinator._delivery_ledger_path().read_bytes()
778:            raise RuntimeError("source-golden-cleanup-fault")
780:        archive_customer_cleanup(
783:            shared_ledger_projections=(SharedLedgerProjection.DRAFT_GENERATIONS,),
787:        if str(exc) != "source-golden-cleanup-fault":
789:    receipt = resume_customer_cleanup(profile, CUSTOMER)
790:    inventory = post_cleanup_authority_inventory(profile, CUSTOMER)
792:        raise RuntimeError(f"cleanup terminal inventory unavailable: {asdict(inventory)}")
793:    cleanup_journal = profile / f"data/customer-cleanup/{CUSTOMER}.journal.jsonl"
795:        "cleanup_resume_terminal",
801:            "journal_sha256": hashlib.sha256(cleanup_journal.read_bytes()).hexdigest(),
805:            "unknown_count": inventory.unknown_count,
810:    authority = append_candidate_authority(
824:        "authority_registry_head": authority["registry_head_sha256"],
825:        "authority_ledger_head": authority["ledger_head_sha256"],
829:def secure_root(requested: Path | None) -> Path:
839:def main() -> int:
850:    if source.is_symlink() or not (source / "checkin_cli/customer_cleanup.py").is_file():