52 lines
11 KiB
Plaintext
52 lines
11 KiB
Plaintext
CHAT_OUTPUT_BEGIN
|
|
COMMAND_ID=SIGNALBOT-260908-DEPLOY-PREP-API-041API
|
|
STATUS=OK
|
|
RC=0
|
|
HOST=pve01
|
|
MODE=read-only
|
|
COMPONENT=signalbot-cr0116-deploy-api-contract
|
|
REFERENCE_REGISTER_CHECK=OK
|
|
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
|
|
ERROR_REGISTER_CHECK=OK
|
|
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
|
|
COMMAND_SHA256=ce5ef6223547685761dcfca508de8d9390949208763bf7938e8d43d0c7641bab
|
|
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=f271ff2f659b1a49c637ca9d67e7b6bc0314cc0dd8570fb252504418765369ce
|
|
SANITIZED_OUTPUT_SHA256=f271ff2f659b1a49c637ca9d67e7b6bc0314cc0dd8570fb252504418765369ce
|
|
OUTPUT_BEGIN
|
|
ERROR_REGISTER_CHECK=OK
|
|
REFERENCE_CHECK=OK
|
|
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
|
|
|
|
OUTPUT_END
|
|
CHAT_OUTPUT_END
|