CHAT_OUTPUT_BEGIN
COMMAND_ID=GRAM1-SITE-CHARTS-V31-RUNTIME-PATH-DOM-DIAG-20260801T113000Z
STATUS=OK
RC=0
HOST=pve01
MODE=verify
COMPONENT=gram1-charts-v31-runtime
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=24934a2c7fa5c26f6e828583c4aefac7f143b40c0171736ed7571e617d55ab83
COMMAND_SHA256=6e480d873dc73bd8e176d761c2bb37ea93d2d35fbcd679355268cd463e1191ec
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=be5458eba99a40c245fe53a5f8325325f122533542984304575a27d490899669
SANITIZED_OUTPUT_SHA256=4012e6e6d55d0bd70210d9710d3c3cb60575ec275341eb732b1b13d44528b024
OUTPUT_BEGIN
HOMELAB_RESULT_CONTRACT={"changes_made":false,"command_id":"GRAM1-SITE-CHARTS-V31-RUNTIME-PATH-DOM-DIAG-20260801T113000Z","mutation_outcome":"NO_MUTATION","rollback_restored":null,"rollback_started":false,"status":"OK","version":1}
{"changes_made":false,"command_id":"GRAM1-SITE-CHARTS-V31-RUNTIME-PATH-DOM-DIAG-20260801T113000Z","control_plane_error":null,"gitea_changed":false,"mutation_outcome":"NO_MUTATION","pinned_host_key_aliases":["[PRIVATE_IP]"],"production_site_changed":false,"rc":0,"remote_result":{"changes_made":false,"command_id":"GRAM1-SITE-CHARTS-V31-RUNTIME-PATH-DOM-DIAG-20260801T113000Z","compose_services":["web","worker"],"container_diagnostic":{"executables":{},"processes":[{"cmdline":"/usr/local/bin/python3.12 /usr/local/bin/uvicorn app:app --host 0.0.0.0 --port 8000","cwd":"/app","pid":1},{"cmdline":"python3 -B - e9e723c9b916383ce10dffe8f8bbdb4049b78d89c5b139e2de5ed82194a27be4","cwd":"/app","pid":71}],"runtime":{"attempts":[{"result":"NO_APP_OBJECT","spec":"app:app"},{"error":"ModuleNotFoundError:No module named 'wsgi'","spec":"wsgi"},{"error":"ModuleNotFoundError:No module named 'main'","spec":"main"}],"available":false,"process_specs":["app:app"]},"source_facts":[{"flask_constructor_lines":[],"path":"/app/app.py","routes":[{"line":52,"path":"/login"},{"line":58,"path":"/login"},{"line":73,"path":"/logout"},{"line":78,"path":"/"},{"line":84,"path":"/health"},{"line":92,"path":"/coin-icon/{coin_id}"},{"line":141,"path":"/vendor/lightweight-charts.js"},{"line":307,"path":"/api/klines/{symbol}"},{"line":312,"path":"/api/chart-health"},{"line":346,"path":"/api/state"},{"line":363,"path":"/api/holding"},{"line":376,"path":"/api/alert"},{"line":54,"path":"auth"},{"line":39,"path":"auth"},{"line":80,"path":"auth"},{"line":166,"path":"entries"},{"line":367,"path":"coin_id"},{"line":380,"path":"coin_id"},{"line":380,"path":"kind"},{"line":383,"path":"threshold"},{"line":383,"path":"window_seconds"},{"line":112,"path":"https://api.coingecko.com/api/v3/coins/markets"},{"line":156,"path":"status"},{"line":157,"path":"candles"},{"line":179,"path":"result"},{"line":330,"path":"source"},{"line":370,"path":"quantity"},{"line":371,"path":"avg_buy"},{"line":178,"path":"saved_at"},{"line":383,"path":"email"},{"line":56,"path":"bad"},{"line":115,"path":"image"},{"line":119,"path":"content-type"}],"session_keys":[],"sha256":"ec226952cdb7fb58edbfc0173af47f4d901f3206e15169df12294983731fbc20","top_assignments":[{"line":8,"name":"DATA","value_type":"Call"},{"line":9,"name":"DB","value_type":"BinOp"},{"line":10,"name":"MARKET","value_type":"BinOp"},{"line":11,"name":"HASH_FILE","value_type":"Call"},{"line":12,"name":"SECRET_FILE","value_type":"Call"},{"line":13,"name":"COINS","value_type":"Dict"},{"line":14,"name":"FAILED","value_type":"Dict"},{"line":49,"name":"app","value_type":"Call"},{"line":138,"name":"LIGHTWEIGHT_JS","value_type":"BinOp"},{"line":139,"name":"KLINE_SYMBOLS","value_type":"Dict"},{"line":147,"name":"KLINE_CACHE","value_type":"Dict"},{"line":148,"name":"KLINE_CACHE_TTL","value_type":"Constant"},{"line":149,"name":"KLINE_CACHE_MAX_STALE","value_type":"Constant"},{"line":150,"name":"KLINE_CACHE_FILE","value_type":"BinOp"},{"line":151,"name":"KLINE_CACHE_WRITE_LOCK","value_type":"Call"}],"top_functions":[{"line":16,"name":"db"},{"line":25,"name":"b64d"},{"line":28,"name":"verify_password"},{"line":38,"name":"require_login"},{"line":42,"name":"market_data"},{"line":53,"name":"login_page"},{"line":59,"name":"login"},{"line":74,"name":"logout"},{"line":79,"name":"home"},{"line":85,"name":"health"},{"line":93,"name":"coin_icon"},{"line":142,"name":"lightweight_charts_js"},{"line":153,"name":"_valid_kline_result"},{"line":161,"name":"_load_kline_cache"},{"line":185,"name":"_save_kline_cache"},{"line":205,"name":"fetch_klines"},{"line":308,"name":"klines"},{"line":313,"name":"chart_health"},{"line":347,"name":"state"},{"line":364,"name":"save_holding"},{"line":377,"name":"add_alert"},{"line":391,"name":"delete_alert"}]}],"template_files":[{"bytes":36137,"chart_id":1,"no_data":2,"path":"/app/templates/index.html","sha256":"e9e723c9b916383ce10dffe8f8bbdb4049b78d89c5b139e2de5ed82194a27be4","tvCharts":4,"v29_script":2,"v29_style":1}]},"control_plane_error":null,"diagnosis":["WEB_APPLICATION_OBJECT_NOT_RESOLVED"],"duration_seconds":0.67,"exact_state":{"compose_sha256":"6d344e46b3de94ad86131a914df2ff3ff25e9d82f7ce0557cbffa468b8cdc1b8","current_hashes":{"app.py":"ec226952cdb7fb58edbfc0173af47f4d901f3206e15169df12294983731fbc20","templates/index.html":"e9e723c9b916383ce10dffe8f8bbdb4049b78d89c5b139e2de5ed82194a27be4","worker.py":"4a7b16ece826fe2d938f392db6b0b5ca028dcb6ff02fdff4ab431f114edf0e5c"}},"gitea_changed":false,"mutation_outcome":"NO_MUTATION","previous_capsule_sha256":"a4c76cfb369220b240c21a1e810510975a1c4fcc18dbb568c1b9e26cb57daa14","previous_command_id":"GRAM1-SITE-CHARTS-V30-EXACT-RUNTIME-CSP-DIAG-20260801T110100Z","production_site_changed":false,"rc":0,"rollback_restored":null,"rollback_started":false,"schema":1,"status":"OK","template_structure":{"bytes":36137,"chart_id_count":1,"html_end_offset":34911,"legacy_no_data_count":2,"scripts":[{"body_bytes":7045,"body_prefix":"let state=null;let selected=\"hedera-hashgraph\";let currency=localStorage.getItem(\"portfolio_currency\")===\"RUB\"?\"RUB\":\"USD\";const fx=()=>Numb","body_sha256":"e6afa17d7b94d9da5036d55bf6b8c623ec036ca05e9dea9c789432631c1b6ca7","id":null,"line":9,"order":0,"src":null,"type":null},{"body_bytes":4775,"body_prefix":"(()=>{\n  const install=()=>{\n    const button=document.getElementById(\"addAlert\");\n    const coinEl=document.getElementById(\"aCoin\");\n    co","body_sha256":"f30846a0a26517bd6e8303d552aeba19887576c54b4a70678e234a5e1f6e7582","id":"ALERT_CREATE_OVERRIDE_V3","line":9,"order":1,"src":null,"type":null},{"body_bytes":4605,"body_prefix":"(()=>{\n  let lastState=null;\n  let loading=false;\n  const kindNames={\n    price_above:\"цена ≥\",\n    price_below:\"цена ≤\",\n    cap_above:\"кап","body_sha256":"b6fedba59295891e784ab98cef7690efe81553715d35a9cf6a31c30d08efb5a9","id":"ALERT_LIST_RENDERER_V5","line":109,"order":2,"src":null,"type":null},{"body_bytes":0,"body_prefix":"","body_sha256":null,"id":null,"line":218,"order":3,"src":"/vendor/lightweight-charts.js","type":null},{"body_bytes":9362,"body_prefix":"(()=>{\n  \"use strict\";\n  const VERSION=\"LOCAL_TRADINGVIEW_CHARTS_V3_STATIC_COMPAT_ACCORDION\";\n  const symbols=[\"HBAR\",\"POL\",\"AVAX\",\"LINK\"];\n","body_sha256":"bab92747e24c2fd897c276239780a3927a49bdfa08685eea0d57a9d72462f21b","id":"LOCAL_TRADINGVIEW_CHARTS_V3_STATIC_COMPAT_ACCORDION","line":219,"order":4,"src":null,"type":null},{"body_bytes":642,"body_prefix":"(()=>{const move=()=>{const chart=document.getElementById(\"chart\");const panel=chart&&chart.closest(\".panel\");const main=document.querySelec","body_sha256":"90a765a83fb8a5a0542dee1abf8c32af0f248aa411aa203848f73758bc3f9b40","id":"MOVE_CHARTS_TO_BOTTOM_ALLTIME_V1","line":381,"order":5,"src":null,"type":null}],"sha256":"e9e723c9b916383ce10dffe8f8bbdb4049b78d89c5b139e2de5ed82194a27be4","style_v29_count":1,"styles":[{"body_bytes":3738,"body_sha256":"7a6e704f81f83550acb9931167adeac1b6f7b62ca080c32772572e6fb9194ef7","id":null,"line":3,"order":0},{"body_bytes":806,"body_sha256":"304c99f769e21483c3ea6cbacabf4e7fe865f2fa72912645722a124033a06efe","id":null,"line":9,"order":1},{"body_bytes":858,"body_sha256":"9886b118489b174a0dcd7effae906573d28fa96903458808069fef3d8fdf757c","id":"TRADINGVIEW_ACCORDION_STYLE_V3","line":217,"order":2},{"body_bytes":386,"body_sha256":"c8197e1b9b14bf237ce83d09d56badb83e2b8a7281690524c0ad358042ffa63c","id":"SHARP_MOVES_LAYOUT_V2","line":380,"order":3}],"tvcharts_count":4,"v29":{"body_bytes":9362,"body_prefix":"(()=>{\n  \"use strict\";\n  const VERSION=\"LOCAL_TRADINGVIEW_CHARTS_V3_STATIC_COMPAT_ACCORDION\";\n  const symbols=[\"HBAR\",\"POL\",\"AVAX\",\"LINK\"];\n","body_sha256":"bab92747e24c2fd897c276239780a3927a49bdfa08685eea0d57a9d72462f21b","id":"LOCAL_TRADINGVIEW_CHARTS_V3_STATIC_COMPAT_ACCORDION","line":219,"order":4,"src":null,"type":null},"v29_after_vendor":true,"v29_count":1,"v29_text_offset":24705,"vendor_scripts":[{"body_bytes":0,"body_prefix":"","body_sha256":null,"id":null,"line":218,"order":3,"src":"/vendor/lightweight-charts.js","type":null}]},"web_container_inspect":{"available":true,"cmd":["uvicorn","app:app","--host","0.0.0.0","--port","8000"],"entrypoint":null,"id":"a97ea0430cd0","image":"crypto-portfolio-web","mounts":[{"destination":"/data","rw":true,"source":"/opt/stacks/crypto-portfolio/data","type":"bind"},{"destination":"/run/secrets/password_hash","rw":false,"source":"/opt/stacks/crypto-portfolio/secrets/password_hash","type":"bind"},{"destination":"/run/secrets/session_secret","rw":false,"source":"/opt/stacks/crypto-portfolio/secrets/session_secret","type":"bind"},{"destination":"/run/secrets/email_config","rw":false,"source":"/opt/stacks/crypto-portfolio/secrets/email_config","type":"bind"}],"working_dir":"/app"}},"rollback_restored":null,"rollback_started":false,"schema":1,"selected_method":"ALIAS_PINNED_AS_DEBIAN","ssh_method_probes":[{"duration_seconds":0.107,"identity_count":null,"identity_sudo_read_ok":true,"name":"ALIAS_PINNED_AS_DEBIAN","rc":0,"stderr":""},{"duration_seconds":0.129,"identity_count":2,"identity_sudo_read_ok":true,"name":"DIRECT_PINNED_AS_DEBIAN_NO_PROXY","rc":0,"stderr":""}],"status":"OK"}

OUTPUT_END
CHAT_OUTPUT_END
