From 7752d8d1ab86632b5b965e12c1a917682ac7a8ba Mon Sep 17 00:00:00 2001 From: homelab-runtime-publisher Date: Tue, 8 Sep 2026 06:54:56 +0000 Subject: [PATCH] runtime: publish NEWFI-260908-A-STAGINGEDGE-APPLY9 --- .../NEWFI-260908-A-STAGINGEDGE-APPLY9.json | 38 ++++++++++++++ .../NEWFI-260908-A-STAGINGEDGE-APPLY9.txt | 48 +++++++++++++++++ runtime/latest.json | 28 +++++----- runtime/latest.txt | 51 +++++++++---------- 4 files changed, 124 insertions(+), 41 deletions(-) create mode 100644 runtime/history/NEWFI-260908-A-STAGINGEDGE-APPLY9.json create mode 100644 runtime/history/NEWFI-260908-A-STAGINGEDGE-APPLY9.txt diff --git a/runtime/history/NEWFI-260908-A-STAGINGEDGE-APPLY9.json b/runtime/history/NEWFI-260908-A-STAGINGEDGE-APPLY9.json new file mode 100644 index 00000000..bcbe22f3 --- /dev/null +++ b/runtime/history/NEWFI-260908-A-STAGINGEDGE-APPLY9.json @@ -0,0 +1,38 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "NEWFI-260908-A-STAGINGEDGE-APPLY9", + "status": "BLOCKED", + "rc": 2, + "host": "pve01", + "mode": "change", + "component": "newfi-staging-strict-qga-native-certbot-route-dns", + "started_at_utc": "2026-09-08T06:54:31Z", + "finished_at_utc": "2026-09-08T06:54:55Z", + "reference_register_checked": true, + "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", + "error_register_checked": true, + "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", + "command_sha256": "8be936fe6c6c5e63b2b487e7d63d3a42899d033118d3c910eb740ac119233977", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "change_declared": true, + "result_contract_valid": true, + "result_contract_status": "BLOCKED", + "result_contract_error": null, + "command_rc": 2, + "changes_made": false, + "rollback_started": false, + "rollback_restored": null, + "mutation_outcome": "NO_MUTATION", + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "54edb4519ee4fb8309884ec5f30ce1fab974fc81ba8c28e2a63378c571997107", + "sanitized_output_sha256": "9144947611f5a49d4331df6811fd8dc8c1e7fd25e51485e4b61a8a5ea3df2dcf", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "APPLY9_BEGIN=true\nCOMMAND_ID=NEWFI-260908-A-STAGINGEDGE-APPLY9\nCOMPONENT=newfi-staging-strict-qga-native-certbot-route-dns\nMODE=change\nERROR_REGISTER_CHECK=OK\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nREFERENCE_CHECK=OK\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nFORENSIC1_HISTORY_SHA256=1013f222c1b2fc31ff9b5817231f2a575f53b3eab08385c5eb3d8bd752f3d29d\nPORTAL_PRODUCT_STATE_GATE=PASS\nSTAGING_PREFLIGHT={\"backend_ip\":\"[PRIVATE_IP]\",\"local_http\":\"503\"}\nAPPLY9_BLOCKED_REASON=PREEXISTING_CERT_ALREADY_COVERS_TARGET:['newfi-staging-gram1-ru']\nFINAL_DECISION=BLOCKED_NEWFI_STAGING_APPLY9_PREEXISTING_CERT_ALREADY_COVERS_TARGET:['newfi-staging-gram1-ru']\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260908-A-STAGINGEDGE-APPLY9\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"BLOCKED\",\"version\":1}\n" +} diff --git a/runtime/history/NEWFI-260908-A-STAGINGEDGE-APPLY9.txt b/runtime/history/NEWFI-260908-A-STAGINGEDGE-APPLY9.txt new file mode 100644 index 00000000..d3df054a --- /dev/null +++ b/runtime/history/NEWFI-260908-A-STAGINGEDGE-APPLY9.txt @@ -0,0 +1,48 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=NEWFI-260908-A-STAGINGEDGE-APPLY9 +STATUS=BLOCKED +RC=2 +HOST=pve01 +MODE=change +COMPONENT=newfi-staging-strict-qga-native-certbot-route-dns +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +COMMAND_SHA256=8be936fe6c6c5e63b2b487e7d63d3a42899d033118d3c910eb740ac119233977 +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGE_DECLARED=true +RESULT_CONTRACT_VALID=true +RESULT_CONTRACT_STATUS=BLOCKED +RESULT_CONTRACT_ERROR=NONE +COMMAND_RC=2 +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=54edb4519ee4fb8309884ec5f30ce1fab974fc81ba8c28e2a63378c571997107 +SANITIZED_OUTPUT_SHA256=9144947611f5a49d4331df6811fd8dc8c1e7fd25e51485e4b61a8a5ea3df2dcf +OUTPUT_BEGIN +APPLY9_BEGIN=true +COMMAND_ID=NEWFI-260908-A-STAGINGEDGE-APPLY9 +COMPONENT=newfi-staging-strict-qga-native-certbot-route-dns +MODE=change +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 +REFERENCE_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 +AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED +RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d +FORENSIC1_HISTORY_SHA256=1013f222c1b2fc31ff9b5817231f2a575f53b3eab08385c5eb3d8bd752f3d29d +PORTAL_PRODUCT_STATE_GATE=PASS +STAGING_PREFLIGHT={"backend_ip":"[PRIVATE_IP]","local_http":"503"} +APPLY9_BLOCKED_REASON=PREEXISTING_CERT_ALREADY_COVERS_TARGET:['newfi-staging-gram1-ru'] +FINAL_DECISION=BLOCKED_NEWFI_STAGING_APPLY9_PREEXISTING_CERT_ALREADY_COVERS_TARGET:['newfi-staging-gram1-ru'] +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260908-A-STAGINGEDGE-APPLY9","rollback_restored":null,"rollback_started":false,"status":"BLOCKED","version":1} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index f0e25636..bcbe22f3 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,27 +1,27 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "SIGNALBOT-260908-DEPLOY-PREP-API-041API", - "status": "OK", - "rc": 0, + "command_id": "NEWFI-260908-A-STAGINGEDGE-APPLY9", + "status": "BLOCKED", + "rc": 2, "host": "pve01", - "mode": "read-only", - "component": "signalbot-cr0116-deploy-api-contract", - "started_at_utc": "2026-09-08T06:35:33Z", - "finished_at_utc": "2026-09-08T06:35:35Z", + "mode": "change", + "component": "newfi-staging-strict-qga-native-certbot-route-dns", + "started_at_utc": "2026-09-08T06:54:31Z", + "finished_at_utc": "2026-09-08T06:54:55Z", "reference_register_checked": true, "reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66", "error_register_checked": true, "error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0", - "command_sha256": "ce5ef6223547685761dcfca508de8d9390949208763bf7938e8d43d0c7641bab", + "command_sha256": "8be936fe6c6c5e63b2b487e7d63d3a42899d033118d3c910eb740ac119233977", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, - "change_declared": false, + "change_declared": true, "result_contract_valid": true, - "result_contract_status": null, + "result_contract_status": "BLOCKED", "result_contract_error": null, - "command_rc": 0, + "command_rc": 2, "changes_made": false, "rollback_started": false, "rollback_restored": null, @@ -30,9 +30,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "f271ff2f659b1a49c637ca9d67e7b6bc0314cc0dd8570fb252504418765369ce", - "sanitized_output_sha256": "f271ff2f659b1a49c637ca9d67e7b6bc0314cc0dd8570fb252504418765369ce", + "raw_evidence_sha256": "54edb4519ee4fb8309884ec5f30ce1fab974fc81ba8c28e2a63378c571997107", + "sanitized_output_sha256": "9144947611f5a49d4331df6811fd8dc8c1e7fd25e51485e4b61a8a5ea3df2dcf", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "ERROR_REGISTER_CHECK=OK\nREFERENCE_CHECK=OK\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nSB041A_ACTIVE_ENV={\"exists\":true,\"sha256\":\"4bbc6bd31417f6265767c1fb971d118d36d27d7b57a90b49e6586461acf0609b\",\"values\":{\"APP_IMAGE\":\"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70\",\"CODE_IDENTITY\":\"e32760c69a4311728db9066ee8bf2bf66b1e5a70\",\"COLLECTION_START_AT\":\"2026-09-07T00:00:00+00:00\",\"EXPERIMENT_ID\":\"ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338\",\"RUNTIME_MANIFEST_ID\":\"58d3b59200bdc0eb8d448612679d667b194263586cb3198dfc08597935053a1a\"}}\nSB041A_DOCKERFILE={\"exists\":true,\"sha256\":\"901951def73961f76d2c2a93c5428a0fbdcc50113d42b39da92983a5ce157cb8\",\"text\":\"FROM 8020-demonov-shadow:ac7094a76ddc06f376d71a76432af7c2dd10ec7d\\nCOPY demonov_forward_map /app/demonov_forward_map\"}\nSB041A_DEPLOY_TOP=[{\"bytes\":336,\"kind\":\"file\",\"name\":\".env.new\",\"sha256\":\"4bbc6bd31417f6265767c1fb971d118d36d27d7b57a90b49e6586461acf0609b\"},{\"bytes\":116,\"kind\":\"file\",\"name\":\"Dockerfile\",\"sha256\":\"901951def73961f76d2c2a93c5428a0fbdcc50113d42b39da92983a5ce157cb8\"},{\"bytes\":886,\"kind\":\"file\",\"name\":\"build.log\",\"sha256\":\"601fe18bcce58d509431626b9c934e170fd572089dcfbfbf310c3aa9217293eb\"},{\"bytes\":808,\"kind\":\"file\",\"name\":\"compose-up.log\",\"sha256\":\"5758c75a39a1a7689f92513e3105708d1c71b7bcb14915e7013b1199b618f6d4\"},{\"kind\":\"dir\",\"name\":\"demonov_forward_map\"},{\"bytes\":841,\"kind\":\"file\",\"name\":\"experiment.json\",\"sha256\":\"827dc4fb5ace8a25a0bd80d05450eaa758bd39d1d09485d3d428dd20ad9325aa\"},{\"bytes\":208049,\"kind\":\"file\",\"name\":\"package.tar.gz\",\"sha256\":\"389e7aabca8887ee3b48b6ff0b4affe1163216005a4888013d9ccc82ea360e32\"},{\"bytes\":584,\"kind\":\"file\",\"name\":\"runtime_manifest.json\",\"sha256\":\"388a610997fad0071b9140a44e88edff60a3e7ee3486faeaca769c0026246c8e\"}]\nSB041A_EXPERIMENT_JSON={\"bytes\":841,\"exists\":true,\"object\":{\"code_identity\":\"e32760c69a4311728db9066ee8bf2bf66b1e5a70\",\"collection_start_at\":\"2026-09-07T00:00:00+00:00\",\"demonov_branch_policy_id\":\"ALL_FROZEN_PROFILES_ALL_NODES_RESEARCH_V1\",\"experiment_id\":\"ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338\",\"experiment_version\":\"LIVE_PROSPECTIVE_V2\",\"finality_policy_id\":\"BITFINEX_SEQ_ALL_D1_V1\",\"geometry_policy_id\":\"RESEARCH_RECONSTRUCTION_8020_V1\",\"market_bundle_id\":\"78dbbebab22f49bfc4866b40e2362886b1441790d8a73a005a4eb09a5d2c64ae\",\"notification_policy_id\":\"SIGNIFICANT_STATE_CHANGE_EMAIL_V1\",\"outcome_policy_id\":\"DIRECTIONAL_CLOSE_AFTER_7_D1_BARS_V1\",\"policy_registry_id\":\"055d0b052d394f1e08176b035617fbdd96f04fff0cdfb195c2d736fd66e6ad37\",\"runtime_manifest_id\":\"58d3b59200bdc0eb8d448612679d667b194263586cb3198dfc08597935053a1a\"},\"sha256\":\"827dc4fb5ace8a25a0bd80d05450eaa758bd39d1d09485d3d428dd20ad9325aa\"}\nSB041A_MANIFEST_JSON={\"bytes\":584,\"exists\":true,\"object\":{\"application_image_id\":\"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736\",\"base_image_digest\":\"sha256:881d80734ee05dca6f7f42dcb080975652a53c7eda9ba1f03bb8da31aa6a6ec2\",\"code_identity\":\"e32760c69a4311728db9066ee8bf2bf66b1e5a70\",\"compose_hash\":\"6461532b0a04decc60fe1d1885990020e886d40de40c0523e34e2849600af061\",\"finality_policy_id\":\"BITFINEX_SEQ_ALL_D1_V1\",\"package_identity\":\"637acba19fb29c98408a8031dc9265a31dc36551c666fcf0b287e8af83d2b893\",\"runtime_manifest_id\":\"58d3b59200bdc0eb8d448612679d667b194263586cb3198dfc08597935053a1a\"},\"sha256\":\"388a610997fad0071b9140a44e88edff60a3e7ee3486faeaca769c0026246c8e\"}\nSB041A_SERVICE_BOOT_JSON={\"bytes\":224,\"exists\":true,\"object\":{\"booted_at\":\"2026-09-06T18:48:21.063302+00:00\",\"code_identity\":\"e32760c69a4311728db9066ee8bf2bf66b1e5a70\",\"execution_authority\":false,\"production_launch_allowed\":false,\"risk_authority\":false,\"service\":\"8020-demonov-shadow\"},\"sha256\":\"798a145e6c142bea2cd41a74a3fa707452da9a606cc84ff6afd1d60b43abb1f8\"}\nSB041A_EXPERIMENT_HASH_CHECKS=[{\"matches\":true,\"method\":\"compact_sorted_utf8\",\"sha256\":\"ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338\"},{\"matches\":true,\"method\":\"compact_sorted_ascii\",\"sha256\":\"ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338\"},{\"matches\":false,\"method\":\"default_sorted_utf8\",\"sha256\":\"bcce3a27298e277b694ea2fb5848b912ad2816fd249c14a4617a0951b1d4dc4d\"},{\"matches\":false,\"method\":\"default_sorted_ascii\",\"sha256\":\"bcce3a27298e277b694ea2fb5848b912ad2816fd249c14a4617a0951b1d4dc4d\"},{\"matches\":false,\"method\":\"indent2_sorted_utf8\",\"sha256\":\"4ee2673c98107eb0bf81ebc4ef4e57b47670247bc90e0be2e4be5ed3d1348129\"}]\nSB041A_MANIFEST_HASH_CHECKS=[{\"matches\":false,\"method\":\"compact_sorted_utf8\",\"sha256\":\"7ac46712abbea24436b24af4fc962bdf5b8a348559a64c879c278fb17114c0a5\"},{\"matches\":false,\"method\":\"compact_sorted_ascii\",\"sha256\":\"7ac46712abbea24436b24af4fc962bdf5b8a348559a64c879c278fb17114c0a5\"},{\"matches\":false,\"method\":\"default_sorted_utf8\",\"sha256\":\"a68890d9717e29ac1db356e9e17f2fc10408327f8d8707caddbeb330e433d524\"},{\"matches\":false,\"method\":\"default_sorted_ascii\",\"sha256\":\"a68890d9717e29ac1db356e9e17f2fc10408327f8d8707caddbeb330e433d524\"},{\"matches\":false,\"method\":\"indent2_sorted_utf8\",\"sha256\":\"caaafb8613f463a4ed2915d1ccce0010e7945bb5058d67721a41fa3bb0d80188\"}]\nSB041A_COLLECTOR_CARDINALITY=1\nSB041A_RUNTIME_MANIFEST_SOURCE={\"classes\":[{\"name\":\"RuntimeDeploymentManifestV1\"}],\"functions\":[{\"args\":[\"value\",\"name\"],\"kwonly\":[],\"name\":\"_required\",\"source\":\"def _required(value: str, name: str) -> str:\\n if not isinstance(value, str) or not value:\\n raise DemonovError(f\\\"{name} is required\\\")\\n return value\"},{\"args\":[\"value\",\"name\"],\"kwonly\":[],\"name\":\"_sha256_hex\",\"source\":\"def _sha256_hex(value: str, name: str) -> str:\\n _required(value, name)\\n if _SHA256_RE.fullmatch(value) is None:\\n raise DemonovError(f\\\"{name} must be lowercase sha256 hex\\\")\\n return value\"},{\"args\":[\"value\",\"name\"],\"kwonly\":[],\"name\":\"_sha256_id\",\"source\":\"def _sha256_id(value: str, name: str) -> str:\\n _required(value, name)\\n if _SHA256_ID_RE.fullmatch(value) is None:\\n raise DemonovError(f\\\"{name} must be immutable sha256 identity\\\")\\n return value\"},{\"args\":[\"manifest\"],\"kwonly\":[\"expected_code_identity\",\"actual_image_id\",\"actual_package_identity\"],\"name\":\"verify_runtime_manifest\",\"source\":\"def verify_runtime_manifest(\\n manifest: RuntimeDeploymentManifestV1,\\n *,\\n expected_code_identity: str,\\n actual_image_id: str,\\n actual_package_identity: str,\\n) -> None:\\n if not isinstance(manifest, RuntimeDeploymentManifestV1):\\n raise DemonovError(\\\"runtime manifest required\\\")\\n manifest.__post_init__()\\n if manifest.code_identity != expected_code_identity:\\n raise DemonovError(\\\"runtime manifest code identity mismatch\\\")\\n if manifest.application_image_id != actual_image_id:\\n raise DemonovError(\\\"runtime manifest application image mismatch\\\")\\n if manifest.package_identity != actual_package_identity:\\n raise DemonovError(\\\"runtime manifest package identity mismatch\\\")\"}],\"lines\":123,\"rc\":0,\"sha256\":\"1064cfb74303fdc8e0bf50bae95b1e755556a5b1dfc28b2b062341becaba08f2\"}\nSB041A_LIVE_PROSPECTIVE_SOURCE={\"classes\":[{\"name\":\"ExperimentProvenance\"},{\"name\":\"LiveProspectiveStore\"}],\"functions\":[{\"args\":[\"value\"],\"kwonly\":[],\"name\":\"_hash\",\"source\":\"def _hash(value: object) -> str:\\n return hashlib.sha256(\\n json.dumps(value, sort_keys=True, separators=(\\\",\\\", \\\":\\\"), ensure_ascii=True).encode()\\n ).hexdigest()\"},{\"args\":[\"bar\"],\"kwonly\":[],\"name\":\"_bar_json\",\"source\":\"def _bar_json(bar) -> str:\\n return json.dumps({\\n \\\"bar_id\\\": bar.bar_id,\\n \\\"market_key\\\": bar.market_key,\\n \\\"open_at\\\": bar.open_at.isoformat(),\\n \\\"close_at\\\": bar.close_at.isoformat(),\\n \\\"known_at\\\": bar.known_at.isoformat(),\\n \\\"received_at\\\": bar.received_at.isoformat(),\\n \\\"open\\\": str(bar.open), \\\"high\\\": str(bar.high), \\\"low\\\": str(bar.low),\\n \\\"close\\\": str(bar.close), \\\"volume\\\": str(bar.volume),\\n \\\"boundary_policy_hash\\\": bar.boundary_policy_hash,\\n \\\"source_bar_ids\\\": list(bar.source_bar_ids),\\n }, sort_keys=True, separators=(\\\",\\\", \\\":\\\"))\"},{\"args\":[\"line\"],\"kwonly\":[],\"name\":\"_line_json\",\"source\":\"def _line_json(line: ResearchTrendLine | None) -> str:\\n if line is None:\\n return \\\"\\\"\\n return json.dumps({\\n \\\"line_id\\\": line.line_id, \\\"role\\\": line.role.value, \\\"version\\\": line.version,\\n \\\"first_at\\\": line.first_at.isoformat(), \\\"first_price\\\": str(line.first_price),\\n \\\"second_at\\\": line.second_at.isoformat(), \\\"second_price\\\": str(line.second_price),\\n \\\"frozen_at\\\": line.frozen_at.isoformat(), \\\"geometry_policy_id\\\": line.geometry_policy_id,\\n }, sort_keys=True, separators=(\\\",\\\", \\\":\\\"))\"},{\"args\":[\"raw\"],\"kwonly\":[],\"name\":\"_line_from_json\",\"source\":\"def _line_from_json(raw: str) -> ResearchTrendLine | None:\\n if not raw:\\n return None\\n x = json.loads(raw)\\n return ResearchTrendLine(\\n line_id=x[\\\"line_id\\\"], role=ResearchBarrierRole(x[\\\"role\\\"]), version=x[\\\"version\\\"],\\n first_at=datetime.fromisoformat(x[\\\"first_at\\\"]), first_price=Decimal(x[\\\"first_price\\\"]),\\n second_at=datetime.fromisoformat(x[\\\"second_at\\\"]), second_price=Decimal(x[\\\"second_price\\\"]),\\n frozen_at=datetime.fromisoformat(x[\\\"frozen_at\\\"]), geometry_policy_id=x[\\\"geometry_policy_id\\\"],\\n )\"},{\"args\":[\"states\"],\"kwonly\":[],\"name\":\"_states_json\",\"source\":\"def _states_json(states) -> str:\\n return json.dumps([{\\n \\\"state_id\\\": s.state_id, \\\"arm_id\\\": s.arm_id.value,\\n \\\"interaction_state\\\": s.interaction_state.value,\\n \\\"close_beyond_count\\\": s.close_beyond_count, \\\"last_sequence\\\": s.last_sequence,\\n } for s in states], sort_keys=True, separators=(\\\",\\\", \\\":\\\"))\"},{\"args\":[\"raw\"],\"kwonly\":[],\"name\":\"_states_from_json\",\"source\":\"def _states_from_json(raw: str):\\n from .prospective_policy import AcceptanceArmId\\n if not raw:\\n return ()\\n return tuple(ArmFSMState(\\n state_id=x[\\\"state_id\\\"], arm_id=AcceptanceArmId(x[\\\"arm_id\\\"]),\\n interaction_state=ProspectiveInteractionState(x[\\\"interaction_state\\\"]),\\n close_beyond_count=x[\\\"close_beyond_count\\\"], last_sequence=x[\\\"last_sequence\\\"],\\n ) for x in json.loads(raw))\"}],\"lines\":851,\"rc\":0,\"sha256\":\"f83f48dfeb4dc1382ebf3c77b7ec27deaeac6eec4a5dc097f90600963f0e4e98\"}\nSB041A_DECISION=DEPLOY_API_CONTRACT_READY\nSB041A_MUTATION_SCOPE=NONE_READ_ONLY\nSIGNALBOT041A_HOLDS=[]\nSIGNALBOT041A_DECISION=DEPLOY_API_CONTRACT_READY\nSIGNALBOT041A_MUTATION_SCOPE=NO_RUNTIME_NO_GIT_NO_EXCHANGE_MUTATION\n" + "output": "APPLY9_BEGIN=true\nCOMMAND_ID=NEWFI-260908-A-STAGINGEDGE-APPLY9\nCOMPONENT=newfi-staging-strict-qga-native-certbot-route-dns\nMODE=change\nERROR_REGISTER_CHECK=OK\nERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0\nREFERENCE_CHECK=OK\nREFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66\nAUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED\nRUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d\nFORENSIC1_HISTORY_SHA256=1013f222c1b2fc31ff9b5817231f2a575f53b3eab08385c5eb3d8bd752f3d29d\nPORTAL_PRODUCT_STATE_GATE=PASS\nSTAGING_PREFLIGHT={\"backend_ip\":\"[PRIVATE_IP]\",\"local_http\":\"503\"}\nAPPLY9_BLOCKED_REASON=PREEXISTING_CERT_ALREADY_COVERS_TARGET:['newfi-staging-gram1-ru']\nFINAL_DECISION=BLOCKED_NEWFI_STAGING_APPLY9_PREEXISTING_CERT_ALREADY_COVERS_TARGET:['newfi-staging-gram1-ru']\nHOMELAB_RESULT_CONTRACT={\"changes_made\":false,\"command_id\":\"NEWFI-260908-A-STAGINGEDGE-APPLY9\",\"rollback_restored\":null,\"rollback_started\":false,\"status\":\"BLOCKED\",\"version\":1}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 6eea134b..d3df054a 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,22 +1,22 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=SIGNALBOT-260908-DEPLOY-PREP-API-041API -STATUS=OK -RC=0 +COMMAND_ID=NEWFI-260908-A-STAGINGEDGE-APPLY9 +STATUS=BLOCKED +RC=2 HOST=pve01 -MODE=read-only -COMPONENT=signalbot-cr0116-deploy-api-contract +MODE=change +COMPONENT=newfi-staging-strict-qga-native-certbot-route-dns REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 -COMMAND_SHA256=ce5ef6223547685761dcfca508de8d9390949208763bf7938e8d43d0c7641bab +COMMAND_SHA256=8be936fe6c6c5e63b2b487e7d63d3a42899d033118d3c910eb740ac119233977 DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true -CHANGE_DECLARED=false +CHANGE_DECLARED=true RESULT_CONTRACT_VALID=true -RESULT_CONTRACT_STATUS=NOT_APPLICABLE +RESULT_CONTRACT_STATUS=BLOCKED RESULT_CONTRACT_ERROR=NONE -COMMAND_RC=0 +COMMAND_RC=2 CHANGES_MADE=false ROLLBACK_STARTED=false ROLLBACK_RESTORED=null @@ -24,28 +24,25 @@ MUTATION_OUTCOME=NO_MUTATION SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=f271ff2f659b1a49c637ca9d67e7b6bc0314cc0dd8570fb252504418765369ce -SANITIZED_OUTPUT_SHA256=f271ff2f659b1a49c637ca9d67e7b6bc0314cc0dd8570fb252504418765369ce +RAW_EVIDENCE_SHA256=54edb4519ee4fb8309884ec5f30ce1fab974fc81ba8c28e2a63378c571997107 +SANITIZED_OUTPUT_SHA256=9144947611f5a49d4331df6811fd8dc8c1e7fd25e51485e4b61a8a5ea3df2dcf OUTPUT_BEGIN +APPLY9_BEGIN=true +COMMAND_ID=NEWFI-260908-A-STAGINGEDGE-APPLY9 +COMPONENT=newfi-staging-strict-qga-native-certbot-route-dns +MODE=change ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0 REFERENCE_CHECK=OK +REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66 AUTHORITY_CHECK_SCOPE=READABILITY_ONLY_INCIDENTS_NOT_CLOSED -SB041A_ACTIVE_ENV={"exists":true,"sha256":"4bbc6bd31417f6265767c1fb971d118d36d27d7b57a90b49e6586461acf0609b","values":{"APP_IMAGE":"8020-demonov-shadow:e32760c69a4311728db9066ee8bf2bf66b1e5a70","CODE_IDENTITY":"e32760c69a4311728db9066ee8bf2bf66b1e5a70","COLLECTION_START_AT":"2026-09-07T00:00:00+00:00","EXPERIMENT_ID":"ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338","RUNTIME_MANIFEST_ID":"58d3b59200bdc0eb8d448612679d667b194263586cb3198dfc08597935053a1a"}} -SB041A_DOCKERFILE={"exists":true,"sha256":"901951def73961f76d2c2a93c5428a0fbdcc50113d42b39da92983a5ce157cb8","text":"FROM 8020-demonov-shadow:ac7094a76ddc06f376d71a76432af7c2dd10ec7d\nCOPY demonov_forward_map /app/demonov_forward_map"} -SB041A_DEPLOY_TOP=[{"bytes":336,"kind":"file","name":".env.new","sha256":"4bbc6bd31417f6265767c1fb971d118d36d27d7b57a90b49e6586461acf0609b"},{"bytes":116,"kind":"file","name":"Dockerfile","sha256":"901951def73961f76d2c2a93c5428a0fbdcc50113d42b39da92983a5ce157cb8"},{"bytes":886,"kind":"file","name":"build.log","sha256":"601fe18bcce58d509431626b9c934e170fd572089dcfbfbf310c3aa9217293eb"},{"bytes":808,"kind":"file","name":"compose-up.log","sha256":"5758c75a39a1a7689f92513e3105708d1c71b7bcb14915e7013b1199b618f6d4"},{"kind":"dir","name":"demonov_forward_map"},{"bytes":841,"kind":"file","name":"experiment.json","sha256":"827dc4fb5ace8a25a0bd80d05450eaa758bd39d1d09485d3d428dd20ad9325aa"},{"bytes":208049,"kind":"file","name":"package.tar.gz","sha256":"389e7aabca8887ee3b48b6ff0b4affe1163216005a4888013d9ccc82ea360e32"},{"bytes":584,"kind":"file","name":"runtime_manifest.json","sha256":"388a610997fad0071b9140a44e88edff60a3e7ee3486faeaca769c0026246c8e"}] -SB041A_EXPERIMENT_JSON={"bytes":841,"exists":true,"object":{"code_identity":"e32760c69a4311728db9066ee8bf2bf66b1e5a70","collection_start_at":"2026-09-07T00:00:00+00:00","demonov_branch_policy_id":"ALL_FROZEN_PROFILES_ALL_NODES_RESEARCH_V1","experiment_id":"ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338","experiment_version":"LIVE_PROSPECTIVE_V2","finality_policy_id":"BITFINEX_SEQ_ALL_D1_V1","geometry_policy_id":"RESEARCH_RECONSTRUCTION_8020_V1","market_bundle_id":"78dbbebab22f49bfc4866b40e2362886b1441790d8a73a005a4eb09a5d2c64ae","notification_policy_id":"SIGNIFICANT_STATE_CHANGE_EMAIL_V1","outcome_policy_id":"DIRECTIONAL_CLOSE_AFTER_7_D1_BARS_V1","policy_registry_id":"055d0b052d394f1e08176b035617fbdd96f04fff0cdfb195c2d736fd66e6ad37","runtime_manifest_id":"58d3b59200bdc0eb8d448612679d667b194263586cb3198dfc08597935053a1a"},"sha256":"827dc4fb5ace8a25a0bd80d05450eaa758bd39d1d09485d3d428dd20ad9325aa"} -SB041A_MANIFEST_JSON={"bytes":584,"exists":true,"object":{"application_image_id":"sha256:403c4266282a56cb210bed95cd58295692296502913e7440e2133d7b5664c736","base_image_digest":"sha256:881d80734ee05dca6f7f42dcb080975652a53c7eda9ba1f03bb8da31aa6a6ec2","code_identity":"e32760c69a4311728db9066ee8bf2bf66b1e5a70","compose_hash":"6461532b0a04decc60fe1d1885990020e886d40de40c0523e34e2849600af061","finality_policy_id":"BITFINEX_SEQ_ALL_D1_V1","package_identity":"637acba19fb29c98408a8031dc9265a31dc36551c666fcf0b287e8af83d2b893","runtime_manifest_id":"58d3b59200bdc0eb8d448612679d667b194263586cb3198dfc08597935053a1a"},"sha256":"388a610997fad0071b9140a44e88edff60a3e7ee3486faeaca769c0026246c8e"} -SB041A_SERVICE_BOOT_JSON={"bytes":224,"exists":true,"object":{"booted_at":"2026-09-06T18:48:21.063302+00:00","code_identity":"e32760c69a4311728db9066ee8bf2bf66b1e5a70","execution_authority":false,"production_launch_allowed":false,"risk_authority":false,"service":"8020-demonov-shadow"},"sha256":"798a145e6c142bea2cd41a74a3fa707452da9a606cc84ff6afd1d60b43abb1f8"} -SB041A_EXPERIMENT_HASH_CHECKS=[{"matches":true,"method":"compact_sorted_utf8","sha256":"ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338"},{"matches":true,"method":"compact_sorted_ascii","sha256":"ec477ea41ecbd5cfdef5afc259595aab20674a7d933f41a389329ff05098b338"},{"matches":false,"method":"default_sorted_utf8","sha256":"bcce3a27298e277b694ea2fb5848b912ad2816fd249c14a4617a0951b1d4dc4d"},{"matches":false,"method":"default_sorted_ascii","sha256":"bcce3a27298e277b694ea2fb5848b912ad2816fd249c14a4617a0951b1d4dc4d"},{"matches":false,"method":"indent2_sorted_utf8","sha256":"4ee2673c98107eb0bf81ebc4ef4e57b47670247bc90e0be2e4be5ed3d1348129"}] -SB041A_MANIFEST_HASH_CHECKS=[{"matches":false,"method":"compact_sorted_utf8","sha256":"7ac46712abbea24436b24af4fc962bdf5b8a348559a64c879c278fb17114c0a5"},{"matches":false,"method":"compact_sorted_ascii","sha256":"7ac46712abbea24436b24af4fc962bdf5b8a348559a64c879c278fb17114c0a5"},{"matches":false,"method":"default_sorted_utf8","sha256":"a68890d9717e29ac1db356e9e17f2fc10408327f8d8707caddbeb330e433d524"},{"matches":false,"method":"default_sorted_ascii","sha256":"a68890d9717e29ac1db356e9e17f2fc10408327f8d8707caddbeb330e433d524"},{"matches":false,"method":"indent2_sorted_utf8","sha256":"caaafb8613f463a4ed2915d1ccce0010e7945bb5058d67721a41fa3bb0d80188"}] -SB041A_COLLECTOR_CARDINALITY=1 -SB041A_RUNTIME_MANIFEST_SOURCE={"classes":[{"name":"RuntimeDeploymentManifestV1"}],"functions":[{"args":["value","name"],"kwonly":[],"name":"_required","source":"def _required(value: str, name: str) -> str:\n if not isinstance(value, str) or not value:\n raise DemonovError(f\"{name} is required\")\n return value"},{"args":["value","name"],"kwonly":[],"name":"_sha256_hex","source":"def _sha256_hex(value: str, name: str) -> str:\n _required(value, name)\n if _SHA256_RE.fullmatch(value) is None:\n raise DemonovError(f\"{name} must be lowercase sha256 hex\")\n return value"},{"args":["value","name"],"kwonly":[],"name":"_sha256_id","source":"def _sha256_id(value: str, name: str) -> str:\n _required(value, name)\n if _SHA256_ID_RE.fullmatch(value) is None:\n raise DemonovError(f\"{name} must be immutable sha256 identity\")\n return value"},{"args":["manifest"],"kwonly":["expected_code_identity","actual_image_id","actual_package_identity"],"name":"verify_runtime_manifest","source":"def verify_runtime_manifest(\n manifest: RuntimeDeploymentManifestV1,\n *,\n expected_code_identity: str,\n actual_image_id: str,\n actual_package_identity: str,\n) -> None:\n if not isinstance(manifest, RuntimeDeploymentManifestV1):\n raise DemonovError(\"runtime manifest required\")\n manifest.__post_init__()\n if manifest.code_identity != expected_code_identity:\n raise DemonovError(\"runtime manifest code identity mismatch\")\n if manifest.application_image_id != actual_image_id:\n raise DemonovError(\"runtime manifest application image mismatch\")\n if manifest.package_identity != actual_package_identity:\n raise DemonovError(\"runtime manifest package identity mismatch\")"}],"lines":123,"rc":0,"sha256":"1064cfb74303fdc8e0bf50bae95b1e755556a5b1dfc28b2b062341becaba08f2"} -SB041A_LIVE_PROSPECTIVE_SOURCE={"classes":[{"name":"ExperimentProvenance"},{"name":"LiveProspectiveStore"}],"functions":[{"args":["value"],"kwonly":[],"name":"_hash","source":"def _hash(value: object) -> str:\n return hashlib.sha256(\n json.dumps(value, sort_keys=True, separators=(\",\", \":\"), ensure_ascii=True).encode()\n ).hexdigest()"},{"args":["bar"],"kwonly":[],"name":"_bar_json","source":"def _bar_json(bar) -> str:\n return json.dumps({\n \"bar_id\": bar.bar_id,\n \"market_key\": bar.market_key,\n \"open_at\": bar.open_at.isoformat(),\n \"close_at\": bar.close_at.isoformat(),\n \"known_at\": bar.known_at.isoformat(),\n \"received_at\": bar.received_at.isoformat(),\n \"open\": str(bar.open), \"high\": str(bar.high), \"low\": str(bar.low),\n \"close\": str(bar.close), \"volume\": str(bar.volume),\n \"boundary_policy_hash\": bar.boundary_policy_hash,\n \"source_bar_ids\": list(bar.source_bar_ids),\n }, sort_keys=True, separators=(\",\", \":\"))"},{"args":["line"],"kwonly":[],"name":"_line_json","source":"def _line_json(line: ResearchTrendLine | None) -> str:\n if line is None:\n return \"\"\n return json.dumps({\n \"line_id\": line.line_id, \"role\": line.role.value, \"version\": line.version,\n \"first_at\": line.first_at.isoformat(), \"first_price\": str(line.first_price),\n \"second_at\": line.second_at.isoformat(), \"second_price\": str(line.second_price),\n \"frozen_at\": line.frozen_at.isoformat(), \"geometry_policy_id\": line.geometry_policy_id,\n }, sort_keys=True, separators=(\",\", \":\"))"},{"args":["raw"],"kwonly":[],"name":"_line_from_json","source":"def _line_from_json(raw: str) -> ResearchTrendLine | None:\n if not raw:\n return None\n x = json.loads(raw)\n return ResearchTrendLine(\n line_id=x[\"line_id\"], role=ResearchBarrierRole(x[\"role\"]), version=x[\"version\"],\n first_at=datetime.fromisoformat(x[\"first_at\"]), first_price=Decimal(x[\"first_price\"]),\n second_at=datetime.fromisoformat(x[\"second_at\"]), second_price=Decimal(x[\"second_price\"]),\n frozen_at=datetime.fromisoformat(x[\"frozen_at\"]), geometry_policy_id=x[\"geometry_policy_id\"],\n )"},{"args":["states"],"kwonly":[],"name":"_states_json","source":"def _states_json(states) -> str:\n return json.dumps([{\n \"state_id\": s.state_id, \"arm_id\": s.arm_id.value,\n \"interaction_state\": s.interaction_state.value,\n \"close_beyond_count\": s.close_beyond_count, \"last_sequence\": s.last_sequence,\n } for s in states], sort_keys=True, separators=(\",\", \":\"))"},{"args":["raw"],"kwonly":[],"name":"_states_from_json","source":"def _states_from_json(raw: str):\n from .prospective_policy import AcceptanceArmId\n if not raw:\n return ()\n return tuple(ArmFSMState(\n state_id=x[\"state_id\"], arm_id=AcceptanceArmId(x[\"arm_id\"]),\n interaction_state=ProspectiveInteractionState(x[\"interaction_state\"]),\n close_beyond_count=x[\"close_beyond_count\"], last_sequence=x[\"last_sequence\"],\n ) for x in json.loads(raw))"}],"lines":851,"rc":0,"sha256":"f83f48dfeb4dc1382ebf3c77b7ec27deaeac6eec4a5dc097f90600963f0e4e98"} -SB041A_DECISION=DEPLOY_API_CONTRACT_READY -SB041A_MUTATION_SCOPE=NONE_READ_ONLY -SIGNALBOT041A_HOLDS=[] -SIGNALBOT041A_DECISION=DEPLOY_API_CONTRACT_READY -SIGNALBOT041A_MUTATION_SCOPE=NO_RUNTIME_NO_GIT_NO_EXCHANGE_MUTATION +RUNNER_SHA256=b248a4c32c9cc64e5747e7dce6c7fc0a23f5124a77c71ce72e27a81aceae9d2d +FORENSIC1_HISTORY_SHA256=1013f222c1b2fc31ff9b5817231f2a575f53b3eab08385c5eb3d8bd752f3d29d +PORTAL_PRODUCT_STATE_GATE=PASS +STAGING_PREFLIGHT={"backend_ip":"[PRIVATE_IP]","local_http":"503"} +APPLY9_BLOCKED_REASON=PREEXISTING_CERT_ALREADY_COVERS_TARGET:['newfi-staging-gram1-ru'] +FINAL_DECISION=BLOCKED_NEWFI_STAGING_APPLY9_PREEXISTING_CERT_ALREADY_COVERS_TARGET:['newfi-staging-gram1-ru'] +HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"NEWFI-260908-A-STAGINGEDGE-APPLY9","rollback_restored":null,"rollback_started":false,"status":"BLOCKED","version":1} OUTPUT_END CHAT_OUTPUT_END