CHAT_OUTPUT_BEGIN
COMMAND_ID=SIGNALBOT-260921-ORDER-NORMALIZATION-DURABLE-PREFLIGHT-052FIXPREP2
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=signalbot-order-normalization-durable-preflight
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=740c67a5b9c05f3461a233f923b383796190f8829a7480988383cc0e5a5c49eb
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=7126decea2df7f2ccaddca0e16e6968b918d52647144fcc0e5657fae62173de6
SANITIZED_OUTPUT_SHA256=7126decea2df7f2ccaddca0e16e6968b918d52647144fcc0e5657fae62173de6
OUTPUT_BEGIN
SIGNALBOT052FIXPREP2_RESULT={"guest":{"exitcode":0,"outer_rc":0,"stderr_present":false,"stdout":"PWD=/opt/stacks/8020-demonov-shadow\n---FILES---\n-rw------- 1 root root  324 Sep 17 20:32 .env\n-rw-r--r-- 1 root root 3243 Sep  6 21:33 compose.yaml\n---HASHES---\n6e0d68a9e92a8a5269e5206db653adde49db4cc5c05c3c39ae6e2f6e74f27556  .env\n6461532b0a04decc60fe1d1885990020e886d40de40c0523e34e2849600af061  compose.yaml\n---ENV---\nAPP_IMAGE=8020-demonov-shadow:signalbot-050r6-749073ae0f89\nCODE_IDENTITY=749073ae0f894debc06fb0ffbf7a84abf9da531f\nEXPERIMENT_ID=4a78c74b381b0424ccd22fa5466526cb324dfbb6855ffb3de8f0c3ac29dac397\nRUNTIME_MANIFEST_ID=927480bca5dccc11c8e605151db035b4d678f3adb63a0c4ec27544dca0e45d14\nCOLLECTION_START_AT=2026-09-18T00:00:00+00:00\n---SERVICES---\nrelay\nshadow\nworker\ncollector\n---CONTAINERS---\n/demonov-shadow-8020-collector-1|8a65d323beda0410f180baf1e11144aaf53bf00f3329d758623bb711c1959f1f|sha256:bc7fe43a1627532cf2ffbea2489352bb97c9a9e445e097cd5837b80a9e90cc60|8020-demonov-shadow:signalbot-050r6-749073ae0f89|0|true|false|false\n/demonov-shadow-8020-worker-1|8677c7c7388e1f023ddc214a703de207085d21ceebca7565f673dd80b93c414d|sha256:bc7fe43a1627532cf2ffbea2489352bb97c9a9e445e097cd5837b80a9e90cc60|8020-demonov-shadow:signalbot-050r6-749073ae0f89|0|true|false|false\n/demonov-shadow-8020-relay-1|8c7689a8e46e72f94747f002af43d3a3b68c75af81f92d9287f0828c60738e6a|sha256:bc7fe43a1627532cf2ffbea2489352bb97c9a9e445e097cd5837b80a9e90cc60|8020-demonov-shadow:signalbot-050r6-749073ae0f89|0|true|false|false\n/demonov-shadow-8020-shadow-1|80ab5a8cad2b0eb99c4d0b86d66de1a673e4e40ff1fb7ac52b444d5a657bddb3|sha256:bc7fe43a1627532cf2ffbea2489352bb97c9a9e445e097cd5837b80a9e90cc60|8020-demonov-shadow:signalbot-050r6-749073ae0f89|0|true|false|false\n"},"repos":[{"branch":"cr-2026-0116-reliability-finality","clean":true,"deployer_hits":["7:import argparse","253:def verify_compose_no_source_bind(compose_text: str) -> None:","254:    for raw in compose_text.splitlines():","273:            \"docker compose stop collector worker relay shadow\"","319:        f\"cd {STACK} && C=$(docker compose ps -q {service}) && \"","320:        'test -n \"$C\" && docker inspect \"$C\"'","337:        f\"cd {STACK} && C=$(docker compose ps -q {service}) && \"","338:        'test -n \"$C\" && docker inspect -f \"{{.Image}}\" \"$C\"'","369:        f\"docker inspect -f '{{{{.State.Status}}}}' \"","375:        f\"docker inspect -f '{{{{range .Config.Env}}}}{{{{println .}}}}{{{{end}}}}' \"","446:        f\"cd {STACK} && docker compose exec -T shadow python -c \"","481:    compose_path = root / \"deploy/8020-shadow/compose.yaml\"","483:    compose_text = compose_path.read_text(encoding=\"utf-8\")","484:    verify_compose_no_source_bind(compose_text)","510:            f\"docker build --build-arg PYTHON_BASE='{base_lock}' \"","511:            \"-f deploy/8020-shadow/Dockerfile \"","513:            f\"docker image inspect '{image_tag}' -f '{{{{.Id}}}}'\"","523:            f\"APP_IMAGE='{image_tag}' \"","524:            f\"CODE_IDENTITY='{code_head}' \"","526:            f\"RUNTIME_MANIFEST_ID='{placeholder_runtime}' \"","528:            \"docker compose -f compose.yaml config -q\"","534:            \"docker run --rm --read-only --tmpfs /tmp \"","549:            \"docker run --rm --read-only --tmpfs /tmp \"","573:            f\"docker run --rm --read-only --tmpfs /tmp \"","592:            f\"docker run --rm --cap-drop ALL \"","612:        from demonov_forward_map.code_identity import (","613:            package_code_identity,","616:            RuntimeDeploymentManifestV1,","620:        package_identity = package_code_identity(","623:        compose_hash = _sha256_bytes(compose_path.read_bytes())","624:        manifest = RuntimeDeploymentManifestV1.build(","625:            code_identity=code_head,","629:            compose_hash=compose_hash,","634:            expected_code_identity=code_head,","644:            \"runtime_manifest_id\": manifest.runtime_manifest_id,","680:    compose_path = root / \"deploy/8020-shadow/compose.yaml\"","682:    compose_text = compose_path.read_text(encoding=\"utf-8\")","683:    verify_compose_no_source_bind(compose_text)","707:            f\"docker build --build-arg PYTHON_BASE='{base_lock}' \"","708:            \"-f deploy/8020-shadow/Dockerfile \"","710:            f\"docker image inspect '{image_tag}' -f '{{{{.Id}}}}'\"","715:        from demonov_forward_map.code_identity import (","716:            package_code_identity,","736:            RuntimeDeploymentManifestV1,","740:        package_identity = package_code_identity(","743:        compose_hash = _sha256_bytes(","744:            compose_path.read_bytes()","746:        runtime_manifest = RuntimeDeploymentManifestV1.build(","747:            code_identity=code_head,","751:            compose_hash=compose_hash,","756:            expected_code_identity=code_head,","768:            code_identity=code_head,","777:            runtime_manifest_id=runtime_manifest.runtime_manifest_id,","796:            f\"cp {BUILD_DIR}/deploy/8020-shadow/compose.yaml \"","797:            f\"{STACK}/compose.yaml\"","820:            f\"APP_IMAGE={image_tag}\\n\"","821:            f\"CODE_IDENTITY={code_head}\\n\"","823:            f\"RUNTIME_MANIFEST_ID={runtime_manifest.runtime_manifest_id}\\n\"","831:            \"docker compose config -q\"","836:            \"docker compose up -d collector worker relay shadow\"","907:            \"runtime_manifest_id\": runtime_manifest.runtime_manifest_id,","926:def main(argv: list[str] | None = None) -> int:","927:    parser = argparse.ArgumentParser()"],"files":{"ops/cr0116_deploy.py":{"bytes":31515,"sha256":"3ca98e06c9ca24ed0e2e96a8b882a2f9c66451f31b7429faff56c241ec700a20"}},"git_rc":0,"head":"ac7094a76ddc06f376d71a76432af7c2dd10ec7d","path":"/root/8020-demonov-shadow-bot-cr0116"},{"branch":"cr-2026-0105-demonov-shadow-orchestrator","clean":true,"git_rc":0,"head":"559948bcb6baead49a47d9953b0cc0090e332fd7","path":"/root/8020-demonov-shadow-bot"}]}
TASK_RESULT=PASS_SIGNALBOT_052FIXPREP2_EVIDENCE_CAPTURED
HOMELAB_RESULT_CONTRACT={"version":1,"command_id":"SIGNALBOT-260921-ORDER-NORMALIZATION-DURABLE-PREFLIGHT-052FIXPREP2","status":"OK","changes_made":false,"rollback_started":false,"rollback_restored":null}

OUTPUT_END
CHAT_OUTPUT_END
