{"type":"session","version":3,"id":"01a05bd2-ccaf-7e68-b24a-06e374433703","timestamp":"2026-09-01T07:15:36.751Z","cwd":"/home/cube/projects/richard/traning coach"}
{"type":"model_change","id":"1e4da3ef","parentId":null,"timestamp":"2026-09-01T07:15:36.926Z","provider":"openai-codex","modelId":"gpt-5.6-sol"}
{"type":"thinking_level_change","id":"b800259b","parentId":"1e4da3ef","timestamp":"2026-09-01T07:15:36.926Z","thinkingLevel":"medium"}
{"type":"message","id":"d87eff7c","parentId":"b800259b","timestamp":"2026-09-01T07:15:36.930Z","message":{"role":"user","content":[{"type":"text","text":"You are running as an omo senpi-task child.\nTask id: st_01a05bd2.\nParent session: 01a04e1a-4e0a-7c69-845d-0b5d1e71f82d.\nRoot session: 01a04e1a-4e0a-7c69-845d-0b5d1e71f82d.\nDepth: 1.\n\nTask:\nTASK: Fresh independent AdversarialVerify of the source-only r71b maintenance runtime DoneClaim. DELIVERABLE: `/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json` with verdict confirmed/needs-fix, confidence, blocker_count, evidence/repro/cleanup. READ-ONLY except evidence. WORKTREE `/home/cube/projects/richard/.worktrees/nutricoach-v150-combined`; no Git/GitHub, source edits, network/customer/provider/package/live actions. Hash-match all 8 changed/new runtime files and actual tests to receipt. Inspect full contract/store/io/gate/propagation call path and prove gate is after authority/projection validation but before `Topic59PublicationLedger.claim`; maintenance success makes claim and transport unreachable. Reproduce with exact event-driven tests: valid hold, same-day repeat no writes, crash after rename, crash after audit replace, concurrent ticks one audit, historical sending rows unchanged/no retry, scheduler ok+sent false, tomorrow normal fake send once. Run full negative matrix including canonical JSON, boundary hashes, early/expired/replayed/wrong bindings, file kinds/owner/mode/nlink/symlink/hardlink/partial state; every reject zero claim/provider/network and no delivery state. Independently run affected Topic59/weekly/cron 189+ matrix and manual actual projector->dispatcher->Telegram typed result->launch_scheduled_card->scheduler bridge with socket guard. Require two same-day noop, one audit, delivery ledger unchanged, send/edit/network0; tomorrow fake send1. Privacy scan audit has no card/customer/raw Telegram/value/message/receipt. Run current LSP diagnostics on every changed file; resolve whether prior new-import errors are stale by comparing fresh language-server and basedpyright. Require no new changed-region diagnostics; Ruff/ty/basedpyright/compile/import; AST/text scan no Any/cast/ignore/noqa/broad catch/sleep/assert weakening; LOC limits and source unchanged during review. Verify package/live roots untouched. Return confirmed only if all contract and strict gates pass.\n\n<Category_Context name=\"deep\">\nYou are operating in DEEP mode. This is the category reserved for goal-oriented autonomous work on hairy problems that reward thorough exploration and comprehensive solutions.\n\nThe orchestrator chose this category because the task benefits from depth over speed. You should feel empowered to spend the time needed: five to fifteen minutes of silent exploration before the first edit is normal and correct. Rushing to implementation on a deep task is a failure mode, not a feature.\n\n# How deep mode adjusts the base behavior\n\n**Exploration budget: generous.** Read the files you need, trace dependencies both directions, fire 2-5 explore/librarian sub-agents in parallel for broader questions. Build a complete mental model before the first `apply_patch`. Exploration here is an investment, not overhead.\n\n**Goal, not plan.** You receive a GOAL describing the desired outcome. You figure out HOW to achieve it. The orchestrator deliberately did not hand you a step-by-step plan; producing one and asking for approval is not what was asked. Execute.\n\n**Atomic task treatment.** When the goal contains numbered steps or phases, treat them as sub-steps of ONE task and execute them all in this turn. Splitting them across turns is wrong unless they reveal an architectural blocker that requires the user's input. If the \"steps\" turn out to be genuinely independent tasks that should have been separate delegations, flag that in your final message and refuse the ones beyond scope.\n\n**Root cause bias.** Prefer root-cause fixes over symptom fixes. A null check around `foo()` is a symptom fix; fixing whatever causes `foo()` to return unexpected values is the root fix. Trace at least two levels up before settling on an answer. In deep mode, you have permission (and the expectation) to do the deeper fix.\n\n**Ambition scaled to context.** For brand-new greenfield work, be ambitious. Choose strong defaults, avoid AI-slop aesthetics, produce something you would be proud to hand to another senior engineer. For changes in an existing codebase, be surgical and respect the existing patterns; depth does not mean invasiveness.\n\n**Completion bar: full delivery.** \"Simplified version\", \"proof of concept\", and \"you can extend this later\" are not acceptable deliveries for a deep task. The orchestrator routed here specifically for a complete solution. If you hit a genuine blocker (missing secret, design decision only the user can make, three materially different attempts all failed), document it and return; otherwise, finish the task.\n\n**Status cadence: sparse.** The user is not on the other side of this conversation; the orchestrator is, and they will synthesize your progress. Send commentary only at meaningful phase transitions (starting exploration, starting implementation, starting verification, hitting a genuine blocker). Do not narrate every tool call; silence during focused work is expected.\n</Category_Context>"}],"timestamp":1788246936929}}
{"type":"message","id":"82372aa4","parentId":"d87eff7c","timestamp":"2026-09-01T07:15:47.187Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning environment inspection with find and rg**","startedAt":1788246939410,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967b9b515c87d0a97bb5870ea51e3b\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnudz-9XFvvUXEyu7WcqCP7MgMqWXSv_mPwnVcDFmn9IjeYmUjyspsyt4tzyuxd-SZjT4aXrqGCGPcwsEUVp3bI0rJCT7mU18RuZS7ERTHH9OiThVKB8IyxSUrgruk0Sv8nbIHaMu_hmZAnYqmDe4sczBuANgk22JAxgjY2RI4UL7JC6WnQ4G9DcvTBHa3G2o2DYM3CNAa63Yvc-Bf7BTyHhxP5KaeUJtSi8IWStaglR8pCUWiAJO4t9qUOlVcdFumBt1z9vQf8823taXPrSL3wUXCtWoyaUk4tJLADQZ66SGYRECkG9J-F6BA_WqobwmKR3aan3uKsk3RTQMEp5RlUWX1ZBcZ9I5rphVrlVXSaMSeG-nEZLHNVwUUJtzUYUvBtzKfqLgaWGzdY6hRL9EC0g2y4a74pHHUVADQ16Q7dalOtwu2LqppJXOZWuG5KFd5iQsiKDygj1WS-HBl1IGImlP49-9nBdwJmzgHa7ziiF-qDyOSOnOi1lgy2TYyc4jSb77ZMK5Gr-b2aOb6fIX5HBwhPp6sYtSEylEHXwtg9icKAcOJMpt_XCKLhxXhfO9WzOSnsE-gu6B2N0OTJgOIJN50wzn3naeeKgNZVgM4Pn35XbpqDO_5hrSV0nhWDWIwCcavohF3ti64QUsAezF5ttKdDhQbRc57vdAls6EFJfuaiKPvk88wFBSv5UgO-4nqOshJ5QefD1n3V7ASzs82SeBM1VbalRfy3ecwO3B48G553k_sIn3N6o-vXqVNesnh7b0Q_I7HWxinSy60XqaZSAHWvKcfPuDbWrmjriB1AQVpH5eR01j243AedTZqD8sd1qAWEsVnq_pm_JY2yoGJNkQz3YHOlO3NYTUNWAAkoIPFAk5N25J6WZvxOxdTd9LHQxki4Vc1d5PAvzFQPavoJXLw7-TzS_VT2AOPr1YSYT853kalxu1d5DyqLQJ5V6-KcGhBSjd50xhgopL8vbvpVlPnwDSY-rui-5ah7JoLX_ov2ixnzKT5ii_op1SV7yvUxLizHwm6HHO-Ytt8KXkNQY9DslSYnkGpK2upRXJUNepgBe0O5tnl-Ueb7O5snIHNN2NPzB8xglO9uwUO-8AWHORUA94PzIaqZfZOUapZum9PWTcE_Yo8jhLgGVx4RaxSsvoydW1ewhlsC8M3-Ipwupb70tW0A-4PBNwc2iE6w6S-CkBJswF01o1YfbRWYTr22UEjbawS-ryN_1IouWPJNpe_b18ctaEx23roazobhAJzLsrB_fIdGRnXpa54HeTcbo43roFGPeTl3sDXNBOvUu-AoI3H0hKmLPCqkslGyNy46hy7RQcN9GoSgvSsM8yJqVtbborzRAH_9G7zSiwoHUtbQHQMQXD_118qAXMTBTduHt4ppkVqXA0bpSzJ3qs6n2sIhiwJBJdP7uk_GTa2V2-HJzXKdo9bCVhU2mwPfOSCP_aujsRt9baSvbtbjsBiNR_9Djj66d27DCzM6-RxU6ncL2l0JqPF4rVBcjuDfzPWVrad_3DOsStHJt_1Nhjto4Rjc4kYVg8DHPdLa5H-6hpkmGygU3PJ1RtuRyMIbc6u0=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning environment inspection with find and rg**\"}]}","endedAt":1788246941168},{"type":"text","text":"I read this as an independent adversarial verification - I’ll inspect the receipt and full runtime path, reproduce every strict scenario without modifying the worktree, run diagnostics and static gates, then write only the requested evidence JSON.","textSignature":"{\"v\":1,\"id\":\"msg_046f5546d6e20d23016a967b9d15a887d0b6cef9294ef4faf9\",\"phase\":\"commentary\"}"},{"type":"toolCall","id":"call_rYpxRmebpzRnpEQJtIXHT6lC|fc_046f5546d6e20d23016a967ba2fb8887d0b71bd994e146be53","name":"bash","arguments":{"command":"printf '%s\\n' '--- PI env ---'; env | grep '^PI_' | sort; printf '%s\\n' '--- worktree top ---'; find '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' -maxdepth 2 -type f | sort | head -200; printf '%s\\n' '--- evidence files ---'; find '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper' -maxdepth 2 -type f -printf '%f\\n' | sort","timeout":20}},{"type":"toolCall","id":"call_yclvblrqRLZFjGvYFEHxKCaK|fc_046f5546d6e20d23016a967ba2fb9c87d09559cc9e8a2e24ef","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && rg -n --hidden -S 'r71b|maintenance|Topic59PublicationLedger|launch_scheduled_card|scheduler bridge|DoneClaim' . --glob '!*.pyc' --glob '!node_modules/**' --glob '!.git/**'","timeout":30}},{"type":"toolCall","id":"call_O7PR8allyf3eRX7VAK6ooVs3|fc_046f5546d6e20d23016a967ba2fba487d087e5b66a636f1a20","name":"bash","arguments":{"command":"find '/home/cube/projects/richard/traning coach/.omo' -type f \\( -iname '*receipt*' -o -iname '*r71b*' -o -iname '*task-10*' \\) -printf '%p\\n' | sort","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":3739,"output":428,"cacheRead":0,"cacheWrite":0,"reasoning":47,"totalTokens":4167,"cost":{"input":0.018695,"output":0.01284,"cacheRead":0,"cacheWrite":0,"total":0.031535}},"stopReason":"toolUse","timestamp":1788246936930,"responseId":"resp_046f5546d6e20d23016a967b9a5a3887d0948b5b811cefc1e0","rawStopReason":"completed"}}
{"type":"message","id":"e8a7dc35","parentId":"82372aa4","timestamp":"2026-09-01T07:15:47.636Z","message":{"role":"toolResult","toolCallId":"call_rYpxRmebpzRnpEQJtIXHT6lC|fc_046f5546d6e20d23016a967ba2fb8887d0b71bd994e146be53","toolName":"bash","content":[{"type":"text","text":"--- PI env ---\nPI_CODING_AGENT=true\nPI_MODEL=gpt-5.6-sol\nPI_PROMPT_CACHE_SAFE_WAIT_SECONDS=270\nPI_PROVIDER=openai-codex\nPI_REASONING_LEVEL=medium\nPI_SESSION_FILE=/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a05bd2/sessions/st_01a05bd2/2026-09-01T07-15-36-751Z_01a05bd2-ccaf-7e68-b24a-06e374433703.jsonl\nPI_SESSION_ID=01a05bd2-ccaf-7e68-b24a-06e374433703\n--- worktree top ---\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.dockerignore\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.env.example\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.envrc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.gitattributes\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.github/PULL_REQUEST_TEMPLATE.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.github/dependabot.yml\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.gitignore\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.hadolint.yaml\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.mailmap\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.plans/openai-api-server.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.plans/streaming-support.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.pytest-cache/gw-adapter-guard-da4fe42e57456910\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.pytest_cache/.gitignore\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.pytest_cache/CACHEDIR.TAG\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.pytest_cache/README.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.ruff_cache/.gitignore\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.ruff_cache/CACHEDIR.TAG\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/.gitignore\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/.lock\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/CACHEDIR.TAG\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/pyvenv.cfg\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/AGENTS.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/CONTRIBUTING.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/Dockerfile\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/LICENSE\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/MANIFEST.in\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/README.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/README.ur-pk.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/README.zh-CN.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/SECURITY.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/__pycache__/cli.cpython-312.pyc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/__pycache__/hermes_bootstrap.cpython-312.pyc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/__pycache__/hermes_constants.cpython-312.pyc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/__pycache__/hermes_logging.cpython-312.pyc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/__pycache__/hermes_state.cpython-312.pyc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/__pycache__/hermes_time.cpython-312.pyc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/__pycache__/model_tools.cpython-312.pyc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/__pycache__/run_agent.cpython-312.pyc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/__pycache__/toolsets.cpython-312.pyc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/__pycache__/utils.cpython-312.pyc\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/__init__.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/__main__.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/auth.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/edit_approval.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/entry.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/events.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/permissions.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/provenance.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/server.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/session.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_adapter/tools.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_registry/agent.json\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/acp_registry/icon.svg\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/__init__.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/account_usage.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/agent_init.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/agent_runtime_helpers.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/anthropic_adapter.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/async_utils.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/auxiliary_client.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/azure_identity_adapter.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/background_review.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/bedrock_adapter.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/billing_view.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/browser_provider.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/browser_registry.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/chat_completion_helpers.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/codex_responses_adapter.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/codex_runtime.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/coding_context.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/context_compressor.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/context_engine.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/context_references.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/conversation_compression.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/conversation_loop.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/copilot_acp_client.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/credential_persistence.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/credential_pool.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/credential_sources.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/credits_tracker.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/curator.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/curator_backup.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/display.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/error_classifier.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/errors.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/file_safety.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/gemini_cloudcode_adapter.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/gemini_native_adapter.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/gemini_schema.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/google_code_assist.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/google_oauth.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/i18n.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/image_gen_provider.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/image_gen_registry.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/image_routing.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/insights.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/iteration_budget.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/jiter_preload.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/lmstudio_reasoning.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/manual_compression_feedback.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/markdown_tables.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/memory_manager.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/memory_provider.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/message_content.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/message_sanitization.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/model_metadata.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/models_dev.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/moonshot_schema.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/nous_rate_guard.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/onboarding.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/plugin_llm.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/portal_tags.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/process_bootstrap.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/prompt_builder.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/prompt_caching.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/rate_limit_tracker.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/redact.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/retry_utils.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/runtime_cwd.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/secret_scope.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/shell_hooks.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/skill_bundles.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/skill_commands.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/skill_preprocessing.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/skill_utils.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/ssl_guard.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/stream_diag.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/subdirectory_hints.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/system_prompt.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/think_scrubber.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/title_generator.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/tool_dispatch_helpers.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/tool_executor.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/tool_guardrails.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/tool_result_classification.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/trajectory.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/transcription_provider.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/transcription_registry.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/tts_provider.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/tts_registry.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/turn_context.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/turn_finalizer.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/turn_retry_state.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/usage_pricing.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/video_gen_provider.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/video_gen_registry.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/web_search_provider.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/agent/web_search_registry.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/assets/banner.png\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/batch_runner.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cli-config.yaml.example\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cli.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/constraints-termux.txt\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/__init__.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/blueprint_catalog.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/jobs.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/physique_inline_card.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler_provider.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/suggestion_catalog.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/suggestions.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/datagen-config-examples/example_browser_tasks.jsonl\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/datagen-config-examples/run_browser_tasks.sh\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/datagen-config-examples/trajectory_compression.yaml\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/datagen-config-examples/web_research.yaml\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docker-compose.windows.yml\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docker-compose.yml\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docker/SOUL.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docker/entrypoint.sh\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docker/hermes-exec-shim.sh\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docker/main-wrapper.sh\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docker/stage2-hook.sh\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docs/chronos-managed-cron-contract.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docs/hermes-kanban-v1-spec.pdf\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docs/rca-ssl-cacert-post-git-pull.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/docs/relay-connector-contract.md\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/flake.lock\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/flake.nix\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/__init__.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/_commit_receipts.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/authz_mixin.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/channel_directory.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/commit_observer.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/config.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/delivery.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/display_config.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/hooks.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/kanban_watchers.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/memory_monitor.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/message_timestamps.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/mirror.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/pairing.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platform_registry.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/response_filters.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/restart.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/rich_sent_store.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/run.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/runtime_footer.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/session.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/session_context.py\n--- evidence files ---\nmetadata.json\ntask-1-adversarial-verify-r2.json\ntask-1-adversarial-verify.json\ntask-1-domain-unknown.json\ntask-10-cron-no-send-recovery-analysis.json\ntask-10-debug-cron.json\ntask-10-debug-observer-r70.json\ntask-10-next-cron-no-send.json\ntask-10-r70-health-recovery.json\ntask-10-r71-production.json\ntask-10-r71b-maintenance-codemap.json\ntask-10-r71b-maintenance-design.json\ntask-10-r71b-maintenance-runtime.json\ntask-10-r71b-maintenance-runtime.json.orig\ntask-2-adversarial-verify-r2.json\ntask-2-adversarial-verify-r3.json\ntask-2-adversarial-verify.json\ntask-2-binding-projection.json\ntask-3-adversarial-verify-r2-manual.json\ntask-3-adversarial-verify-r2-transcript.txt\ntask-3-adversarial-verify-r2-visual-qa.json\ntask-3-adversarial-verify-r2.json\ntask-3-adversarial-verify-r3-cards.png\ntask-3-adversarial-verify-r3-cards.txt\ntask-3-adversarial-verify-r3-manual.json\ntask-3-adversarial-verify-r3-tui-check.json\ntask-3-adversarial-verify-r3-visual-qa.json\ntask-3-adversarial-verify-r3.json\ntask-3-adversarial-verify.json\ntask-3-card-renderer.json\ntask-3-manual-surface.json\ntask-3-temp-cleanup.txt\ntask-3-terminal-cards-metadata.json\ntask-3-terminal-cards-visual-qa.json\ntask-3-terminal-cards.txt\ntask-3-terminal-transcript.txt\ntask-3-terminal-visual-qa.json\ntask-4-adversarial-verify.json\ntask-4-stepper-orchestrator.json\ntask-5-adversarial-verify.json\ntask-5-telegram-integration.json\ntask-6-adversarial-verify.json\ntask-6-legacy-installed.json\ntask-7-affected-matrix.json\ntask-7-audit-korean-ux-cards.png\ntask-7-audit-korean-ux-cards.txt\ntask-7-audit-korean-ux-fake-transport.json\ntask-7-audit-korean-ux-tui-check.json\ntask-7-audit-korean-ux.json\ntask-7-audit-privacy-security.json\ntask-7-audit-state-quality.json\ntask-7-diagnostics-privacy.json\ntask-7-profile-suite.json\ntask-7-typed-test-fix.json\ntask-8-adversarial-verify.json\ntask-8-r71-candidate.json\ntask-8-r71-r3-preseal-verify.json\ntask-8-r71-r3-source-freeze.json\ntask-8-r71-recovery-analysis.json\ntask-9-audit-closure.json\ntask-9-audit-integrity.json\ntask-9-audit-privacy.json\ntask-9-r71-preseal-rehearsal.json\nterminal-ansi.txt\nterminal.html\nterminal.txt\ntui-check.json\n"}],"isError":false,"timestamp":1788246947636}}
{"type":"message","id":"134f33e8","parentId":"e8a7dc35","timestamp":"2026-09-01T07:15:47.636Z","message":{"role":"toolResult","toolCallId":"call_yclvblrqRLZFjGvYFEHxKCaK|fc_046f5546d6e20d23016a967ba2fb9c87d09559cc9e8a2e24ef","toolName":"bash","content":[{"type":"text","text":"./dualcoach/profile/checkin_cli/nutrition_onboarding_finalization.py:233:            \"maintenance_intent\": baseline.goal_type.value == \"maintain\",\n./hermes_cli/main.py:5720:        f\"  Background skill maintenance is enabled. First pass is deferred \"\n./hermes_cli/main.py:11992:    # curator command — background skill maintenance\n./hermes_cli/main.py:11996:        help=\"Background skill maintenance (curator) — status, run, pause, pin\",\n./build/lib/hermes_state.py:4703:        This is purely a maintenance operation — it changes neither search\n./build/lib/hermes_state.py:4777:        \"\"\"Idempotent auto-maintenance: prune old sessions + optional VACUUM.\n./build/lib/hermes_state.py:4798:            # Skip if another process/call did maintenance recently.\n./build/lib/hermes_state.py:4831:                    \"state.db auto-maintenance: pruned %d session(s) older than %d days%s\",\n./build/lib/hermes_state.py:4838:            logger.warning(\"state.db auto-maintenance failed: %s\", exc)\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/dualcoach/profile/checkin_cli/nutrition_onboarding_finalization.py:203:            \"maintenance_intent\": baseline.goal_type.value == \"maintain\",\n./hermes_cli/commands.py:187:    CommandDef(\"curator\", \"Background skill maintenance (status, run, pin, archive, list-archived)\",\n./dualcoach/profile/checkin_cli/coaching_grounding.py:412:        return value in {\"lean_mass_gain\", \"fat_loss\", \"maintenance\"}\n./.venv/lib/python3.12/site-packages/telegram/ext/filters.py:1965:                # keep this alphabetically sorted for easier maintenance\n./.venv/lib/python3.12/site-packages/PyNaCl-1.5.0.dist-info/METADATA:135:  wheels. Continuing to produce them was a maintenance burden.\n./.venv/lib/python3.12/site-packages/urllib3/connection.py:75:# When it comes time to update this value as a part of regular maintenance\n./.venv/lib/python3.12/site-packages/_pytest/_code/code.py:1518:# for better maintenance.\n./.venv/lib/python3.12/site-packages/slack_sdk-3.40.1.dist-info/METADATA:81:## slackclient is in maintenance mode\n./.venv/lib/python3.12/site-packages/slack_sdk-3.40.1.dist-info/METADATA:83:Are you looking for [slackclient](https://pypi.org/project/slackclient/)? The slackclient project is in maintenance mode now and this [`slack_sdk`](https://pypi.org/project/slack-sdk/) is the successor. If you have time to make a migration to slack_sdk v3, please follow [our migration guide](https://docs.slack.dev/tools/python-slack-sdk/v3-migration/) to ensure your app continues working after updating.\n./build/lib/cron/scheduler.py:2074:            from cron.physique_inline_card import launch_scheduled_card\n./build/lib/cron/scheduler.py:2078:            launched = launch_scheduled_card(\n./build/lib/cron/physique_inline_card.py:71:def launch_scheduled_card(\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/dualcoach/profile/checkin_cli/nutrition_readiness_contract.py:31:    \"target_weight_kg\", \"target_date\", \"maintenance_intent\", \"dietary_preferences\",\n./dualcoach/profile/checkin_cli/nutrition_readiness_contract.py:31:    \"target_weight_kg\", \"target_date\", \"maintenance_intent\", \"dietary_preferences\",\n./build/lib/agent/curator.py:1:\"\"\"Curator — background skill maintenance orchestrator.\n./build/lib/cli.py:1481:def _run_state_db_auto_maintenance(session_db) -> None:\n./build/lib/cli.py:1489:    DB. Never raises — maintenance must never block interactive startup.\n./build/lib/cli.py:1532:        logger.debug(\"state.db auto-maintenance skipped: %s\", exc)\n./build/lib/cli.py:1535:def _run_checkpoint_auto_maintenance() -> None:\n./build/lib/cli.py:1541:    Never raises — maintenance must never block interactive startup.\n./build/lib/cli.py:1556:        logger.debug(\"checkpoint auto-maintenance skipped: %s\", exc)\n./build/lib/cli.py:3579:        # Opportunistic state.db maintenance — runs at most once per\n./build/lib/cli.py:3583:        _run_state_db_auto_maintenance(self._session_db)\n./build/lib/cli.py:3588:        _run_checkpoint_auto_maintenance()\n./build/lib/cli.py:11921:        # Curator — kick off a background skill-maintenance pass on startup\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/dualcoach/profile/checkin_cli/coaching_grounding.py:412:        return value in {\"lean_mass_gain\", \"fat_loss\", \"maintenance\"}\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/dualcoach/profile/tests/test_customer_admin.py:266:            \"maintenance_intent\": True,\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/dualcoach/profile/tests/test_nutrition_readiness.py:80:            \"maintenance_intent\": True,\n./build/lib/hermes_cli/main.py:5720:        f\"  Background skill maintenance is enabled. First pass is deferred \"\n./build/lib/hermes_cli/main.py:11992:    # curator command — background skill maintenance\n./build/lib/hermes_cli/main.py:11996:        help=\"Background skill maintenance (curator) — status, run, pause, pin\",\n./.venv/lib/python3.12/site-packages/attrs-25.4.0.dist-info/METADATA:67:   <strong>Please consider <a href=\"https://github.com/sponsors/hynek\">joining them</a> to help make <em>attrs</em>’s maintenance more sustainable!</strong>\n./.venv/lib/python3.12/site-packages/attrs-25.4.0.dist-info/METADATA:170:The maintainers of *attrs* and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications.\n./build/lib/hermes_cli/web_server.py:2021:# Curator endpoints — background skill-maintenance status + controls.\n./build/lib/hermes_cli/web_server.py:8797:# Diagnostic and maintenance commands.  The long-running / text-output ones\n./build/lib/agent/memory_provider.py:159:        Use for turn-counting, scope management, periodic maintenance.\n./build/lib/hermes_cli/config.py:1177:        # Auto-maintenance: hermes sweeps the checkpoint base at startup\n./build/lib/hermes_cli/config.py:2003:    # Curator — background skill maintenance.\n./build/lib/hermes_cli/config.py:2614:        # Minimum hours between auto-maintenance runs (avoids repeating\n./build/lib/hermes_cli/config.py:5001:    # The curator (background skill maintenance) was added in PR #16049, but\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/tests/gateway/test_telegram_physique_checkin.py:2272:            (\"goal_mode\", \"maintenance\"),\n./build/lib/hermes_cli/commands.py:187:    CommandDef(\"curator\", \"Background skill maintenance (status, run, pin, archive, list-archived)\",\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/tests/gateway/test_nutrition_weekly_operations_topic59_failures.py:33:from gateway.platforms.nutrition_weekly_operations_ledger import Topic59PublicationLedger\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/tests/gateway/test_nutrition_weekly_operations_topic59_failures.py:190:    assert Topic59PublicationLedger(ledger_path).claim(projection).kind == \"send\"\n./build/lib/hermes_cli/gateway.py:159:    all-profile maintenance can protect freshly restarted services. A normal\n./build/lib/tools/checkpoint_manager.py:41:Auto-maintenance\n./build/lib/tools/checkpoint_manager.py:1232:# Auto-maintenance\n./build/lib/tools/checkpoint_manager.py:1275:    Never raises — maintenance must never block interactive startup.\n./build/lib/tools/checkpoint_manager.py:1545:                \"checkpoint auto-maintenance: pruned %d entry(ies) \"\n./build/lib/tools/checkpoint_manager.py:1553:        logger.warning(\"checkpoint auto-maintenance failed: %s\", exc)\n./cron/scheduler.py:2074:            from cron.physique_inline_card import launch_scheduled_card\n./cron/scheduler.py:2078:            launched = launch_scheduled_card(\n./cron/scheduler.py:2086:            if launched.maintenance_noop:\n./cron/scheduler.py:2087:                output += \"Status: maintenance no-op completed\\n\"\n./cron/physique_inline_card.py:57:    maintenance_noop: bool = False\n./cron/physique_inline_card.py:77:def launch_scheduled_card(\n./cron/physique_inline_card.py:97:            sent=sent and not transport.maintenance_noop,\n./cron/physique_inline_card.py:99:            maintenance_noop=transport.maintenance_noop,\n./cron/physique_inline_card.py:133:        self.maintenance_noop: bool = False\n./cron/physique_inline_card.py:150:        self.maintenance_noop = (\n./cron/physique_inline_card.py:152:            and result.raw_response.disposition == \"noop_maintenance\"\n./skills/research/research-paper-writing/references/paper-types.md:313:| **Documentation** | Datasheet, license, maintenance plan |\n./dualcoach/profile/tests/test_customer_admin.py:266:            \"maintenance_intent\": True,\n./dualcoach/profile/tests/test_nutrition_readiness.py:80:            \"maintenance_intent\": True,\n./dualcoach/profile/.venv/lib/python3.12/site-packages/attrs-26.1.0.dist-info/METADATA:69:   <strong>Please consider <a href=\"https://github.com/sponsors/hynek\">joining them</a> to help make <em>attrs</em>’s maintenance more sustainable!</strong>\n./dualcoach/profile/.venv/lib/python3.12/site-packages/attrs-26.1.0.dist-info/METADATA:172:The maintainers of *attrs* and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications.\n./website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent.md:301:/curator [sub]       Background skill maintenance (status, run, pin, archive, …)\n./website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guides/operate-teams-meeting-pipeline.md:91:Description=Hermes Teams pipeline subscription maintenance\n./website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guides/operate-teams-meeting-pipeline.md:105:Description=Run Hermes Teams pipeline subscription maintenance every 12 hours\n./website/docs/user-guide/docker.md:626:If a tool is likely to be useful to most Hermes Agent users, consider contributing it upstream rather than carrying it in a private derived image. Open an issue or pull request on the [hermes-agent repository](https://github.com/NousResearch/hermes-agent) describing the tool and its use case. Tools that get bundled into the official image benefit every user and avoid the maintenance overhead of a downstream fork.\n./website/docs/user-guide/checkpoints-and-rollback.md:96:  # Auto-maintenance (on by default): sweep ~/.hermes/checkpoints/ at startup\n./apps/bootstrap-installer/src/styles.css:8: * Hermes look propagates here automatically with no copy-paste maintenance.\n./website/docs/reference/slash-commands.md:93:| `/curator` | Background skill maintenance — `status`, `run`, `pin`, `archive`. See [Curator](/user-guide/features/curator). |\n./website/docs/reference/slash-commands.md:225:| `/curator [status\\|run\\|pin\\|archive]` | Background skill maintenance controls. |\n./website/docs/reference/cli-commands.md:72:| `hermes curator` | Background skill maintenance — status, run, pause, pin. See [Curator](../user-guide/features/curator.md). |\n./website/docs/guides/operate-teams-meeting-pipeline.md:12:- routine subscription maintenance\n./website/docs/guides/operate-teams-meeting-pipeline.md:91:Description=Hermes Teams pipeline subscription maintenance\n./website/docs/guides/operate-teams-meeting-pipeline.md:105:Description=Run Hermes Teams pipeline subscription maintenance every 12 hours\n./website/docs/user-guide/messaging/matrix.md:889:background maintenance tasks (joined-room tracking, invite handling, E2EE key\n./website/docs/user-guide/messaging/teams-meetings.md:62:- subscription maintenance commands\n./website/docs/user-guide/messaging/teams-meetings.md:211:For subscription maintenance and day-2 operator flows, continue with the guide: [Operate the Teams Meeting Pipeline](/guides/operate-teams-meeting-pipeline).\n./dualcoach/profile/.venv/lib/python3.12/site-packages/pygments/lexers/_lasso_builtins.py:2044:        'cache_maintenance',\n./dualcoach/profile/.venv/lib/python3.12/site-packages/pygments/lexers/_lasso_builtins.py:4419:        'queue_maintenance',\n./website/docs/guides/delegation-patterns.md:113:and maintenance overhead. Compare them and recommend one.\n./website/docs/developer-guide/gateway-internals.md:239:The gateway runs periodic maintenance alongside message handling:\n./website/docs/user-guide/messaging/dingtalk.md:250:**Cause**: Network instability, DingTalk platform maintenance, or credential issues.\n./website/docs/developer-guide/adding-providers.md:423:If the service is just OpenAI-compatible, a custom provider may already solve the user problem with less maintenance.\n./website/docs/developer-guide/architecture.md:198:Prompt construction and maintenance across the conversation lifecycle:\n./website/docs/developer-guide/architecture.md:226:Long-running process with 20 platform adapters, unified session routing, user authorization (allowlists + DM pairing), slash command dispatch, hook system, cron ticking, and background maintenance.\n./website/docs/user-guide/features/web-dashboard.md:366:- **Skill curator** — the background skill-maintenance status (active / paused, interval, last run) with pause/resume and a run-now button. Mirrors `hermes curator`.\n./website/docs/user-guide/features/web-dashboard.md:540:| `POST /api/ops/doctor` · `/security-audit` · `/backup` · `/import` | Diagnostics & maintenance (backgrounded; tail via `/api/actions/{name}/status`) |\n./website/docs/user-guide/skills/optional/software-development/software-development-rest-graphql-debug.md:305:- **503** — overloaded / maintenance. Check status page.\n./website/docs/user-guide/skills/optional/health/health-fitness-nutrition.md:53:- Macro ratios for cutting, bulking, or maintenance\n./website/docs/user-guide/features/curator.md:4:description: \"Background maintenance for agent-created skills — usage tracking, staleness, archival, and LLM-driven review\"\n./website/docs/user-guide/features/curator.md:9:The curator is a background maintenance pass for **agent-created skills**. It tracks how often each skill is viewed, used, and patched, moves long-unused skills through `active → stale → archived` states, and periodically spawns a short auxiliary-model review that proposes consolidations or patches drift.\n./website/docs/user-guide/features/curator.md:11:It exists so that skills created via the [self-improvement loop](/user-guide/features/skills#agent-managed-skills-skill_manage-tool) don't pile up forever. Every time the agent solves a novel problem and saves a skill, that skill lands in `~/.hermes/skills/`. Without maintenance, you end up with dozens of narrow near-duplicates that pollute the catalog and waste tokens.\n./website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent.md:312:/curator [sub]       Background skill maintenance (status, run, pin, archive, …)\n./website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent.md:686:Background maintenance for agent-created skills. Tracks usage, marks\n\n\n[Showing lines 248-354 of 354 (50.0KB limit). Full output: /home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-4acb0684e2540fe8.log]"}],"details":{"truncation":{"content":"./dualcoach/profile/checkin_cli/nutrition_onboarding_finalization.py:233:            \"maintenance_intent\": baseline.goal_type.value == \"maintain\",\n./hermes_cli/main.py:5720:        f\"  Background skill maintenance is enabled. First pass is deferred \"\n./hermes_cli/main.py:11992:    # curator command — background skill maintenance\n./hermes_cli/main.py:11996:        help=\"Background skill maintenance (curator) — status, run, pause, pin\",\n./build/lib/hermes_state.py:4703:        This is purely a maintenance operation — it changes neither search\n./build/lib/hermes_state.py:4777:        \"\"\"Idempotent auto-maintenance: prune old sessions + optional VACUUM.\n./build/lib/hermes_state.py:4798:            # Skip if another process/call did maintenance recently.\n./build/lib/hermes_state.py:4831:                    \"state.db auto-maintenance: pruned %d session(s) older than %d days%s\",\n./build/lib/hermes_state.py:4838:            logger.warning(\"state.db auto-maintenance failed: %s\", exc)\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/dualcoach/profile/checkin_cli/nutrition_onboarding_finalization.py:203:            \"maintenance_intent\": baseline.goal_type.value == \"maintain\",\n./hermes_cli/commands.py:187:    CommandDef(\"curator\", \"Background skill maintenance (status, run, pin, archive, list-archived)\",\n./dualcoach/profile/checkin_cli/coaching_grounding.py:412:        return value in {\"lean_mass_gain\", \"fat_loss\", \"maintenance\"}\n./.venv/lib/python3.12/site-packages/telegram/ext/filters.py:1965:                # keep this alphabetically sorted for easier maintenance\n./.venv/lib/python3.12/site-packages/PyNaCl-1.5.0.dist-info/METADATA:135:  wheels. Continuing to produce them was a maintenance burden.\n./.venv/lib/python3.12/site-packages/urllib3/connection.py:75:# When it comes time to update this value as a part of regular maintenance\n./.venv/lib/python3.12/site-packages/_pytest/_code/code.py:1518:# for better maintenance.\n./.venv/lib/python3.12/site-packages/slack_sdk-3.40.1.dist-info/METADATA:81:## slackclient is in maintenance mode\n./.venv/lib/python3.12/site-packages/slack_sdk-3.40.1.dist-info/METADATA:83:Are you looking for [slackclient](https://pypi.org/project/slackclient/)? The slackclient project is in maintenance mode now and this [`slack_sdk`](https://pypi.org/project/slack-sdk/) is the successor. If you have time to make a migration to slack_sdk v3, please follow [our migration guide](https://docs.slack.dev/tools/python-slack-sdk/v3-migration/) to ensure your app continues working after updating.\n./build/lib/cron/scheduler.py:2074:            from cron.physique_inline_card import launch_scheduled_card\n./build/lib/cron/scheduler.py:2078:            launched = launch_scheduled_card(\n./build/lib/cron/physique_inline_card.py:71:def launch_scheduled_card(\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/dualcoach/profile/checkin_cli/nutrition_readiness_contract.py:31:    \"target_weight_kg\", \"target_date\", \"maintenance_intent\", \"dietary_preferences\",\n./dualcoach/profile/checkin_cli/nutrition_readiness_contract.py:31:    \"target_weight_kg\", \"target_date\", \"maintenance_intent\", \"dietary_preferences\",\n./build/lib/agent/curator.py:1:\"\"\"Curator — background skill maintenance orchestrator.\n./build/lib/cli.py:1481:def _run_state_db_auto_maintenance(session_db) -> None:\n./build/lib/cli.py:1489:    DB. Never raises — maintenance must never block interactive startup.\n./build/lib/cli.py:1532:        logger.debug(\"state.db auto-maintenance skipped: %s\", exc)\n./build/lib/cli.py:1535:def _run_checkpoint_auto_maintenance() -> None:\n./build/lib/cli.py:1541:    Never raises — maintenance must never block interactive startup.\n./build/lib/cli.py:1556:        logger.debug(\"checkpoint auto-maintenance skipped: %s\", exc)\n./build/lib/cli.py:3579:        # Opportunistic state.db maintenance — runs at most once per\n./build/lib/cli.py:3583:        _run_state_db_auto_maintenance(self._session_db)\n./build/lib/cli.py:3588:        _run_checkpoint_auto_maintenance()\n./build/lib/cli.py:11921:        # Curator — kick off a background skill-maintenance pass on startup\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/dualcoach/profile/checkin_cli/coaching_grounding.py:412:        return value in {\"lean_mass_gain\", \"fat_loss\", \"maintenance\"}\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/dualcoach/profile/tests/test_customer_admin.py:266:            \"maintenance_intent\": True,\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/dualcoach/profile/tests/test_nutrition_readiness.py:80:            \"maintenance_intent\": True,\n./build/lib/hermes_cli/main.py:5720:        f\"  Background skill maintenance is enabled. First pass is deferred \"\n./build/lib/hermes_cli/main.py:11992:    # curator command — background skill maintenance\n./build/lib/hermes_cli/main.py:11996:        help=\"Background skill maintenance (curator) — status, run, pause, pin\",\n./.venv/lib/python3.12/site-packages/attrs-25.4.0.dist-info/METADATA:67:   <strong>Please consider <a href=\"https://github.com/sponsors/hynek\">joining them</a> to help make <em>attrs</em>’s maintenance more sustainable!</strong>\n./.venv/lib/python3.12/site-packages/attrs-25.4.0.dist-info/METADATA:170:The maintainers of *attrs* and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications.\n./build/lib/hermes_cli/web_server.py:2021:# Curator endpoints — background skill-maintenance status + controls.\n./build/lib/hermes_cli/web_server.py:8797:# Diagnostic and maintenance commands.  The long-running / text-output ones\n./build/lib/agent/memory_provider.py:159:        Use for turn-counting, scope management, periodic maintenance.\n./build/lib/hermes_cli/config.py:1177:        # Auto-maintenance: hermes sweeps the checkpoint base at startup\n./build/lib/hermes_cli/config.py:2003:    # Curator — background skill maintenance.\n./build/lib/hermes_cli/config.py:2614:        # Minimum hours between auto-maintenance runs (avoids repeating\n./build/lib/hermes_cli/config.py:5001:    # The curator (background skill maintenance) was added in PR #16049, but\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/tests/gateway/test_telegram_physique_checkin.py:2272:            (\"goal_mode\", \"maintenance\"),\n./build/lib/hermes_cli/commands.py:187:    CommandDef(\"curator\", \"Background skill maintenance (status, run, pin, archive, list-archived)\",\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/tests/gateway/test_nutrition_weekly_operations_topic59_failures.py:33:from gateway.platforms.nutrition_weekly_operations_ledger import Topic59PublicationLedger\n./.omo/evidence/nutricoach-v150-combined/task-1-candidate/snapshot/source/tests/gateway/test_nutrition_weekly_operations_topic59_failures.py:190:    assert Topic59PublicationLedger(ledger_path).claim(projection).kind == \"send\"\n./build/lib/hermes_cli/gateway.py:159:    all-profile maintenance can protect freshly restarted services. A normal\n./build/lib/tools/checkpoint_manager.py:41:Auto-maintenance\n./build/lib/tools/checkpoint_manager.py:1232:# Auto-maintenance\n./build/lib/tools/checkpoint_manager.py:1275:    Never raises — maintenance must never block interactive startup.\n./build/lib/tools/checkpoint_manager.py:1545:                \"checkpoint auto-maintenance: pruned %d entry(ies) \"\n./build/lib/tools/checkpoint_manager.py:1553:        logger.warning(\"checkpoint auto-maintenance failed: %s\", exc)\n./cron/scheduler.py:2074:            from cron.physique_inline_card import launch_scheduled_card\n./cron/scheduler.py:2078:            launched = launch_scheduled_card(\n./cron/scheduler.py:2086:            if launched.maintenance_noop:\n./cron/scheduler.py:2087:                output += \"Status: maintenance no-op completed\\n\"\n./cron/physique_inline_card.py:57:    maintenance_noop: bool = False\n./cron/physique_inline_card.py:77:def launch_scheduled_card(\n./cron/physique_inline_card.py:97:            sent=sent and not transport.maintenance_noop,\n./cron/physique_inline_card.py:99:            maintenance_noop=transport.maintenance_noop,\n./cron/physique_inline_card.py:133:        self.maintenance_noop: bool = False\n./cron/physique_inline_card.py:150:        self.maintenance_noop = (\n./cron/physique_inline_card.py:152:            and result.raw_response.disposition == \"noop_maintenance\"\n./skills/research/research-paper-writing/references/paper-types.md:313:| **Documentation** | Datasheet, license, maintenance plan |\n./dualcoach/profile/tests/test_customer_admin.py:266:            \"maintenance_intent\": True,\n./dualcoach/profile/tests/test_nutrition_readiness.py:80:            \"maintenance_intent\": True,\n./dualcoach/profile/.venv/lib/python3.12/site-packages/attrs-26.1.0.dist-info/METADATA:69:   <strong>Please consider <a href=\"https://github.com/sponsors/hynek\">joining them</a> to help make <em>attrs</em>’s maintenance more sustainable!</strong>\n./dualcoach/profile/.venv/lib/python3.12/site-packages/attrs-26.1.0.dist-info/METADATA:172:The maintainers of *attrs* and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications.\n./website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent.md:301:/curator [sub]       Background skill maintenance (status, run, pin, archive, …)\n./website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guides/operate-teams-meeting-pipeline.md:91:Description=Hermes Teams pipeline subscription maintenance\n./website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/guides/operate-teams-meeting-pipeline.md:105:Description=Run Hermes Teams pipeline subscription maintenance every 12 hours\n./website/docs/user-guide/docker.md:626:If a tool is likely to be useful to most Hermes Agent users, consider contributing it upstream rather than carrying it in a private derived image. Open an issue or pull request on the [hermes-agent repository](https://github.com/NousResearch/hermes-agent) describing the tool and its use case. Tools that get bundled into the official image benefit every user and avoid the maintenance overhead of a downstream fork.\n./website/docs/user-guide/checkpoints-and-rollback.md:96:  # Auto-maintenance (on by default): sweep ~/.hermes/checkpoints/ at startup\n./apps/bootstrap-installer/src/styles.css:8: * Hermes look propagates here automatically with no copy-paste maintenance.\n./website/docs/reference/slash-commands.md:93:| `/curator` | Background skill maintenance — `status`, `run`, `pin`, `archive`. See [Curator](/user-guide/features/curator). |\n./website/docs/reference/slash-commands.md:225:| `/curator [status\\|run\\|pin\\|archive]` | Background skill maintenance controls. |\n./website/docs/reference/cli-commands.md:72:| `hermes curator` | Background skill maintenance — status, run, pause, pin. See [Curator](../user-guide/features/curator.md). |\n./website/docs/guides/operate-teams-meeting-pipeline.md:12:- routine subscription maintenance\n./website/docs/guides/operate-teams-meeting-pipeline.md:91:Description=Hermes Teams pipeline subscription maintenance\n./website/docs/guides/operate-teams-meeting-pipeline.md:105:Description=Run Hermes Teams pipeline subscription maintenance every 12 hours\n./website/docs/user-guide/messaging/matrix.md:889:background maintenance tasks (joined-room tracking, invite handling, E2EE key\n./website/docs/user-guide/messaging/teams-meetings.md:62:- subscription maintenance commands\n./website/docs/user-guide/messaging/teams-meetings.md:211:For subscription maintenance and day-2 operator flows, continue with the guide: [Operate the Teams Meeting Pipeline](/guides/operate-teams-meeting-pipeline).\n./dualcoach/profile/.venv/lib/python3.12/site-packages/pygments/lexers/_lasso_builtins.py:2044:        'cache_maintenance',\n./dualcoach/profile/.venv/lib/python3.12/site-packages/pygments/lexers/_lasso_builtins.py:4419:        'queue_maintenance',\n./website/docs/guides/delegation-patterns.md:113:and maintenance overhead. Compare them and recommend one.\n./website/docs/developer-guide/gateway-internals.md:239:The gateway runs periodic maintenance alongside message handling:\n./website/docs/user-guide/messaging/dingtalk.md:250:**Cause**: Network instability, DingTalk platform maintenance, or credential issues.\n./website/docs/developer-guide/adding-providers.md:423:If the service is just OpenAI-compatible, a custom provider may already solve the user problem with less maintenance.\n./website/docs/developer-guide/architecture.md:198:Prompt construction and maintenance across the conversation lifecycle:\n./website/docs/developer-guide/architecture.md:226:Long-running process with 20 platform adapters, unified session routing, user authorization (allowlists + DM pairing), slash command dispatch, hook system, cron ticking, and background maintenance.\n./website/docs/user-guide/features/web-dashboard.md:366:- **Skill curator** — the background skill-maintenance status (active / paused, interval, last run) with pause/resume and a run-now button. Mirrors `hermes curator`.\n./website/docs/user-guide/features/web-dashboard.md:540:| `POST /api/ops/doctor` · `/security-audit` · `/backup` · `/import` | Diagnostics & maintenance (backgrounded; tail via `/api/actions/{name}/status`) |\n./website/docs/user-guide/skills/optional/software-development/software-development-rest-graphql-debug.md:305:- **503** — overloaded / maintenance. Check status page.\n./website/docs/user-guide/skills/optional/health/health-fitness-nutrition.md:53:- Macro ratios for cutting, bulking, or maintenance\n./website/docs/user-guide/features/curator.md:4:description: \"Background maintenance for agent-created skills — usage tracking, staleness, archival, and LLM-driven review\"\n./website/docs/user-guide/features/curator.md:9:The curator is a background maintenance pass for **agent-created skills**. It tracks how often each skill is viewed, used, and patched, moves long-unused skills through `active → stale → archived` states, and periodically spawns a short auxiliary-model review that proposes consolidations or patches drift.\n./website/docs/user-guide/features/curator.md:11:It exists so that skills created via the [self-improvement loop](/user-guide/features/skills#agent-managed-skills-skill_manage-tool) don't pile up forever. Every time the agent solves a novel problem and saves a skill, that skill lands in `~/.hermes/skills/`. Without maintenance, you end up with dozens of narrow near-duplicates that pollute the catalog and waste tokens.\n./website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent.md:312:/curator [sub]       Background skill maintenance (status, run, pin, archive, …)\n./website/docs/user-guide/skills/bundled/autonomous-ai-agents/autonomous-ai-agents-hermes-agent.md:686:Background maintenance for agent-created skills. Tracks usage, marks\n","truncated":true,"truncatedBy":"bytes","totalLines":354,"totalBytes":307614,"outputLines":107,"outputBytes":15173,"lastLinePartial":false,"firstLineExceedsLimit":false,"maxLines":2000,"maxBytes":51200},"fullOutputPath":"/home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-4acb0684e2540fe8.log"},"isError":false,"timestamp":1788246947636}}
{"type":"message","id":"f7f8ed24","parentId":"134f33e8","timestamp":"2026-09-01T07:15:47.636Z","message":{"role":"toolResult","toolCallId":"call_O7PR8allyf3eRX7VAK6ooVs3|fc_046f5546d6e20d23016a967ba2fba487d087e5b66a636f1a20","toolName":"bash","content":[{"type":"text","text":"/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/focused-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/input-authentication-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/inventory-v2-supersession-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/preclean-fixture-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/real-handler-integration-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/task22-permission-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/trainer-free-migration-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/artifacts/installed-wheel-root/gateway/platforms/telegram_polling_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate18-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate18-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate19-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate19-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate20-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate20-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/receipt-index.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/receipt-index.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-telegram-poll-recovery-st_01a00d2c/run-2/original-receipt.byte-exact.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-telegram-poll-recovery-st_01a00d2c/run-3/original-receipt.byte-exact.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-telegram-poll-recovery-st_01a00d2c/run-4/original-receipt.byte-exact.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/archive-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v2-fail.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v3-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v4-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/focused-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/input-authentication-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/inventory-v2-supersession-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/preclean-fixture-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/real-handler-integration-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/task22-permission-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/trainer-free-migration-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/artifacts/installed-wheel-root/gateway/platforms/telegram_polling_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate18-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate18-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate19-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate19-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate20-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate20-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/receipt-index.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/receipt-index.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/archive-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v2-fail.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v3-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v4-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/focused-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/input-authentication-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/inventory-v2-supersession-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/preclean-fixture-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/real-handler-integration-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/task22-permission-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/trainer-free-migration-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/artifacts/installed-wheel-root/gateway/platforms/telegram_polling_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate18-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate18-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate19-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate19-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate20-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate20-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/receipt-index.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/receipt-index.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/final-reaudit-receipt-v2-fail.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/final-reaudit-receipt-v3-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/final-reaudit-receipt-v4-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/final-reaudit-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/focused-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/input-authentication-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/preclean-fixture-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/real-handler-integration-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/task22-permission-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/trainer-free-migration-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-v1-acceptance-inventory-v2-supersession-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v23/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v23/receipts/hermetic-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/data/customer-cleanup/archives/0d911920d56d4bf3a77f8becbee34782/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/receipts/hermetic-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/data/customer-cleanup/archives/6380632320f143eea1515feb1e24ace6/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/data/customer-cleanup/archives/1c40e09bf6a549b48e87b1d9445131c2/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/receipts/hermetic-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/data/customer-cleanup/archives/e391d2960d1040a9a480fc87dc0c5dd3/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26-postfreeze-receipts/independent-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/data/customer-cleanup/archives/1c40e09bf6a549b48e87b1d9445131c2/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/receipts/hermetic-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/data/customer-cleanup/archives/e391d2960d1040a9a480fc87dc0c5dd3/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/data/customer-cleanup/archives/9ab4a5dd398c4b118f26d0675499ddd5/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/qualification/profile-qualification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/receipts/final-state-v7-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/receipts/hermetic-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/data/customer-cleanup/archives/4db870b8280d47f9baa79a446cd6c7ef/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-v33-postfreeze-receipts-st_01a01970/rehydrated-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-v1-successor-archive/migration-receipt.redacted.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/data/customer-cleanup/archives/7771853809104fc0b3f7d0aeeb7c0700/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/data/customer-cleanup/archives/d318f7974b32471c8f1f14d715bce425/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/data/customer-cleanup/archives/d666b716168b4a1db958bd1ea1c6bfc4/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/ledger-ready-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/data/customer-cleanup/archives/e064db79332248f6a4b7bf6b4c484c4d/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/data/customer-cleanup/archives/4c7bf4dcc0aa4c3eab1e135cfe945f22/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/data/customer-cleanup/archives/1057bf46fe1c444aa72fc1d5ba57b316/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/ledger-ready-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/data/customer-cleanup/archives/113021e36225467fa0c7164b1f1cacc8/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/receipt-hashes.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-live-cleanup-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-rehearsal-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-supplemental-live-cleanup-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-supplemental-live-nonmutation-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-supplemental-rehearsal-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-supplemental-verification-receipt-final.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-supplemental-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_019ff5ec/evidence/task23-prepare-receipt.redacted.json\n\n[Showing lines 7508-7734 of 7734 (50.0KB limit). Full output: /home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-be7723f607f5adec.log]"}],"details":{"truncation":{"content":"/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/focused-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/input-authentication-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/inventory-v2-supersession-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/preclean-fixture-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/real-handler-integration-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/task22-permission-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/trainer-free-migration-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/artifacts/installed-wheel-root/gateway/platforms/telegram_polling_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate18-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate18-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate19-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate19-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate20-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate20-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/receipt-index.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-summary-production-successor-e2f1699e8586ed3f835eaa2a3eaeaecaf5e52a4ad82aa931caade0ed377077ce/historical/e788-candidate/historical/gate18-20-evidence/receipts/receipt-index.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-telegram-poll-recovery-st_01a00d2c/run-2/original-receipt.byte-exact.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-telegram-poll-recovery-st_01a00d2c/run-3/original-receipt.byte-exact.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-telegram-poll-recovery-st_01a00d2c/run-4/original-receipt.byte-exact.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/archive-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v2-fail.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v3-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v4-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/focused-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/input-authentication-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/inventory-v2-supersession-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/preclean-fixture-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/real-handler-integration-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/task22-permission-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/trainer-free-migration-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/30b-candidate/historical/runbook/runbook-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/artifacts/installed-wheel-root/gateway/platforms/telegram_polling_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate18-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate18-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate19-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate19-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate20-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/gate20-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/receipt-index.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-test-isolated-successor-e788f5d56aef04da3097007e2ab79614f2060607d4331162169733b1208d9377/historical/gate18-20-evidence/receipts/receipt-index.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/archive-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v2-fail.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v3-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt-v4-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/final-reaudit-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/focused-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/input-authentication-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/inventory-v2-supersession-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/preclean-fixture-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/real-handler-integration-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/task22-permission-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/predecessor-candidate/historical/trainer-free-v4/trainer-free-migration-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v2.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v3.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v4.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v5.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt-v6.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/30b-candidate/historical/runbook/runbook-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/artifacts/installed-wheel-root/gateway/platforms/telegram_polling_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate18-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate18-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate19-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate19-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate20-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/gate20-receipt.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/receipt-index.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-token-rotation-successor-4a8627af8f9b931d537e17dbd3e357b7a0f2b2abffdbf28f6ad19a8d32893ec0/historical/predecessor-candidate/historical/e2f-candidate/historical/e788-candidate/historical/gate18-20-evidence/receipts/receipt-index.json.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/final-reaudit-receipt-v2-fail.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/final-reaudit-receipt-v3-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/final-reaudit-receipt-v4-ready.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/final-reaudit-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/focused-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/input-authentication-receipt-v3.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/preclean-fixture-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/real-handler-integration-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/task22-permission-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-successor-seal-input-653cc2f0b47873e95f985ea3eb32b8f2c044d6de64cd9e8fe37ebcec67c7a723/trainer-free-migration-binding-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-trainer-free-v1-acceptance-inventory-v2-supersession-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v23/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v23/receipts/hermetic-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/data/customer-cleanup/archives/0d911920d56d4bf3a77f8becbee34782/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/receipts/hermetic-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/data/customer-cleanup/archives/6380632320f143eea1515feb1e24ace6/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v24/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/data/customer-cleanup/archives/1c40e09bf6a549b48e87b1d9445131c2/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/receipts/hermetic-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/data/customer-cleanup/archives/e391d2960d1040a9a480fc87dc0c5dd3/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v25/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26-postfreeze-receipts/independent-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/data/customer-cleanup/archives/1c40e09bf6a549b48e87b1d9445131c2/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/receipts/hermetic-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/data/customer-cleanup/archives/e391d2960d1040a9a480fc87dc0c5dd3/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-transcript-contract-installed-st_01a01574-v26/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/data/customer-cleanup/archives/9ab4a5dd398c4b118f26d0675499ddd5/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/qualification/profile-qualification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/receipts/final-state-v7-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/receipts/hermetic-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/data/customer-cleanup/archives/4db870b8280d47f9baa79a446cd6c7ef/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-prefreeze-st_01a0195c-v33/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-ty-python312-v33-postfreeze-receipts-st_01a01970/rehydrated-ty/ty-surface-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-v1-successor-archive/migration-receipt.redacted.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/data/customer-cleanup/archives/7771853809104fc0b3f7d0aeeb7c0700/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/data/customer-cleanup/archives/d318f7974b32471c8f1f14d715bce425/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v6/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/data/customer-cleanup/archives/d666b716168b4a1db958bd1ea1c6bfc4/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/ledger-ready-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/data/customer-cleanup/archives/e064db79332248f6a4b7bf6b4c484c4d/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v7/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/data/customer-cleanup/archives/4c7bf4dcc0aa4c3eab1e135cfe945f22/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v8/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/gateway/_commit_receipts.py\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/data/customer-cleanup/archives/1057bf46fe1c444aa72fc1d5ba57b316/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/installed-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/ledger-ready-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/data/customer-cleanup/archives/113021e36225467fa0c7164b1f1cacc8/files/data/customers/client_001/nutrition-onboarding/readiness-receipt-v1.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/data/onboarding/telegram-publication-outbox-v1/.receipt-key\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/data/owner-actions/customer-surface-receipts-v2/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/data/source-deployment-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/observer-receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-zero-inotify-portable-installed-st_01a01574-v9/source-golden-bundle/task26-evidence/receipts.jsonl\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/receipt-hashes.sha256\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-live-cleanup-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-rehearsal-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-supplemental-live-cleanup-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-supplemental-live-nonmutation-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-supplemental-rehearsal-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-supplemental-verification-receipt-final.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-supplemental-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/evidence/task27/task27-verification-receipt.json\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_019ff5ec/evidence/task23-prepare-receipt.redacted.json","truncated":true,"truncatedBy":"bytes","totalLines":7734,"totalBytes":1862063,"outputLines":227,"outputBytes":50965,"lastLinePartial":false,"firstLineExceedsLimit":false,"maxLines":2000,"maxBytes":51200},"fullOutputPath":"/home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-be7723f607f5adec.log"},"isError":false,"timestamp":1788246947636}}
{"type":"message","id":"34a75ba0","parentId":"f7f8ed24","timestamp":"2026-09-01T07:15:54.541Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","startedAt":1788246949628,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967ba58ba887d0b30b9a2fa91dd7f5\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnuqcay9xpzDkk1bkIIsZH23g5WVTbsdo-XZ2RxY8GDwKws0X30kAh3cjlcipFkZ3tSU2Mt53HM8FZp9sw6DZkx4q47TXj9rMH9pxLq16f_pfNm5WEd5r7UiEnHXj2lllRzPh6wy2HTaLQLBD5xFhVEnduVDN2Dc4JRMbjJoWdKZKc9BHJfoevc-u9djd9VzgqKwjEZD85pERUmFQQJVKWLnp_V0BiNOoMoeXhSW_BVTCZq0RTG2s-4FSmt24Et5dqzb389D91rSMu7nRKBvQfJMvrD_TPczDkNPIaFJTZHzv3uO2yW9WXdYObufrNj8xgNiBQeHeM7U6rg0lvulm94DmxVMOd_JQqgJ2kB9mQFI2TF63ZZGfsr3Vz8YLxnrpkH8LdTahxN-xa5hiosYIGdSJpaMy1WwONF6m5GSgpzVGruJit8APfBCD_S6m98XLtrv9fXMp1-c3V3QhM3stmXlASApmY0bKbkX4Pf5-r-Y1dC7Bkcd8ODLWkM1C_ZXNNAX5F3Hg0Yo-aH3_Raavu88xHglGHfbI4UR3qjLUTGIPph1Af6xPHs1KCFs3WOLUfEub1xGv38SZwvSqESpjZRdTJZZ2fj2alcJKXbR91pF_2_pC012GlX8uGlgPNALCaH02MGQmtkEBANFW6k5fbAIgtMF3AFeH5l2Nlit0VEtSlVR5NV3-JjD6un6T5gAxMofJWwfiPQonLupZvubBc4a3anmkzmKgbktkyS-9cmUdFDEzvhLLICFPL5oWw2POibSMIDuYzwPe-JtHLib6QRBjBUO78GA3SOYdomOKfOLXKX4dKfK-HTRC6vc1calNJNQ-hIGEnOcoF_X6SodV9lLjQJUlrtAWh03CvMetyHnnAzBMViF0phkXgkW1jTh4F2MOYix5HyZfbVg_lS8cwwDrZhRw-djR1kA-edWkoSwZ_1RATHQKSNmqlEV3_JAOnkcsXgMu5ZLwUAAqNjNOnPapshY1bF0DTOYAxgzEqsoMPUZicxChcMW48aK5FywlYWmryBLGuXgJyXr8S7ZDqLH6FCdU21x0fze-pzjT--ODrc_5lIf2peShrVFV_H5MPIuDD7z8wIXdJX8_hr_ZJOnLVVJTwGcuVxuDZb2eNKy18NfJptnAIPVusO9ISwRLlebk84585HSrZlli0877NEOKbDFg2QBsjANocu_LbDb5Jm7yJlLWY0Gf2BFmJ5KqwakeIYsD1u9uXb2Fi_dxxx628S4kXmr61MtJnCogsBPANzEvaHCfhsn8UIlDvtW6gEPCHs7SNTX__Ju6RZIsO8f7LECaiNa3wM2vxqIhat_OLM-hh4v5D7alZnqHuPa6l1H\",\"summary\":[]}","endedAt":1788246954461},{"type":"toolCall","id":"call_BiOTCaQOqrMnv2Qethmpqz09|fc_046f5546d6e20d23016a967baa4f3487d0b5bf300c52f9cb95","name":"read","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json"}},{"type":"toolCall","id":"call_8U2BjJZm42LL3JciSRFBMwJh|fc_046f5546d6e20d23016a967baa4f4887d0bddd61dec8955ed3","name":"read","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-codemap.json"}},{"type":"toolCall","id":"call_aDBWrOrEiE15IQJX9wZKRYvg|fc_046f5546d6e20d23016a967baa4f5487d088419b91c1c3f5e7","name":"read","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-design.json"}},{"type":"toolCall","id":"call_3faQHW1gYLdMsItjz8U8RAOx|fc_046f5546d6e20d23016a967baa4f6087d08ec806157162f442","name":"read","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json.orig"}},{"type":"toolCall","id":"call_dTXTue5eEfdC2pipHiAgtiry|fc_046f5546d6e20d23016a967baa4fdc87d08c6ad96d9aebf162","name":"read","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71-production.json"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":26072,"output":267,"cacheRead":3584,"cacheWrite":0,"reasoning":10,"totalTokens":29923,"cost":{"input":0.13036,"output":0.00801,"cacheRead":0.001792,"cacheWrite":0,"total":0.14016199999999998}},"stopReason":"toolUse","timestamp":1788246947710,"responseId":"resp_046f5546d6e20d23016a967ba44ab087d0bac7380a98cf45fb","rawStopReason":"completed"}}
{"type":"message","id":"f0448d47","parentId":"34a75ba0","timestamp":"2026-09-01T07:15:54.559Z","message":{"role":"toolResult","toolCallId":"call_BiOTCaQOqrMnv2Qethmpqz09|fc_046f5546d6e20d23016a967baa4f3487d0b5bf300c52f9cb95","toolName":"read","content":[{"type":"text","text":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-v1\",\n  \"task_id\": \"st_01a05bc2\",\n  \"status\": \"DONE_SOURCE_ONLY\",\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"scope_guards\": {\n    \"git_or_github_actions\": 0,\n    \"network_or_provider_actions\": 0,\n    \"customer_actions\": 0,\n    \"package_preseal_live_profile_credential_root_creations\": 0,\n    \"commits\": 0\n  },\n  \"red_green\": {\n    \"red\": \"pytest collection failed with ModuleNotFoundError for nutrition_weekly_maintenance_contract before runtime modules existed\",\n    \"green\": {\n      \"affected_tests\": 189,\n      \"failed\": 0,\n      \"duration_seconds\": 6.56,\n      \"suites\": [\n        \"new maintenance authority/store/propagation tests\",\n        \"Topic59 projection/publication/failure/r2/Telegram suites\",\n        \"weekly dispatcher epoch2 and host matrix\",\n        \"cron inline-card and scheduler suites\"\n      ]\n    }\n  },\n  \"manual_zero_call_qa\": {\n    \"surface\": \"isolated actual Topic59DayCardProjector -> typed maintenance result -> actual launch_scheduled_card -> run_one_job scheduler bridge\",\n    \"current_day_ticks\": [\"noop_maintenance\", \"noop_maintenance\"],\n    \"current_day_audit_count\": 1,\n    \"current_day_delivery_ledger_rows_before_tomorrow\": 0,\n    \"send_calls_current_day\": 0,\n    \"edit_calls_current_day\": 0,\n    \"network_calls\": 0,\n    \"tomorrow_disposition\": \"sent\",\n    \"tomorrow_fake_transport_send_calls\": 1,\n    \"scheduler_mark_job_run\": [true, null],\n    \"scheduler_status_token\": \"maintenance no-op completed\",\n    \"privacy_oracle\": {\n      \"audit_has_card_text\": false,\n      \"audit_has_raw_customer_or_telegram_identity\": false,\n      \"sent\": false,\n      \"delivered\": false,\n      \"message_id\": null,\n      \"provider_receipt\": null,\n      \"provider_calls\": 0,\n      \"network_calls\": 0\n    }\n  },\n  \"verification\": {\n    \"ruff\": \"PASS\",\n    \"ty_strict_targeted\": \"PASS\",\n    \"basedpyright_strict_targeted\": \"PASS: 0 errors, 0 warnings, 0 notes\",\n    \"lsp\": \"Changed tests and established modules clean; the persistent LSP server retained stale missing-import diagnostics for shell-patched new modules while the fresh strict basedpyright process reported 0 errors. cron/scheduler.py retains its pre-existing legacy diagnostics.\",\n    \"compileall\": \"PASS\",\n    \"import_smoke\": \"PASS\",\n    \"no_excuse_rules_new_runtime_modules\": \"PASS: no violations in 3 files\",\n    \"fixed_sleeps_or_polling_added\": 0\n  },\n  \"source_hashes\": {\n    \"before_anchors\": {\n      \"gateway/platforms/nutrition_weekly_operations.py\": \"52020ac1bd42d8812f7b69d5b74be6322885f6746159298df81a750a1e39d930\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"616b8b4da48d9c2c89336d9e791339c7401c354d67f38831af0f5d155a492cc8\",\n      \"cron/physique_inline_card.py\": \"bdb1a34d16763c9e3cbe687a3617215e32b6c6919c9b49405d42e1ee5831ba5d\",\n      \"cron/scheduler.py\": \"bfe56dcc74a08278671e3e373b0eb8ce624a093b6ed0ad365464e87b1de89709\"\n    },\n    \"after\": {\n      \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n      \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d\",\n      \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542\",\n      \"gateway/platforms/nutrition_weekly_operations.py\": \"b0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e\",\n      \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n      \"cron/physique_inline_card.py\": \"9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2\",\n      \"cron/scheduler.py\": \"09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95\"\n    }\n  },\n  \"loc_review\": {\n    \"nutrition_weekly_maintenance_contract.py\": 137,\n    \"nutrition_weekly_maintenance_io.py\": 99,\n    \"nutrition_weekly_maintenance_store.py\": 208,\n    \"nutrition_weekly_dispatch_result.py\": 14,\n    \"nutrition_weekly_operations.py\": 146,\n    \"nutrition_weekly_dispatcher.py\": 250,\n    \"note\": \"Large inherited telegram.py and scheduler.py received only narrow propagation branches; no adjacent refactor was performed.\"\n  },\n  \"done_claim\": {\n    \"claim\": \"The source-only r71b maintenance runtime increment is implemented and qualified without package, preseal, live, profile, credential, root, provider, customer, network, Git, or commit effects.\",\n    \"single_responsibility\": \"PASS: contract, secure I/O, gate state machine, dispatch result, and bridge propagation are separated by responsibility.\",\n    \"boundary_purity\": \"PASS: strict frozen Pydantic documents parse canonical external JSON once; internal decisions are typed.\",\n    \"variant_discrimination\": \"PASS: maintenance decisions use an exhaustive typed match at the publication boundary.\",\n    \"escape_hatches\": \"PASS: no Any, cast, ignore, noqa, broad catch, or sleep was introduced in the maintenance runtime.\",\n    \"defensive_layer\": \"PASS: checks are limited to credential/filesystem/JSON trust boundaries.\",\n    \"one_off_helpers\": \"PASS: storage helpers encode repeated secure openat and atomic-write contracts.\",\n    \"tests\": \"PASS: reverting the pre-claim gate or typed scheduler branch fails focused behavior tests.\",\n    \"parameter_bloat\": \"PASS: no new function exceeds three independent domain parameters.\",\n    \"redundant_verification\": \"PASS: readback exists only because the explicit durable filesystem contract requires it.\",\n    \"negative_naming\": \"PASS\",\n    \"logging\": \"NOT_TOUCHED\"\n  }\n}\n"}],"isError":false,"timestamp":1788246954559}}
{"type":"message","id":"8c8ca8ed","parentId":"f0448d47","timestamp":"2026-09-01T07:15:54.559Z","message":{"role":"toolResult","toolCallId":"call_8U2BjJZm42LL3JciSRFBMwJh|fc_046f5546d6e20d23016a967baa4f4887d0bddd61dec8955ed3","toolName":"read","content":[{"type":"text","text":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-codemap-v1\",\n  \"source_task_id\": \"st_01a05bb1\",\n  \"status\": \"PASS\",\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"selected_existing_r71\": {\n    \"candidate_root\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71-candidate-r3\",\n    \"candidate_digest\": \"a41c97c8a467b0308b9f50ac072cc3adae1c2d47ca515b76f123e7c1debee9be\",\n    \"preseal_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-transaction-preseal-v15-runtime-authority-r71\",\n    \"preseal_tree_sha256\": \"a76a0961829d8222814c1c88fac8e68f90ad7faf822e6d5ea3efb655545b7ee8\",\n    \"immutable_and_superseded\": true\n  },\n  \"runtime_call_graph\": [\n    \"cron.scheduler.run_one_job -> cron.physique_inline_card.launch_scheduled_card\",\n    \"TelegramAdapter._send_nutrition_coaching_tick_authorized -> dispatch_weekly_operations_tick\",\n    \"dispatch_weekly_operations_tick -> Topic59DayCardProjector.publish\",\n    \"Topic59DayCardProjector.publish -> Topic59PublicationLedger.claim -> transport send/edit\",\n    \"maintenance gate must execute after authority/projection validation and before claim\"\n  ],\n  \"runtime_files\": {\n    \"new\": [\n      \"gateway/platforms/nutrition_weekly_maintenance_contract.py\",\n      \"gateway/platforms/nutrition_weekly_maintenance_store.py\"\n    ],\n    \"modified\": [\n      \"gateway/platforms/nutrition_weekly_operations.py\",\n      \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\",\n      \"gateway/platforms/telegram_weekly_host_dispatch.py\",\n      \"gateway/platforms/telegram.py\",\n      \"cron/physique_inline_card.py\",\n      \"cron/scheduler.py\"\n    ]\n  },\n  \"core_symbols\": [\n    \"Topic59PublicationLedger.claim\",\n    \"Topic59DayCardProjector.publish\",\n    \"dispatch_weekly_operations_tick\",\n    \"RevalidatingTopic59Transport.send/edit\",\n    \"launch_scheduled_card\",\n    \"run_one_job\",\n    \"mark_job_run\"\n  ],\n  \"package_and_live_files\": [\n    \"scripts/nutricoach_v150_live_upgrade_state.py\",\n    \"scripts/nutricoach_v150_host_operations.py\",\n    \"scripts/nutricoach_v150_concrete_host.py\",\n    \"scripts/nutricoach_v150_sealed_target.py\",\n    \"scripts/nutricoach_v150_sealed_controller.py\",\n    \"scripts/nutricoach_v150_controller_worker.py\",\n    \"scripts/nutricoach_v150_detached_bootstrap.py\",\n    \"scripts/execute_nutricoach_v150_sealed_live.py\",\n    \"scripts/prepare_nutricoach_v150_v15_preseal.py\",\n    \"scripts/verify_nutricoach_v150_preseal_v15.py\",\n    \"scripts/rehearse_nutricoach_v150_v15.py\",\n    \"scripts/seal_nutricoach_v150_candidate.py\",\n    \"scripts/verify_nutricoach_v150_candidate.py\",\n    \"scripts/verify_nutricoach_v150_candidate_inputs.py\"\n  ],\n  \"test_seams\": [\n    \"tests/gateway/test_nutrition_weekly_operations_topic59.py\",\n    \"tests/gateway/test_nutrition_weekly_operations_topic59_failures.py\",\n    \"tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py\",\n    \"tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py\",\n    \"tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py\",\n    \"tests/cron/test_physique_inline_card.py\",\n    \"tests/cron/test_scheduler.py\",\n    \"tests/test_nutricoach_v150_sealed_controller.py\",\n    \"tests/test_nutricoach_v150_v15_safety.py\",\n    \"tests/test_nutricoach_v150_v15_authority_adversarial.py\",\n    \"tests/test_nutricoach_v150_v15_closure.py\",\n    \"tests/test_nutricoach_v150_seven_day_observer.py\"\n  ],\n  \"reusable_patterns\": [\n    \"sealed_authority Snapshot and GlobalLedger\",\n    \"live_authority ApprovalLedger and SnapshotAuthority\",\n    \"weekly registry identity binding digest\",\n    \"weekly authority typed runtime context\",\n    \"append-only hash-chained Topic59 ledger history\",\n    \"observer append-only receipt store\"\n  ],\n  \"immutable_roots\": [\n    \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71-candidate-r3\",\n    \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-transaction-preseal-v15-runtime-authority-r71\",\n    \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/preflight-v15-runtime-authority-r71\"\n  ],\n  \"dependency_order\": [\n    \"typed maintenance authority, hold, decision and skip-audit contract\",\n    \"crash-safe store and pre-claim gate\",\n    \"publication, dispatcher, Telegram and scheduler propagation\",\n    \"candidate overlay and reproducible wheels\",\n    \"fresh r71b preseal, rehearsal and audits\",\n    \"one-use live transaction\",\n    \"observer-r71 manual and timer chain\"\n  ],\n  \"notes\": [\n    \"The agent was read-only and returned the full codemap in its task transcript; this materialized artifact is the decision-relevant reduction.\",\n    \"Historical r70/r71 attempt digests are context only and must not be selected by the r71b package.\"\n  ]\n}\n"}],"isError":false,"timestamp":1788246954559}}
{"type":"message","id":"ffb38457","parentId":"8c8ca8ed","timestamp":"2026-09-01T07:15:54.559Z","message":{"role":"toolResult","toolCallId":"call_aDBWrOrEiE15IQJX9wZKRYvg|fc_046f5546d6e20d23016a967baa4f5487d088419b91c1c3f5e7","toolName":"read","content":[{"type":"text","text":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-design-v1\",\n  \"task_id\": \"st_01a05bb0\",\n  \"generated_at\": \"2026-09-01T15:49:48+09:00\",\n  \"mode\": \"advisory_design_only\",\n  \"status\": \"DECISION_COMPLETE\",\n  \"source_or_live_state_edits\": 0,\n  \"only_persistent_artifact\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-design.json\",\n  \"goal\": \"Deploy one fresh, one-use r71 package namespace that truthfully changes the NutriCoach schedule dispatcher's latest status from the known r70 error to ok while the current KST-day Topic-59 publication is maintenance-skipped with zero Topic-59 transport, provider, or network calls and zero customer messages or updates.\",\n  \"non_negotiable_invariants\": [\n    \"The existing task-v15r71-candidate, candidate-r2, candidate-r3, live-transaction-preseal-v15-runtime-authority-r71, preflight-v15-runtime-authority-r71, and task-v15r71-rehearsal trees are immutable tombstones and are never deleted, renamed, chmodded, rewritten, selected, or reused.\",\n    \"The product generation remains r71. r71b-maintenance is a package/authority namespace discriminator, not product generation r72.\",\n    \"The eventual observer output root remains exactly observer-r71, never observer-r71b.\",\n    \"A maintenance decision is evaluated after the normal weekly authority and exact Topic-59 projection are validated, but before Topic59PublicationLedger.claim is called and before any prepared or sending row can be appended.\",\n    \"A maintenance success is not a delivery success: no send/edit operation, delivered/sent_audited state, provider receipt, or message_id is created or inferred.\",\n    \"The two historical Topic-59 slots whose latest rows are sending remain byte-for-byte unchanged and are never retried, failed, reconciled, or reclassified.\",\n    \"A malformed, stale, expired-before-first-use, replayed, wrong-candidate, wrong-config, wrong-route, wrong-customer, wrong-day, wrong-owner, wrong-mode, hardlinked, symlinked, or noncanonical maintenance artifact fails closed before publication claim and before transport.\",\n    \"A valid current-day terminal skip audit remains effective for repeated same-day ticks even after the active hold expires; the next KST day ignores the prior-day terminal audit and follows the normal publication path.\",\n    \"No Git, GitHub, network download, real customer action, or real Telegram send/edit is part of implementation, qualification, rehearsal, or installed QA. The live service's ordinary Telegram connectivity is not called by the held Topic-59 dispatch path and must not be confused with a provider call made by that path.\"\n  ],\n  \"survey\": {\n    \"active_plan\": {\n      \"path\": \"/home/cube/projects/richard/traning coach/.omo/plans/nutricoach-telegram-checkin-stepper.md\",\n      \"sha256\": \"570bf48ac63db492438f694b4319217e0ff2c984aa50e649b9c624a8a9a46c3a\",\n      \"relevant_contract\": \"Todo 10 requires one exact live launcher execution, healthy cron, preserved customer state, and rollback only as a safety response; Todo 11 reserves observer-r71. The ledger records explicit user approval for a fresh r71 maintenance namespace with zero customer/provider messages.\"\n    },\n    \"active_ledger\": {\n      \"path\": \"/home/cube/projects/richard/traning coach/.omo/ulw-execute/ledger.jsonl\",\n      \"sha256_at_survey\": \"510fe0ca99e27df94493f16be50d34c7172cc2d9e01769a28b3d924461efc674\",\n      \"latest_relevant_events\": [\n        \"goal-blocked-audit: NO_SAFE_PATH\",\n        \"user-approval-received: fresh one-use r71 maintenance namespace/package\",\n        \"recovery-design-wave-dispatched: r71b design and codemap\"\n      ]\n    },\n    \"no_safe_path_evidence\": [\n      {\n        \"path\": \"task-10-cron-no-send-recovery-analysis.json\",\n        \"sha256\": \"968a3ea4e15d149736d47c239d410ed9b88b7dbb20e0703214a2a6b19c3025d0\",\n        \"finding\": \"With no current-day slot, claim unconditionally appends prepared then sending; only a genuine sent_audited receipt can return the existing no-provider noop.\"\n      },\n      {\n        \"path\": \"task-10-next-cron-no-send.json\",\n        \"sha256\": \"bd07ae45e84b318e565cf09625cd8299c16ea51b72f3cf156149e93d74851af7\",\n        \"finding\": \"Each independently evaluated future tick can make one current-day Topic-59 send; two historical slots are latest=sending and uncertain but are not retried.\"\n      },\n      {\n        \"path\": \"task-10-debug-cron.json\",\n        \"sha256\": \"24da8510fe4bf850228a8bb5b56575d40712071a5d7e4ea9cf9b6e5f82b2747e\",\n        \"finding\": \"The r70 cron failure is a handled canonical authority identity drift, not a process crash. A fresh process can reacquire pins and therefore cannot be assumed safe.\"\n      },\n      {\n        \"path\": \"task-10-debug-observer-r70.json\",\n        \"sha256\": \"5f367a44f23dfa072ea1a1bb4fbdb9e216e8c832fbcc608157ad0624de4541a9\",\n        \"finding\": \"observer-r70 reads a stale unsuffixed authority root; selecting the configured candidate-suffixed root changes the same snapshot from FAIL to PASS without customer input.\"\n      },\n      {\n        \"path\": \"task-10-r70-health-recovery.json\",\n        \"sha256\": \"b1bbe2fec619d66570b5025d7760878ae3f0421825c50b19630065fbf8963f13\",\n        \"finding\": \"The observer root-selection regression is green in current source, but copied-profile cron execution could not establish restart safety and no live restart was performed.\"\n      }\n    ],\n    \"runtime_path\": [\n      \"cron.scheduler.run_one_job\",\n      \"cron.physique_inline_card.launch_scheduled_card\",\n      \"gateway.platforms.telegram.TelegramAdapter._send_nutrition_coaching_tick_authorized\",\n      \"gateway.platforms.telegram_weekly_host_dispatch._run_weekly_operations_dispatch\",\n      \"gateway.platforms.nutrition_weekly_dispatcher.dispatch_weekly_operations_tick\",\n      \"gateway.platforms.nutrition_weekly_dispatcher._dispatch_customer\",\n      \"gateway.platforms.nutrition_weekly_operations.Topic59DayCardProjector.publish\",\n      \"gateway.platforms.nutrition_weekly_operations_ledger.Topic59PublicationLedger.claim\",\n      \"gateway.platforms.nutrition_weekly_dispatcher_transport.RevalidatingTopic59Transport.send/edit\"\n    ],\n    \"observed_source_facts\": [\n      \"nutrition_weekly_operations.py currently calls Topic59PublicationLedger.claim immediately after authority/route/projection validation and has only REFUSED, SENT, EDITED, NOOP, and INCIDENT dispositions.\",\n      \"nutrition_weekly_operations_ledger.py appends PREPARED and SENDING whenever the current card_slot is absent; unresolved prior slots are INCIDENT and not retried.\",\n      \"nutrition_weekly_dispatcher.py treats only REFUSED and INCIDENT as failures, so a new typed successful disposition can flow without weakening those failures.\",\n      \"telegram.py returns SendResult(success=not failures); cron marks the job ok when the nutrition tick returns success.\",\n      \"cron currently labels every successful nutrition tick as launch card sent, which would be untruthful for maintenance and must receive a typed maintenance-noop branch.\",\n      \"nutricoach_v150_live_upgrade_state.py classifies cron/jobs.json and scheduled-deliveries.jsonl as volatile, while config.yaml, customers/registry.json, customer-service-state.json, and scheduled-deliveries-fence.json are stable/protected.\",\n      \"The inherited r71 snapshot contains neither weekly-operations-topic59.jsonl nor maintenance paths. A fresh r71b package must generate a fresh authenticated inventory rather than copy the r71/r63 snapshot.\",\n      \"Current observer source already contains the correct _day_status_days(profile) implementation that reads nutrition_coaching.weekly_operations_authority_path from config. That fix is not present in the frozen r71 candidate-r3.\"\n    ],\n    \"source_hash_anchors\": {\n      \"gateway/platforms/nutrition_weekly_operations_ledger.py\": \"b31d696cdbd814755a2ddba94e5007e0c84fef397813763aaa915c658a52c3b4\",\n      \"gateway/platforms/nutrition_weekly_operations.py\": \"52020ac1bd42d8812f7b69d5b74be6322885f6746159298df81a750a1e39d930\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"616b8b4da48d9c2c89336d9e791339c7401c354d67f38831af0f5d155a492cc8\",\n      \"gateway/platforms/nutrition_weekly_dispatcher_transport.py\": \"121cd4ff9ee4859e6a54882d9234d857af5e7265e0aad5dbc2fb783801a326ec\",\n      \"cron/physique_inline_card.py\": \"bdb1a34d16763c9e3cbe687a3617215e32b6c6919c9b49405d42e1ee5831ba5d\",\n      \"cron/scheduler.py\": \"bfe56dcc74a08278671e3e373b0eb8ce624a093b6ed0ad365464e87b1de89709\",\n      \"scripts/nutricoach_v150_observer_runtime.py\": \"96218c4405cb6ecac1711f20a7af1b38c422f4c716eafcf0e2dec8a122889689\",\n      \"scripts/nutricoach_v150_live_upgrade_state.py\": \"ff7ac34f57bd870479ee2c393caa7d3a83d98ae7851a0d7fa2b7e933def36821\"\n    }\n  },\n  \"options\": [\n    {\n      \"id\": \"A\",\n      \"name\": \"Publication-boundary maintenance gate\",\n      \"design\": \"Inject a profile-bound Topic59MaintenanceGate into Topic59DayCardProjector and evaluate the exact projection immediately before Topic59PublicationLedger.claim. The gate owns a separate active hold, crash-recovery marker, and terminal skip audit.\",\n      \"coupling\": \"Local to the Topic-59 publisher and its construction seam; no Topic59PublicationLedger state/schema change and no provider adapter policy.\",\n      \"testability\": \"High. Direct projector tests can prove claim is never invoked, and dispatcher/scheduler tests can independently prove typed success propagation.\",\n      \"migration_cost\": \"Two small new runtime modules, focused publisher/dispatcher/result propagation, and sealed transaction/package changes.\",\n      \"failure_modes\": \"Invalid maintenance state returns a typed refusal/incident before claim; crash recovery completes from hold.consuming.json; normal no-authority profiles remain unchanged.\",\n      \"verdict\": \"RECOMMENDED\"\n    },\n    {\n      \"id\": \"B\",\n      \"name\": \"Dispatcher-level maintenance gate\",\n      \"design\": \"Evaluate the hold in _dispatch_customer and skip constructing Topic59DayCardProjector when valid.\",\n      \"coupling\": \"Fewer publisher changes, but policy becomes coupled to coordinator/profile construction and every direct projector caller remains a bypass unless the projector is made private.\",\n      \"testability\": \"Moderate. Full dispatcher fixtures are required for the core guarantee; unit calls to Topic59DayCardProjector cannot prove the guard.\",\n      \"migration_cost\": \"Initially smaller, but making all publication entry points private or duplicating checks costs more and creates long-term bypass risk.\",\n      \"failure_modes\": \"A future or existing direct publisher call can reach claim without maintenance evaluation; this is unacceptable for the required universal pre-claim fence.\",\n      \"verdict\": \"VIABLE_ONLY_IF_THE_PUBLISHER_IS_MADE_PRIVATE; NOT_SELECTED\"\n    },\n    {\n      \"id\": \"C\",\n      \"name\": \"Scheduler-wide disabled/noop switch\",\n      \"design\": \"Treat the nutrition tick as disabled or healthy before weekly dispatch.\",\n      \"coupling\": \"Very low code cost but suppresses unrelated work and cannot bind candidate/config/route/customer/day or produce a truthful Topic-59 terminal audit.\",\n      \"testability\": \"Easy but misleading: scheduler ok would prove capability absence, not successful weekly maintenance handling.\",\n      \"migration_cost\": \"Low.\",\n      \"failure_modes\": \"False health and unbounded suppression; repeats tomorrow unless an operator reverses state.\",\n      \"verdict\": \"REJECTED\"\n    }\n  ],\n  \"recommendation\": {\n    \"selected_option\": \"A\",\n    \"reason\": \"It is the smallest architecture that makes the required guarantee at the last non-I/O boundary shared by all Topic-59 publication calls. It preserves the existing delivery ledger as truthful provider history, makes the maintenance audit independently truthful, and avoids a general feature-flag or enterprise control plane.\",\n    \"assumed_trust_boundary\": \"The fresh preseal/package, its exact approval phrase, the successor systemd credential copy, and the existing Task26 runtime-authority transition are operator-sealed authority. As in the existing architecture, compromise of the profile owner UID or replacement of both sealed credentials and package authority is out of scope; ordinary profile files alone cannot create a valid hold.\",\n    \"deliberately_not_built\": [\n      \"No database, remote control service, feature-flag framework, key-management service, generic maintenance subsystem, customer pause integration, or Topic59 delivery-ledger state extension.\",\n      \"No synthetic sent_audited row, fake message_id, provider receipt, or rewrite of historical incidents.\",\n      \"No reusable hold issuer or runtime API. Only the sealed r71b live controller can materialize the one exact hold.\"\n    ]\n  },\n  \"fresh_namespace\": {\n    \"product_generation\": \"r71\",\n    \"package_namespace\": \"r71b-maintenance\",\n    \"candidate_root\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-candidate\",\n    \"preseal_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-transaction-preseal-v15-runtime-authority-r71b-maintenance\",\n    \"preflight_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/preflight-v15-runtime-authority-r71b-maintenance\",\n    \"authority_id\": \"nutricoach-v150-v15-runtime-authority-r71b-maintenance\",\n    \"authorization_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-authorization-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance\",\n    \"execution_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-executions-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance\",\n    \"rehearsal_root\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-rehearsal\",\n    \"successor_runtime\": \"/home/cube/.hermes/profiles/dualcoachtest/.strict-runtime/<new-candidate-digest-prefix>-v150/venv\",\n    \"observer_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/observer-r71\",\n    \"maintenance_profile_root\": \"/home/cube/.hermes/profiles/dualcoachtest/data/topic59-maintenance-r71b\",\n    \"maintenance_credential_name\": \"nutricoach-topic59-maintenance-r71b.json\",\n    \"approval_phrase_format\": \"AUTHORIZE NUTRICOACH V1.5 R71B MAINTENANCE UPGRADE <package_digest>\",\n    \"tombstones_preserved\": [\n      \"task-v15r71-candidate\",\n      \"task-v15r71-candidate-r2\",\n      \"task-v15r71-candidate-r3\",\n      \"task-v15r71-rehearsal\",\n      \"live-transaction-preseal-v15-runtime-authority-r71\",\n      \"preflight-v15-runtime-authority-r71\"\n    ]\n  },\n  \"typed_contract\": {\n    \"runtime_types\": [\n      {\n        \"symbol\": \"Topic59MaintenanceDecisionKind\",\n        \"members\": [\"ALLOW\", \"NOOP_MAINTENANCE\", \"DENY\"]\n      },\n      {\n        \"symbol\": \"Topic59MaintenanceDecision\",\n        \"fields\": {\n          \"kind\": \"Topic59MaintenanceDecisionKind\",\n          \"audit_digest\": \"str | None\",\n          \"reason\": \"Topic59MaintenanceFailure | None\"\n        }\n      },\n      {\n        \"symbol\": \"Topic59MaintenanceFailure\",\n        \"members\": [\n          \"AUTHORITY_MISSING_FOR_TARGET_DAY\",\n          \"AUTHORITY_CORRUPT\",\n          \"BINDING_MISMATCH\",\n          \"HOLD_MISSING\",\n          \"HOLD_CORRUPT\",\n          \"HOLD_NOT_YET_VALID\",\n          \"HOLD_EXPIRED\",\n          \"HOLD_REPLAYED\",\n          \"AUDIT_CORRUPT\",\n          \"FILESYSTEM_CONTRACT\"\n        ]\n      },\n      {\n        \"symbol\": \"Topic59PublicationDisposition\",\n        \"new_member\": \"NOOP_MAINTENANCE = 'noop_maintenance'\"\n      },\n      {\n        \"symbol\": \"Topic59PublicationResult\",\n        \"new_field\": \"maintenance_audit_digest: str | None = None\",\n        \"invariant\": \"NOOP_MAINTENANCE requires logical_key and maintenance_audit_digest, and requires message_id is None and reason is None.\"\n      },\n      {\n        \"symbol\": \"WeeklyOperationsDispatchResult\",\n        \"fields\": {\n          \"failures\": \"tuple[str, ...]\",\n          \"topic59_dispositions\": \"tuple[Topic59PublicationDisposition, ...]\"\n        },\n        \"invariant\": \"maintenance_noop is true when at least one Topic-59 result is NOOP_MAINTENANCE and failures is empty.\"\n      },\n      {\n        \"symbol\": \"NutritionScheduledTickOutcome\",\n        \"fields\": {\n          \"disposition\": \"Literal['completed', 'noop_maintenance']\"\n        },\n        \"purpose\": \"Typed SendResult.raw_response payload used only by the scheduler bridge; it prevents a maintenance completion from being labeled sent.\"\n      },\n      {\n        \"symbol\": \"LaunchResult\",\n        \"new_field\": \"maintenance_noop: bool = False\",\n        \"invariant\": \"maintenance_noop and sent are mutually exclusive.\"\n      }\n    ],\n    \"authority_schema\": {\n      \"model\": \"Topic59MaintenanceAuthorityV1\",\n      \"strictness\": \"Pydantic frozen, strict, extra=forbid; canonical UTF-8 JSON plus one newline; maximum 8192 bytes.\",\n      \"fields\": {\n        \"schema\": \"Literal['nutricoach-topic59-maintenance-authority-v1']\",\n        \"authority_id\": \"Literal['nutricoach-v150-v15-runtime-authority-r71b-maintenance']\",\n        \"product_generation\": \"Literal['r71']\",\n        \"package_namespace\": \"Literal['r71b-maintenance']\",\n        \"package_digest\": \"64 lowercase hex\",\n        \"hold_sha256\": \"64 lowercase hex\",\n        \"hold\": \"Topic59MaintenanceHoldV1\"\n      },\n      \"authentication\": \"The authority document is included in the package digest and preseal manifest, copied byte-for-byte to the successor runtime-authority directory as a 0400 systemd credential, and loaded only from CREDENTIALS_DIRECTORY. Runtime suppression never trusts a profile hold without this credential.\"\n    },\n    \"hold_schema\": {\n      \"model\": \"Topic59MaintenanceHoldV1\",\n      \"strictness\": \"Pydantic frozen, strict, extra=forbid; exact canonical bytes must hash to authority.hold_sha256.\",\n      \"fields\": {\n        \"schema\": \"Literal['nutricoach-topic59-maintenance-hold-v1']\",\n        \"hold_id\": \"64 lowercase hex derived from the canonical bound fields plus a preseal nonce\",\n        \"authority_id\": \"exact r71b-maintenance authority id\",\n        \"package_digest\": \"exact package digest\",\n        \"purpose\": \"Literal['r71_cron_health_recovery']\",\n        \"max_consumptions\": \"Literal[1]\",\n        \"candidate_digest\": \"exact new candidate digest\",\n        \"config_digest\": \"exact successor WeeklyOperationsConfig.digest\",\n        \"route_digest\": \"exact Topic59Projection.route_digest\",\n        \"customer_identity_digest\": \"exact opaque current customer digest\",\n        \"card_slot\": \"exact Topic59Projection.card_slot\",\n        \"kst_day\": \"exact ISO KST day\",\n        \"not_before\": \"aware +09:00 timestamp\",\n        \"expires_at\": \"aware +09:00 timestamp\"\n      },\n      \"time_rules\": [\n        \"not_before and expires_at must both fall on kst_day.\",\n        \"5 minutes <= expires_at - not_before <= 30 minutes.\",\n        \"expires_at must be no later than the next KST midnight.\",\n        \"First consumption requires not_before <= runtime.now < expires_at. A previously written valid terminal audit remains authoritative through the rest of kst_day.\"\n      ]\n    },\n    \"skip_audit_schema\": {\n      \"model\": \"Topic59MaintenanceSkipAuditV1\",\n      \"path\": \"data/topic59-maintenance-r71b/skip-audit.json\",\n      \"storage\": \"One atomically replaced, fsynced terminal document, not a row in weekly-operations-topic59.jsonl.\",\n      \"fields\": {\n        \"schema\": \"Literal['nutricoach-topic59-maintenance-skip-audit-v1']\",\n        \"hold_id\": \"exact hold id\",\n        \"hold_sha256\": \"exact credential-bound hold hash\",\n        \"authority_id\": \"exact r71b-maintenance authority id\",\n        \"package_digest\": \"exact package digest\",\n        \"candidate_digest\": \"exact projection/hold candidate\",\n        \"config_digest\": \"exact projection/hold config\",\n        \"route_digest\": \"exact projection/hold route\",\n        \"customer_identity_digest\": \"exact projection/hold customer\",\n        \"card_slot\": \"exact projection/hold slot\",\n        \"kst_day\": \"exact projection/hold day\",\n        \"recorded_at\": \"actual aware KST runtime time, within first-use validity window\",\n        \"terminal_state\": \"Literal['maintenance_skipped']\",\n        \"disposition\": \"Literal['noop_maintenance']\",\n        \"sent\": \"Literal[false]\",\n        \"delivered\": \"Literal[false]\",\n        \"message_id\": \"None only\",\n        \"provider_receipt\": \"None only\",\n        \"provider_calls\": \"Literal[0]\",\n        \"network_calls\": \"Literal[0]\",\n        \"row_digest\": \"SHA-256 of canonical fields excluding row_digest\"\n      },\n      \"forbidden_content\": [\n        \"No card text, raw customer key, raw user/chat/topic id, provider response, or customer answer value.\",\n        \"No operation=send/edit and no Topic59LedgerState value.\",\n        \"No sent_audited, delivered, or message-id substitution.\"\n      ]\n    }\n  },\n  \"filesystem_contract\": {\n    \"paths\": {\n      \"active\": \"data/topic59-maintenance-r71b/hold.json\",\n      \"consuming\": \"data/topic59-maintenance-r71b/hold.consuming.json\",\n      \"audit\": \"data/topic59-maintenance-r71b/skip-audit.json\",\n      \"lock\": \"data/topic59-maintenance-r71b/maintenance.lock\"\n    },\n    \"directory_checks\": [\n      \"Open the profile and data directories without following links, then create/open topic59-maintenance-r71b using a trusted parent dir_fd.\",\n      \"The maintenance directory must be a real directory, owned by the profile uid/gid, mode 0700, and never a symlink.\"\n    ],\n    \"file_checks\": [\n      \"Use openat-style dir_fd operations with O_NOFOLLOW|O_CLOEXEC for every existing file.\",\n      \"active, consuming, audit, and lock must be regular files, profile-owned, nlink=1; active/consuming/audit/lock modes are exactly 0600.\",\n      \"Credential must be a regular non-symlink, nlink=1, effective-uid owned systemd credential, mode 0400, and exact canonical bytes.\",\n      \"Reject oversized, empty, noncanonical, trailing-data, duplicate-key, unknown-field, or wrong-schema JSON.\",\n      \"All writes use full-write loops, fsync(file), atomic same-directory replace/rename, fsync(directory), and readback verification.\"\n    ],\n    \"lock_scope\": \"Hold maintenance.lock with flock(LOCK_EX) across audit inspection, active-to-consuming rename, audit write, and consuming unlink. The Topic-59 publication ledger lock is never acquired on a maintenance success because claim is never called.\"\n  },\n  \"gate_algorithm\": [\n    \"1. Topic59DayCardProjector.publish first performs existing weekly authority and route validation and computes the exact Topic59Projection.\",\n    \"2. Topic59MaintenanceGate.evaluate(projection, request.runtime.now) loads and validates the sealed systemd credential and inspects the maintenance directory under the exclusive maintenance lock.\",\n    \"3. If a valid current-day terminal audit exists and matches credential plus projection, reject any simultaneously reintroduced active hold as HOLD_REPLAYED; recover and remove only a matching crash-left consuming marker; return NOOP_MAINTENANCE without any write on ordinary repeated ticks.\",\n    \"4. If no audit exists but hold.consuming.json exists, validate it exactly, atomically write the terminal audit, unlink consuming, fsync the directory, and return NOOP_MAINTENANCE. This is crash completion, not a second consumption.\",\n    \"5. If a valid active hold exists, require first-use time validity, atomically rename hold.json to hold.consuming.json and fsync the directory, atomically write/fsync/readback skip-audit.json, unlink consuming and fsync the directory, then return NOOP_MAINTENANCE.\",\n    \"6. If the credential targets the projection's KST day but no valid terminal/active/recoverable state exists, return DENY. Never fall through to claim during the authorized target day because a missing hold would otherwise send.\",\n    \"7. If the credential and all maintenance artifacts target a prior KST day, and active/consuming are absent and the prior audit is valid, return ALLOW for the new-day projection. This is the automatic release; no operator toggle is needed.\",\n    \"8. Only ALLOW reaches Topic59PublicationLedger.claim. NOOP_MAINTENANCE returns Topic59PublicationResult(NOOP_MAINTENANCE, logical_key, message_id=None, maintenance_audit_digest=...). DENY returns a typed REFUSED/INCIDENT result that the dispatcher records as cron error with zero transport calls.\"\n  ],\n  \"one_use_expiry_replay_semantics\": {\n    \"one_use\": \"Exactly one hold_id can create exactly one terminal audit. The active hold is consumed by rename, not copied; the terminal audit is never appended twice.\",\n    \"repeat_ticks\": \"No active hold is needed after the first success. The valid same-day terminal audit returns the same NOOP_MAINTENANCE and audit digest on every repeated tick without changing any file.\",\n    \"crash_recovery\": \"hold.consuming.json is the only recognized interrupted-consumption marker. Its exact credential hash allows completion after a crash. A partial audit cannot survive atomic replace; a complete audit plus consuming marker is finalized by unlinking the marker.\",\n    \"physical_replay\": \"Reintroducing hold.json after a terminal audit is a replay and returns DENY; it is not treated as an idempotent scheduler repeat. No provider call or new audit occurs.\",\n    \"expiry\": \"An active or consuming hold first observed after expires_at returns DENY and cannot create a successful audit. A terminal audit created before expiry remains effective until KST day rollover.\",\n    \"next_day\": \"At a projection whose kst_day differs from the prior audit/credential day, with active and consuming absent, the gate returns ALLOW. The old audit and read-only credential remain evidence only and cannot suppress tomorrow.\"\n  },\n  \"scheduler_propagation\": {\n    \"publisher\": \"NOOP_MAINTENANCE is a successful Topic59PublicationDisposition and is not in the dispatcher's REFUSED/INCIDENT failure set.\",\n    \"dispatcher\": \"WeeklyOperationsDispatchResult preserves failures and Topic-59 dispositions rather than reducing all success to an empty tuple.\",\n    \"telegram_tick\": \"The authorized tick returns SendResult(success=True, message_id=None, raw_response=NutritionScheduledTickOutcome('noop_maintenance')) when the maintenance path is the only current Topic-59 action and no other scheduled work fails.\",\n    \"cron_bridge\": \"launch_scheduled_card recognizes the typed outcome and returns LaunchResult(maintenance_noop=True, sent=False, error=None).\",\n    \"cron_record\": \"run_one_job writes 'Status: maintenance no-op completed', calls mark_job_run(job_id, True, None), and never prints 'launch card sent' for this disposition.\",\n    \"zero_call_scope\": \"RevalidatingTopic59Transport.send/edit is never instantiated for delivery after the gate result, Topic59PublicationLedger.claim is never called, and fake provider/socket instrumentation observes send=0, edit=0, network=0. Normal gateway Telegram polling connectivity is outside this disposition and must be reported separately rather than mislabeled as a dispatch provider call.\"\n  },\n  \"live_transaction_lifecycle\": {\n    \"preparation\": [\n      \"The preseal command requires explicit --maintenance-kst-day, --maintenance-not-before, and --maintenance-expires-at values; no hidden wall-clock default is accepted.\",\n      \"The preparer derives the exact successor config postimage, current-day Topic59Projection, route/customer/card-slot digests, complete no-send oracle, hold bytes, hold hash, and authority credential. All are included in sealed-target.json, package.json, package-manifest.json, and the approval phrase digest.\",\n      \"The fresh protected inventory is captured using current code and current profile state. It is not copied from r63 or r71.\"\n    ],\n    \"ordered_phases\": [\n      \"PREFLIGHT: verify fresh r71b roots absent, immutable tombstones unchanged, exact known r70 exception/readiness rules, complete no-send oracle, protected inventory, current Topic-59 ledger hash, and hold window.\",\n      \"RESERVED: reserve the fresh global authorization root once; old r71 approval cannot reserve this namespace.\",\n      \"STOPPING/SNAPSHOT: stop the gateway and durably snapshot existing mutable postimages, including cron/jobs.json for recovery evidence, after the stop.\",\n      \"INSTALLED/MIGRATED: install exact new wheels, apply normal capacity/weekly authority migration, and verify the derived successor config/route/customer/day binding still exactly matches the sealed maintenance authority.\",\n      \"MAINTENANCE_ARMED: create data/topic59-maintenance-r71b mode 0700 and atomically write exact hold.json mode 0600; add the exact maintenance credential to successor runtime-authority and the systemd LoadCredential postimage. No audit exists yet.\",\n      \"START_WATCH_ARMED: subscribe to the cron directory's exact replacement/write event before starting the service. Use a bounded event wait, never sleep or timing polling.\",\n      \"STARTED/POST_FENCE: promote Task26 authority, switch systemd, start the successor, and verify candidate/runtime/capacity/inbox/credential postimages.\",\n      \"MAINTENANCE_CONFIRMED: await a cron/jobs.json state change with a bounded timeout; require a post-start last_run_at, last_status=ok, the typed maintenance output, valid terminal audit, active/consuming absence, unchanged weekly-operations-topic59.jsonl hash, unchanged historical incident row digests, and Topic-59 provider/network calls zero.\",\n      \"COMMITTING/COMMITTED: only after MAINTENANCE_CONFIRMED consume the fresh global authorization as SUCCEEDED and advance the phase to COMMITTED.\"\n    ],\n    \"event_wait_contract\": \"Watch the cron directory before host.start because jobs.json is atomically replaced. Await IN_MOVED_TO/IN_CLOSE_WRITE for jobs.json with select/selector timeout no greater than 120 seconds, reopen with no-follow checks, and validate semantic state. Tests subscribe before triggering and use a bounded timeout; fixed sleeps and polling loops are forbidden.\",\n    \"roll_forward_recovery\": \"If the controller dies at or after MAINTENANCE_CONFIRMED, a fresh controller verifies the exact successor, audit, cron-ok record, unchanged Topic-59 ledger, and global authority state, then completes COMMITTING/COMMITTED. It must not roll back a proven healthy maintenance completion merely because the final phase write was interrupted.\"\n  },\n  \"preflight_rules\": {\n    \"normal_gates_retained\": [\n      \"Fresh r71b authorization/execution/successor roots absent and approval unused.\",\n      \"Existing r71 candidates/preseal/preflight/rehearsal hashes and immutable modes unchanged.\",\n      \"r70 authority consumed SUCCEEDED, execution COMMITTED, gateway active/running, NRestarts=0, current r70 candidate/runtime, Telegram sockets healthy, capacity five, Channel Inbox OFF, prepared invite/customer projection/draft/binding/events preserved.\",\n      \"Fresh package/candidate/preseal verifiers pass from immutable artifacts.\",\n      \"No unclassified protected drift and no unexpected maintenance path exists.\"\n    ],\n    \"known_r70_cron_exception\": {\n      \"accepted_dispositions\": [\"HEALTHY\", \"KNOWN_R70_CANONICAL_PIN_ERROR\"],\n      \"exact_exception_requirements\": [\n        \"The package binds task-10-cron-no-send-recovery-analysis.json SHA-256 968a3ea4e15d149736d47c239d410ed9b88b7dbb20e0703214a2a6b19c3025d0.\",\n        \"There is exactly one enabled job with id 6e042d5dff68, name 'NutriCoach schedule dispatcher', schedule '* * * * *', inline_card 'nutrition-coaching-tick', delivery 'local', and state scheduled.\",\n        \"Its latest status is error and last_error is exactly 'weekly operations failed: canonical authority identity drift'. A different error, disabled/paused job, changed identity, or changed schedule is not excepted.\",\n        \"The running candidate is exactly r70 81a7a06ec2e7a1595784c92ab61df0df7e138d13a2620d9a917e94999e7f7a04 with NRestarts=0.\",\n        \"The complete next-tick oracle proves all non-Topic59 provider work is zero and exactly one current-day Topic-59 projection matches the sealed hold.\"\n      ],\n      \"effect\": \"Only the cron-latest-success prerequisite is deferred into the transaction's MAINTENANCE_CONFIRMED phase. No authority, config, service, protected-state, or no-send check is bypassed.\"\n    },\n    \"historical_incident_exception\": {\n      \"rule\": \"The old restart oracle's requirement uncertain_pending_delivery_count=0 is replaced only for the two exact package-bound historical card slots whose latest rows are sending with message_id absent. Their row digests and full publication-ledger file hash are sealed and must remain unchanged before, during, and after the transaction.\",\n      \"not_allowed\": \"No new current-day prepared/sending incident, no old-slot retry, and no conversion to failed/unknown/sent_audited.\"\n    },\n    \"observer_readiness\": {\n      \"rule\": \"Preserve observer-r70 bytes and chain. Accept either an actual latest PASS or a sealed, read-only re-evaluation that uses the fixed configured-root collector and returns PASS while the old latest failure set is exactly ['first_day_status']. Any other observer failure blocks launch.\",\n      \"reason\": \"This is not a false PASS append: it is a readiness proof for the already diagnosed stale-root collector. After commit, Todo 11 creates the canonical observer-r71 chain from the fixed collector.\"\n    },\n    \"hold_window\": \"At launcher invocation, now must be within the package approval window and leave at least 3 minutes before hold expiry; otherwise stop before reservation.\"\n  },\n  \"rollback_behavior\": {\n    \"principle\": \"Rollback is a safety outcome, never launch success. A fresh r70 process cannot be restarted with its cron enabled because fresh pins can send.\",\n    \"before_service_stop\": \"If failure occurs before stopping r70, leave the existing process and job untouched; consume no authority unless reservation already occurred.\",\n    \"after_service_stop_before_maintenance_confirmed\": [\n      \"Restore protected r70 bytes/runtime authority/unit/dropin and remove successor-owned runtime, active hold, consuming marker, and uncommitted temporary files.\",\n      \"Before restarting r70, atomically place job 6e042d5dff68 into the supported paused state while preserving its truthful last_status/last_error. Record ROLLED_BACK_SAFE_CRON_PAUSED, not COMMITTED.\",\n      \"Restart r70 only with that cron job paused. The retained original jobs.json post-stop snapshot is recovery evidence, not automatically restored while r70 remains unsafe.\",\n      \"Consume the fresh r71b authorization as FAILED; no retry of the same namespace is allowed.\"\n    ],\n    \"after_terminal_audit\": [\n      \"Do not erase a valid skip-audit.json; it is truthful append-only evidence that the day was maintenance-skipped.\",\n      \"If MAINTENANCE_CONFIRMED is fully verifiable, roll forward commit instead of rollback.\",\n      \"If a separate postcommit manual-QA failure requires rollback, restore r70 with cron paused. r70 does not understand the r71b audit, so pausing is mandatory.\"\n    ],\n    \"failure_receipts\": \"Rollback evidence must report whether audit exists, whether the job is paused, exact old incident hashes, provider/network/customer calls zero, and why success was not claimed.\"\n  },\n  \"protected_and_volatile_inventory\": {\n    \"fresh_inventory_requirement\": \"Generate and authenticate a fresh r71b snapshot-before.json and classifier digest. Never copy the inherited r71 snapshot because it predates the current Topic-59 ledger and maintenance contract.\",\n    \"stable_protected\": [\n      \"config.yaml\",\n      \"customers/registry.json\",\n      \"all currently classified stable customer draft/binding/event/canonical files\",\n      \"data/owner-actions/customer-service-state.json\",\n      \"data/scheduled-deliveries-fence.json\",\n      \"data/weekly-operations-topic59.jsonl\",\n      \"unit/drop-in and existing runtime-authority sources\",\n      \"current authority registry/qualification ledger\"\n    ],\n    \"explicit_volatile\": [\n      \"cron/jobs.json\",\n      \"data/scheduled-deliveries.jsonl\",\n      \"data/topic59-maintenance-r71b/hold.json\",\n      \"data/topic59-maintenance-r71b/hold.consuming.json\",\n      \"data/topic59-maintenance-r71b/skip-audit.json\",\n      \"data/topic59-maintenance-r71b/maintenance.lock\"\n    ],\n    \"classification_rule\": \"Add the six maintenance files as exact VOLATILE_FILES entries; do not add a broad data/topic59-maintenance-* prefix. Existing .lock wildcard remains, but package verification must still enumerate the exact maintenance path set.\",\n    \"volatile_does_not_mean_untrusted\": \"Maintenance files are allowed to change during the transaction but remain governed by credential digest, schema, ownership, mode, no-follow, one-use, and postcondition checks. Any other newly appearing path below topic59-maintenance-r71b is a blocker.\",\n    \"publication_ledger_rule\": \"weekly-operations-topic59.jsonl stays stable/protected during this transaction. Its preflight hash and the two historical incident row digests must equal post-maintenance values. Normal future-day publication can mutate it after this transaction under the existing ledger contract.\"\n  },\n  \"postcommit_release\": {\n    \"immediate_state\": [\n      \"hold.json absent\",\n      \"hold.consuming.json absent\",\n      \"one valid terminal skip-audit.json present\",\n      \"weekly-operations-topic59.jsonl unchanged\",\n      \"cron latest status ok with truthful maintenance-noop output\",\n      \"fresh authorization CONSUMED/SUCCEEDED and execution COMMITTED\"\n    ],\n    \"same_day\": \"Every subsequent current-day tick returns NOOP_MAINTENANCE from the terminal audit before claim. It makes no provider call and does not append another audit or delivery row.\",\n    \"credential_retention\": \"Keep the read-only successor maintenance credential and terminal audit through the day so repeats remain authenticated. Do not restart solely to remove a credential. The active hold has already been removed.\",\n    \"tomorrow\": \"For a new KST day, the prior authority/audit binding does not match the new projection and active/consuming are absent, so the gate returns ALLOW and existing Topic59PublicationLedger behavior resumes normally. No operator resume and no config change are required.\",\n    \"later_cleanup\": \"A future separately qualified package may archive the expired credential/audit after the observation window; cleanup is not required for correct next-day behavior and is not part of this recovery.\"\n  },\n  \"observer_design\": {\n    \"required_fix\": \"Retain the current _day_status_days(profile) behavior that parses nutrition_coaching.weekly_operations_authority_path and never hard-codes the unsuffixed predecessor root.\",\n    \"binding\": \"Make observer runtime/execution/authorization/candidate values data-bound from a strict sealed observer binding rather than adding a compile-time candidate-digest cycle. The binding is generated from the committed r71b sealed target.\",\n    \"source_inventory\": [\n      \"scripts/nutricoach_v150_observer_contract.py\",\n      \"scripts/nutricoach_v150_observer_runtime.py\",\n      \"scripts/nutricoach_v150_observer_final.py\",\n      \"scripts/nutricoach_v150_seven_day_observer.py\",\n      \"tests/test_nutricoach_v150_seven_day_observer.py\"\n    ],\n    \"postcommit\": \"Todo 11 writes a fresh private observer-r71 binding and chain, updates the checksum manifest/systemd writable path under its authorized workflow, then requires one manual PASS and the next timer PASS linked by previous_row_digest. observer-r70 remains unchanged.\"\n  },\n  \"files_and_symbols\": {\n    \"new_runtime_files\": [\n      {\n        \"path\": \"gateway/platforms/nutrition_weekly_maintenance_contract.py\",\n        \"symbols\": [\n          \"Topic59MaintenanceAuthorityV1\",\n          \"Topic59MaintenanceHoldV1\",\n          \"Topic59MaintenanceSkipAuditV1\",\n          \"Topic59MaintenanceDecisionKind\",\n          \"Topic59MaintenanceDecision\",\n          \"Topic59MaintenanceFailure\"\n        ]\n      },\n      {\n        \"path\": \"gateway/platforms/nutrition_weekly_maintenance_store.py\",\n        \"symbols\": [\n          \"Topic59MaintenanceGate\",\n          \"Topic59MaintenancePaths\",\n          \"Topic59MaintenanceGate.for_profile\",\n          \"Topic59MaintenanceGate.evaluate\",\n          \"_open_owned_directory\",\n          \"_read_regular_at\",\n          \"_atomic_write_at\",\n          \"_fsync_directory\"\n        ]\n      }\n    ],\n    \"modified_runtime_files\": [\n      {\n        \"path\": \"gateway/platforms/nutrition_weekly_operations.py\",\n        \"symbols\": [\"Topic59PublicationDisposition\", \"Topic59PublicationResult\", \"Topic59DayCardProjector.__init__\", \"Topic59DayCardProjector.publish\"],\n        \"change\": \"Require the gate and invoke it immediately before self._ledger.claim.\"\n      },\n      {\n        \"path\": \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\",\n        \"symbols\": [\"Topic59IncidentReason\"],\n        \"change\": \"Add narrow maintenance authority/audit rejection reasons; do not add a delivery state.\"\n      },\n      {\n        \"path\": \"gateway/platforms/nutrition_weekly_dispatcher.py\",\n        \"symbols\": [\"WeeklyOperationsDispatchResult\", \"_dispatch_customer\", \"dispatch_weekly_operations_tick\"],\n        \"change\": \"Construct the profile gate, preserve typed Topic-59 disposition, and continue treating refusal/incident as failure.\"\n      },\n      {\n        \"path\": \"gateway/platforms/telegram_weekly_host_dispatch.py\",\n        \"symbols\": [\"_dispatch_weekly_operations_tick\", \"_run_weekly_operations_dispatch\", \"NutritionScheduledTickOutcome\"],\n        \"change\": \"Propagate the typed maintenance success while preserving activation-notice failures.\"\n      },\n      {\n        \"path\": \"gateway/platforms/telegram.py\",\n        \"symbols\": [\"_send_nutrition_coaching_tick_authorized\"],\n        \"change\": \"Return typed noop_maintenance raw_response only when all work succeeds; do not create message_id.\"\n      },\n      {\n        \"path\": \"cron/physique_inline_card.py\",\n        \"symbols\": [\"_AsyncCardResult\", \"LaunchResult\", \"launch_scheduled_card\", \"_ScheduledTransport\"],\n        \"change\": \"Translate the typed tick outcome to maintenance_noop=True and sent=False.\"\n      },\n      {\n        \"path\": \"cron/scheduler.py\",\n        \"symbols\": [\"run_one_job\"],\n        \"change\": \"Mark maintenance noop ok and persist truthful output distinct from sent.\"\n      }\n    ],\n    \"modified_package_and_live_files\": [\n      \"scripts/nutricoach_v150_live_upgrade_state.py\",\n      \"scripts/nutricoach_v150_host_operations.py\",\n      \"scripts/nutricoach_v150_concrete_host.py\",\n      \"scripts/nutricoach_v150_sealed_target.py\",\n      \"scripts/nutricoach_v150_sealed_controller.py\",\n      \"scripts/nutricoach_v150_controller_worker.py\",\n      \"scripts/nutricoach_v150_detached_bootstrap.py\",\n      \"scripts/execute_nutricoach_v150_sealed_live.py\",\n      \"scripts/prepare_nutricoach_v150_v15_preseal.py\",\n      \"scripts/verify_nutricoach_v150_preseal_v15.py\",\n      \"scripts/rehearse_nutricoach_v150_v15.py\",\n      \"scripts/seal_nutricoach_v150_candidate.py\",\n      \"scripts/verify_nutricoach_v150_candidate.py\",\n      \"scripts/verify_nutricoach_v150_candidate_inputs.py\"\n    ],\n    \"script_symbol_changes\": [\n      \"Change PRESEAL/PREFLIGHT/AUTHORITY_ID/default candidate/rehearsal constants to the exact r71b-maintenance roots.\",\n      \"Add sealed maintenance authority generation, package binding, systemd credential postimage, active-hold creation, complete no-send preflight, event-driven cron completion watch, maintenance phase/recovery, and rollback cron pause.\",\n      \"Add every new/changed wheel source and test to candidate_source_paths, SUCCESSOR_OVERLAY_PATHS, candidate wheel-member verification, controller closure REQUIRED set, and package manifests.\",\n      \"Preserve old r71 package digests in supersession/tombstone evidence and reject old approval phrases before reservation.\"\n    ],\n    \"observer_files\": [\n      \"scripts/nutricoach_v150_observer_contract.py\",\n      \"scripts/nutricoach_v150_observer_runtime.py\",\n      \"scripts/nutricoach_v150_observer_final.py\",\n      \"scripts/nutricoach_v150_seven_day_observer.py\",\n      \"tests/test_nutricoach_v150_seven_day_observer.py\"\n    ]\n  },\n  \"test_plan\": {\n    \"tdd_red_first\": [\n      \"Valid credential plus hold currently reaches Topic59PublicationLedger.claim and provider; new test must fail by replacing claim with an assertion and expecting NOOP_MAINTENANCE.\",\n      \"Current scheduler labels a successful no-provider tick as sent; new test must fail expecting maintenance_noop=True, sent=False, and truthful cron output.\",\n      \"Current transaction has no hold arm/consume/recovery phases and no narrow r70 cron exception; controller tests must fail before implementation.\",\n      \"Current observer candidate closure omits the configured-root fix; closure test must fail until observer source/binding is included.\"\n    ],\n    \"new_test_files\": [\n      \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\",\n      \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\",\n      \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\",\n      \"tests/test_nutricoach_v150_r71b_maintenance_transaction.py\"\n    ],\n    \"existing_test_files_to_extend\": [\n      \"tests/gateway/test_nutrition_weekly_operations_topic59.py\",\n      \"tests/gateway/test_nutrition_weekly_operations_topic59_failures.py\",\n      \"tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py\",\n      \"tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py\",\n      \"tests/cron/test_physique_inline_card.py\",\n      \"tests/cron/test_scheduler.py\",\n      \"tests/test_nutricoach_v150_sealed_controller.py\",\n      \"tests/test_nutricoach_v150_v15_authority_adversarial.py\",\n      \"tests/test_nutricoach_v150_v15_safety.py\",\n      \"tests/test_nutricoach_v150_v15_closure.py\",\n      \"tests/test_verify_nutricoach_v150_candidate.py\",\n      \"tests/test_nutricoach_v150_seven_day_observer.py\"\n    ],\n    \"positive_cases\": [\n      \"Valid exact hold: claim raises if called, transport raises if called, result is NOOP_MAINTENANCE, audit terminal fields are truthful, publication ledger unchanged.\",\n      \"Second same-day tick: identical disposition/audit digest, no file mutation, claim/provider/network zero.\",\n      \"Crash after active-to-consuming rename: next tick completes one audit and removes consuming with no provider.\",\n      \"Crash after audit replace before consuming unlink: next tick validates audit, removes consuming, and remains idempotent.\",\n      \"Two concurrent ticks subscribe before trigger: one consumes, both return NOOP_MAINTENANCE, one audit, zero claim/provider.\",\n      \"Historical two latest=sending slots remain exact bytes and are not selected or retried.\",\n      \"Scheduler integration marks last_status ok and output says maintenance no-op completed.\",\n      \"Tomorrow with active/consuming absent ignores prior audit and reaches normal claim; fake transport may send once in a synthetic fixture, proving automatic release.\"\n    ],\n    \"negative_matrix\": [\n      \"authority absent while a maintenance file exists\",\n      \"malformed/noncanonical/extra-field authority or hold\",\n      \"hold first use before not_before\",\n      \"hold first use at/after expires_at\",\n      \"physical hold replay after terminal audit\",\n      \"wrong candidate digest\",\n      \"wrong config digest\",\n      \"wrong route digest/topic\",\n      \"wrong customer/card_slot/day\",\n      \"symlink at directory, hold, consuming, audit, lock, or credential\",\n      \"wrong owner, gid, mode, nlink, file kind, oversized file\",\n      \"tampered audit digest or false sent/delivered/message_id/provider fields\",\n      \"audit/hold mismatch or unexpected extra maintenance path\"\n    ],\n    \"negative_expected_result\": \"Every negative case returns DENY/REFUSED/INCIDENT, claim=0, send=0, edit=0, network=0, no delivery-state fabrication, and scheduler error rather than false ok.\",\n    \"transaction_cases\": [\n      \"Known exact r70 cron error accepted only with package-bound no-send oracle; any other cron error blocks before reservation.\",\n      \"All original stop/install/migrate/switch/reload/start/post-fence fault stages restore protected bytes and restart r70 only with cron paused.\",\n      \"Interrupted hold writes, fsyncs, rename, audit, completion watch, phase write, authorization consume, and rollback pause are independently injected.\",\n      \"MAINTENANCE_CONFIRMED interrupted commit rolls forward after exact verification.\",\n      \"Postcommit rollback retains truthful audit, restores r70 authority, pauses cron, and never claims launch success.\"\n    ],\n    \"nondeterminism_rules\": \"All async/concurrency/controller tests subscribe to the exact event before triggering, await it with a bounded timeout, inject fixed aware KST clocks, and use no sleep, polling delay, or timing luck.\"\n  },\n  \"qualification_and_release_order\": [\n    {\n      \"order\": 1,\n      \"stage\": \"TDD\",\n      \"requirements\": \"Write and run the failing tests above; retain red output and exact source hashes. Implement the smallest gate/result/transaction changes, then make the same tests green.\"\n    },\n    {\n      \"order\": 2,\n      \"stage\": \"Focused diagnostics and affected suites\",\n      \"requirements\": \"Run LSP on every changed Python file; Ruff, ty, basedpyright, compile without suppression; run all Topic-59, weekly dispatcher, Telegram nutrition tick, cron inline-card/scheduler, transaction/controller, inventory, candidate, preseal, and observer tests once.\"\n    },\n    {\n      \"order\": 3,\n      \"stage\": \"Full suites\",\n      \"requirements\": \"Run the full profile suite under UV_OFFLINE=1 with a short isolated basetemp, the complete affected gateway/cron suite, and the complete v1.5 controller/sealer/verifier suite. Any unrelated pre-existing baseline failure is reported, never skipped or deleted.\"\n    },\n    {\n      \"order\": 4,\n      \"stage\": \"Reproducible wheels\",\n      \"requirements\": \"From two fresh clean copied inputs with SOURCE_DATE_EPOCH=1704067200 and UV_OFFLINE=1, build Hermes and profile wheels; require byte-identical pairs, ZIP CRC, RECORD hash/size checks, and exact source-member parity including both maintenance modules and propagation files. Remove ambient build/cache outputs.\"\n    },\n    {\n      \"order\": 5,\n      \"stage\": \"Fresh candidate\",\n      \"requirements\": \"Prove the r71b candidate root absent and all r71 tombstones unchanged; seal exactly task-v15r71b-maintenance-candidate once; run current-input and canonical candidate verifiers plus mutation/missing-overlay/occupied-root attacks.\"\n    },\n    {\n      \"order\": 6,\n      \"stage\": \"Fresh preseal\",\n      \"requirements\": \"Prove r71b preseal/preflight/authority/execution/runtime roots absent; require explicit hold window arguments; generate fresh protected inventory and maintenance authority; freeze the exact package; run detached bootstrap/preseal verifier from outside source.\"\n    },\n    {\n      \"order\": 7,\n      \"stage\": \"13-case rehearsal\",\n\n[Showing lines 1-644 of 746 (50.0KB limit). Use offset=645 to continue.]"}],"details":{"truncation":{"content":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-design-v1\",\n  \"task_id\": \"st_01a05bb0\",\n  \"generated_at\": \"2026-09-01T15:49:48+09:00\",\n  \"mode\": \"advisory_design_only\",\n  \"status\": \"DECISION_COMPLETE\",\n  \"source_or_live_state_edits\": 0,\n  \"only_persistent_artifact\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-design.json\",\n  \"goal\": \"Deploy one fresh, one-use r71 package namespace that truthfully changes the NutriCoach schedule dispatcher's latest status from the known r70 error to ok while the current KST-day Topic-59 publication is maintenance-skipped with zero Topic-59 transport, provider, or network calls and zero customer messages or updates.\",\n  \"non_negotiable_invariants\": [\n    \"The existing task-v15r71-candidate, candidate-r2, candidate-r3, live-transaction-preseal-v15-runtime-authority-r71, preflight-v15-runtime-authority-r71, and task-v15r71-rehearsal trees are immutable tombstones and are never deleted, renamed, chmodded, rewritten, selected, or reused.\",\n    \"The product generation remains r71. r71b-maintenance is a package/authority namespace discriminator, not product generation r72.\",\n    \"The eventual observer output root remains exactly observer-r71, never observer-r71b.\",\n    \"A maintenance decision is evaluated after the normal weekly authority and exact Topic-59 projection are validated, but before Topic59PublicationLedger.claim is called and before any prepared or sending row can be appended.\",\n    \"A maintenance success is not a delivery success: no send/edit operation, delivered/sent_audited state, provider receipt, or message_id is created or inferred.\",\n    \"The two historical Topic-59 slots whose latest rows are sending remain byte-for-byte unchanged and are never retried, failed, reconciled, or reclassified.\",\n    \"A malformed, stale, expired-before-first-use, replayed, wrong-candidate, wrong-config, wrong-route, wrong-customer, wrong-day, wrong-owner, wrong-mode, hardlinked, symlinked, or noncanonical maintenance artifact fails closed before publication claim and before transport.\",\n    \"A valid current-day terminal skip audit remains effective for repeated same-day ticks even after the active hold expires; the next KST day ignores the prior-day terminal audit and follows the normal publication path.\",\n    \"No Git, GitHub, network download, real customer action, or real Telegram send/edit is part of implementation, qualification, rehearsal, or installed QA. The live service's ordinary Telegram connectivity is not called by the held Topic-59 dispatch path and must not be confused with a provider call made by that path.\"\n  ],\n  \"survey\": {\n    \"active_plan\": {\n      \"path\": \"/home/cube/projects/richard/traning coach/.omo/plans/nutricoach-telegram-checkin-stepper.md\",\n      \"sha256\": \"570bf48ac63db492438f694b4319217e0ff2c984aa50e649b9c624a8a9a46c3a\",\n      \"relevant_contract\": \"Todo 10 requires one exact live launcher execution, healthy cron, preserved customer state, and rollback only as a safety response; Todo 11 reserves observer-r71. The ledger records explicit user approval for a fresh r71 maintenance namespace with zero customer/provider messages.\"\n    },\n    \"active_ledger\": {\n      \"path\": \"/home/cube/projects/richard/traning coach/.omo/ulw-execute/ledger.jsonl\",\n      \"sha256_at_survey\": \"510fe0ca99e27df94493f16be50d34c7172cc2d9e01769a28b3d924461efc674\",\n      \"latest_relevant_events\": [\n        \"goal-blocked-audit: NO_SAFE_PATH\",\n        \"user-approval-received: fresh one-use r71 maintenance namespace/package\",\n        \"recovery-design-wave-dispatched: r71b design and codemap\"\n      ]\n    },\n    \"no_safe_path_evidence\": [\n      {\n        \"path\": \"task-10-cron-no-send-recovery-analysis.json\",\n        \"sha256\": \"968a3ea4e15d149736d47c239d410ed9b88b7dbb20e0703214a2a6b19c3025d0\",\n        \"finding\": \"With no current-day slot, claim unconditionally appends prepared then sending; only a genuine sent_audited receipt can return the existing no-provider noop.\"\n      },\n      {\n        \"path\": \"task-10-next-cron-no-send.json\",\n        \"sha256\": \"bd07ae45e84b318e565cf09625cd8299c16ea51b72f3cf156149e93d74851af7\",\n        \"finding\": \"Each independently evaluated future tick can make one current-day Topic-59 send; two historical slots are latest=sending and uncertain but are not retried.\"\n      },\n      {\n        \"path\": \"task-10-debug-cron.json\",\n        \"sha256\": \"24da8510fe4bf850228a8bb5b56575d40712071a5d7e4ea9cf9b6e5f82b2747e\",\n        \"finding\": \"The r70 cron failure is a handled canonical authority identity drift, not a process crash. A fresh process can reacquire pins and therefore cannot be assumed safe.\"\n      },\n      {\n        \"path\": \"task-10-debug-observer-r70.json\",\n        \"sha256\": \"5f367a44f23dfa072ea1a1bb4fbdb9e216e8c832fbcc608157ad0624de4541a9\",\n        \"finding\": \"observer-r70 reads a stale unsuffixed authority root; selecting the configured candidate-suffixed root changes the same snapshot from FAIL to PASS without customer input.\"\n      },\n      {\n        \"path\": \"task-10-r70-health-recovery.json\",\n        \"sha256\": \"b1bbe2fec619d66570b5025d7760878ae3f0421825c50b19630065fbf8963f13\",\n        \"finding\": \"The observer root-selection regression is green in current source, but copied-profile cron execution could not establish restart safety and no live restart was performed.\"\n      }\n    ],\n    \"runtime_path\": [\n      \"cron.scheduler.run_one_job\",\n      \"cron.physique_inline_card.launch_scheduled_card\",\n      \"gateway.platforms.telegram.TelegramAdapter._send_nutrition_coaching_tick_authorized\",\n      \"gateway.platforms.telegram_weekly_host_dispatch._run_weekly_operations_dispatch\",\n      \"gateway.platforms.nutrition_weekly_dispatcher.dispatch_weekly_operations_tick\",\n      \"gateway.platforms.nutrition_weekly_dispatcher._dispatch_customer\",\n      \"gateway.platforms.nutrition_weekly_operations.Topic59DayCardProjector.publish\",\n      \"gateway.platforms.nutrition_weekly_operations_ledger.Topic59PublicationLedger.claim\",\n      \"gateway.platforms.nutrition_weekly_dispatcher_transport.RevalidatingTopic59Transport.send/edit\"\n    ],\n    \"observed_source_facts\": [\n      \"nutrition_weekly_operations.py currently calls Topic59PublicationLedger.claim immediately after authority/route/projection validation and has only REFUSED, SENT, EDITED, NOOP, and INCIDENT dispositions.\",\n      \"nutrition_weekly_operations_ledger.py appends PREPARED and SENDING whenever the current card_slot is absent; unresolved prior slots are INCIDENT and not retried.\",\n      \"nutrition_weekly_dispatcher.py treats only REFUSED and INCIDENT as failures, so a new typed successful disposition can flow without weakening those failures.\",\n      \"telegram.py returns SendResult(success=not failures); cron marks the job ok when the nutrition tick returns success.\",\n      \"cron currently labels every successful nutrition tick as launch card sent, which would be untruthful for maintenance and must receive a typed maintenance-noop branch.\",\n      \"nutricoach_v150_live_upgrade_state.py classifies cron/jobs.json and scheduled-deliveries.jsonl as volatile, while config.yaml, customers/registry.json, customer-service-state.json, and scheduled-deliveries-fence.json are stable/protected.\",\n      \"The inherited r71 snapshot contains neither weekly-operations-topic59.jsonl nor maintenance paths. A fresh r71b package must generate a fresh authenticated inventory rather than copy the r71/r63 snapshot.\",\n      \"Current observer source already contains the correct _day_status_days(profile) implementation that reads nutrition_coaching.weekly_operations_authority_path from config. That fix is not present in the frozen r71 candidate-r3.\"\n    ],\n    \"source_hash_anchors\": {\n      \"gateway/platforms/nutrition_weekly_operations_ledger.py\": \"b31d696cdbd814755a2ddba94e5007e0c84fef397813763aaa915c658a52c3b4\",\n      \"gateway/platforms/nutrition_weekly_operations.py\": \"52020ac1bd42d8812f7b69d5b74be6322885f6746159298df81a750a1e39d930\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"616b8b4da48d9c2c89336d9e791339c7401c354d67f38831af0f5d155a492cc8\",\n      \"gateway/platforms/nutrition_weekly_dispatcher_transport.py\": \"121cd4ff9ee4859e6a54882d9234d857af5e7265e0aad5dbc2fb783801a326ec\",\n      \"cron/physique_inline_card.py\": \"bdb1a34d16763c9e3cbe687a3617215e32b6c6919c9b49405d42e1ee5831ba5d\",\n      \"cron/scheduler.py\": \"bfe56dcc74a08278671e3e373b0eb8ce624a093b6ed0ad365464e87b1de89709\",\n      \"scripts/nutricoach_v150_observer_runtime.py\": \"96218c4405cb6ecac1711f20a7af1b38c422f4c716eafcf0e2dec8a122889689\",\n      \"scripts/nutricoach_v150_live_upgrade_state.py\": \"ff7ac34f57bd870479ee2c393caa7d3a83d98ae7851a0d7fa2b7e933def36821\"\n    }\n  },\n  \"options\": [\n    {\n      \"id\": \"A\",\n      \"name\": \"Publication-boundary maintenance gate\",\n      \"design\": \"Inject a profile-bound Topic59MaintenanceGate into Topic59DayCardProjector and evaluate the exact projection immediately before Topic59PublicationLedger.claim. The gate owns a separate active hold, crash-recovery marker, and terminal skip audit.\",\n      \"coupling\": \"Local to the Topic-59 publisher and its construction seam; no Topic59PublicationLedger state/schema change and no provider adapter policy.\",\n      \"testability\": \"High. Direct projector tests can prove claim is never invoked, and dispatcher/scheduler tests can independently prove typed success propagation.\",\n      \"migration_cost\": \"Two small new runtime modules, focused publisher/dispatcher/result propagation, and sealed transaction/package changes.\",\n      \"failure_modes\": \"Invalid maintenance state returns a typed refusal/incident before claim; crash recovery completes from hold.consuming.json; normal no-authority profiles remain unchanged.\",\n      \"verdict\": \"RECOMMENDED\"\n    },\n    {\n      \"id\": \"B\",\n      \"name\": \"Dispatcher-level maintenance gate\",\n      \"design\": \"Evaluate the hold in _dispatch_customer and skip constructing Topic59DayCardProjector when valid.\",\n      \"coupling\": \"Fewer publisher changes, but policy becomes coupled to coordinator/profile construction and every direct projector caller remains a bypass unless the projector is made private.\",\n      \"testability\": \"Moderate. Full dispatcher fixtures are required for the core guarantee; unit calls to Topic59DayCardProjector cannot prove the guard.\",\n      \"migration_cost\": \"Initially smaller, but making all publication entry points private or duplicating checks costs more and creates long-term bypass risk.\",\n      \"failure_modes\": \"A future or existing direct publisher call can reach claim without maintenance evaluation; this is unacceptable for the required universal pre-claim fence.\",\n      \"verdict\": \"VIABLE_ONLY_IF_THE_PUBLISHER_IS_MADE_PRIVATE; NOT_SELECTED\"\n    },\n    {\n      \"id\": \"C\",\n      \"name\": \"Scheduler-wide disabled/noop switch\",\n      \"design\": \"Treat the nutrition tick as disabled or healthy before weekly dispatch.\",\n      \"coupling\": \"Very low code cost but suppresses unrelated work and cannot bind candidate/config/route/customer/day or produce a truthful Topic-59 terminal audit.\",\n      \"testability\": \"Easy but misleading: scheduler ok would prove capability absence, not successful weekly maintenance handling.\",\n      \"migration_cost\": \"Low.\",\n      \"failure_modes\": \"False health and unbounded suppression; repeats tomorrow unless an operator reverses state.\",\n      \"verdict\": \"REJECTED\"\n    }\n  ],\n  \"recommendation\": {\n    \"selected_option\": \"A\",\n    \"reason\": \"It is the smallest architecture that makes the required guarantee at the last non-I/O boundary shared by all Topic-59 publication calls. It preserves the existing delivery ledger as truthful provider history, makes the maintenance audit independently truthful, and avoids a general feature-flag or enterprise control plane.\",\n    \"assumed_trust_boundary\": \"The fresh preseal/package, its exact approval phrase, the successor systemd credential copy, and the existing Task26 runtime-authority transition are operator-sealed authority. As in the existing architecture, compromise of the profile owner UID or replacement of both sealed credentials and package authority is out of scope; ordinary profile files alone cannot create a valid hold.\",\n    \"deliberately_not_built\": [\n      \"No database, remote control service, feature-flag framework, key-management service, generic maintenance subsystem, customer pause integration, or Topic59 delivery-ledger state extension.\",\n      \"No synthetic sent_audited row, fake message_id, provider receipt, or rewrite of historical incidents.\",\n      \"No reusable hold issuer or runtime API. Only the sealed r71b live controller can materialize the one exact hold.\"\n    ]\n  },\n  \"fresh_namespace\": {\n    \"product_generation\": \"r71\",\n    \"package_namespace\": \"r71b-maintenance\",\n    \"candidate_root\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-candidate\",\n    \"preseal_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-transaction-preseal-v15-runtime-authority-r71b-maintenance\",\n    \"preflight_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/preflight-v15-runtime-authority-r71b-maintenance\",\n    \"authority_id\": \"nutricoach-v150-v15-runtime-authority-r71b-maintenance\",\n    \"authorization_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-authorization-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance\",\n    \"execution_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-executions-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance\",\n    \"rehearsal_root\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-rehearsal\",\n    \"successor_runtime\": \"/home/cube/.hermes/profiles/dualcoachtest/.strict-runtime/<new-candidate-digest-prefix>-v150/venv\",\n    \"observer_root\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/observer-r71\",\n    \"maintenance_profile_root\": \"/home/cube/.hermes/profiles/dualcoachtest/data/topic59-maintenance-r71b\",\n    \"maintenance_credential_name\": \"nutricoach-topic59-maintenance-r71b.json\",\n    \"approval_phrase_format\": \"AUTHORIZE NUTRICOACH V1.5 R71B MAINTENANCE UPGRADE <package_digest>\",\n    \"tombstones_preserved\": [\n      \"task-v15r71-candidate\",\n      \"task-v15r71-candidate-r2\",\n      \"task-v15r71-candidate-r3\",\n      \"task-v15r71-rehearsal\",\n      \"live-transaction-preseal-v15-runtime-authority-r71\",\n      \"preflight-v15-runtime-authority-r71\"\n    ]\n  },\n  \"typed_contract\": {\n    \"runtime_types\": [\n      {\n        \"symbol\": \"Topic59MaintenanceDecisionKind\",\n        \"members\": [\"ALLOW\", \"NOOP_MAINTENANCE\", \"DENY\"]\n      },\n      {\n        \"symbol\": \"Topic59MaintenanceDecision\",\n        \"fields\": {\n          \"kind\": \"Topic59MaintenanceDecisionKind\",\n          \"audit_digest\": \"str | None\",\n          \"reason\": \"Topic59MaintenanceFailure | None\"\n        }\n      },\n      {\n        \"symbol\": \"Topic59MaintenanceFailure\",\n        \"members\": [\n          \"AUTHORITY_MISSING_FOR_TARGET_DAY\",\n          \"AUTHORITY_CORRUPT\",\n          \"BINDING_MISMATCH\",\n          \"HOLD_MISSING\",\n          \"HOLD_CORRUPT\",\n          \"HOLD_NOT_YET_VALID\",\n          \"HOLD_EXPIRED\",\n          \"HOLD_REPLAYED\",\n          \"AUDIT_CORRUPT\",\n          \"FILESYSTEM_CONTRACT\"\n        ]\n      },\n      {\n        \"symbol\": \"Topic59PublicationDisposition\",\n        \"new_member\": \"NOOP_MAINTENANCE = 'noop_maintenance'\"\n      },\n      {\n        \"symbol\": \"Topic59PublicationResult\",\n        \"new_field\": \"maintenance_audit_digest: str | None = None\",\n        \"invariant\": \"NOOP_MAINTENANCE requires logical_key and maintenance_audit_digest, and requires message_id is None and reason is None.\"\n      },\n      {\n        \"symbol\": \"WeeklyOperationsDispatchResult\",\n        \"fields\": {\n          \"failures\": \"tuple[str, ...]\",\n          \"topic59_dispositions\": \"tuple[Topic59PublicationDisposition, ...]\"\n        },\n        \"invariant\": \"maintenance_noop is true when at least one Topic-59 result is NOOP_MAINTENANCE and failures is empty.\"\n      },\n      {\n        \"symbol\": \"NutritionScheduledTickOutcome\",\n        \"fields\": {\n          \"disposition\": \"Literal['completed', 'noop_maintenance']\"\n        },\n        \"purpose\": \"Typed SendResult.raw_response payload used only by the scheduler bridge; it prevents a maintenance completion from being labeled sent.\"\n      },\n      {\n        \"symbol\": \"LaunchResult\",\n        \"new_field\": \"maintenance_noop: bool = False\",\n        \"invariant\": \"maintenance_noop and sent are mutually exclusive.\"\n      }\n    ],\n    \"authority_schema\": {\n      \"model\": \"Topic59MaintenanceAuthorityV1\",\n      \"strictness\": \"Pydantic frozen, strict, extra=forbid; canonical UTF-8 JSON plus one newline; maximum 8192 bytes.\",\n      \"fields\": {\n        \"schema\": \"Literal['nutricoach-topic59-maintenance-authority-v1']\",\n        \"authority_id\": \"Literal['nutricoach-v150-v15-runtime-authority-r71b-maintenance']\",\n        \"product_generation\": \"Literal['r71']\",\n        \"package_namespace\": \"Literal['r71b-maintenance']\",\n        \"package_digest\": \"64 lowercase hex\",\n        \"hold_sha256\": \"64 lowercase hex\",\n        \"hold\": \"Topic59MaintenanceHoldV1\"\n      },\n      \"authentication\": \"The authority document is included in the package digest and preseal manifest, copied byte-for-byte to the successor runtime-authority directory as a 0400 systemd credential, and loaded only from CREDENTIALS_DIRECTORY. Runtime suppression never trusts a profile hold without this credential.\"\n    },\n    \"hold_schema\": {\n      \"model\": \"Topic59MaintenanceHoldV1\",\n      \"strictness\": \"Pydantic frozen, strict, extra=forbid; exact canonical bytes must hash to authority.hold_sha256.\",\n      \"fields\": {\n        \"schema\": \"Literal['nutricoach-topic59-maintenance-hold-v1']\",\n        \"hold_id\": \"64 lowercase hex derived from the canonical bound fields plus a preseal nonce\",\n        \"authority_id\": \"exact r71b-maintenance authority id\",\n        \"package_digest\": \"exact package digest\",\n        \"purpose\": \"Literal['r71_cron_health_recovery']\",\n        \"max_consumptions\": \"Literal[1]\",\n        \"candidate_digest\": \"exact new candidate digest\",\n        \"config_digest\": \"exact successor WeeklyOperationsConfig.digest\",\n        \"route_digest\": \"exact Topic59Projection.route_digest\",\n        \"customer_identity_digest\": \"exact opaque current customer digest\",\n        \"card_slot\": \"exact Topic59Projection.card_slot\",\n        \"kst_day\": \"exact ISO KST day\",\n        \"not_before\": \"aware +09:00 timestamp\",\n        \"expires_at\": \"aware +09:00 timestamp\"\n      },\n      \"time_rules\": [\n        \"not_before and expires_at must both fall on kst_day.\",\n        \"5 minutes <= expires_at - not_before <= 30 minutes.\",\n        \"expires_at must be no later than the next KST midnight.\",\n        \"First consumption requires not_before <= runtime.now < expires_at. A previously written valid terminal audit remains authoritative through the rest of kst_day.\"\n      ]\n    },\n    \"skip_audit_schema\": {\n      \"model\": \"Topic59MaintenanceSkipAuditV1\",\n      \"path\": \"data/topic59-maintenance-r71b/skip-audit.json\",\n      \"storage\": \"One atomically replaced, fsynced terminal document, not a row in weekly-operations-topic59.jsonl.\",\n      \"fields\": {\n        \"schema\": \"Literal['nutricoach-topic59-maintenance-skip-audit-v1']\",\n        \"hold_id\": \"exact hold id\",\n        \"hold_sha256\": \"exact credential-bound hold hash\",\n        \"authority_id\": \"exact r71b-maintenance authority id\",\n        \"package_digest\": \"exact package digest\",\n        \"candidate_digest\": \"exact projection/hold candidate\",\n        \"config_digest\": \"exact projection/hold config\",\n        \"route_digest\": \"exact projection/hold route\",\n        \"customer_identity_digest\": \"exact projection/hold customer\",\n        \"card_slot\": \"exact projection/hold slot\",\n        \"kst_day\": \"exact projection/hold day\",\n        \"recorded_at\": \"actual aware KST runtime time, within first-use validity window\",\n        \"terminal_state\": \"Literal['maintenance_skipped']\",\n        \"disposition\": \"Literal['noop_maintenance']\",\n        \"sent\": \"Literal[false]\",\n        \"delivered\": \"Literal[false]\",\n        \"message_id\": \"None only\",\n        \"provider_receipt\": \"None only\",\n        \"provider_calls\": \"Literal[0]\",\n        \"network_calls\": \"Literal[0]\",\n        \"row_digest\": \"SHA-256 of canonical fields excluding row_digest\"\n      },\n      \"forbidden_content\": [\n        \"No card text, raw customer key, raw user/chat/topic id, provider response, or customer answer value.\",\n        \"No operation=send/edit and no Topic59LedgerState value.\",\n        \"No sent_audited, delivered, or message-id substitution.\"\n      ]\n    }\n  },\n  \"filesystem_contract\": {\n    \"paths\": {\n      \"active\": \"data/topic59-maintenance-r71b/hold.json\",\n      \"consuming\": \"data/topic59-maintenance-r71b/hold.consuming.json\",\n      \"audit\": \"data/topic59-maintenance-r71b/skip-audit.json\",\n      \"lock\": \"data/topic59-maintenance-r71b/maintenance.lock\"\n    },\n    \"directory_checks\": [\n      \"Open the profile and data directories without following links, then create/open topic59-maintenance-r71b using a trusted parent dir_fd.\",\n      \"The maintenance directory must be a real directory, owned by the profile uid/gid, mode 0700, and never a symlink.\"\n    ],\n    \"file_checks\": [\n      \"Use openat-style dir_fd operations with O_NOFOLLOW|O_CLOEXEC for every existing file.\",\n      \"active, consuming, audit, and lock must be regular files, profile-owned, nlink=1; active/consuming/audit/lock modes are exactly 0600.\",\n      \"Credential must be a regular non-symlink, nlink=1, effective-uid owned systemd credential, mode 0400, and exact canonical bytes.\",\n      \"Reject oversized, empty, noncanonical, trailing-data, duplicate-key, unknown-field, or wrong-schema JSON.\",\n      \"All writes use full-write loops, fsync(file), atomic same-directory replace/rename, fsync(directory), and readback verification.\"\n    ],\n    \"lock_scope\": \"Hold maintenance.lock with flock(LOCK_EX) across audit inspection, active-to-consuming rename, audit write, and consuming unlink. The Topic-59 publication ledger lock is never acquired on a maintenance success because claim is never called.\"\n  },\n  \"gate_algorithm\": [\n    \"1. Topic59DayCardProjector.publish first performs existing weekly authority and route validation and computes the exact Topic59Projection.\",\n    \"2. Topic59MaintenanceGate.evaluate(projection, request.runtime.now) loads and validates the sealed systemd credential and inspects the maintenance directory under the exclusive maintenance lock.\",\n    \"3. If a valid current-day terminal audit exists and matches credential plus projection, reject any simultaneously reintroduced active hold as HOLD_REPLAYED; recover and remove only a matching crash-left consuming marker; return NOOP_MAINTENANCE without any write on ordinary repeated ticks.\",\n    \"4. If no audit exists but hold.consuming.json exists, validate it exactly, atomically write the terminal audit, unlink consuming, fsync the directory, and return NOOP_MAINTENANCE. This is crash completion, not a second consumption.\",\n    \"5. If a valid active hold exists, require first-use time validity, atomically rename hold.json to hold.consuming.json and fsync the directory, atomically write/fsync/readback skip-audit.json, unlink consuming and fsync the directory, then return NOOP_MAINTENANCE.\",\n    \"6. If the credential targets the projection's KST day but no valid terminal/active/recoverable state exists, return DENY. Never fall through to claim during the authorized target day because a missing hold would otherwise send.\",\n    \"7. If the credential and all maintenance artifacts target a prior KST day, and active/consuming are absent and the prior audit is valid, return ALLOW for the new-day projection. This is the automatic release; no operator toggle is needed.\",\n    \"8. Only ALLOW reaches Topic59PublicationLedger.claim. NOOP_MAINTENANCE returns Topic59PublicationResult(NOOP_MAINTENANCE, logical_key, message_id=None, maintenance_audit_digest=...). DENY returns a typed REFUSED/INCIDENT result that the dispatcher records as cron error with zero transport calls.\"\n  ],\n  \"one_use_expiry_replay_semantics\": {\n    \"one_use\": \"Exactly one hold_id can create exactly one terminal audit. The active hold is consumed by rename, not copied; the terminal audit is never appended twice.\",\n    \"repeat_ticks\": \"No active hold is needed after the first success. The valid same-day terminal audit returns the same NOOP_MAINTENANCE and audit digest on every repeated tick without changing any file.\",\n    \"crash_recovery\": \"hold.consuming.json is the only recognized interrupted-consumption marker. Its exact credential hash allows completion after a crash. A partial audit cannot survive atomic replace; a complete audit plus consuming marker is finalized by unlinking the marker.\",\n    \"physical_replay\": \"Reintroducing hold.json after a terminal audit is a replay and returns DENY; it is not treated as an idempotent scheduler repeat. No provider call or new audit occurs.\",\n    \"expiry\": \"An active or consuming hold first observed after expires_at returns DENY and cannot create a successful audit. A terminal audit created before expiry remains effective until KST day rollover.\",\n    \"next_day\": \"At a projection whose kst_day differs from the prior audit/credential day, with active and consuming absent, the gate returns ALLOW. The old audit and read-only credential remain evidence only and cannot suppress tomorrow.\"\n  },\n  \"scheduler_propagation\": {\n    \"publisher\": \"NOOP_MAINTENANCE is a successful Topic59PublicationDisposition and is not in the dispatcher's REFUSED/INCIDENT failure set.\",\n    \"dispatcher\": \"WeeklyOperationsDispatchResult preserves failures and Topic-59 dispositions rather than reducing all success to an empty tuple.\",\n    \"telegram_tick\": \"The authorized tick returns SendResult(success=True, message_id=None, raw_response=NutritionScheduledTickOutcome('noop_maintenance')) when the maintenance path is the only current Topic-59 action and no other scheduled work fails.\",\n    \"cron_bridge\": \"launch_scheduled_card recognizes the typed outcome and returns LaunchResult(maintenance_noop=True, sent=False, error=None).\",\n    \"cron_record\": \"run_one_job writes 'Status: maintenance no-op completed', calls mark_job_run(job_id, True, None), and never prints 'launch card sent' for this disposition.\",\n    \"zero_call_scope\": \"RevalidatingTopic59Transport.send/edit is never instantiated for delivery after the gate result, Topic59PublicationLedger.claim is never called, and fake provider/socket instrumentation observes send=0, edit=0, network=0. Normal gateway Telegram polling connectivity is outside this disposition and must be reported separately rather than mislabeled as a dispatch provider call.\"\n  },\n  \"live_transaction_lifecycle\": {\n    \"preparation\": [\n      \"The preseal command requires explicit --maintenance-kst-day, --maintenance-not-before, and --maintenance-expires-at values; no hidden wall-clock default is accepted.\",\n      \"The preparer derives the exact successor config postimage, current-day Topic59Projection, route/customer/card-slot digests, complete no-send oracle, hold bytes, hold hash, and authority credential. All are included in sealed-target.json, package.json, package-manifest.json, and the approval phrase digest.\",\n      \"The fresh protected inventory is captured using current code and current profile state. It is not copied from r63 or r71.\"\n    ],\n    \"ordered_phases\": [\n      \"PREFLIGHT: verify fresh r71b roots absent, immutable tombstones unchanged, exact known r70 exception/readiness rules, complete no-send oracle, protected inventory, current Topic-59 ledger hash, and hold window.\",\n      \"RESERVED: reserve the fresh global authorization root once; old r71 approval cannot reserve this namespace.\",\n      \"STOPPING/SNAPSHOT: stop the gateway and durably snapshot existing mutable postimages, including cron/jobs.json for recovery evidence, after the stop.\",\n      \"INSTALLED/MIGRATED: install exact new wheels, apply normal capacity/weekly authority migration, and verify the derived successor config/route/customer/day binding still exactly matches the sealed maintenance authority.\",\n      \"MAINTENANCE_ARMED: create data/topic59-maintenance-r71b mode 0700 and atomically write exact hold.json mode 0600; add the exact maintenance credential to successor runtime-authority and the systemd LoadCredential postimage. No audit exists yet.\",\n      \"START_WATCH_ARMED: subscribe to the cron directory's exact replacement/write event before starting the service. Use a bounded event wait, never sleep or timing polling.\",\n      \"STARTED/POST_FENCE: promote Task26 authority, switch systemd, start the successor, and verify candidate/runtime/capacity/inbox/credential postimages.\",\n      \"MAINTENANCE_CONFIRMED: await a cron/jobs.json state change with a bounded timeout; require a post-start last_run_at, last_status=ok, the typed maintenance output, valid terminal audit, active/consuming absence, unchanged weekly-operations-topic59.jsonl hash, unchanged historical incident row digests, and Topic-59 provider/network calls zero.\",\n      \"COMMITTING/COMMITTED: only after MAINTENANCE_CONFIRMED consume the fresh global authorization as SUCCEEDED and advance the phase to COMMITTED.\"\n    ],\n    \"event_wait_contract\": \"Watch the cron directory before host.start because jobs.json is atomically replaced. Await IN_MOVED_TO/IN_CLOSE_WRITE for jobs.json with select/selector timeout no greater than 120 seconds, reopen with no-follow checks, and validate semantic state. Tests subscribe before triggering and use a bounded timeout; fixed sleeps and polling loops are forbidden.\",\n    \"roll_forward_recovery\": \"If the controller dies at or after MAINTENANCE_CONFIRMED, a fresh controller verifies the exact successor, audit, cron-ok record, unchanged Topic-59 ledger, and global authority state, then completes COMMITTING/COMMITTED. It must not roll back a proven healthy maintenance completion merely because the final phase write was interrupted.\"\n  },\n  \"preflight_rules\": {\n    \"normal_gates_retained\": [\n      \"Fresh r71b authorization/execution/successor roots absent and approval unused.\",\n      \"Existing r71 candidates/preseal/preflight/rehearsal hashes and immutable modes unchanged.\",\n      \"r70 authority consumed SUCCEEDED, execution COMMITTED, gateway active/running, NRestarts=0, current r70 candidate/runtime, Telegram sockets healthy, capacity five, Channel Inbox OFF, prepared invite/customer projection/draft/binding/events preserved.\",\n      \"Fresh package/candidate/preseal verifiers pass from immutable artifacts.\",\n      \"No unclassified protected drift and no unexpected maintenance path exists.\"\n    ],\n    \"known_r70_cron_exception\": {\n      \"accepted_dispositions\": [\"HEALTHY\", \"KNOWN_R70_CANONICAL_PIN_ERROR\"],\n      \"exact_exception_requirements\": [\n        \"The package binds task-10-cron-no-send-recovery-analysis.json SHA-256 968a3ea4e15d149736d47c239d410ed9b88b7dbb20e0703214a2a6b19c3025d0.\",\n        \"There is exactly one enabled job with id 6e042d5dff68, name 'NutriCoach schedule dispatcher', schedule '* * * * *', inline_card 'nutrition-coaching-tick', delivery 'local', and state scheduled.\",\n        \"Its latest status is error and last_error is exactly 'weekly operations failed: canonical authority identity drift'. A different error, disabled/paused job, changed identity, or changed schedule is not excepted.\",\n        \"The running candidate is exactly r70 81a7a06ec2e7a1595784c92ab61df0df7e138d13a2620d9a917e94999e7f7a04 with NRestarts=0.\",\n        \"The complete next-tick oracle proves all non-Topic59 provider work is zero and exactly one current-day Topic-59 projection matches the sealed hold.\"\n      ],\n      \"effect\": \"Only the cron-latest-success prerequisite is deferred into the transaction's MAINTENANCE_CONFIRMED phase. No authority, config, service, protected-state, or no-send check is bypassed.\"\n    },\n    \"historical_incident_exception\": {\n      \"rule\": \"The old restart oracle's requirement uncertain_pending_delivery_count=0 is replaced only for the two exact package-bound historical card slots whose latest rows are sending with message_id absent. Their row digests and full publication-ledger file hash are sealed and must remain unchanged before, during, and after the transaction.\",\n      \"not_allowed\": \"No new current-day prepared/sending incident, no old-slot retry, and no conversion to failed/unknown/sent_audited.\"\n    },\n    \"observer_readiness\": {\n      \"rule\": \"Preserve observer-r70 bytes and chain. Accept either an actual latest PASS or a sealed, read-only re-evaluation that uses the fixed configured-root collector and returns PASS while the old latest failure set is exactly ['first_day_status']. Any other observer failure blocks launch.\",\n      \"reason\": \"This is not a false PASS append: it is a readiness proof for the already diagnosed stale-root collector. After commit, Todo 11 creates the canonical observer-r71 chain from the fixed collector.\"\n    },\n    \"hold_window\": \"At launcher invocation, now must be within the package approval window and leave at least 3 minutes before hold expiry; otherwise stop before reservation.\"\n  },\n  \"rollback_behavior\": {\n    \"principle\": \"Rollback is a safety outcome, never launch success. A fresh r70 process cannot be restarted with its cron enabled because fresh pins can send.\",\n    \"before_service_stop\": \"If failure occurs before stopping r70, leave the existing process and job untouched; consume no authority unless reservation already occurred.\",\n    \"after_service_stop_before_maintenance_confirmed\": [\n      \"Restore protected r70 bytes/runtime authority/unit/dropin and remove successor-owned runtime, active hold, consuming marker, and uncommitted temporary files.\",\n      \"Before restarting r70, atomically place job 6e042d5dff68 into the supported paused state while preserving its truthful last_status/last_error. Record ROLLED_BACK_SAFE_CRON_PAUSED, not COMMITTED.\",\n      \"Restart r70 only with that cron job paused. The retained original jobs.json post-stop snapshot is recovery evidence, not automatically restored while r70 remains unsafe.\",\n      \"Consume the fresh r71b authorization as FAILED; no retry of the same namespace is allowed.\"\n    ],\n    \"after_terminal_audit\": [\n      \"Do not erase a valid skip-audit.json; it is truthful append-only evidence that the day was maintenance-skipped.\",\n      \"If MAINTENANCE_CONFIRMED is fully verifiable, roll forward commit instead of rollback.\",\n      \"If a separate postcommit manual-QA failure requires rollback, restore r70 with cron paused. r70 does not understand the r71b audit, so pausing is mandatory.\"\n    ],\n    \"failure_receipts\": \"Rollback evidence must report whether audit exists, whether the job is paused, exact old incident hashes, provider/network/customer calls zero, and why success was not claimed.\"\n  },\n  \"protected_and_volatile_inventory\": {\n    \"fresh_inventory_requirement\": \"Generate and authenticate a fresh r71b snapshot-before.json and classifier digest. Never copy the inherited r71 snapshot because it predates the current Topic-59 ledger and maintenance contract.\",\n    \"stable_protected\": [\n      \"config.yaml\",\n      \"customers/registry.json\",\n      \"all currently classified stable customer draft/binding/event/canonical files\",\n      \"data/owner-actions/customer-service-state.json\",\n      \"data/scheduled-deliveries-fence.json\",\n      \"data/weekly-operations-topic59.jsonl\",\n      \"unit/drop-in and existing runtime-authority sources\",\n      \"current authority registry/qualification ledger\"\n    ],\n    \"explicit_volatile\": [\n      \"cron/jobs.json\",\n      \"data/scheduled-deliveries.jsonl\",\n      \"data/topic59-maintenance-r71b/hold.json\",\n      \"data/topic59-maintenance-r71b/hold.consuming.json\",\n      \"data/topic59-maintenance-r71b/skip-audit.json\",\n      \"data/topic59-maintenance-r71b/maintenance.lock\"\n    ],\n    \"classification_rule\": \"Add the six maintenance files as exact VOLATILE_FILES entries; do not add a broad data/topic59-maintenance-* prefix. Existing .lock wildcard remains, but package verification must still enumerate the exact maintenance path set.\",\n    \"volatile_does_not_mean_untrusted\": \"Maintenance files are allowed to change during the transaction but remain governed by credential digest, schema, ownership, mode, no-follow, one-use, and postcondition checks. Any other newly appearing path below topic59-maintenance-r71b is a blocker.\",\n    \"publication_ledger_rule\": \"weekly-operations-topic59.jsonl stays stable/protected during this transaction. Its preflight hash and the two historical incident row digests must equal post-maintenance values. Normal future-day publication can mutate it after this transaction under the existing ledger contract.\"\n  },\n  \"postcommit_release\": {\n    \"immediate_state\": [\n      \"hold.json absent\",\n      \"hold.consuming.json absent\",\n      \"one valid terminal skip-audit.json present\",\n      \"weekly-operations-topic59.jsonl unchanged\",\n      \"cron latest status ok with truthful maintenance-noop output\",\n      \"fresh authorization CONSUMED/SUCCEEDED and execution COMMITTED\"\n    ],\n    \"same_day\": \"Every subsequent current-day tick returns NOOP_MAINTENANCE from the terminal audit before claim. It makes no provider call and does not append another audit or delivery row.\",\n    \"credential_retention\": \"Keep the read-only successor maintenance credential and terminal audit through the day so repeats remain authenticated. Do not restart solely to remove a credential. The active hold has already been removed.\",\n    \"tomorrow\": \"For a new KST day, the prior authority/audit binding does not match the new projection and active/consuming are absent, so the gate returns ALLOW and existing Topic59PublicationLedger behavior resumes normally. No operator resume and no config change are required.\",\n    \"later_cleanup\": \"A future separately qualified package may archive the expired credential/audit after the observation window; cleanup is not required for correct next-day behavior and is not part of this recovery.\"\n  },\n  \"observer_design\": {\n    \"required_fix\": \"Retain the current _day_status_days(profile) behavior that parses nutrition_coaching.weekly_operations_authority_path and never hard-codes the unsuffixed predecessor root.\",\n    \"binding\": \"Make observer runtime/execution/authorization/candidate values data-bound from a strict sealed observer binding rather than adding a compile-time candidate-digest cycle. The binding is generated from the committed r71b sealed target.\",\n    \"source_inventory\": [\n      \"scripts/nutricoach_v150_observer_contract.py\",\n      \"scripts/nutricoach_v150_observer_runtime.py\",\n      \"scripts/nutricoach_v150_observer_final.py\",\n      \"scripts/nutricoach_v150_seven_day_observer.py\",\n      \"tests/test_nutricoach_v150_seven_day_observer.py\"\n    ],\n    \"postcommit\": \"Todo 11 writes a fresh private observer-r71 binding and chain, updates the checksum manifest/systemd writable path under its authorized workflow, then requires one manual PASS and the next timer PASS linked by previous_row_digest. observer-r70 remains unchanged.\"\n  },\n  \"files_and_symbols\": {\n    \"new_runtime_files\": [\n      {\n        \"path\": \"gateway/platforms/nutrition_weekly_maintenance_contract.py\",\n        \"symbols\": [\n          \"Topic59MaintenanceAuthorityV1\",\n          \"Topic59MaintenanceHoldV1\",\n          \"Topic59MaintenanceSkipAuditV1\",\n          \"Topic59MaintenanceDecisionKind\",\n          \"Topic59MaintenanceDecision\",\n          \"Topic59MaintenanceFailure\"\n        ]\n      },\n      {\n        \"path\": \"gateway/platforms/nutrition_weekly_maintenance_store.py\",\n        \"symbols\": [\n          \"Topic59MaintenanceGate\",\n          \"Topic59MaintenancePaths\",\n          \"Topic59MaintenanceGate.for_profile\",\n          \"Topic59MaintenanceGate.evaluate\",\n          \"_open_owned_directory\",\n          \"_read_regular_at\",\n          \"_atomic_write_at\",\n          \"_fsync_directory\"\n        ]\n      }\n    ],\n    \"modified_runtime_files\": [\n      {\n        \"path\": \"gateway/platforms/nutrition_weekly_operations.py\",\n        \"symbols\": [\"Topic59PublicationDisposition\", \"Topic59PublicationResult\", \"Topic59DayCardProjector.__init__\", \"Topic59DayCardProjector.publish\"],\n        \"change\": \"Require the gate and invoke it immediately before self._ledger.claim.\"\n      },\n      {\n        \"path\": \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\",\n        \"symbols\": [\"Topic59IncidentReason\"],\n        \"change\": \"Add narrow maintenance authority/audit rejection reasons; do not add a delivery state.\"\n      },\n      {\n        \"path\": \"gateway/platforms/nutrition_weekly_dispatcher.py\",\n        \"symbols\": [\"WeeklyOperationsDispatchResult\", \"_dispatch_customer\", \"dispatch_weekly_operations_tick\"],\n        \"change\": \"Construct the profile gate, preserve typed Topic-59 disposition, and continue treating refusal/incident as failure.\"\n      },\n      {\n        \"path\": \"gateway/platforms/telegram_weekly_host_dispatch.py\",\n        \"symbols\": [\"_dispatch_weekly_operations_tick\", \"_run_weekly_operations_dispatch\", \"NutritionScheduledTickOutcome\"],\n        \"change\": \"Propagate the typed maintenance success while preserving activation-notice failures.\"\n      },\n      {\n        \"path\": \"gateway/platforms/telegram.py\",\n        \"symbols\": [\"_send_nutrition_coaching_tick_authorized\"],\n        \"change\": \"Return typed noop_maintenance raw_response only when all work succeeds; do not create message_id.\"\n      },\n      {\n        \"path\": \"cron/physique_inline_card.py\",\n        \"symbols\": [\"_AsyncCardResult\", \"LaunchResult\", \"launch_scheduled_card\", \"_ScheduledTransport\"],\n        \"change\": \"Translate the typed tick outcome to maintenance_noop=True and sent=False.\"\n      },\n      {\n        \"path\": \"cron/scheduler.py\",\n        \"symbols\": [\"run_one_job\"],\n        \"change\": \"Mark maintenance noop ok and persist truthful output distinct from sent.\"\n      }\n    ],\n    \"modified_package_and_live_files\": [\n      \"scripts/nutricoach_v150_live_upgrade_state.py\",\n      \"scripts/nutricoach_v150_host_operations.py\",\n      \"scripts/nutricoach_v150_concrete_host.py\",\n      \"scripts/nutricoach_v150_sealed_target.py\",\n      \"scripts/nutricoach_v150_sealed_controller.py\",\n      \"scripts/nutricoach_v150_controller_worker.py\",\n      \"scripts/nutricoach_v150_detached_bootstrap.py\",\n      \"scripts/execute_nutricoach_v150_sealed_live.py\",\n      \"scripts/prepare_nutricoach_v150_v15_preseal.py\",\n      \"scripts/verify_nutricoach_v150_preseal_v15.py\",\n      \"scripts/rehearse_nutricoach_v150_v15.py\",\n      \"scripts/seal_nutricoach_v150_candidate.py\",\n      \"scripts/verify_nutricoach_v150_candidate.py\",\n      \"scripts/verify_nutricoach_v150_candidate_inputs.py\"\n    ],\n    \"script_symbol_changes\": [\n      \"Change PRESEAL/PREFLIGHT/AUTHORITY_ID/default candidate/rehearsal constants to the exact r71b-maintenance roots.\",\n      \"Add sealed maintenance authority generation, package binding, systemd credential postimage, active-hold creation, complete no-send preflight, event-driven cron completion watch, maintenance phase/recovery, and rollback cron pause.\",\n      \"Add every new/changed wheel source and test to candidate_source_paths, SUCCESSOR_OVERLAY_PATHS, candidate wheel-member verification, controller closure REQUIRED set, and package manifests.\",\n      \"Preserve old r71 package digests in supersession/tombstone evidence and reject old approval phrases before reservation.\"\n    ],\n    \"observer_files\": [\n      \"scripts/nutricoach_v150_observer_contract.py\",\n      \"scripts/nutricoach_v150_observer_runtime.py\",\n      \"scripts/nutricoach_v150_observer_final.py\",\n      \"scripts/nutricoach_v150_seven_day_observer.py\",\n      \"tests/test_nutricoach_v150_seven_day_observer.py\"\n    ]\n  },\n  \"test_plan\": {\n    \"tdd_red_first\": [\n      \"Valid credential plus hold currently reaches Topic59PublicationLedger.claim and provider; new test must fail by replacing claim with an assertion and expecting NOOP_MAINTENANCE.\",\n      \"Current scheduler labels a successful no-provider tick as sent; new test must fail expecting maintenance_noop=True, sent=False, and truthful cron output.\",\n      \"Current transaction has no hold arm/consume/recovery phases and no narrow r70 cron exception; controller tests must fail before implementation.\",\n      \"Current observer candidate closure omits the configured-root fix; closure test must fail until observer source/binding is included.\"\n    ],\n    \"new_test_files\": [\n      \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\",\n      \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\",\n      \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\",\n      \"tests/test_nutricoach_v150_r71b_maintenance_transaction.py\"\n    ],\n    \"existing_test_files_to_extend\": [\n      \"tests/gateway/test_nutrition_weekly_operations_topic59.py\",\n      \"tests/gateway/test_nutrition_weekly_operations_topic59_failures.py\",\n      \"tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py\",\n      \"tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py\",\n      \"tests/cron/test_physique_inline_card.py\",\n      \"tests/cron/test_scheduler.py\",\n      \"tests/test_nutricoach_v150_sealed_controller.py\",\n      \"tests/test_nutricoach_v150_v15_authority_adversarial.py\",\n      \"tests/test_nutricoach_v150_v15_safety.py\",\n      \"tests/test_nutricoach_v150_v15_closure.py\",\n      \"tests/test_verify_nutricoach_v150_candidate.py\",\n      \"tests/test_nutricoach_v150_seven_day_observer.py\"\n    ],\n    \"positive_cases\": [\n      \"Valid exact hold: claim raises if called, transport raises if called, result is NOOP_MAINTENANCE, audit terminal fields are truthful, publication ledger unchanged.\",\n      \"Second same-day tick: identical disposition/audit digest, no file mutation, claim/provider/network zero.\",\n      \"Crash after active-to-consuming rename: next tick completes one audit and removes consuming with no provider.\",\n      \"Crash after audit replace before consuming unlink: next tick validates audit, removes consuming, and remains idempotent.\",\n      \"Two concurrent ticks subscribe before trigger: one consumes, both return NOOP_MAINTENANCE, one audit, zero claim/provider.\",\n      \"Historical two latest=sending slots remain exact bytes and are not selected or retried.\",\n      \"Scheduler integration marks last_status ok and output says maintenance no-op completed.\",\n      \"Tomorrow with active/consuming absent ignores prior audit and reaches normal claim; fake transport may send once in a synthetic fixture, proving automatic release.\"\n    ],\n    \"negative_matrix\": [\n      \"authority absent while a maintenance file exists\",\n      \"malformed/noncanonical/extra-field authority or hold\",\n      \"hold first use before not_before\",\n      \"hold first use at/after expires_at\",\n      \"physical hold replay after terminal audit\",\n      \"wrong candidate digest\",\n      \"wrong config digest\",\n      \"wrong route digest/topic\",\n      \"wrong customer/card_slot/day\",\n      \"symlink at directory, hold, consuming, audit, lock, or credential\",\n      \"wrong owner, gid, mode, nlink, file kind, oversized file\",\n      \"tampered audit digest or false sent/delivered/message_id/provider fields\",\n      \"audit/hold mismatch or unexpected extra maintenance path\"\n    ],\n    \"negative_expected_result\": \"Every negative case returns DENY/REFUSED/INCIDENT, claim=0, send=0, edit=0, network=0, no delivery-state fabrication, and scheduler error rather than false ok.\",\n    \"transaction_cases\": [\n      \"Known exact r70 cron error accepted only with package-bound no-send oracle; any other cron error blocks before reservation.\",\n      \"All original stop/install/migrate/switch/reload/start/post-fence fault stages restore protected bytes and restart r70 only with cron paused.\",\n      \"Interrupted hold writes, fsyncs, rename, audit, completion watch, phase write, authorization consume, and rollback pause are independently injected.\",\n      \"MAINTENANCE_CONFIRMED interrupted commit rolls forward after exact verification.\",\n      \"Postcommit rollback retains truthful audit, restores r70 authority, pauses cron, and never claims launch success.\"\n    ],\n    \"nondeterminism_rules\": \"All async/concurrency/controller tests subscribe to the exact event before triggering, await it with a bounded timeout, inject fixed aware KST clocks, and use no sleep, polling delay, or timing luck.\"\n  },\n  \"qualification_and_release_order\": [\n    {\n      \"order\": 1,\n      \"stage\": \"TDD\",\n      \"requirements\": \"Write and run the failing tests above; retain red output and exact source hashes. Implement the smallest gate/result/transaction changes, then make the same tests green.\"\n    },\n    {\n      \"order\": 2,\n      \"stage\": \"Focused diagnostics and affected suites\",\n      \"requirements\": \"Run LSP on every changed Python file; Ruff, ty, basedpyright, compile without suppression; run all Topic-59, weekly dispatcher, Telegram nutrition tick, cron inline-card/scheduler, transaction/controller, inventory, candidate, preseal, and observer tests once.\"\n    },\n    {\n      \"order\": 3,\n      \"stage\": \"Full suites\",\n      \"requirements\": \"Run the full profile suite under UV_OFFLINE=1 with a short isolated basetemp, the complete affected gateway/cron suite, and the complete v1.5 controller/sealer/verifier suite. Any unrelated pre-existing baseline failure is reported, never skipped or deleted.\"\n    },\n    {\n      \"order\": 4,\n      \"stage\": \"Reproducible wheels\",\n      \"requirements\": \"From two fresh clean copied inputs with SOURCE_DATE_EPOCH=1704067200 and UV_OFFLINE=1, build Hermes and profile wheels; require byte-identical pairs, ZIP CRC, RECORD hash/size checks, and exact source-member parity including both maintenance modules and propagation files. Remove ambient build/cache outputs.\"\n    },\n    {\n      \"order\": 5,\n      \"stage\": \"Fresh candidate\",\n      \"requirements\": \"Prove the r71b candidate root absent and all r71 tombstones unchanged; seal exactly task-v15r71b-maintenance-candidate once; run current-input and canonical candidate verifiers plus mutation/missing-overlay/occupied-root attacks.\"\n    },\n    {\n      \"order\": 6,\n      \"stage\": \"Fresh preseal\",\n      \"requirements\": \"Prove r71b preseal/preflight/authority/execution/runtime roots absent; require explicit hold window arguments; generate fresh protected inventory and maintenance authority; freeze the exact package; run detached bootstrap/preseal verifier from outside source.\"\n    },\n    {\n      \"order\": 7,\n      \"stage\": \"13-case rehearsal\",","truncated":true,"truncatedBy":"bytes","totalLines":745,"totalBytes":57885,"outputLines":644,"outputBytes":50799,"lastLinePartial":false,"firstLineExceedsLimit":false,"maxLines":2000,"maxBytes":51200}},"isError":false,"timestamp":1788246954559}}
{"type":"message","id":"1d4b5c8e","parentId":"ffb38457","timestamp":"2026-09-01T07:15:54.560Z","message":{"role":"toolResult","toolCallId":"call_3faQHW1gYLdMsItjz8U8RAOx|fc_046f5546d6e20d23016a967baa4f6087d08ec806157162f442","toolName":"read","content":[{"type":"text","text":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-v1\",\n  \"task_id\": \"st_01a05bc2\",\n  \"status\": \"DONE_SOURCE_ONLY\",\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"scope_guards\": {\n    \"git_or_github_actions\": 0,\n    \"network_or_provider_actions\": 0,\n    \"customer_actions\": 0,\n    \"package_preseal_live_profile_credential_root_creations\": 0,\n    \"commits\": 0\n  },\n  \"red_green\": {\n    \"red\": \"pytest collection failed with ModuleNotFoundError for nutrition_weekly_maintenance_contract before runtime modules existed\",\n    \"green\": {\n      \"affected_tests\": 189,\n      \"failed\": 0,\n      \"duration_seconds\": 6.56,\n      \"suites\": [\n        \"new maintenance authority/store/propagation tests\",\n        \"Topic59 projection/publication/failure/r2/Telegram suites\",\n        \"weekly dispatcher epoch2 and host matrix\",\n        \"cron inline-card and scheduler suites\"\n      ]\n    }\n  },\n  \"manual_zero_call_qa\": {\n    \"surface\": \"isolated actual Topic59DayCardProjector -> typed maintenance result -> actual launch_scheduled_card -> run_one_job scheduler bridge\",\n    \"current_day_ticks\": [\"noop_maintenance\", \"noop_maintenance\"],\n    \"current_day_audit_count\": 1,\n    \"current_day_delivery_ledger_rows_before_tomorrow\": 0,\n    \"send_calls_current_day\": 0,\n    \"edit_calls_current_day\": 0,\n    \"network_calls\": 0,\n    \"tomorrow_disposition\": \"sent\",\n    \"tomorrow_fake_transport_send_calls\": 1,\n    \"scheduler_mark_job_run\": [true, null],\n    \"scheduler_status_token\": \"maintenance no-op completed\",\n    \"privacy_oracle\": {\n      \"audit_has_card_text\": false,\n      \"audit_has_raw_customer_or_telegram_identity\": false,\n      \"sent\": false,\n      \"delivered\": false,\n      \"message_id\": null,\n      \"provider_receipt\": null,\n      \"provider_calls\": 0,\n      \"network_calls\": 0\n    }\n  },\n  \"verification\": {\n    \"ruff\": \"PASS\",\n    \"ty_strict_targeted\": \"PASS\",\n    \"basedpyright_strict_targeted\": \"PASS: 0 errors, 0 warnings, 0 notes\",\n    \"lsp\": \"PASS for changed-file source set after workspace refresh; standalone server initially retained stale pre-patch diagnostics\",\n    \"compileall\": \"PASS\",\n    \"import_smoke\": \"PASS\",\n    \"no_excuse_rules_new_runtime_modules\": \"PASS: no violations in 3 files\",\n    \"fixed_sleeps_or_polling_added\": 0\n  },\n  \"source_hashes\": {\n    \"before_anchors\": {\n      \"gateway/platforms/nutrition_weekly_operations.py\": \"52020ac1bd42d8812f7b69d5b74be6322885f6746159298df81a750a1e39d930\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"616b8b4da48d9c2c89336d9e791339c7401c354d67f38831af0f5d155a492cc8\",\n      \"cron/physique_inline_card.py\": \"bdb1a34d16763c9e3cbe687a3617215e32b6c6919c9b49405d42e1ee5831ba5d\",\n      \"cron/scheduler.py\": \"bfe56dcc74a08278671e3e373b0eb8ce624a093b6ed0ad365464e87b1de89709\"\n    },\n    \"after\": {\n      \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n      \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d\",\n      \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542\",\n      \"gateway/platforms/nutrition_weekly_operations.py\": \"b0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e\",\n      \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n      \"cron/physique_inline_card.py\": \"9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2\",\n      \"cron/scheduler.py\": \"09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95\"\n    }\n  },\n  \"loc_review\": {\n    \"nutrition_weekly_maintenance_contract.py\": 137,\n    \"nutrition_weekly_maintenance_io.py\": 99,\n    \"nutrition_weekly_maintenance_store.py\": 208,\n    \"nutrition_weekly_dispatch_result.py\": 14,\n    \"nutrition_weekly_operations.py\": 146,\n    \"nutrition_weekly_dispatcher.py\": 250,\n    \"note\": \"Large inherited telegram.py and scheduler.py received only narrow propagation branches; no adjacent refactor was performed.\"\n  },\n  \"done_claim\": {\n    \"claim\": \"The source-only r71b maintenance runtime increment is implemented and qualified without package, preseal, live, profile, credential, root, provider, customer, network, Git, or commit effects.\",\n    \"single_responsibility\": \"PASS: contract, secure I/O, gate state machine, dispatch result, and bridge propagation are separated by responsibility.\",\n    \"boundary_purity\": \"PASS: strict frozen Pydantic documents parse canonical external JSON once; internal decisions are typed.\",\n    \"variant_discrimination\": \"PASS: maintenance decisions use an exhaustive typed match at the publication boundary.\",\n    \"escape_hatches\": \"PASS: no Any, cast, ignore, noqa, broad catch, or sleep was introduced in the maintenance runtime.\",\n    \"defensive_layer\": \"PASS: checks are limited to credential/filesystem/JSON trust boundaries.\",\n    \"one_off_helpers\": \"PASS: storage helpers encode repeated secure openat and atomic-write contracts.\",\n    \"tests\": \"PASS: reverting the pre-claim gate or typed scheduler branch fails focused behavior tests.\",\n    \"parameter_bloat\": \"PASS: no new function exceeds three independent domain parameters.\",\n    \"redundant_verification\": \"PASS: readback exists only because the explicit durable filesystem contract requires it.\",\n    \"negative_naming\": \"PASS\",\n    \"logging\": \"NOT_TOUCHED\"\n  }\n}\n"}],"isError":false,"timestamp":1788246954559}}
{"type":"message","id":"816b2a6b","parentId":"1d4b5c8e","timestamp":"2026-09-01T07:15:54.560Z","message":{"role":"toolResult","toolCallId":"call_dTXTue5eEfdC2pipHiAgtiry|fc_046f5546d6e20d23016a967baa4fdc87d08c6ad96d9aebf162","toolName":"read","content":[{"type":"text","text":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71-production-v1\",\n  \"task_id\": \"st_01a05afa\",\n  \"captured_at\": \"2026-09-01T12:22:04.142033358+09:00\",\n  \"status\": \"BLOCKED_PREFLIGHT\",\n  \"done_claim\": false,\n  \"blocker_count\": 2,\n  \"blockers\": [\n    {\n      \"code\": \"OBSERVER_R70_LATEST_NOT_PASS\",\n      \"required\": \"observer-r70 latest status PASS\",\n      \"observed\": \"FAIL\",\n      \"failure\": \"first_day_status\",\n      \"observed_at\": \"2026-09-01T12:20:26.471912+09:00\",\n      \"row_digest\": \"09f1a3bce0ad593963a9d1c689aa7f275ba062e57c74166eae68d89824091bfa\",\n      \"disposition\": \"STOP_BEFORE_LAUNCHER\"\n    },\n    {\n      \"code\": \"CRON_LATEST_NOT_SUCCESS\",\n      \"required\": \"cron/weekly latest success\",\n      \"observed\": \"error\",\n      \"job\": \"NutriCoach schedule dispatcher\",\n      \"last_run_at\": \"2026-09-01T12:21:47.051576+09:00\",\n      \"disposition\": \"STOP_BEFORE_LAUNCHER\"\n    }\n  ],\n  \"transaction\": {\n    \"launcher_invocation_count\": 0,\n    \"launcher_invoked\": false,\n    \"launcher_exit_code\": null,\n    \"launcher_stdout\": null,\n    \"launcher_stderr\": null,\n    \"retry_count\": 0,\n    \"approval_consumed\": false,\n    \"production_mutation_attempted\": false,\n    \"rollback_attempted\": false,\n    \"replay_probe\": \"NOT_APPLICABLE_LAUNCHER_NEVER_INVOKED\",\n    \"stop_reason\": \"Mandatory immediate read-only production preflight failed before live action\"\n  },\n  \"r71_action_roots\": {\n    \"authorization\": {\n      \"path\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-authorization-v15/nutricoach-v150-v15-runtime-authority-r71\",\n      \"status\": \"ABSENT\"\n    },\n    \"execution\": {\n      \"path\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-executions-v15/nutricoach-v150-v15-runtime-authority-r71\",\n      \"status\": \"ABSENT\"\n    },\n    \"successor_runtime\": {\n      \"path\": \"/home/cube/.hermes/profiles/dualcoachtest/.strict-runtime/a41c97c8-v150\",\n      \"status\": \"ABSENT\"\n    },\n    \"observer_r71\": {\n      \"path\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/observer-r71\",\n      \"status\": \"ABSENT\"\n    }\n  },\n  \"r70_baseline\": {\n    \"authorization\": {\n      \"path\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-authorization-v15/nutricoach-v150-v15-runtime-authority-r70/authorization-consumed.json\",\n      \"status\": \"CONSUMED\",\n      \"outcome\": \"SUCCEEDED\",\n      \"candidate_digest\": \"81a7a06ec2e7a1595784c92ab61df0df7e138d13a2620d9a917e94999e7f7a04\"\n    },\n    \"execution\": {\n      \"path\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-executions-v15/nutricoach-v150-v15-runtime-authority-r70/phase.json\",\n      \"phase\": \"COMMITTED\"\n    },\n    \"observer\": {\n      \"path\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/observer-r70/observations.jsonl\",\n      \"file_sha256_at_capture\": \"0ec164bc4577691f7267c04c8362e236d61bec3972d84ea37c5c35628e099f14\",\n      \"row_count\": 94,\n      \"latest_status\": \"FAIL\",\n      \"latest_failures\": [\n        \"first_day_status\"\n      ],\n      \"latest_row_digest\": \"09f1a3bce0ad593963a9d1c689aa7f275ba062e57c74166eae68d89824091bfa\",\n      \"latest_snapshot\": {\n        \"active\": true,\n        \"candidate_matches\": true,\n        \"capacity\": 5,\n        \"channel_inbox_off\": true,\n        \"committed\": true,\n        \"day_status_days\": [\n          \"2026-08-30\"\n        ],\n        \"journal_clean\": true,\n        \"nrestarts\": 0,\n        \"telegram_sockets\": 2,\n        \"weekly_enabled\": true\n      }\n    }\n  },\n  \"sealed_artifacts\": {\n    \"canonical_preseal_verifier\": {\n      \"exit_code\": 0,\n      \"status\": \"V15_RUNTIME_AUTHORITY_PRESEAL_VERIFIED\",\n      \"approval_phrase\": \"AUTHORIZE NUTRICOACH V1.5 LIVE UPGRADE 4b032722f236dacc7f7e413cc37b31232000ce4f5d839bf0360fa8ac008ea6b1\",\n      \"package_digest\": \"4b032722f236dacc7f7e413cc37b31232000ce4f5d839bf0360fa8ac008ea6b1\",\n      \"package_sha256\": \"21c8f3d3b2e95b37a1af2123fe196309a01eb6fb768bc38a15efa0973cfa666a\",\n      \"candidate_digest\": \"a41c97c8a467b0308b9f50ac072cc3adae1c2d47ca515b76f123e7c1debee9be\",\n      \"closure_digest\": \"sha256:0b6fae0262f828e8136e07ea0bb126e141655148363b3fe30059c554f8be9c46\"\n    },\n    \"canonical_candidate_verifier\": {\n      \"exit_code\": 0,\n      \"sentinel\": \"NUTRICOACH_V150_CANDIDATE_PASS\",\n      \"candidate_digest\": \"a41c97c8a467b0308b9f50ac072cc3adae1c2d47ca515b76f123e7c1debee9be\"\n    },\n    \"preseal\": {\n      \"path\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-transaction-preseal-v15-runtime-authority-r71\",\n      \"file_count\": 595,\n      \"tree_sha256\": \"a76a0961829d8222814c1c88fac8e68f90ad7faf822e6d5ea3efb655545b7ee8\",\n      \"writable_count\": 0,\n      \"symlink_count\": 0\n    },\n    \"permission_package\": {\n      \"path\": \"/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/preflight-v15-runtime-authority-r71/package.json\",\n      \"sha256\": \"21c8f3d3b2e95b37a1af2123fe196309a01eb6fb768bc38a15efa0973cfa666a\",\n      \"protected_inventory_sha256\": \"d2c084be0865f8e9844452a7b683f97800e31af9bc7e1a113241109a283aada5\",\n      \"integrity\": \"AUTHENTICATED_DIGEST_FAIL_CLOSED\"\n    },\n    \"candidate_r3\": {\n      \"path\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71-candidate-r3\",\n      \"file_count\": 362,\n      \"tree_sha256\": \"6310a71806d393f66e104f6de32d311e32c203d3a6d70947099bdd079c01dce9\",\n      \"writable_count\": 0,\n      \"symlink_count\": 0\n    },\n    \"rehearsal\": {\n      \"path\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71-rehearsal\",\n      \"file_count\": 1,\n      \"writable_count\": 0,\n      \"symlink_count\": 0,\n      \"task9_status\": \"PASS\",\n      \"task9_case_count\": 13,\n      \"task9_external_events\": 0\n    },\n    \"launcher\": {\n      \"path\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/scripts/execute_nutricoach_v150_sealed_live.py\",\n      \"sha256\": \"2fd6b4d08e1e075ef014b8f26537f84f80b96e04d9a651f6aec18111910e9322\",\n      \"matches_frozen_task8_task9_source\": true\n    }\n  },\n  \"live_service_read_only\": {\n    \"service\": \"hermes-gateway-dualcoachtest.service\",\n    \"ActiveState\": \"active\",\n    \"SubState\": \"running\",\n    \"MainPID\": 2447108,\n    \"NRestarts\": 0,\n    \"runtime\": \"/home/cube/.hermes/profiles/dualcoachtest/.strict-runtime/81a7a06e-v150/venv\",\n    \"journal_bad_fragment_count_last_2h\": 0,\n    \"telegram_process_sockets\": [\n      {\n        \"remote_ip\": \"149.154.166.110\",\n        \"remote_port\": 443,\n        \"tcp_state\": \"CLOSE_WAIT\"\n      },\n      {\n        \"remote_ip\": \"149.154.166.110\",\n        \"remote_port\": 443,\n        \"tcp_state\": \"ESTABLISHED\"\n      }\n    ],\n    \"capacity\": 5,\n    \"channel_inbox_off\": true,\n    \"weekly_enabled\": true,\n    \"cron\": {\n      \"job_count\": 1,\n      \"enabled\": true,\n      \"last_status\": \"error\",\n      \"last_run_at\": \"2026-09-01T12:21:47.051576+09:00\",\n      \"next_run_at_at_capture\": \"2026-09-01T12:22:00+09:00\"\n    }\n  },\n  \"preserved_customer_state_redacted\": {\n    \"customer_values_recorded\": false,\n    \"draft\": {\n      \"path\": \"/home/cube/.hermes/profiles/dualcoachtest/data/customers/pilot_20260820_01/wizard/drafts/235d1edf627bf3b9ba321caa32a198f0.json\",\n      \"sha256\": \"69f6510e555b47984c6462b12da569b5bb67c051b1592ddb2ffb93898564b9c1\",\n      \"semantic_cursor\": \"calories\",\n      \"version\": 1\n    },\n    \"binding\": {\n      \"path\": \"/home/cube/.hermes/profiles/dualcoachtest/data/customers/pilot_20260820_01/wizard/telegram-bindings.json\",\n      \"sha256\": \"318d62644dc480dbe2be54b402f19eb0af41dc35928206d19357a9d6f9053713\",\n      \"matched_draft\": true,\n      \"semantic_cursor\": \"calories\",\n      \"version\": 1,\n      \"expires_at_epoch\": 1788192937,\n      \"expired_at_capture\": false\n    },\n    \"events\": {\n      \"path\": \"/home/cube/.hermes/profiles/dualcoachtest/data/customers/pilot_20260820_01/wizard/events.jsonl\",\n      \"sha256\": \"4a718b95dc35f7219be2f0c5c1b7ce1d67690489086b117fb82c898564010155\",\n      \"line_count\": 2\n    },\n    \"hashes_unchanged_at_final_absence_check\": true,\n    \"automatic_send_attempts\": 0,\n    \"agent_originated_customer_messages\": 0,\n    \"agent_originated_customer_updates\": 0\n  },\n  \"preflight_disposition\": {\n    \"completed_read_only_checks\": [\n      \"Todo10 and Task8/Task9 receipts re-read\",\n      \"canonical preseal verifier PASS\",\n      \"canonical candidate verifier PASS\",\n      \"r71 action roots absent\",\n      \"r70 authorization and execution receipts valid\",\n      \"service active/running/NRestarts0/MainPID\",\n      \"process-owned Telegram sockets inspected\",\n      \"journal startup fragments absent\",\n      \"capacity five and Channel Inbox OFF\",\n      \"cron latest status inspected\",\n      \"observer-r70 latest row inspected\",\n      \"draft/binding/event paths, hashes, cursor, version, and expiry recorded without customer values\"\n    ],\n    \"not_run_after_blocker\": [\n      \"capture/verify-only live protected-inventory preflight\",\n      \"exact-step successor compatibility probe\",\n      \"prepared invite and customer projection full comparison\",\n      \"live launcher\",\n      \"postcommit verification\",\n      \"replay-guard second-attempt probe\"\n    ],\n    \"reason\": \"The hard gate says any unhealthy state must write BLOCKED evidence and stop before the launcher. The observer and cron latest statuses were unhealthy.\"\n  },\n  \"forbidden_effects\": {\n    \"git_or_github_actions\": 0,\n    \"network_downloads\": 0,\n    \"real_telegram_send_edit_reply_or_callback_ack\": 0,\n    \"customer_messages\": 0,\n    \"customer_updates\": 0,\n    \"observer_r71_created\": false,\n    \"launcher_retries\": 0,\n    \"unrelated_provider_payment_or_account_actions\": 0\n  },\n  \"final_assertions\": {\n    \"r71_authorization_absent\": true,\n    \"r71_execution_absent\": true,\n    \"r71_successor_runtime_absent\": true,\n    \"observer_r71_absent\": true,\n    \"launcher_invocation_count_zero\": true,\n    \"no_replay\": true,\n    \"safe_r70_service_remains_active\": true,\n    \"result\": \"EXACT_BLOCKER_NO_REPLAY\"\n  }\n}\n"}],"isError":false,"timestamp":1788246954559}}
{"type":"message","id":"baffae49","parentId":"816b2a6b","timestamp":"2026-09-01T07:16:08.654Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Identifying changed test files for actual tests**","startedAt":1788246957302,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967bad367087d0a7403297e8f27887\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnu4w4j2S8VamZLzWHPZQ5iVgmQWHv7b5DTK0tc2YsIMnQhuCMmRkkVk5NlHOjIMwoc8LubcMRJrDBvDYbrOWnU1yMx5hOx_5-S2ReiWAmpbYevzBnd3XEeW7Q8fsAZm1O1cxjB4yueeHPzu70q94mKadmsAp4dBfCQSQoEm--NjjLLyGBR07wl1x3NwcOyMsI49eiOOgaFRBXjn3TElRibImm6kkgh5ZjPFbhmIjnbhEcU0iNKnwQ41AHWligk7lehD62HPi7vCRY61AehiDF8GqgFfpEwgbdQeA32efsZrogsQx_S5NKXjPAWgDtwEa5t88zAQLCBCwbVdQ-mrW9XX7nzbgMFE-MUnGFl4PGL_EMsRm-B8ykrE3lVb9VPH5D6dPfibDgBQ_Hw9ObddsrVEARL06d_UDrSSOZ5TrYiLacVgBxL_KQ7XWiKwpbVaAFYA_-A8F26-D8GEUiEWAM7RBM1PRE_eSAhbmaoFcl1xv66pJ7f1Btecc_kouW2uqiBBTu69PnBPC6pWIGHB_v9ao3AwwDife0SAfTHa4UvmfRObO33t2xr-JwCDli6ee05ifaOfOHGGm0MV6UAAePYwabu2RAVQBeSxppB2LzxOLzmMWGQUUSrK8nbsOUkiO2BimlaQJf6YGOoSLbDLUOPPOO-IDbZDeoWr8TdcXi5r5zgjsngbvt_P8Xff0q_ElC1_dsUjNUVZRV1yJ3OmcQ2IVDaA6gBztozNkxSNdVaA9TZeFYq3CBi0JUXovwLdHoMw1zq7ssxvTpPmnRGkuPkeq592C_jnf3UX5pHTJZuekh7vn8kX0KRmKnD5iFguWHP_EErNQdbG6yROobn96O6qitIRKTtKt5KiEerT9tIc4u2oHfl1FeIh_lKAv_7VzmN87izJgoQPvw3ZusmBjS38MXo1kw5_l9ZO9jZUSo289IGNisYi5ueWfulaw8EjDECRXkvZDL7A4W5HP2mGfyAzUf0RnEhavJGUxYPnxADFagFvQVV-gu-N5VDo9yfAWv1bhBCU8GVEeRi4osf4LVsM15TmGyXWl9sLJ2zO9w-9ZtBTVQWBjD8FUmbcBXYOPbJGyGoQklq40Yt-rSqHaDulz-KDxvYryuymyufeX5PE2hFDgkeN2Ay4puwNQnqoF9imR9Vgm-yjXOZhA9gUbzOhHgmH-6ZzHchnWn7VJN64H_oPviOOtfUWFmEoHhO99SZYTGSM3yjqqvAhWpD7FxeYwtAdw3ROohf2530ASZ0fXWLuExaUKaYYSu05ZBbWb711YhA0dfCMqFy_iq5itlubi5skcqGpsD3qrAJ-gXarpEkXJ7aTEGyw7BBlCZjIiZ_Vtya_o32BQ-7Iuu0MTWD0UY-zEHNZFT28ecc6KptrfSH7-RpbJhMUMLZoDuP6oZIdq0dg1B5FszvlVZ_eKOYph3gMzfwovsr-gGUjBi3BZWzpLg8xw65wRKM9ddpqWVfJJqmU6VerUhfkMVcUCTrNDhysQT3gvfAURZhkux8z1i1vXQq_QJHUNnWS1ZBaH9hpHA0gKU98nacqg0174G9k9v2A8y-4QXJOwgoGC4mmQWITxtobRxw6BLCMKQFEmx5mGq8t3ewGfxfZINFwf-Q1dMlB01rGn6dh5DxzgHeYanvnMMO6mHSApCdtCiNl1tyy\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Identifying changed test files for actual tests**\"}]}","endedAt":1788246968532},{"type":"toolCall","id":"call_mtIuqBTg5iYUDiVEjVgUxFKU|fc_046f5546d6e20d23016a967bb8724087d093e875de2880f745","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && find tests -type f -iname '*maintenance*' -o -type f -iname '*weekly*' | sort; printf '%s\\n' '--- references maintenance symbols ---'; rg -l 'Topic59Maintenance|noop_maintenance|maintenance_noop' tests cron gateway/platforms | sort","timeout":20}},{"type":"toolCall","id":"call_c7G70xmEghYEH5KBVcf20KVD|fc_046f5546d6e20d23016a967bb8725087d0879bc2ae54e144df","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && sha256sum gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py cron/physique_inline_card.py cron/scheduler.py; wc -l gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py cron/physique_inline_card.py cron/scheduler.py","timeout":20}},{"type":"toolCall","id":"call_Jtv1AWUzta7dhiccfQdwcNEO|fc_046f5546d6e20d23016a967bb8725887d0bea14e480b44bcdd","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && rg -n 'class Topic59DayCardProjector|def publish|\\.claim\\(|maintenance|dispatch_weekly_operations_tick|NutritionScheduledTickOutcome|launch_scheduled_card|run_one_job' gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py","timeout":20}},{"type":"toolCall","id":"call_GeQE4b7N36STVw2A23w6XUok|fc_046f5546d6e20d23016a967bb8726087d0bbc2ab3aaa434582","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && find gateway/platforms cron tests -type f -newermt '2026-09-01 14:00:00' ! -path '*/__pycache__/*' -printf '%TY-%Tm-%TdT%TH:%TM:%TS %p\\n' | sort","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":20281,"output":617,"cacheRead":29184,"cacheWrite":0,"reasoning":53,"totalTokens":50082,"cost":{"input":0.10140500000000001,"output":0.018510000000000002,"cacheRead":0.014591999999999999,"cacheWrite":0,"total":0.13450700000000002}},"stopReason":"toolUse","timestamp":1788246954575,"responseId":"resp_046f5546d6e20d23016a967bab11d487d09bf17ecc2258d6af","rawStopReason":"completed"}}
{"type":"message","id":"023ced51","parentId":"baffae49","timestamp":"2026-09-01T07:16:08.723Z","message":{"role":"toolResult","toolCallId":"call_mtIuqBTg5iYUDiVEjVgUxFKU|fc_046f5546d6e20d23016a967bb8724087d093e875de2880f745","toolName":"bash","content":[{"type":"text","text":"tests/__pycache__/_nutricoach_v150_weekly_fixture.cpython-312.pyc\ntests/__pycache__/nutricoach_v150_weekly_fixture.cpython-312.pyc\ntests/__pycache__/test_nutricoach_v150_weekly_authority.cpython-312-pytest-9.1.1.pyc\ntests/__pycache__/test_nutricoach_v150_weekly_authority.cpython-312.pyc\ntests/gateway/__pycache__/_nutrition_weekly_dispatcher_cases.cpython-312.pyc\ntests/gateway/__pycache__/_nutrition_weekly_dispatcher_config_support.cpython-312.pyc\ntests/gateway/__pycache__/_nutrition_weekly_reminder_support.cpython-312.pyc\ntests/gateway/__pycache__/_weekly_operations_authority_support.cpython-312.pyc\ntests/gateway/__pycache__/_weekly_owner_summary_support.cpython-312.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_dispatcher.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_dispatcher_epoch2.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_dispatcher_host_matrix.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_dispatcher_lifecycle.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_dispatcher_maintenance.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_host_refactor.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_operations.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_operations_registry_identity_r7.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_operations_topic59.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_operations_topic59.cpython-312.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_operations_topic59_failures.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_operations_topic59_r2.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_operations_topic59_r2_slots.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_operations_topic59_telegram.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_owner_draft.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_owner_draft_authority.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_owner_draft_model.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_owner_draft_r3.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_reminder_allocation_r10.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_reminder_bootstrap_boundary_r7.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_reminder_bootstrap_r6.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_reminder_bootstrap_race_r7.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_reminder_boundaries.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_reminder_close_r11.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_reminder_ownership_r8.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_reminder_runtime.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_reminder_threat_boundary_r8.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_reminder_transfer_r9.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_topic59_maintenance.cpython-312-pytest-9.0.2.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_topic59_maintenance.cpython-312.pyc\ntests/gateway/__pycache__/test_nutrition_weekly_topic59_maintenance_failures.cpython-312-pytest-9.0.2.pyc\ntests/gateway/_nutrition_weekly_dispatcher_cases.py\ntests/gateway/_nutrition_weekly_dispatcher_config_support.py\ntests/gateway/_nutrition_weekly_reminder_support.py\ntests/gateway/_weekly_operations_authority_support.py\ntests/gateway/_weekly_owner_summary_support.py\ntests/gateway/test_nutrition_weekly_dispatcher.py\ntests/gateway/test_nutrition_weekly_dispatcher_epoch2.py\ntests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py\ntests/gateway/test_nutrition_weekly_dispatcher_lifecycle.py\ntests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\ntests/gateway/test_nutrition_weekly_host_refactor.py\ntests/gateway/test_nutrition_weekly_operations.py\ntests/gateway/test_nutrition_weekly_operations_registry_identity_r7.py\ntests/gateway/test_nutrition_weekly_operations_topic59.py\ntests/gateway/test_nutrition_weekly_operations_topic59_failures.py\ntests/gateway/test_nutrition_weekly_operations_topic59_r2.py\ntests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py\ntests/gateway/test_nutrition_weekly_operations_topic59_telegram.py\ntests/gateway/test_nutrition_weekly_owner_draft.py\ntests/gateway/test_nutrition_weekly_owner_draft_authority.py\ntests/gateway/test_nutrition_weekly_owner_draft_model.py\ntests/gateway/test_nutrition_weekly_owner_draft_r3.py\ntests/gateway/test_nutrition_weekly_reminder_allocation_r10.py\ntests/gateway/test_nutrition_weekly_reminder_bootstrap_boundary_r7.py\ntests/gateway/test_nutrition_weekly_reminder_bootstrap_r6.py\ntests/gateway/test_nutrition_weekly_reminder_bootstrap_race_r7.py\ntests/gateway/test_nutrition_weekly_reminder_boundaries.py\ntests/gateway/test_nutrition_weekly_reminder_close_r11.py\ntests/gateway/test_nutrition_weekly_reminder_ownership_r8.py\ntests/gateway/test_nutrition_weekly_reminder_runtime.py\ntests/gateway/test_nutrition_weekly_reminder_threat_boundary_r8.py\ntests/gateway/test_nutrition_weekly_reminder_transfer_r9.py\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py\ntests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\ntests/test_nutricoach_v150_weekly_authority.py\n--- references maintenance symbols ---\ncron/physique_inline_card.py\ncron/scheduler.py\ngateway/platforms/nutrition_weekly_dispatch_result.py\ngateway/platforms/nutrition_weekly_dispatcher.py\ngateway/platforms/nutrition_weekly_dispatcher.py.orig\ngateway/platforms/nutrition_weekly_maintenance_contract.py\ngateway/platforms/nutrition_weekly_maintenance_io.py\ngateway/platforms/nutrition_weekly_maintenance_store.py\ngateway/platforms/nutrition_weekly_maintenance_store.py.orig\ngateway/platforms/nutrition_weekly_operations.py\ngateway/platforms/telegram.py\ngateway/platforms/telegram_weekly_host_dispatch.py\ntests/cron/test_physique_inline_card.py\ntests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\ntests/gateway/test_nutrition_weekly_operations_topic59.py\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py\ntests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n"}],"isError":false,"timestamp":1788246968723}}
{"type":"message","id":"d6837978","parentId":"023ced51","timestamp":"2026-09-01T07:16:08.723Z","message":{"role":"toolResult","toolCallId":"call_c7G70xmEghYEH5KBVcf20KVD|fc_046f5546d6e20d23016a967bb8725087d0879bc2ae54e144df","toolName":"bash","content":[{"type":"text","text":"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619  gateway/platforms/nutrition_weekly_maintenance_contract.py\n9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d  gateway/platforms/nutrition_weekly_maintenance_io.py\n8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542  gateway/platforms/nutrition_weekly_maintenance_store.py\nb0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e  gateway/platforms/nutrition_weekly_operations.py\n3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2  gateway/platforms/nutrition_weekly_dispatch_result.py\n9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b  gateway/platforms/nutrition_weekly_dispatcher.py\n9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2  cron/physique_inline_card.py\n09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95  cron/scheduler.py\n   164 gateway/platforms/nutrition_weekly_maintenance_contract.py\n   118 gateway/platforms/nutrition_weekly_maintenance_io.py\n   236 gateway/platforms/nutrition_weekly_maintenance_store.py\n   169 gateway/platforms/nutrition_weekly_operations.py\n    19 gateway/platforms/nutrition_weekly_dispatch_result.py\n   285 gateway/platforms/nutrition_weekly_dispatcher.py\n   154 cron/physique_inline_card.py\n  2374 cron/scheduler.py\n  3519 total\n"}],"isError":false,"timestamp":1788246968723}}
{"type":"message","id":"ed7fc05a","parentId":"d6837978","timestamp":"2026-09-01T07:16:08.723Z","message":{"role":"toolResult","toolCallId":"call_Jtv1AWUzta7dhiccfQdwcNEO|fc_046f5546d6e20d23016a967bb8725887d0bea14e480b44bcdd","toolName":"bash","content":[{"type":"text","text":"cron/scheduler.py:2054:def run_one_job(job: dict, *, adapters=None, loop=None, verbose: bool = False) -> bool:\ncron/scheduler.py:2074:            from cron.physique_inline_card import launch_scheduled_card\ncron/scheduler.py:2078:            launched = launch_scheduled_card(\ncron/scheduler.py:2086:            if launched.maintenance_noop:\ncron/scheduler.py:2087:                output += \"Status: maintenance no-op completed\\n\"\ncron/scheduler.py:2247:            module-level ``run_one_job`` so ``tick`` and external providers\ncron/scheduler.py:2250:            return run_one_job(job, adapters=adapters, loop=loop, verbose=verbose)\ngateway/platforms/nutrition_weekly_dispatch_result.py:14:    def maintenance_noop(self) -> bool:\ncron/physique_inline_card.py:14:    from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\ncron/physique_inline_card.py:37:    raw_response: NutritionScheduledTickOutcome | None\ncron/physique_inline_card.py:57:    maintenance_noop: bool = False\ncron/physique_inline_card.py:77:def launch_scheduled_card(\ncron/physique_inline_card.py:97:            sent=sent and not transport.maintenance_noop,\ncron/physique_inline_card.py:99:            maintenance_noop=transport.maintenance_noop,\ncron/physique_inline_card.py:133:        self.maintenance_noop: bool = False\ncron/physique_inline_card.py:149:        from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\ncron/physique_inline_card.py:150:        self.maintenance_noop = (\ncron/physique_inline_card.py:151:            isinstance(result.raw_response, NutritionScheduledTickOutcome)\ncron/physique_inline_card.py:152:            and result.raw_response.disposition == \"noop_maintenance\"\ngateway/platforms/nutrition_weekly_dispatcher.py:26:from .nutrition_weekly_maintenance_store import Topic59MaintenanceGate\ngateway/platforms/nutrition_weekly_dispatcher.py:266:async def dispatch_weekly_operations_tick(\ngateway/platforms/nutrition_weekly_operations.py:12:from .nutrition_weekly_maintenance_contract import (\ngateway/platforms/nutrition_weekly_operations.py:44:    NOOP_MAINTENANCE = \"noop_maintenance\"\ngateway/platforms/nutrition_weekly_operations.py:62:    maintenance_audit_digest: str | None = None\ngateway/platforms/nutrition_weekly_operations.py:79:class Topic59DayCardProjector:\ngateway/platforms/nutrition_weekly_operations.py:80:    def __init__(self, ledger_path: Path, maintenance_gate: Topic59MaintenanceEvaluator | None = None) -> None:\ngateway/platforms/nutrition_weekly_operations.py:82:        self._maintenance_gate: Topic59MaintenanceEvaluator | None = maintenance_gate\ngateway/platforms/nutrition_weekly_operations.py:84:    async def publish(\ngateway/platforms/nutrition_weekly_operations.py:93:        if self._maintenance_gate is not None:\ngateway/platforms/nutrition_weekly_operations.py:94:            maintenance = self._maintenance_gate.evaluate(projection, request.runtime.now)\ngateway/platforms/nutrition_weekly_operations.py:95:            match maintenance.kind:\ngateway/platforms/nutrition_weekly_operations.py:101:                        maintenance_audit_digest=maintenance.audit_digest,\ngateway/platforms/nutrition_weekly_operations.py:109:            action = self._ledger.claim(projection)\ngateway/platforms/telegram_weekly_host_dispatch.py:64:class NutritionScheduledTickOutcome:\ngateway/platforms/telegram_weekly_host_dispatch.py:65:    disposition: Literal[\"completed\", \"noop_maintenance\"]\ngateway/platforms/telegram_weekly_host_dispatch.py:156:    async def _dispatch_weekly_operations_tick(\ngateway/platforms/telegram_weekly_host_dispatch.py:165:            dispatch_weekly_operations_tick,\ngateway/platforms/telegram_weekly_host_dispatch.py:168:        return await dispatch_weekly_operations_tick(\ngateway/platforms/telegram_weekly_host_dispatch.py:189:        dispatch = await self._dispatch_weekly_operations_tick(\ngateway/platforms/telegram.py:5675:        async def publisher(card: Mapping[str, object]) -> object:\ngateway/platforms/telegram.py:9782:                \"maintenance\",\ngateway/platforms/telegram.py:9864:                \"maintenance\",\ngateway/platforms/telegram.py:11561:        maintenance_noop = (\ngateway/platforms/telegram.py:11564:            and weekly_dispatch.maintenance_noop\ngateway/platforms/telegram.py:11567:        if maintenance_noop:\ngateway/platforms/telegram.py:11568:            from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\ngateway/platforms/telegram.py:11571:                raw_response=NutritionScheduledTickOutcome(\"noop_maintenance\"),\n"}],"isError":false,"timestamp":1788246968723}}
{"type":"message","id":"b4dec639","parentId":"ed7fc05a","timestamp":"2026-09-01T07:16:08.723Z","message":{"role":"toolResult","toolCallId":"call_GeQE4b7N36STVw2A23w6XUok|fc_046f5546d6e20d23016a967bb8726087d0bbc2ab3aaa434582","toolName":"bash","content":[{"type":"text","text":"2026-09-01T16:00:47.2047598930 tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n2026-09-01T16:02:35.1150734540 gateway/platforms/nutrition_weekly_maintenance_store.py.orig\n2026-09-01T16:04:24.3580652620 gateway/platforms/nutrition_weekly_operations_publication_contract.py\n2026-09-01T16:04:56.9182360170 gateway/platforms/telegram.py\n2026-09-01T16:05:19.3896124260 cron/scheduler.py\n2026-09-01T16:08:00.0344279720 gateway/platforms/nutrition_weekly_maintenance_contract.py\n2026-09-01T16:08:18.7820500250 cron/physique_inline_card.py\n2026-09-01T16:08:33.4327611060 tests/cron/test_physique_inline_card.py\n2026-09-01T16:09:08.9670058130 tests/gateway/test_nutrition_weekly_topic59_maintenance.py\n2026-09-01T16:10:04.2942640690 gateway/platforms/nutrition_weekly_maintenance_io.py\n2026-09-01T16:10:04.2943504420 gateway/platforms/nutrition_weekly_maintenance_store.py\n2026-09-01T16:10:04.2944066980 gateway/platforms/nutrition_weekly_operations.py\n2026-09-01T16:10:04.3092887260 tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n2026-09-01T16:10:04.3254914180 tests/gateway/test_nutrition_weekly_operations_topic59.py\n2026-09-01T16:12:20.2846143170 gateway/platforms/nutrition_weekly_dispatch_result.py\n2026-09-01T16:12:20.3000069590 gateway/platforms/nutrition_weekly_dispatcher.py.orig\n2026-09-01T16:12:37.6424806180 gateway/platforms/nutrition_weekly_dispatcher.py\n2026-09-01T16:14:21.5705054120 gateway/platforms/telegram_weekly_host_dispatch.py\n"}],"isError":false,"timestamp":1788246968723}}
{"type":"message","id":"be459d76","parentId":"b4dec639","timestamp":"2026-09-01T07:16:21.973Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Verifying receipt file hashing and test inclusion**","startedAt":1788246970158,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967bba131887d08d60ddc9d43a4265\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnu9ohdcpLuG9XksQVnhs0qOxcNq7s_9rtI8aV5RVgefOjBLa_TojALMjn-NqUwx5wI8ZTHYkmKboZgGzPF1MgFi82gqDRxSxx4qWpCZ1nj1bZhV15NWVNsN-tgm7dXzwn7D23mCIOdGTi6y1ouYBhTiV7LF2mTr43wvkl0UZbO68jmaMpNmE9zcUytBgUwUa_EMH4YRYoiNFfIe1ktzyqDaRym_G4rspddrXiD7z2HLCot-gY1nvTHJBvpl245oXOO4EjDNda7FbHkOZxXw7bh864A2DzgdvM7h5FWLxFJXBn8Mj3xR0MtBvFV6atNQ7VcyE0tfR97TMWR9uvPC0kXhZeKsBqb1QdcU7M2sPwKmdsY7o-AGm23BU7eAL0eXFu7CgtFJFSg36raL_NJf4OUovqFL93xm-Nf0ieftEaQAqMDSrIlXSQZ5aKFgF62CWRk0W1O9pAoZtjEcNgEuM6GPOqQLS3ObWFKzKjUmd2IxDIqsTMDoC1-dsJNMQELJMf-yfE7zSz069DxJgCxyw3fEMXTc8kE3VwptRuByYSJeafDb45w5wzFczw_5ctP4NKP42RREHOeCCbVBD1yfAFqbuGAezZuQJbSK7hSeKfVkRQ_WLZGtZ-sUlc3ijERVGMKGL9HvAwD6Fnl9K-ISuf13irad71vDhtt2MGX6RNMyiabjfsh194u-7JcUrHDNY3KWXCQYASvHMSt9kGDQdAl21EUoGvhP7kBh35hUtxqWX1VSv3FUtTIfV5nmJnxSrKJgoNVDBzCIQisSf573vtwmHs8-cj9KE8X7_3NNuOAw9S3Hhue9XO1DTKOgOTrwhlHnMQZ8Z-IoT8GcYIH4m82cW7VgDl0zWBIB2OSvmbT17Y9zTiQcTbe-eaC5YiU2arjfZSavCdFIjm8coVhBYFBn0ZeJqRwbk9FuL9H3GvpqpBJXiwcspKzvs8rz5H2rQaSVFGqXbaKpglAUCMPaYv4T1Kbf4tGyKJx7yzwc2SHieVmTUcvhaBKqJz9pSnAq2x7r2-gX0007PfYa24ObVvFMsBJtbHM8uXsNvFWFpP5SSC44rBlANqrI_8CqKTy8FAa5d6bmXm6CNS2me9LdQVqHmvqjAnxN-bzIcLu8wtDZsoq4wV3XoJ07nmy7AlrlJ3Se4OnPyxYFmgm7QcZiMgUb7cJcY9OJZmZHSMH3EFYZk4d7YEmEoJiH_WV47e-8NasJHBrRxWgPv5ffJy0IgnwLvXfqCLNpvp5K9Z5plPyAHBaw9qkHKo2961Qf6O0-S4Py-_5At6SVdE6wIZfJqwKHq7wMnENkp8d0xp8paFIUM5NUitx4UG2OZLIsllmwPapAsUwuK-61qTcj9mCI8dx-3aZuI2LLTHAm0BjVyTHlT4dFgpMWY7JE94EEepc05YnYGeiV1EZBXOseeILMTcVy7DS2UAdsEP3sU8uX4dMGPWEEeWk2fpSDe2RdAYXK2OoLpWcwvfaouBQNUYHh2ajN8CFa7QK0gCs47GF7LxIkxK2bH2gjx2JJve4RJPDlGXbwEsjRcP6GQiq3r3Ee0feHnuHfmr4k5yZ3s7E71G2lBk3xQmY2PvbL9L4vCfMswlPF8wY_zkrdqMQ5dDssXwBnnUmeflGzJ906GNqhjNPiH6XTMwhpbpftTJ9ZBxqcZvW2ONIOIQrc0Q_ERN9WzN8osY1-SC1966tPptyHxQOCMm0YSp9QHoEjUfPP7WX4Es7aNbWxD0uZ-P2tVuXEry_kYwlzRH5PpJAqgymUdj9766rFtQLiU-zlOvh0lX3Egt73onvODZy-DWJSFuR6VTg69gzBtvmO3m1o6P2qUmAQyOqrHHa1pl_7NB0zQqCjnfBf5cw9xYYIcSd5-hCSlLFil60zS5EOljgjrGq9bm1pIDE_dKVH38RsPHBW1eUBLDH-5xdHHXSJ9DXxGecjo5PY_fBsn-VEiqNvQ1svXfQB732aiYVzm0IPnFEPwg_ojZDm-jBBCb8mvbCrCS76HE0yXAXaS6R3rQItDPVoe_f1QsLme7r9DYDwwZPPpiBCqbev1Ugc91TuNR4rKoE0Qr75zuqJDBtagzK23bZUxR4peiKxPzPuNzvA6HjwUrDk53QzkLx21e-8mL1huMCdzj40Qg==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Verifying receipt file hashing and test inclusion**\"}]}","endedAt":1788246973744},{"type":"text","text":"The receipt’s eight listed runtime hashes match exactly. I’m now tracing the complete authority-to-scheduler path and auditing the focused tests, including the three propagation files and four test files that the receipt does not hash explicitly.","textSignature":"{\"v\":1,\"id\":\"msg_046f5546d6e20d23016a967bbda95887d099d87623754b73d5\",\"phase\":\"commentary\"}"},{"type":"toolCall","id":"call_Map8MFTM4vTlWk5xFM7mA7tN|fc_046f5546d6e20d23016a967bc5790c87d09bb6f35ee3977419","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_contract.py"}},{"type":"toolCall","id":"call_grvU6SMYgnc3UfCXO4ivyJbn|fc_046f5546d6e20d23016a967bc5792487d0a3aa9c61893c6368","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_io.py"}},{"type":"toolCall","id":"call_1UWLre50oUbXvsf4Bz4kJFzx|fc_046f5546d6e20d23016a967bc5792c87d0931b15a9b31296ac","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py"}},{"type":"toolCall","id":"call_1i1Ccl9ExnVnlGby3UAp5xBs|fc_046f5546d6e20d23016a967bc5793887d0b9130dd53838034d","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_operations.py"}},{"type":"toolCall","id":"call_g4cRHfycqH0GFWIiPoteoEUQ|fc_046f5546d6e20d23016a967bc5794087d09aa8e518cbe1e084","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py"}},{"type":"toolCall","id":"call_k6XceKiCAU9aSaz9240mgAIj|fc_046f5546d6e20d23016a967bc5794887d0bf961775749c1739","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","offset":1,"limit":230}},{"type":"toolCall","id":"call_V4c9q3S0p7E2eAjUsKwh1zD2|fc_046f5546d6e20d23016a967bc5795087d0bfe2995ceb90864b","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","offset":11520,"limit":75}},{"type":"toolCall","id":"call_2ubnS7WCFptWNqNoogBApSDy|fc_046f5546d6e20d23016a967bc5795887d0b9d403a18bf9aec6","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/physique_inline_card.py"}},{"type":"toolCall","id":"call_vQ95JLcP6MUttMMWn3kRzwJQ|fc_046f5546d6e20d23016a967bc5796487d0b037841bd702d5f3","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","offset":2040,"limit":85}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":5520,"output":593,"cacheRead":48640,"cacheWrite":0,"reasoning":122,"totalTokens":54753,"cost":{"input":0.027600000000000003,"output":0.01779,"cacheRead":0.024319999999999998,"cacheWrite":0,"total":0.06971}},"stopReason":"toolUse","timestamp":1788246968731,"responseId":"resp_046f5546d6e20d23016a967bb91cc887d0bf453f0ba4a24eb5","rawStopReason":"completed"}}
{"type":"message","id":"227224a0","parentId":"be459d76","timestamp":"2026-09-01T07:16:22.003Z","message":{"role":"toolResult","toolCallId":"call_Map8MFTM4vTlWk5xFM7mA7tN|fc_046f5546d6e20d23016a967bc5790c87d09bb6f35ee3977419","toolName":"read","content":[{"type":"text","text":"\"\"\"Strict r71b one-use Topic-59 maintenance documents and decisions.\"\"\"\n\nfrom __future__ import annotations\n\nimport hashlib\nimport json\nimport re\nfrom datetime import date, datetime, timedelta\nfrom enum import StrEnum\nfrom typing import ClassVar, Final, Literal, Self\n\nfrom pydantic import BaseModel, ConfigDict, Field, model_validator\n\n_AUTHORITY_ID: Final = \"nutricoach-v150-v15-runtime-authority-r71b-maintenance\"\n_HEX64: Final = re.compile(r\"[0-9a-f]{64}\")\n_KST_OFFSET: Final = timedelta(hours=9)\n\n\nclass Topic59MaintenanceContractError(Exception):\n    \"\"\"A maintenance document is outside its closed contract.\"\"\"\n\n\nclass _Document(BaseModel):\n    model_config: ClassVar[ConfigDict] = ConfigDict(\n        frozen=True, extra=\"forbid\", strict=True,\n    )\n\n\nclass Topic59MaintenanceHoldV1(_Document):\n    schema_: Literal[\"nutricoach-topic59-maintenance-hold-v1\"] = Field(\n        default=\"nutricoach-topic59-maintenance-hold-v1\", alias=\"schema\",\n    )\n    hold_id: str\n    authority_id: Literal[\"nutricoach-v150-v15-runtime-authority-r71b-maintenance\"] = \"nutricoach-v150-v15-runtime-authority-r71b-maintenance\"\n    package_digest: str\n    purpose: Literal[\"r71_cron_health_recovery\"] = \"r71_cron_health_recovery\"\n    max_consumptions: Literal[1] = 1\n    candidate_digest: str\n    config_digest: str\n    route_digest: str\n    customer_identity_digest: str\n    card_slot: str\n    kst_day: date\n    not_before: datetime\n    expires_at: datetime\n\n    @model_validator(mode=\"after\")\n    def _contract(self) -> Self:\n        for value in (\n            self.hold_id, self.package_digest, self.candidate_digest,\n            self.config_digest, self.route_digest, self.customer_identity_digest,\n            self.card_slot,\n        ):\n            if _HEX64.fullmatch(value) is None:\n                raise Topic59MaintenanceContractError()\n        if self.not_before.utcoffset() != _KST_OFFSET or self.expires_at.utcoffset() != _KST_OFFSET:\n            raise Topic59MaintenanceContractError()\n        if self.not_before.date() != self.kst_day or self.expires_at.date() != self.kst_day:\n            raise Topic59MaintenanceContractError()\n        duration = self.expires_at - self.not_before\n        if not timedelta(minutes=5) <= duration <= timedelta(minutes=30):\n            raise Topic59MaintenanceContractError()\n        return self\n\n\nclass Topic59MaintenanceAuthorityV1(_Document):\n    schema_: Literal[\"nutricoach-topic59-maintenance-authority-v1\"] = Field(\n        default=\"nutricoach-topic59-maintenance-authority-v1\", alias=\"schema\",\n    )\n    authority_id: Literal[\"nutricoach-v150-v15-runtime-authority-r71b-maintenance\"] = \"nutricoach-v150-v15-runtime-authority-r71b-maintenance\"\n    product_generation: Literal[\"r71\"] = \"r71\"\n    package_namespace: Literal[\"r71b-maintenance\"] = \"r71b-maintenance\"\n    package_digest: str\n    hold_sha256: str\n    hold: Topic59MaintenanceHoldV1\n\n    @model_validator(mode=\"after\")\n    def _contract(self) -> Self:\n        if (\n            _HEX64.fullmatch(self.package_digest) is None\n            or _HEX64.fullmatch(self.hold_sha256) is None\n            or self.hold.package_digest != self.package_digest\n            or hashlib.sha256(canonical_document(self.hold)).hexdigest() != self.hold_sha256\n        ):\n            raise Topic59MaintenanceContractError()\n        return self\n\n\nclass Topic59MaintenanceSkipAuditV1(_Document):\n    schema_: Literal[\"nutricoach-topic59-maintenance-skip-audit-v1\"] = Field(\n        default=\"nutricoach-topic59-maintenance-skip-audit-v1\", alias=\"schema\",\n    )\n    hold_id: str\n    hold_sha256: str\n    authority_id: Literal[\"nutricoach-v150-v15-runtime-authority-r71b-maintenance\"] = \"nutricoach-v150-v15-runtime-authority-r71b-maintenance\"\n    package_digest: str\n    candidate_digest: str\n    config_digest: str\n    route_digest: str\n    customer_identity_digest: str\n    card_slot: str\n    kst_day: date\n    recorded_at: datetime\n    terminal_state: Literal[\"maintenance_skipped\"] = \"maintenance_skipped\"\n    disposition: Literal[\"noop_maintenance\"] = \"noop_maintenance\"\n    sent: Literal[False] = False\n    delivered: Literal[False] = False\n    message_id: None = None\n    provider_receipt: None = None\n    provider_calls: Literal[0] = 0\n    network_calls: Literal[0] = 0\n    row_digest: str\n\n    @model_validator(mode=\"after\")\n    def _contract(self) -> Self:\n        if self.recorded_at.utcoffset() != _KST_OFFSET or self.recorded_at.date() != self.kst_day:\n            raise Topic59MaintenanceContractError()\n        if _HEX64.fullmatch(self.row_digest) is None or self.row_digest != audit_row_digest(self):\n            raise Topic59MaintenanceContractError()\n        return self\n\n\nclass Topic59MaintenanceDecisionKind(StrEnum):\n    ALLOW = \"allow\"\n    NOOP_MAINTENANCE = \"noop_maintenance\"\n    DENY = \"deny\"\n\n\nclass Topic59MaintenanceFailure(StrEnum):\n    AUTHORITY_MISSING_FOR_TARGET_DAY = \"authority_missing_for_target_day\"\n    AUTHORITY_CORRUPT = \"authority_corrupt\"\n    BINDING_MISMATCH = \"binding_mismatch\"\n    HOLD_MISSING = \"hold_missing\"\n    HOLD_CORRUPT = \"hold_corrupt\"\n    HOLD_NOT_YET_VALID = \"hold_not_yet_valid\"\n    HOLD_EXPIRED = \"hold_expired\"\n    HOLD_REPLAYED = \"hold_replayed\"\n    AUDIT_CORRUPT = \"audit_corrupt\"\n    FILESYSTEM_CONTRACT = \"filesystem_contract\"\n\n\nclass Topic59MaintenanceDecision(BaseModel):\n    model_config: ClassVar[ConfigDict] = ConfigDict(frozen=True, strict=True)\n    kind: Topic59MaintenanceDecisionKind\n    audit_digest: str | None = None\n    reason: Topic59MaintenanceFailure | None = None\n\n\ndef canonical_document(document: BaseModel) -> bytes:\n    \"\"\"Encode one canonical UTF-8 JSON document with its required newline.\"\"\"\n    encoded = json.dumps(\n        document.model_dump(mode=\"json\", by_alias=True),\n        ensure_ascii=False, sort_keys=True, separators=(\",\", \":\"),\n    ).encode(\"utf-8\") + b\"\\n\"\n    if len(encoded) > 8192:\n        raise Topic59MaintenanceContractError()\n    return encoded\n\n\ndef audit_row_digest(audit: Topic59MaintenanceSkipAuditV1) -> str:\n    \"\"\"Hash canonical audit fields excluding the self-authenticating digest.\"\"\"\n    fields = audit.model_dump(mode=\"json\", by_alias=True, exclude={\"row_digest\"})\n    encoded = json.dumps(fields, ensure_ascii=False, sort_keys=True, separators=(\",\", \":\")).encode()\n    return hashlib.sha256(encoded).hexdigest()\n"}],"isError":false,"timestamp":1788246982003}}
{"type":"message","id":"c87837ad","parentId":"227224a0","timestamp":"2026-09-01T07:16:22.003Z","message":{"role":"toolResult","toolCallId":"call_grvU6SMYgnc3UfCXO4ivyJbn|fc_046f5546d6e20d23016a967bc5792487d0a3aa9c61893c6368","toolName":"read","content":[{"type":"text","text":"\"\"\"Secure openat and atomic-write primitives for Topic-59 maintenance.\"\"\"\n\nfrom __future__ import annotations\n\nimport os\nimport stat\nfrom pathlib import Path\nfrom typing import Final, TypeVar\n\nfrom pydantic import BaseModel\n\nfrom .nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceAuthorityV1,\n    Topic59MaintenanceContractError,\n    canonical_document,\n)\n\n_CREDENTIAL: Final = \"nutricoach-topic59-maintenance-r71b.json\"\n_DIRECTORY_FLAGS: Final = os.O_RDONLY | os.O_DIRECTORY | os.O_CLOEXEC | os.O_NOFOLLOW\n_FILE_FLAGS: Final = os.O_RDONLY | os.O_CLOEXEC | os.O_NOFOLLOW | os.O_NONBLOCK\n_MAX_BYTES: Final = 8192\n_DocumentT = TypeVar(\"_DocumentT\", bound=BaseModel)\n\n\ndef read_credential(root: Path) -> Topic59MaintenanceAuthorityV1:\n    root_fd = os.open(root, _DIRECTORY_FLAGS)\n    try:\n        raw = read_regular_at(root_fd, _CREDENTIAL, 0o400, os.geteuid(), None)\n        return parse_document(raw, Topic59MaintenanceAuthorityV1)\n    finally:\n        os.close(root_fd)\n\n\ndef open_owned_directory(profile_root: Path) -> int:\n    profile_fd = os.open(profile_root, _DIRECTORY_FLAGS)\n    profile_info = os.fstat(profile_fd)\n    if profile_info.st_uid != os.geteuid() or profile_info.st_gid != os.getegid():\n        os.close(profile_fd)\n        raise PermissionError\n    try:\n        data_fd = os.open(\"data\", _DIRECTORY_FLAGS, dir_fd=profile_fd)\n    finally:\n        os.close(profile_fd)\n    data_info = os.fstat(data_fd)\n    if data_info.st_uid != profile_info.st_uid or data_info.st_gid != profile_info.st_gid:\n        os.close(data_fd)\n        raise PermissionError\n    try:\n        directory_fd = os.open(\"topic59-maintenance-r71b\", _DIRECTORY_FLAGS, dir_fd=data_fd)\n    finally:\n        os.close(data_fd)\n    info = os.fstat(directory_fd)\n    if (\n        not stat.S_ISDIR(info.st_mode) or stat.S_IMODE(info.st_mode) != 0o700\n        or info.st_uid != profile_info.st_uid or info.st_gid != profile_info.st_gid\n    ):\n        os.close(directory_fd)\n        raise PermissionError\n    return directory_fd\n\n\ndef read_regular_at(\n    directory_fd: int, name: str, mode: int, uid: int, gid: int | None,\n) -> bytes:\n    descriptor = open_file(directory_fd, name, mode, uid, gid)\n    try:\n        raw = os.read(descriptor, _MAX_BYTES + 1)\n        if not raw or len(raw) > _MAX_BYTES or os.read(descriptor, 1):\n            raise Topic59MaintenanceContractError()\n        return raw\n    finally:\n        os.close(descriptor)\n\n\ndef open_file(\n    directory_fd: int, name: str, mode: int, uid: int | None = None, gid: int | None = None,\n) -> int:\n    descriptor = os.open(name, _FILE_FLAGS, dir_fd=directory_fd)\n    info = os.fstat(descriptor)\n    expected_uid = os.geteuid() if uid is None else uid\n    if (\n        not stat.S_ISREG(info.st_mode) or stat.S_IMODE(info.st_mode) != mode\n        or info.st_uid != expected_uid or (gid is not None and info.st_gid != gid)\n        or info.st_nlink != 1\n    ):\n        os.close(descriptor)\n        raise PermissionError\n    return descriptor\n\n\ndef parse_document(raw: bytes, model: type[_DocumentT]) -> _DocumentT:\n    parsed = model.model_validate_json(raw)\n    if canonical_document(parsed) != raw:\n        raise Topic59MaintenanceContractError()\n    return parsed\n\n\ndef atomic_write_at(directory_fd: int, name: str, raw: bytes) -> None:\n    temporary = f\".{name}.tmp\"\n    descriptor = os.open(\n        temporary, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_CLOEXEC | os.O_NOFOLLOW,\n        0o600, dir_fd=directory_fd,\n    )\n    try:\n        view = memoryview(raw)\n        while view:\n            view = view[os.write(descriptor, view):]\n        os.fsync(descriptor)\n    finally:\n        os.close(descriptor)\n    os.rename(temporary, name, src_dir_fd=directory_fd, dst_dir_fd=directory_fd)\n    fsync_directory(directory_fd)\n    if read_regular_at(directory_fd, name, 0o600, os.geteuid(), os.getegid()) != raw:\n        raise OSError\n\n\ndef fsync_directory(directory_fd: int) -> None:\n    os.fsync(directory_fd)\n"}],"isError":false,"timestamp":1788246982003}}
{"type":"message","id":"57234cc8","parentId":"c87837ad","timestamp":"2026-09-01T07:16:22.003Z","message":{"role":"toolResult","toolCallId":"call_1UWLre50oUbXvsf4Bz4kJFzx|fc_046f5546d6e20d23016a967bc5792c87d0931b15a9b31296ac","toolName":"read","content":[{"type":"text","text":"\"\"\"Crash-safe, no-follow storage gate for the r71b Topic-59 hold.\"\"\"\n\nfrom __future__ import annotations\n\nimport fcntl\nimport hashlib\nimport json\nimport os\nfrom dataclasses import dataclass\nfrom datetime import date, datetime\nfrom pathlib import Path\nfrom typing import Final, TypeVar\n\nfrom pydantic import BaseModel, ValidationError\n\nfrom .nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceAuthorityV1,\n    Topic59MaintenanceContractError,\n    Topic59MaintenanceDecision,\n    Topic59MaintenanceDecisionKind,\n    Topic59MaintenanceFailure,\n    Topic59MaintenanceHoldV1,\n    Topic59MaintenanceSkipAuditV1,\n    canonical_document,\n)\nfrom .nutrition_weekly_maintenance_io import (\n    atomic_write_at as _atomic_write_at,\n    fsync_directory as _fsync_directory,\n    open_file as _open_file,\n    open_owned_directory as _open_owned_directory,\n    parse_document as _parse_document,\n    read_credential as _read_credential,\n    read_regular_at as _read_regular_at,\n)\nfrom .nutrition_weekly_operations_models import Topic59Projection\n\n_DocumentT = TypeVar(\"_DocumentT\", bound=BaseModel)\n_EXPECTED_NAMES: Final = frozenset({\n    \"hold.json\", \"hold.consuming.json\", \"skip-audit.json\", \"maintenance.lock\",\n})\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59MaintenancePaths:\n    profile_root: Path\n    directory: Path\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59MaintenanceGate:\n    paths: Topic59MaintenancePaths\n\n    @classmethod\n    def for_profile(cls, profile_root: Path) -> Topic59MaintenanceGate:\n        return cls(Topic59MaintenancePaths(\n            profile_root, profile_root / \"data\" / \"topic59-maintenance-r71b\",\n        ))\n\n    def evaluate(\n        self, projection: Topic59Projection, now: datetime,\n    ) -> Topic59MaintenanceDecision:\n        credential_root = os.environ.get(\"CREDENTIALS_DIRECTORY\")\n        if credential_root is None:\n            if not os.path.lexists(self.paths.directory):\n                return _allow()\n            return _deny(Topic59MaintenanceFailure.AUTHORITY_MISSING_FOR_TARGET_DAY)\n        try:\n            authority = _read_credential(Path(credential_root))\n        except FileNotFoundError:\n            if not os.path.lexists(self.paths.directory):\n                return _allow()\n            return _deny(Topic59MaintenanceFailure.AUTHORITY_MISSING_FOR_TARGET_DAY)\n        except (OSError, ValidationError, Topic59MaintenanceContractError):\n            return _deny(Topic59MaintenanceFailure.AUTHORITY_CORRUPT)\n        try:\n            directory_fd = _open_owned_directory(self.paths.profile_root)\n        except FileNotFoundError:\n            if authority.hold.kst_day == projection.kst_day:\n                return _deny(Topic59MaintenanceFailure.HOLD_MISSING)\n            return _allow()\n        except OSError:\n            return _deny(Topic59MaintenanceFailure.FILESYSTEM_CONTRACT)\n        try:\n            return self._evaluate_locked(directory_fd, authority, projection, now)\n        finally:\n            os.close(directory_fd)\n\n    def _evaluate_locked(\n        self,\n        directory_fd: int,\n        authority: Topic59MaintenanceAuthorityV1,\n        projection: Topic59Projection,\n        now: datetime,\n    ) -> Topic59MaintenanceDecision:\n        try:\n            if frozenset(os.listdir(directory_fd)) - _EXPECTED_NAMES:\n                return _deny(Topic59MaintenanceFailure.FILESYSTEM_CONTRACT)\n            lock_fd = _open_file(directory_fd, \"maintenance.lock\", 0o600)\n            try:\n                fcntl.flock(lock_fd, fcntl.LOCK_EX)\n                return _consume_locked(directory_fd, authority, projection, now)\n            finally:\n                fcntl.flock(lock_fd, fcntl.LOCK_UN)\n                os.close(lock_fd)\n        except FileNotFoundError:\n            return _deny(Topic59MaintenanceFailure.FILESYSTEM_CONTRACT)\n        except (OSError, ValidationError, Topic59MaintenanceContractError):\n            return _deny(Topic59MaintenanceFailure.FILESYSTEM_CONTRACT)\n\n\ndef _consume_locked(\n    directory_fd: int,\n    authority: Topic59MaintenanceAuthorityV1,\n    projection: Topic59Projection,\n    now: datetime,\n) -> Topic59MaintenanceDecision:\n    hold = authority.hold\n    audit = _optional_document(directory_fd, \"skip-audit.json\", Topic59MaintenanceSkipAuditV1)\n    active = _optional_document(directory_fd, \"hold.json\", Topic59MaintenanceHoldV1)\n    consuming = _optional_document(directory_fd, \"hold.consuming.json\", Topic59MaintenanceHoldV1)\n    if audit is not None:\n        if not _audit_matches(audit, authority, hold):\n            return _deny(Topic59MaintenanceFailure.AUDIT_CORRUPT)\n        if projection.kst_day != hold.kst_day:\n            if active is None and consuming is None:\n                return _allow()\n            return _deny(Topic59MaintenanceFailure.HOLD_REPLAYED)\n        if not _projection_matches(hold, projection):\n            return _deny(Topic59MaintenanceFailure.BINDING_MISMATCH)\n        if active is not None:\n            return _deny(Topic59MaintenanceFailure.HOLD_REPLAYED)\n        if consuming is not None:\n            if consuming != hold:\n                return _deny(Topic59MaintenanceFailure.HOLD_REPLAYED)\n            os.unlink(\"hold.consuming.json\", dir_fd=directory_fd)\n            _fsync_directory(directory_fd)\n        return _noop(canonical_document(audit))\n    selected = consuming if consuming is not None else active\n    if selected is None:\n        if hold.kst_day == projection.kst_day:\n            return _deny(Topic59MaintenanceFailure.HOLD_MISSING)\n        return _allow()\n    if selected != hold or not _projection_matches(hold, projection):\n        return _deny(Topic59MaintenanceFailure.BINDING_MISMATCH)\n    if now < hold.not_before:\n        return _deny(Topic59MaintenanceFailure.HOLD_NOT_YET_VALID)\n    if now >= hold.expires_at:\n        return _deny(Topic59MaintenanceFailure.HOLD_EXPIRED)\n    if active is not None:\n        if consuming is not None:\n            return _deny(Topic59MaintenanceFailure.HOLD_REPLAYED)\n        os.rename(\n            \"hold.json\", \"hold.consuming.json\",\n            src_dir_fd=directory_fd, dst_dir_fd=directory_fd,\n        )\n        _fsync_directory(directory_fd)\n    audit_bytes = _build_audit(authority, hold, now)\n    _atomic_write_at(directory_fd, \"skip-audit.json\", audit_bytes)\n    os.unlink(\"hold.consuming.json\", dir_fd=directory_fd)\n    _fsync_directory(directory_fd)\n    return _noop(audit_bytes)\n\n\ndef _optional_document(\n    directory_fd: int, name: str, model: type[_DocumentT],\n) -> _DocumentT | None:\n    try:\n        raw = _read_regular_at(directory_fd, name, 0o600, os.geteuid(), os.getegid())\n    except FileNotFoundError:\n        return None\n    return _parse_document(raw, model)\n\n\ndef _projection_matches(hold: Topic59MaintenanceHoldV1, projection: Topic59Projection) -> bool:\n    return (\n        hold.candidate_digest == projection.candidate_digest\n        and hold.config_digest == projection.config_digest\n        and hold.route_digest == projection.route_digest\n        and hold.customer_identity_digest == projection.customer_identity_digest\n        and hold.card_slot == projection.card_slot\n        and hold.kst_day == projection.kst_day\n    )\n\n\ndef _audit_matches(\n    audit: Topic59MaintenanceSkipAuditV1,\n    authority: Topic59MaintenanceAuthorityV1,\n    hold: Topic59MaintenanceHoldV1,\n) -> bool:\n    return (\n        audit.hold_id == hold.hold_id and audit.hold_sha256 == authority.hold_sha256\n        and audit.authority_id == authority.authority_id\n        and audit.package_digest == hold.package_digest\n        and audit.candidate_digest == hold.candidate_digest\n        and audit.config_digest == hold.config_digest and audit.route_digest == hold.route_digest\n        and audit.customer_identity_digest == hold.customer_identity_digest\n        and audit.card_slot == hold.card_slot and audit.kst_day == hold.kst_day\n        and hold.not_before <= audit.recorded_at < hold.expires_at\n    )\n\n\ndef _build_audit(\n    authority: Topic59MaintenanceAuthorityV1, hold: Topic59MaintenanceHoldV1, now: datetime,\n) -> bytes:\n    fields: dict[str, str | bool | int | None | date | datetime] = {\n        \"schema\": \"nutricoach-topic59-maintenance-skip-audit-v1\",\n        \"hold_id\": hold.hold_id, \"hold_sha256\": authority.hold_sha256,\n        \"authority_id\": authority.authority_id, \"package_digest\": hold.package_digest,\n        \"candidate_digest\": hold.candidate_digest, \"config_digest\": hold.config_digest,\n        \"route_digest\": hold.route_digest,\n        \"customer_identity_digest\": hold.customer_identity_digest,\n        \"card_slot\": hold.card_slot, \"kst_day\": hold.kst_day.isoformat(),\n        \"recorded_at\": now.isoformat(), \"terminal_state\": \"maintenance_skipped\",\n        \"disposition\": \"noop_maintenance\", \"sent\": False, \"delivered\": False,\n        \"message_id\": None, \"provider_receipt\": None, \"provider_calls\": 0, \"network_calls\": 0,\n    }\n    encoded = json.dumps(fields, sort_keys=True, separators=(\",\", \":\")).encode()\n    fields[\"row_digest\"] = hashlib.sha256(encoded).hexdigest()\n    fields[\"kst_day\"] = hold.kst_day\n    fields[\"recorded_at\"] = now\n    return canonical_document(Topic59MaintenanceSkipAuditV1.model_validate(fields))\n\n\ndef _allow() -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(kind=Topic59MaintenanceDecisionKind.ALLOW)\n\n\ndef _deny(reason: Topic59MaintenanceFailure) -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(kind=Topic59MaintenanceDecisionKind.DENY, reason=reason)\n\n\ndef _noop(raw: bytes) -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(\n        kind=Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n        audit_digest=hashlib.sha256(raw).hexdigest(),\n    )\n"}],"isError":false,"timestamp":1788246982003}}
{"type":"message","id":"6b85fcb1","parentId":"57234cc8","timestamp":"2026-09-01T07:16:22.003Z","message":{"role":"toolResult","toolCallId":"call_1i1Ccl9ExnVnlGby3UAp5xBs|fc_046f5546d6e20d23016a967bc5793887d0b9130dd53838034d","toolName":"read","content":[{"type":"text","text":"\"\"\"Fail-closed Topic-59 card projection and publication boundary.\"\"\"\n\nfrom __future__ import annotations\n\nimport hashlib\nfrom dataclasses import dataclass\nfrom datetime import datetime\nfrom enum import StrEnum\nfrom pathlib import Path\nfrom typing import Protocol\n\nfrom .nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecision,\n    Topic59MaintenanceDecisionKind,\n)\nfrom .nutrition_weekly_operations_authority import (\n    WeeklyOperationsAuthorityReceipt,\n    WeeklyOperationsRuntimeContext,\n    weekly_operations_is_authorized,\n)\nfrom .nutrition_weekly_operations_config import WeeklyOperationsConfig\nfrom .nutrition_weekly_operations_ledger import Topic59PublicationLedger\nfrom .nutrition_weekly_operations_models import (\n    Topic59DayCard,\n    Topic59Projection,\n    project_topic59_day_card,\n)\nfrom .nutrition_weekly_operations_publication_contract import (\n    Topic59IncidentReason,\n    Topic59LedgerAction,\n    Topic59LedgerConflict,\n    Topic59LedgerError,\n    Topic59LedgerState,\n    Topic59ProviderDelivered,\n    Topic59ProviderOutcome,\n)\n\n\nclass Topic59PublicationDisposition(StrEnum):\n    REFUSED = \"refused\"\n    SENT = \"sent\"\n    EDITED = \"edited\"\n    NOOP = \"noop\"\n    NOOP_MAINTENANCE = \"noop_maintenance\"\n    INCIDENT = \"incident\"\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59PublicationRequest:\n    card: Topic59DayCard\n    config: WeeklyOperationsConfig\n    receipt: WeeklyOperationsAuthorityReceipt\n    runtime: WeeklyOperationsRuntimeContext\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59PublicationResult:\n    disposition: Topic59PublicationDisposition\n    logical_key: str | None = None\n    message_id: str | None = None\n    reason: Topic59IncidentReason | None = None\n    maintenance_audit_digest: str | None = None\n\n\nclass Topic59MaintenanceEvaluator(Protocol):\n    def evaluate(\n        self, projection: Topic59Projection, now: datetime,\n    ) -> Topic59MaintenanceDecision: ...\n\n\nclass Topic59Transport(Protocol):\n    async def send(self, *, chat_id: str, topic_id: str, text: str) -> Topic59ProviderOutcome: ...\n\n    async def edit(\n        self, *, chat_id: str, topic_id: str, message_id: str, text: str\n    ) -> Topic59ProviderOutcome: ...\n\n\nclass Topic59DayCardProjector:\n    def __init__(self, ledger_path: Path, maintenance_gate: Topic59MaintenanceEvaluator | None = None) -> None:\n        self._ledger: Topic59PublicationLedger = Topic59PublicationLedger(ledger_path)\n        self._maintenance_gate: Topic59MaintenanceEvaluator | None = maintenance_gate\n\n    async def publish(\n        self, request: Topic59PublicationRequest, transport: Topic59Transport\n    ) -> Topic59PublicationResult:\n        if not self.reserves_topic59(request):\n            return Topic59PublicationResult(Topic59PublicationDisposition.REFUSED, reason=Topic59IncidentReason.AUTHORITY_REJECTED)\n        route = request.config.review_route\n        if route is None:\n            return Topic59PublicationResult(Topic59PublicationDisposition.REFUSED, reason=Topic59IncidentReason.AUTHORITY_REJECTED)\n        projection = project_topic59_day_card(request.card, config_digest=request.config.digest, route_key=route.key)\n        if self._maintenance_gate is not None:\n            maintenance = self._maintenance_gate.evaluate(projection, request.runtime.now)\n            match maintenance.kind:\n                case Topic59MaintenanceDecisionKind.ALLOW:\n                    pass\n                case Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE:\n                    return Topic59PublicationResult(\n                        Topic59PublicationDisposition.NOOP_MAINTENANCE, projection.logical_key,\n                        maintenance_audit_digest=maintenance.audit_digest,\n                    )\n                case Topic59MaintenanceDecisionKind.DENY:\n                    return Topic59PublicationResult(\n                        Topic59PublicationDisposition.REFUSED, projection.logical_key,\n                        reason=Topic59IncidentReason.MAINTENANCE_REJECTED,\n                    )\n        try:\n            action = self._ledger.claim(projection)\n        except Topic59LedgerError:\n            return Topic59PublicationResult(\n                Topic59PublicationDisposition.INCIDENT, projection.logical_key, reason=Topic59IncidentReason.LEDGER_CORRUPTION\n            )\n        if action.kind == \"noop\":\n            return Topic59PublicationResult(Topic59PublicationDisposition.NOOP, projection.logical_key, action.message_id)\n        if action.kind == \"incident\":\n            return Topic59PublicationResult(\n                Topic59PublicationDisposition.INCIDENT, projection.logical_key, action.message_id, action.reason\n            )\n        outcome = await self._deliver(action, route.chat_id, transport)\n        try:\n            state = self._ledger.record(action, outcome)\n        except Topic59LedgerError:\n            return Topic59PublicationResult(\n                Topic59PublicationDisposition.INCIDENT, projection.logical_key, action.message_id, Topic59IncidentReason.LEDGER_CORRUPTION\n            )\n        if state is Topic59LedgerState.SENT_AUDITED:\n            disposition = Topic59PublicationDisposition.SENT if action.operation == \"send\" else Topic59PublicationDisposition.EDITED\n            return Topic59PublicationResult(disposition, projection.logical_key, _receipt(action, outcome))\n        return Topic59PublicationResult(\n            Topic59PublicationDisposition.INCIDENT,\n            projection.logical_key,\n            action.message_id,\n            Topic59IncidentReason.PROVIDER_TERMINAL,\n        )\n\n    @staticmethod\n    def reserves_topic59(request: Topic59PublicationRequest) -> bool:\n        route = request.config.review_route\n        expected_identity = _customer_identity_digest(request.runtime.customer_key)\n        return (\n            route is not None\n            and request.card.customer_identity_digest == expected_identity\n            and request.card.candidate_digest == request.runtime.candidate_digest\n            and weekly_operations_is_authorized(request.config, request.receipt, request.runtime)\n        )\n\n    @staticmethod\n    async def _deliver(\n        action: Topic59LedgerAction, chat_id: str, transport: Topic59Transport\n    ) -> Topic59ProviderOutcome:\n        if action.operation == \"send\":\n            return await transport.send(chat_id=chat_id, topic_id=\"59\", text=action.projection.text)\n        if action.operation == \"edit\" and action.message_id is not None:\n            return await transport.edit(\n                chat_id=chat_id, topic_id=\"59\", message_id=action.message_id, text=action.projection.text\n            )\n        raise Topic59LedgerConflict(\"invalid publication action\")\n\n\ndef _customer_identity_digest(customer_key: str) -> str:\n    material = f\"nutricoach-weekly-operations-customer-identity-v1\\0{customer_key}\"\n    return hashlib.sha256(material.encode(\"utf-8\")).hexdigest()\n\n\ndef _receipt(action: Topic59LedgerAction, outcome: Topic59ProviderOutcome) -> str | None:\n    if action.operation == \"edit\":\n        return action.message_id\n    return outcome.message_id if isinstance(outcome, Topic59ProviderDelivered) else None\n"}],"isError":false,"timestamp":1788246982003}}
{"type":"message","id":"b85b3edc","parentId":"6b85fcb1","timestamp":"2026-09-01T07:16:22.003Z","message":{"role":"toolResult","toolCallId":"call_g4cRHfycqH0GFWIiPoteoEUQ|fc_046f5546d6e20d23016a967bc5794087d09aa8e518cbe1e084","toolName":"read","content":[{"type":"text","text":"\"\"\"Production coordinator for one authority-fenced weekly-operations tick.\"\"\"\n\nfrom __future__ import annotations\n\nfrom collections.abc import Sequence\nfrom dataclasses import dataclass\nfrom datetime import date, datetime, timedelta\nfrom pathlib import Path\nfrom typing import Protocol, cast, override, runtime_checkable\n\nfrom checkin_cli.weekly_operations import WeeklyOperationRow, WeeklyOperationsError\nfrom checkin_cli.weekly_operations_correlation import (\n    CanonicalCheckinCorrelationTransaction,\n    CorrelationAction,\n    CorrelationRequest,\n    CorrelationScope,\n)\nfrom checkin_cli.weekly_operations_lineage import canonical_prefix_pin\nfrom checkin_cli.weekly_operations_owner_binding import (\n    BoundWeeklySummaryForOwnerDraft,\n    bind_weekly_summary_for_owner_draft,\n)\nfrom checkin_cli.weekly_operations_summary import build_weekly_operations_summary\n\nfrom .nutrition_weekly_dispatch_result import WeeklyOperationsDispatchResult\nfrom .nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom .nutrition_weekly_operations import (\n    Topic59DayCardProjector,\n    Topic59PublicationDisposition,\n    Topic59PublicationRequest,\n)\nfrom .nutrition_weekly_operations_models import (\n    Topic59ApprovalState,\n    Topic59DayCard,\n    Topic59DeliveryState,\n    Topic59DraftState,\n)\nfrom .nutrition_weekly_owner_model import WeeklyExplanationModel\nfrom .nutrition_weekly_owner_request import (\n    WeeklyOwnerDraftRequest,\n    WeeklyOwnerDraftResult,\n)\nfrom .nutrition_weekly_owner_storage import WeeklyOwnerStorageAuthority\nfrom .nutrition_weekly_dispatcher_transport import (\n    RevalidatingTopic59Transport,\n    RevalidatingWeeklyModel,\n    WeeklyOperationsHost,\n)\nfrom .nutrition_weekly_reminder_authority import (\n    WeeklyOperationsTickSnapshot,\n    WeeklyReminderAuthorityOwner,\n)\nfrom .telegram_weekly_reminder import send_weekly_operations_task\n\n\n@runtime_checkable\nclass WeeklyOperationsTask(Protocol):\n    @property\n    def customer_key(self) -> str: ...\n\n    @property\n    def kind(self) -> str: ...\n\n    @property\n    def kst_day(self) -> date: ...\n\n\n@runtime_checkable\nclass WeeklyOperationsCoordinator(Protocol):\n    @property\n    def profile_root(self) -> Path: ...\n\n    def refresh_live_registry(self) -> bool: ...\n\n    @property\n    def weekly_reminder_authority_owner(self) -> WeeklyReminderAuthorityOwner: ...\n\n    def create_grounded_weekly_owner_draft(\n        self, request: WeeklyOwnerDraftRequest, model: WeeklyExplanationModel\n    ) -> WeeklyOwnerDraftResult: ...\n\n    def weekly_session_id(self, customer_key: str) -> str | None: ...\n\n    def weekly_owner_key(self) -> tuple[str, str, str]: ...\n\n    def weekly_owner_storage_authority(self) -> WeeklyOwnerStorageAuthority: ...\n\n\nclass _InitializableWeeklyStore(Protocol):\n    def ensure_initialized(self) -> bool: ...\n\n\n@dataclass(frozen=True, slots=True)\nclass WeeklyOperationsDispatchIncident(Exception):\n    customer_key: str\n    reason: str\n\n    @override\n    def __str__(self) -> str:\n        return f\"weekly operations dispatch failed for {self.customer_key}: {self.reason}\"\n\n\ndef _same_snapshot(\n    host: WeeklyOperationsHost,\n    coordinator: WeeklyOperationsCoordinator,\n    owner: WeeklyReminderAuthorityOwner,\n    expected: WeeklyOperationsTickSnapshot,\n    now: datetime,\n) -> bool:\n    try:\n        if not coordinator.refresh_live_registry():\n            return False\n        if not host.weekly_operations_authority_current(expected):\n            return False\n        current = owner.tick_snapshot(expected.runtime.customer_key, now)\n    except WeeklyOperationsError:\n        return False\n    return (\n        current.config == expected.config\n        and current.receipt == expected.receipt\n        and current.runtime == expected.runtime\n        and current.customer.runtime.registered_binding\n        == expected.customer.runtime.registered_binding\n    )\n\n\ndef _project_checkin(snapshot: WeeklyOperationsTickSnapshot, day: date) -> None:\n    customer = snapshot.customer\n    request = CorrelationRequest(\n        CorrelationScope(\n            customer.store.customer_identity_digest, day, CorrelationAction.CHECKIN\n        ),\n        customer.source,\n    )\n    _ = CanonicalCheckinCorrelationTransaction(customer.store, request).commit()\n    store = cast(_InitializableWeeklyStore, cast(object, customer.store))\n    _ = store.ensure_initialized()\n\n\ndef _validate_sidecar(snapshot: WeeklyOperationsTickSnapshot) -> None:\n    rows = snapshot.customer.store.read()\n    with snapshot.customer.source.read_locked() as canonical:\n        for row in rows:\n            if row.canonical_sequence > len(canonical.sequence_rows):\n                raise WeeklyOperationsError(\"canonical sidecar pin is stale\")\n            expected = canonical_prefix_pin(canonical, row.canonical_sequence)\n            if (expected.sequence, expected.digest) != (\n                row.canonical_sequence, row.canonical_digest\n            ):\n                raise WeeklyOperationsError(\"canonical sidecar digest disagrees\")\n\n\ndef _completed_fields(snapshot: WeeklyOperationsTickSnapshot, row: WeeklyOperationRow) -> int:\n    if row.source_event_id is None:\n        return 0\n    with snapshot.customer.source.read_locked() as canonical:\n        event = next(\n            (item for item in canonical.events if item.event_id == row.source_event_id),\n            None,\n        )\n    checkin = None if event is None else event.check_in\n    if checkin is None:\n        return 0\n    return min(len(checkin.model_dump(exclude_none=True)), 32)\n\n\ndef _current_bound_summary(\n    host: WeeklyOperationsHost,\n    coordinator: WeeklyOperationsCoordinator,\n    owner: WeeklyReminderAuthorityOwner,\n    expected: WeeklyOperationsTickSnapshot,\n    starts_on: date,\n    now: datetime,\n) -> BoundWeeklySummaryForOwnerDraft:\n    if not _same_snapshot(host, coordinator, owner, expected, now):\n        raise WeeklyOperationsDispatchIncident(\n            expected.runtime.customer_key, \"authority drift\"\n        )\n    current = owner.tick_snapshot(expected.runtime.customer_key, now)\n    if current.runtime != expected.runtime:\n        raise WeeklyOperationsDispatchIncident(expected.runtime.customer_key, \"authority drift\")\n    summary = build_weekly_operations_summary(\n        current.customer.source, current.customer.store, starts_on\n    )\n    return bind_weekly_summary_for_owner_draft(\n        current.customer.source, current.customer.store, summary\n    )\n\n\nasync def _dispatch_customer(\n    host: WeeklyOperationsHost,\n    coordinator: WeeklyOperationsCoordinator,\n    owner: WeeklyReminderAuthorityOwner,\n    snapshot: WeeklyOperationsTickSnapshot,\n    tasks: Sequence[WeeklyOperationsTask],\n    now: datetime,\n) -> Topic59PublicationDisposition | None:\n    key = snapshot.runtime.customer_key\n    _project_checkin(snapshot, now.date())\n    _validate_sidecar(snapshot)\n    for task in sorted(tasks, key=lambda item: item.kind == \"cutoff\"):\n        failure = await send_weekly_operations_task(host, coordinator, task, local_now=now)\n        if failure is not None:\n            raise WeeklyOperationsDispatchIncident(key, failure)\n    current = owner.tick_snapshot(key, now)\n    rows = tuple(row for row in current.customer.store.read() if row.kst_day == now.date())\n    if rows:\n        row = rows[-1]\n        card = Topic59DayCard.from_sidecar(\n            row,\n            completed_field_count=_completed_fields(current, row),\n            draft_state=Topic59DraftState.NOT_CREATED,\n            approval_state=Topic59ApprovalState.NOT_REQUESTED,\n            delivery_state=Topic59DeliveryState.NOT_SENT,\n            candidate_digest=current.runtime.candidate_digest,\n        )\n        is_current = lambda: _same_snapshot(\n            host, coordinator, owner, current, now\n        )\n        result = await Topic59DayCardProjector(\n            coordinator.profile_root / \"data\" / \"weekly-operations-topic59.jsonl\",\n            Topic59MaintenanceGate.for_profile(coordinator.profile_root),\n        ).publish(\n            Topic59PublicationRequest(card, current.config, current.receipt, current.runtime),\n            RevalidatingTopic59Transport(host, is_current),\n        )\n        if result.disposition in {\n            Topic59PublicationDisposition.REFUSED,\n            Topic59PublicationDisposition.INCIDENT,\n        }:\n            raise WeeklyOperationsDispatchIncident(key, str(result.reason))\n        topic59_disposition = result.disposition\n    else:\n        topic59_disposition = None\n    if now.weekday() != current.config.weekly_weekday:\n        return topic59_disposition\n    starts_on = now.date() - timedelta(days=7)\n    bound = _current_bound_summary(\n        host, coordinator, owner, current, starts_on, now\n    )\n    if coordinator.weekly_session_id(key) is None:\n        return topic59_disposition\n    request = WeeklyOwnerDraftRequest(\n        key,\n        coordinator.weekly_owner_key(),\n        current.config,\n        current.receipt,\n        current.runtime,\n        bound,\n        coordinator.weekly_owner_storage_authority().binding_digest,\n        lambda: _current_bound_summary(\n            host, coordinator, owner, current, starts_on, now\n        ),\n    )\n    result = coordinator.create_grounded_weekly_owner_draft(\n        request,\n        RevalidatingWeeklyModel(\n            host, lambda: _same_snapshot(host, coordinator, owner, current, now)\n        ),\n    )\n    if not result.accepted:\n        raise WeeklyOperationsDispatchIncident(key, result.error or \"owner draft rejected\")\n    return topic59_disposition\n\n\nasync def dispatch_weekly_operations_tick(\n    host: WeeklyOperationsHost,\n    coordinator: WeeklyOperationsCoordinator,\n    tasks: Sequence[WeeklyOperationsTask],\n    *,\n    local_now: datetime,\n) -> WeeklyOperationsDispatchResult:\n    owner = coordinator.weekly_reminder_authority_owner\n    failures: list[str] = []\n    dispositions: list[Topic59PublicationDisposition] = []\n    for key in owner.customer_keys:\n        try:\n            snapshot = owner.tick_snapshot(key, local_now)\n            due = tuple(task for task in tasks if task.customer_key == key and task.kind in {\"reminder\", \"cutoff\"})\n            disposition = await _dispatch_customer(host, coordinator, owner, snapshot, due, local_now)\n            if disposition is not None:\n                dispositions.append(disposition)\n        except (OSError, WeeklyOperationsError, WeeklyOperationsDispatchIncident) as error:\n            failures.append(str(error))\n    return WeeklyOperationsDispatchResult(tuple(failures), tuple(dispositions))\n"}],"isError":false,"timestamp":1788246982003}}
{"type":"message","id":"3f9d477c","parentId":"b85b3edc","timestamp":"2026-09-01T07:16:22.003Z","message":{"role":"toolResult","toolCallId":"call_k6XceKiCAU9aSaz9240mgAIj|fc_046f5546d6e20d23016a967bc5794887d0bf961775749c1739","toolName":"read","content":[{"type":"text","text":"\"\"\"Weekly scheduling, dispatch, and mutable-authority host seam.\"\"\"\n\nfrom __future__ import annotations\n\nimport json\nfrom collections.abc import Mapping, Sequence\nfrom dataclasses import dataclass\nfrom datetime import date, datetime\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, ClassVar, Literal\n\nfrom pydantic import BaseModel, ConfigDict, StrictBool\n\nfrom gateway.config import PlatformConfig\nfrom gateway.platforms.telegram_weekly_host_capabilities import (\n    TelegramWeeklyHostError,\n)\n\nif TYPE_CHECKING:\n    from checkin_cli.weekly_operations_schedule_host_models_r4 import (\n        WeeklyOperationsSchedulePolicy,\n    )\n    from gateway.platforms.nutrition_weekly_dispatch_result import (\n        WeeklyOperationsDispatchResult,\n    )\n    from gateway.platforms.nutrition_weekly_dispatcher import (\n        WeeklyOperationsCoordinator,\n        WeeklyOperationsTask,\n    )\n    from gateway.platforms.nutrition_weekly_reminder import (\n        TelegramReminderDelivered,\n        TelegramReminderRejected,\n    )\n    from gateway.platforms.nutrition_weekly_reminder_authority import (\n        WeeklyOperationsTickSnapshot,\n    )\n    from gateway.platforms.telegram_edit_transport import TelegramEditOutcome\n    from gateway.platforms.telegram_weekly_reminder import (\n        WeeklyReminderCoordinator,\n        WeeklyReminderTask,\n    )\n    from gateway.platforms.nutrition_weekly_owner_model import (\n        JsonValue,\n        WeeklyExplanationModel,\n    )\n\n\nclass _WeeklyToggle(BaseModel):\n    model_config: ClassVar[ConfigDict] = ConfigDict(extra=\"ignore\", strict=True)\n    enabled: StrictBool = False\n\n\nclass _NutritionToggle(BaseModel):\n    model_config: ClassVar[ConfigDict] = ConfigDict(extra=\"ignore\", strict=True)\n    weekly_operations: _WeeklyToggle | None = None\n\n\nclass _ToggleEnvelope(BaseModel):\n    model_config: ClassVar[ConfigDict] = ConfigDict(extra=\"ignore\", strict=True)\n    nutrition_coaching: _NutritionToggle | None = None\n\n\n@dataclass(frozen=True, slots=True)\nclass NutritionScheduledTickOutcome:\n    disposition: Literal[\"completed\", \"noop_maintenance\"]\n\n\nclass TelegramWeeklyDispatchMixin:\n    \"\"\"Host the enabled dispatcher without growing the legacy adapter.\"\"\"\n\n    _weekly_platform_config: PlatformConfig | None = None\n    _task26_candidate_digest: str | None = None\n    _task26_service_revoked: bool | None = None\n    _weekly_operations_explanation_model: WeeklyExplanationModel | None = None\n\n    def _current_weekly_config(self) -> PlatformConfig | None:\n        return self._weekly_platform_config\n\n    def _current_weekly_service_revoked(self) -> bool:\n        revoked = self._task26_service_revoked\n        if revoked is None:\n            raise TelegramWeeklyHostError(\n                \"Telegram weekly revocation state was not injected\"\n            )\n        return revoked\n\n    def _current_weekly_candidate_digest(self) -> str | None:\n        return self._task26_candidate_digest\n\n    async def send_weekly_reminder(\n        self, chat_id: str, topic_id: str | None, text: str,\n    ) -> TelegramReminderDelivered | TelegramReminderRejected:\n        _ = chat_id, topic_id, text\n        raise NotImplementedError\n\n    async def edit_weekly_topic59_outcome(\n        self, chat_id: str, message_id: str, text: str,\n    ) -> TelegramEditOutcome:\n        _ = chat_id, message_id, text\n        raise NotImplementedError\n\n    def _get_nutrition_coaching(\n        self,\n    ) -> WeeklyOperationsCoordinator | None:\n        raise NotImplementedError\n\n    async def _send_activation_completion_notices(\n        self,\n        profile_root: Path,\n        coordinator: WeeklyOperationsCoordinator,\n        *,\n        kst_date: date,\n    ) -> tuple[str, ...]:\n        _ = profile_root, coordinator, kst_date\n        raise NotImplementedError\n\n    def _weekly_operations_schedule_policy(\n        self,\n    ) -> WeeklyOperationsSchedulePolicy | None:\n        \"\"\"Avoid importing profile scheduling while weekly operations is OFF.\"\"\"\n        config = self._current_weekly_config()\n        if config is None:\n            return None\n        encoded = json.dumps(\n            config.extra, sort_keys=True, separators=(\",\", \":\"),\n        )\n        envelope = _ToggleEnvelope.model_validate_json(encoded)\n        nutrition = envelope.nutrition_coaching\n        if (\n            nutrition is None\n            or nutrition.weekly_operations is None\n            or not nutrition.weekly_operations.enabled\n        ):\n            return None\n        from gateway.platforms.telegram_weekly_reminder import (\n            configured_weekly_schedule_policy,\n        )\n\n        return configured_weekly_schedule_policy(encoded)\n\n    async def _send_weekly_operations_task(\n        self,\n        coordinator: WeeklyReminderCoordinator,\n        task: WeeklyReminderTask,\n        *,\n        local_now: datetime,\n    ) -> str | None:\n        from gateway.platforms.telegram_weekly_reminder import (\n            send_weekly_operations_task,\n        )\n\n        return await send_weekly_operations_task(\n            self, coordinator, task, local_now=local_now,\n        )\n\n    async def _dispatch_weekly_operations_tick(\n        self,\n        coordinator: WeeklyOperationsCoordinator,\n        tasks: Sequence[WeeklyOperationsTask],\n        *,\n        local_now: datetime,\n    ) -> WeeklyOperationsDispatchResult:\n        \"\"\"Dispatch enabled work before generic provider work.\"\"\"\n        from gateway.platforms.nutrition_weekly_dispatcher import (\n            dispatch_weekly_operations_tick,\n        )\n\n        return await dispatch_weekly_operations_tick(\n            self, coordinator, tasks, local_now=local_now,\n        )\n\n    async def _run_weekly_operations_dispatch(\n        self,\n        tasks: Sequence[WeeklyOperationsTask],\n        local_now: datetime,\n    ) -> WeeklyOperationsDispatchResult:\n        from gateway.platforms.nutrition_weekly_dispatch_result import (\n            WeeklyOperationsDispatchResult,\n        )\n        from gateway.platforms.nutrition_weekly_dispatcher import (\n            WeeklyOperationsCoordinator,\n        )\n\n        coordinator = self._get_nutrition_coaching()\n        if not isinstance(coordinator, WeeklyOperationsCoordinator):\n            return WeeklyOperationsDispatchResult(\n                (\"weekly operations coordinator contract unavailable\",), (),\n            )\n        dispatch = await self._dispatch_weekly_operations_tick(\n            coordinator, tasks, local_now=local_now,\n        )\n        failures = list(dispatch.failures)\n        failures.extend(\n            await self._send_activation_completion_notices(\n                coordinator.profile_root,\n                coordinator,\n                kst_date=local_now.date(),\n            )\n        )\n        return WeeklyOperationsDispatchResult(\n            tuple(failures), dispatch.topic59_dispositions,\n        )\n\n    def generate_weekly_explanation(\n        self, request: Mapping[str, JsonValue],\n    ) -> Mapping[str, JsonValue]:\n        \"\"\"Invoke only an explicitly installed weekly explanation model.\"\"\"\n        model = self._weekly_operations_explanation_model\n        if model is None:\n            raise OSError(\"weekly explanation provider is unavailable\")\n        return model.generate(request)\n\n    def weekly_operations_authority_current(\n        self, snapshot: WeeklyOperationsTickSnapshot,\n    ) -> bool:\n        \"\"\"Reparse mutable host pins immediately before provider authority.\"\"\"\n        config = self._current_weekly_config()\n        if config is None:\n            raise TelegramWeeklyHostError(\"Telegram weekly config was not injected\")\n        if self._current_weekly_service_revoked():\n            return False\n        from gateway.platforms.nutrition_weekly_operations_config import (\n            WeeklyOperationsAuthorityError,\n            WeeklyOperationsConfigError,\n        )\n        from gateway.platforms.telegram_weekly_reminder import (\n            configured_weekly_authority,\n        )\n\n        try:\n\n[22 more lines in file. Use offset=231 to continue.]"}],"isError":false,"timestamp":1788246982003}}
{"type":"message","id":"550cf83b","parentId":"3f9d477c","timestamp":"2026-09-01T07:16:22.003Z","message":{"role":"toolResult","toolCallId":"call_V4c9q3S0p7E2eAjUsKwh1zD2|fc_046f5546d6e20d23016a967bc5795087d0bfe2995ceb90864b","toolName":"read","content":[{"type":"text","text":"                continue\n            try:\n                provider_receipt = self._nutrition_delivery_receipt(provider_result)\n            except Exception:\n                try:\n                    mark_customer_task_unknown(\n                        profile_root,\n                        sending,\n                        reason=\"provider_receipt_malformed\",\n                    )\n                except Exception:\n                    pass\n                failures.append(task_key)\n                continue\n\n            try:\n                delivered = mark_customer_task_delivered(\n                    profile_root,\n                    sending,\n                    provider_receipt=provider_receipt,\n                    message_id=provider_receipt,\n                )\n            except Exception:\n                try:\n                    mark_customer_task_unknown(\n                        profile_root,\n                        sending,\n                        reason=\"delivery_receipt_persist_failed\",\n                    )\n                except Exception:\n                    pass\n                failures.append(task_key)\n                continue\n\n            try:\n                mark_customer_task_sent_audited(profile_root, delivered)\n            except Exception:\n                # The provider receipt is durable.  Leave the row delivered so\n                # the next tick can reconcile the audit without sending again.\n                failures.append(task_key)\n\n        maintenance_noop = (\n            not failures\n            and weekly_dispatch is not None\n            and weekly_dispatch.maintenance_noop\n            and not any(getattr(task, \"kind\", None) == \"daily\" for task in tasks)\n        )\n        if maintenance_noop:\n            from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n            return SendResult(\n                success=True,\n                raw_response=NutritionScheduledTickOutcome(\"noop_maintenance\"),\n            )\n        return SendResult(success=not failures, error=\", \".join(failures) if failures else None)\n\n    @staticmethod\n    def _nutrition_report_text(\n        display_name: str,\n        report_or_kind: object,\n        report: object | None = None,\n    ) -> str:\n        # ``kind`` was previously accepted here; retain positional\n        # compatibility while projecting every summary as weekly.\n        if isinstance(report_or_kind, str) and report is not None:\n            summary = report\n            prior_summary = None\n        else:\n            summary = report_or_kind\n            prior_summary = report\n        recent = TelegramAdapter._nutrition_report_field(\n            summary,\n            \"recent_average_weight_kg\",\n            \"recent_7d_average_weight_kg\",\n            \"recent_average_weight\",\n            \"current_average_weight_kg\",\n\n[4800 more lines in file. Use offset=11595 to continue.]"}],"isError":false,"timestamp":1788246982003}}
{"type":"message","id":"0a86d4bd","parentId":"550cf83b","timestamp":"2026-09-01T07:16:22.003Z","message":{"role":"toolResult","toolCallId":"call_2ubnS7WCFptWNqNoogBApSDy|fc_046f5546d6e20d23016a967bc5795887d0b9d403a18bf9aec6","toolName":"read","content":[{"type":"text","text":"\"\"\"Profile-gated scheduler delivery for the physique morning launcher card.\"\"\"\n\nfrom __future__ import annotations\n\nimport asyncio\nimport os\nfrom collections.abc import Coroutine\nfrom dataclasses import dataclass\nfrom datetime import datetime\nfrom pathlib import Path\nfrom typing import TYPE_CHECKING, Final, Protocol\n\nif TYPE_CHECKING:\n    from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\nfrom zoneinfo import ZoneInfo\n\n\nMORNING_CARD: Final[str] = \"physique-checkin-morning\"\nSOURCE_REVIEW_CARD: Final[str] = \"physique-source-review\"\nNUTRITION_TICK_CARD: Final[str] = \"nutrition-coaching-tick\"\n_KST: Final[ZoneInfo] = ZoneInfo(\"Asia/Seoul\")\n\n\nclass InlineCardTransport(Protocol):\n    \"\"\"Minimal testable transport contract; values never leave the profile.\"\"\"\n\n    def is_inline_card_enabled(self, card: str) -> bool: ...\n\n    def send_inline_card(self, card: str) -> bool: ...\n\n\nclass _AsyncCardResult(Protocol):\n    \"\"\"The narrow result shape required from the live Telegram adapter.\"\"\"\n\n    success: bool\n    error: str | None\n    raw_response: NutritionScheduledTickOutcome | None\n\n\nclass _AsyncCardAdapter(Protocol):\n    \"\"\"Existing adapter capability used by this scheduler path only.\"\"\"\n\n    def is_inline_card_enabled(self, card: str) -> bool: ...\n\n    def send_inline_card(self, card: str) -> Coroutine[None, None, _AsyncCardResult]: ...\n\n\n@dataclass(frozen=True, slots=True)\nclass LaunchResult:\n    \"\"\"Observable outcome of a single automatic morning launch attempt.\"\"\"\n\n    claimed: bool = False\n    sent: bool = False\n    duplicate: bool = False\n    disabled: bool = False\n    error: str | None = None\n    maintenance_noop: bool = False\n\n\ndef launch_morning_card(home: Path, transport: InlineCardTransport, now: datetime) -> LaunchResult:\n    \"\"\"Claim one KST day before sending its bounded Start/Resume card once.\"\"\"\n    if not transport.is_inline_card_enabled(MORNING_CARD):\n        return LaunchResult(disabled=True)\n    claim_path = _claim_path(home, now)\n    if not _claim(claim_path):\n        return LaunchResult(duplicate=True)\n    return LaunchResult(claimed=True, sent=transport.send_inline_card(MORNING_CARD))\n\n\ndef launch_source_review_card(transport: InlineCardTransport) -> LaunchResult:\n    \"\"\"Send one queue-backed review card whenever the profile has a pending candidate.\"\"\"\n    if not transport.is_inline_card_enabled(SOURCE_REVIEW_CARD):\n        return LaunchResult(disabled=True)\n    return LaunchResult(sent=transport.send_inline_card(SOURCE_REVIEW_CARD))\n\n\ndef launch_scheduled_card(\n    home: Path,\n    adapter: _AsyncCardAdapter | None,\n    loop: asyncio.AbstractEventLoop | None,\n    now: datetime,\n    card: str = MORNING_CARD,\n) -> LaunchResult:\n    \"\"\"Bridge a cron worker to the existing adapter without a second poller.\"\"\"\n    if adapter is None or loop is None:\n        return LaunchResult(disabled=True)\n    transport = _ScheduledTransport(adapter, loop)\n    if card == MORNING_CARD:\n        return launch_morning_card(home, transport, now)\n    if card == SOURCE_REVIEW_CARD:\n        return launch_source_review_card(transport)\n    if card == NUTRITION_TICK_CARD:\n        if not transport.is_inline_card_enabled(card):\n            return LaunchResult(disabled=True)\n        sent = transport.send_inline_card(card)\n        return LaunchResult(\n            sent=sent and not transport.maintenance_noop,\n            error=transport.last_error,\n            maintenance_noop=transport.maintenance_noop,\n        )\n    return LaunchResult(disabled=True)\n\n\ndef _claim_path(home: Path, now: datetime) -> Path:\n    \"\"\"Return the owner-only day claim path without embedding target identity.\"\"\"\n    kst_date = now.astimezone(_KST).date().isoformat()\n    return home / \"data\" / \"inline-card-launch-claims\" / f\"{kst_date}.claim\"\n\n\ndef _claim(path: Path) -> bool:\n    \"\"\"Atomically create a launch claim before any delivery can be attempted.\"\"\"\n    path.parent.mkdir(parents=True, exist_ok=True, mode=0o700)\n    path.parent.chmod(0o700)\n    try:\n        descriptor = os.open(path, os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600)\n    except FileExistsError:\n        return False\n    with os.fdopen(descriptor, \"w\", encoding=\"utf-8\") as handle:\n        _ = handle.write(\"claimed\\n\")\n        handle.flush()\n        os.fsync(handle.fileno())\n    path.chmod(0o600)\n    return True\n\n\nclass _ScheduledTransport:\n    \"\"\"Synchronously wait for the existing gateway loop's bounded card send.\"\"\"\n\n    def __init__(self, adapter: _AsyncCardAdapter, loop: asyncio.AbstractEventLoop) -> None:\n        self._adapter: _AsyncCardAdapter = adapter\n        self._loop: asyncio.AbstractEventLoop = loop\n        self.last_error: str | None = None\n        self.maintenance_noop: bool = False\n\n    def is_inline_card_enabled(self, card: str) -> bool:\n        return self._adapter.is_inline_card_enabled(card)\n\n    def send_inline_card(self, card: str) -> bool:\n        future = asyncio.run_coroutine_threadsafe(\n            self._adapter.send_inline_card(card), self._loop,\n        )\n        try:\n            result = future.result(timeout=30)\n        except TimeoutError:\n            _ = future.cancel()\n            self.last_error = \"inline-card adapter timed out\"\n            return False\n        self.last_error = result.error\n        from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n        self.maintenance_noop = (\n            isinstance(result.raw_response, NutritionScheduledTickOutcome)\n            and result.raw_response.disposition == \"noop_maintenance\"\n        )\n        return result.success\n"}],"isError":false,"timestamp":1788246982003}}
{"type":"message","id":"aec40e55","parentId":"0a86d4bd","timestamp":"2026-09-01T07:16:22.003Z","message":{"role":"toolResult","toolCallId":"call_vQ95JLcP6MUttMMWn3kRzwJQ|fc_046f5546d6e20d23016a967bc5796487d0b037841bd702d5f3","toolName":"read","content":[{"type":"text","text":"                agent.close()\n        except (Exception, KeyboardInterrupt) as e:\n            logger.debug(\"Job '%s': failed to close agent resources: %s\", job_id, e)\n        # Each cron run spins up a short-lived worker thread whose event loop\n        # dies as soon as the ``ThreadPoolExecutor`` shuts down. Any async\n        # httpx clients cached under that loop are now unusable — reap them\n        # so their transports don't accumulate in the process-global cache.\n        try:\n            from agent.auxiliary_client import cleanup_stale_async_clients\n            cleanup_stale_async_clients()\n        except Exception as e:\n            logger.debug(\"Job '%s': failed to reap stale auxiliary clients: %s\", job_id, e)\n\n\ndef run_one_job(job: dict, *, adapters=None, loop=None, verbose: bool = False) -> bool:\n    \"\"\"Run ONE due job end-to-end: execute → save output → deliver → mark.\n\n    This is the shared firing body extracted from ``tick``'s per-job closure so\n    that BOTH the built-in ticker and an external provider's ``fire_due`` (e.g.\n    Chronos) run the identical sequence — no duplicated correctness.\n\n    It does NOT decide whether the job is due, claim it, or compute the next\n    run — those are the caller's concern (``tick`` advances ``next_run_at``\n    under the file lock before dispatch; an external provider claims via the\n    store CAS). This function only fires the given job once.\n\n    Returns True if the job was processed (even if the job itself failed —\n    failure is recorded via ``mark_job_run``), False only if processing raised.\n    \"\"\"\n    try:\n        if job.get(\"inline_card\") in {\"physique-checkin-morning\", \"physique-source-review\", \"nutrition-coaching-tick\"}:\n            # A stdout-delivered cron job cannot attach Telegram keyboards.\n            # This narrow profile-gated route instead uses the already-live\n            # adapter and claims the KST day before it attempts delivery.\n            from cron.physique_inline_card import launch_scheduled_card\n            from gateway.config import Platform\n\n            adapter = (adapters or {}).get(Platform.TELEGRAM)\n            launched = launch_scheduled_card(\n                get_hermes_home(),\n                adapter,\n                loop,\n                _hermes_now(),\n                job[\"inline_card\"],\n            )\n            output = f\"# Physique inline card: {job['inline_card']}\\n\\n\"\n            if launched.maintenance_noop:\n                output += \"Status: maintenance no-op completed\\n\"\n                mark_job_run(job[\"id\"], True, None)\n            elif launched.sent:\n                output += \"Status: launch card sent\\n\"\n                mark_job_run(job[\"id\"], True, None)\n            elif launched.duplicate:\n                output += \"Status: daily launch already claimed\\n\"\n                mark_job_run(job[\"id\"], True, None)\n            elif launched.disabled:\n                output += \"Status: profile card capability disabled\\n\"\n                mark_job_run(job[\"id\"], True, None)\n            else:\n                output += \"Status: inline-card send failed\\n\"\n                error = launched.error or \"inline-card send failed\"\n                output += f\"Reason: {error}\\n\"\n                mark_job_run(job[\"id\"], False, error)\n            output_file = save_job_output(job[\"id\"], output)\n            if verbose:\n                logger.info(\"Output saved to: %s\", output_file)\n            return True\n\n        success, output, final_response, error = run_job(job)\n\n        output_file = save_job_output(job[\"id\"], output)\n        if verbose:\n            logger.info(\"Output saved to: %s\", output_file)\n\n        # Deliver the final response to the origin/target chat.\n        # If the agent responded with [SILENT], skip delivery (but\n        # output is already saved above).  Failed jobs always deliver.\n        deliver_content = final_response if success else _summarize_cron_failure_for_delivery(job, error)\n        # Treat whitespace-only final responses the same as empty\n        # responses: do not deliver a blank message, and let the\n        # empty-response guard below mark the run as a soft failure.\n        should_deliver = bool(deliver_content.strip())\n        if should_deliver and success and SILENT_MARKER in deliver_content.strip().upper():\n            logger.info(\"Job '%s': agent returned %s — skipping delivery\", job[\"id\"], SILENT_MARKER)\n            should_deliver = False\n\n[251 more lines in file. Use offset=2125 to continue.]"}],"isError":false,"timestamp":1788246982003}}
{"type":"message","id":"3c17b245","parentId":"aec40e55","timestamp":"2026-09-01T07:16:44.606Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Assessing security checks and JSON parsing issues**\n\n**Validating lock ownership and atomic write behaviors**\n\n**Evaluating authority projection and gate requirements**","startedAt":1788246984355,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967bc8422487d087d9d8afffe309f1\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnvc6jcqyyejyNeLE1XDpl-097Z3cEU2AU5pH6Go7zPsnT57P7okzBCgZCTUJQqEGnLWTneKbHBOAA3-YkDLB-CUA2AOPTPfh9kjFkzPiLbgxk26tSSs-r20oJ-3pAeV3EoNmgiA8Imjsv3A2D4hOzX6Ei1a7f9z1cxXiz9HEbPzseWb45T5Uykk_vyGyvR3y0hioRGILZHF-Ls4lmXDBGsWFUzbk3BwLbVVxE_dcCyoP4qmkmZA123kTrvOTbCaOK7cG76YYGRm8AHe80_7Wz3FxC4FET-OJJ_nYW5FdwXJovv4SuPZt4PO5SXa0L3Zf4vLGePk3htdyzObE1Mhh0QH4eJ3QFokMB-94IesEgOCsa66ArHYgWp6xarhNqbitUGnWVTgT_macE6vsl6y8969EgFdV1ebZdyWFqHm8GB74YnvG85-nIs0ndomTafB9M3Wxq8Gs4e80Lbh_87MvpGpU6I6En2JtUd8teumTGAID84PLfh3j49tKW1UEzj7bAyNP41hPUCVSFSoBBAp07XlHnZai-fFsD7CsdmZP64Pnu0C_RkUKNO_HinIgX6Nr06IWNOwLZTuFTJRUxmyZQAybV3KgGxSsB5RH3rdcg7qNZHn6t-6FkB-IcFW2d1Xd6Vfaf1CORTxlrD9BlL1Od_1Fbr2Yf2X17ti1g7miAagEJOj0ZksZFz52ML08TK6TWE_ggry1cZN9GKsiWYUE-5Xs6m4vdJZc83HnBT8bOtODjB4EGII6cffWrfo5qhWOO_B_J6rsN5EltcDENp_fPBIEz93u9XVJB4V46RvwPSYiNVQwJEO_cMv6SZjHK3Esn2oUs5WWo6jSbNoVKj3K3jpPXdRrD2hXR-uys61s7uacQW5ZYW6njjXvMqtLb2Zx2N1p52OmbfZzT3eW2Ojx544hyr5p-aWcySZUVuN92Lm_kUkrZ0we07dd2m8OvmkJNe-6zfK_g0JPG9Cscora2xCvTwJlrYHCC-yRTKlbl56_LqMhh6kbXRbCSVnTe1rygOQHDk5bHO6MNBGMZcdn71qk5NpcvwaKnCd4b9e2c1KpHaHs_phSsAPR0SHUBwGeHvY6OcXy3Us4nCYpy36C5GMNniy5G87aSDGwWnM1xQ8ME0k2__oQWygveedn--vilAE3btgPAgEQVa22HOFJAR4_Ufat0ua7nv_3DlkD4ABzZJaSopNlSsaSFtHWNOUSDXpbmP-TH6vrQ_h72KgyNgqPjoIQQgBzV4IHJSuoNTNxoHb5Qwf-OVCDCL-a_jar-VINFHj2-CVImpCMZ5oBmkJL8_Blz6y24O17TQGd2RZjCJchVZwN16VVeJUfUWtkP-vQI5Cq9KVqhCwgsAIrluLrDvP6BurVI-WwiKwsogkckhKOC61TpGwsmosyDrFolE66_d4mTjTB14Kbcd797tlHCZHN7Xa4NWhdguy-h0pCITsW5SZN-aMJHkyQlN1rKGYs74qrNM2mhzIS1NjRvsR434gwtAboKCWE3Iwz1bBi9zOzh0F5NXKwSuFHImAdGcQk6XWvZFAa2qwbv6lU1dztNASUyBm5HYKzyy0G83foEvAeIjHphHeF_QlTqwMDm6BYnWeMYN_Ey2WWooTkWDC2PyqovQaiCZR_QfHEOIZMR9iUfvmPBowEfDbA_nqm_uXck7qJewX1CNCobfMjqrkDN532lnPNNTr0SHnkO7nMXY0WSjaVzYfGO1yy520W0iCvET6a_dGE9wsiMjC3mBO5-XLvO4CgB4npiFeqvA8wXVpFPe6eLYn1Tik-nNeW2WoZVayJJuQ6xnpEuH5FaGw5utXnhjf4nR18RBm8hMGh_SAw9KmMc3D0nwTYI08YN3OtTpj_58XZWV2ektfGZ-yziPHWhP2m_6DV-PKy5BHVcVQL6W2qYEyRoPW24ejTCHTKvDLr30eDvfzlroESm_19HR3X78ORxup6fXuiNzAvbjNLJ0mm6IiAGW_6lqxjlMQ8I0JUXMkv7jfjmEqgT2lyySY7m5trr4eoi_eiGzF3EBFv2wEgN3Q-r9KD6LrVHXWeJLAbsL12s0P1oSVxt5jcOqnb6dLKQhHrC-Y89uczWVChlsnbe-Mgdg0d_cqAD7cqJWXuQIGNVlvDP06zHTfdrTPAwM7bJ-tX14sioOIWIBOgJYyrwLgM6hZuA1HXNZbk4W9-xxQ3xWuCTgu76NjSk0o6o60VLSkSLc_MslHCDZWIDrri7c-60lIqu8zN31_JJM6v512LwLxBCSAI3JB7iLGDEYZG-Suxee8NmKC0Jr6Nd3dcXal1LuLSQMoikAXlcB5Vc5xT6O4PBPH0-fhp_I50i7b0MmFpRiYS92fW0AqFgkxSpEv8icytHtzUy_cx6Iqc16X45wZyfMWf13df6GS2bx8hxzGr3AoYtke6zPTBRyWQoqM8hpDjaMWXi4ZMT50MPCKXx6QfoHIts-J1WOMAcxlMr6dx6rA6NTlMoGUx8jEfoy1bH8EcK_AqhMknqRJHt_Lw_2KxfHZ5ROouVt9BDbrQkn8uLXOmLK79dlHi-be7IyCfFRqI9CDYd21UvQm0N0F-4xRjGdvar4MCIuIw0xqIGC710evHcvV8vUKKBIKfPVOM1-ofg2weT_v171dVF-SiGQNFrVdi-DVX0KzJhSYqH8p6ywI09fR8xiVYjQXU71n3XRzIcgTdtrN-KlITdKhswZi4BsbaWrDRT25ABSxhnKytmu3wrrzr29oN-I9vXZ-0paD0tWgU0RzxkpTRjTnQNumq1tycnQRgvBTZok5PXrN0Dh9rf3dd-zFFp_D_TXn1ke3h1zSnBt88ChwiW1mB_sssT7ffl0EgX5VPp_AAo71k5IFOSujxMhBKPA1gT4DqlZeTveN0KDb71xRqteyh0R4-8vDIQwaEna0WwqVmjluS7OkacfETiJpKhzZYiTYJ8iXfa_KDNzCb7_hayF1zqJTwpXkeHLhA8bsc90XA6p57CwcMjy5qJ0HZu9LoYDFmXvkSsNn6ZbyEg7-KkayjAjLOfhbaEzxstaIVFZJHq3mn7drQzjafKcKbnatjzoyaDK9N18ReEQ37cJadxe7mC7iZXaabBW8bVMxy5pGtKo8m0r2QVFKhcxe4vGLw5byfznHtAuDK5Y14ROK4KyvgpOpG79NbeRYMrbD98xsWXzxlNSBzdVoVFBiFioHvTxRcFFy5jiLS3qC1j1S4cxnPzju_gPtVPuNKR50WVzTy6PvziNhMDIyKrKJB2gWvt-xSzwEggFIlOCxp6-00sSoLvtNC_jv6y2E3PYU4UMDpiL8cywdeLTQ7NiPkUkDhdhVtnBeR_kR8DxESTqilL_Q3doHMrdDPqBeY1JGjolowjYmnFpMtfvfgwpFv3Py-gBdsp0XGuR77UtED0PdJiXMTe-EYg5Su6LD0_MW_FUq_ygPbDhLJsKMANgr8ZQt4fL0j6ibIw-qPfcElzOXEYslR-QXJdQnh8dBnrNLMI0sq5n8m5ERa8374ztUOdzsdq5iJnF5TOKjXMo80aTP9YDHNzMJtoZ0ktsMnPE0aTV7aW4eqR3M3Dx-oPqnwqN8JOwh_ts8sl9SJYjVjX_mlJWnX-9n5nKhkMW5V8AoGJZq-cob_xjZtPy5lKtQwRHTEt5ZNlhaQ6zE3UCHvp65U6nDS8BdcuzXvGQWdWIjrcSRz4wJbI1D0FTfBT8SN6pxlKL9afTdQeIRTQsOAWzp6FRwaWAiqUeXSv1Pj0KDj7OkFvh5_2zApFtk03kPntFVz_Xf1X_IQ8Qs44MODUCmZq7EWtc8Fx-GCWblVPoTskMfjh5atF71mRASwEndv8hveXSeFXk8nCPQmZjSr7DPZgNPrMfzw5uRYNEGtDQ5iejT0oL0sz_5xM-qiqWR_7td_rC-K-6iofUbUM4AZiJdBZaY9eQOyklBMU9d_eU9cfQTKgWvUkOfNcyd_EDICQOZH6Th5lZ54t5_-DDs3v4GrBsBtKjF9oLhGmcuqlw1UTprXSeMRoo_-Xv6iMiTIQIS7vfkdpIdQAZcmfaP14EgNYh69BFylr-O2woTOWw3lSF54gQFMotXw59ElGO8dTtYXX1Ehs4FYfy3HyKzSspBx4NnSvqLE-1ikpGYqKzcnMkrfYDko3DUn2FvaXXaLnD01Y51fGT4gGD7mB8TdqgMNvxpRvKC_4GeKHxiQ5UNfyKifLDmqUSJgmo6cEMAYMIztFdKQyvS_JLFP_eyItkvRf37ve66vZLQoBz_SsyB2g244hxBSteCzOLenATWrMf7b0p8Vm9MLnSuJWwEWoGB43BnPLBXR7jDyNQRfOsXK0BwwE6ZvZcOkkEnIZZ2fthz0SAoYdADzGkMrnpMpcAmRdfJebEdvdsHU3-2qdeAprmJpprD7G0tdBuv0ABiCcIG0iGSXEpe4EDFkbmDqbSkfWj6vmplQxgNwLKhy2fEW3UMu5jheOJHCiCe8yk=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Assessing security checks and JSON parsing issues**\"},{\"type\":\"summary_text\",\"text\":\"**Validating lock ownership and atomic write behaviors**\"},{\"type\":\"summary_text\",\"text\":\"**Evaluating authority projection and gate requirements**\"}]}","endedAt":1788247004485},{"type":"toolCall","id":"call_0vU7Kl1Mj7J3G59edbxxX3c0|fc_046f5546d6e20d23016a967bdc5b7487d085c9fc44487ee8ee","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py"}},{"type":"toolCall","id":"call_NPK8lU77gcljkfRHtpBhAeu7|fc_046f5546d6e20d23016a967bdc5b8887d0a8fae37799715f31","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py"}},{"type":"toolCall","id":"call_e8LGo6zihFDPTUrdfTh4zdae|fc_046f5546d6e20d23016a967bdc5b9487d0b9723887a95a78e9","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py"}},{"type":"toolCall","id":"call_3GNUvfr8UKvmUkvrUtm4zWxE|fc_046f5546d6e20d23016a967bdc5b9c87d08f64526d1d2da35d","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","offset":1,"limit":260}},{"type":"toolCall","id":"call_17dfiJuzfVAHhZFTsaHYR6Pe|fc_046f5546d6e20d23016a967bdc5ba487d0be0118df7da82527","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && sha256sum tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":13685,"output":798,"cacheRead":53760,"cacheWrite":0,"reasoning":448,"totalTokens":68243,"cost":{"input":0.068425,"output":0.02394,"cacheRead":0.026879999999999998,"cacheWrite":0,"total":0.119245}},"stopReason":"toolUse","timestamp":1788246982014,"responseId":"resp_046f5546d6e20d23016a967bc6b8fc87d0a61e9d415f86f29f","rawStopReason":"completed"}}
{"type":"message","id":"7d54fec3","parentId":"3c17b245","timestamp":"2026-09-01T07:16:44.634Z","message":{"role":"toolResult","toolCallId":"call_0vU7Kl1Mj7J3G59edbxxX3c0|fc_046f5546d6e20d23016a967bdc5b7487d085c9fc44487ee8ee","toolName":"read","content":[{"type":"text","text":"from __future__ import annotations\n\nimport hashlib\nimport json\nimport threading\nfrom concurrent.futures import ThreadPoolExecutor\nfrom datetime import date, datetime, timedelta\nfrom pathlib import Path\nfrom zoneinfo import ZoneInfo\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceAuthorityV1,\n    Topic59MaintenanceDecisionKind,\n    Topic59MaintenanceHoldV1,\n    canonical_document,\n)\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations_models import Topic59Projection\n\nKST = ZoneInfo(\"Asia/Seoul\")\nDIGEST = \"a\" * 64\n\n\ndef _projection(day: date) -> Topic59Projection:\n    return Topic59Projection(\n        \"b\" * 64, \"c\" * 64, \"d\" * 64, day, \"e\" * 64, DIGEST,\n        \"f\" * 64, \"1\" * 64, \"2\" * 64, {}, \"safe\",\n    )\n\n\ndef _arm(profile: Path, credentials: Path, now: datetime) -> None:\n    hold = Topic59MaintenanceHoldV1(\n        hold_id=\"3\" * 64, package_digest=\"4\" * 64,\n        candidate_digest=DIGEST, config_digest=\"e\" * 64,\n        route_digest=\"f\" * 64, customer_identity_digest=\"d\" * 64,\n        card_slot=\"b\" * 64, kst_day=now.date(),\n        not_before=now - timedelta(minutes=1), expires_at=now + timedelta(minutes=5),\n    )\n    hold_bytes = canonical_document(hold)\n    authority = Topic59MaintenanceAuthorityV1(\n        package_digest=\"4\" * 64,\n        hold_sha256=hashlib.sha256(hold_bytes).hexdigest(), hold=hold,\n    )\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\n    maintenance.mkdir(parents=True, mode=0o700)\n    maintenance.chmod(0o700)\n    for name, content in ((\"hold.json\", hold_bytes), (\"maintenance.lock\", b\"\")):\n        path = maintenance / name\n        path.write_bytes(content)\n        path.chmod(0o600)\n    credentials.mkdir(mode=0o700)\n    credential = credentials / \"nutricoach-topic59-maintenance-r71b.json\"\n    credential.write_bytes(canonical_document(authority))\n    credential.chmod(0o400)\n\n\ndef test_valid_hold_is_consumed_once_and_same_day_is_idempotent(tmp_path: Path, monkeypatch) -> None:\n    # Given\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\n    profile.mkdir(mode=0o700)\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\n    _arm(profile, credentials, now)\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\n    gate = Topic59MaintenanceGate.for_profile(profile)\n\n    # When\n    first = gate.evaluate(_projection(now.date()), now)\n    audit = profile / \"data\" / \"topic59-maintenance-r71b\" / \"skip-audit.json\"\n    first_bytes = audit.read_bytes()\n    first_stat = audit.stat()\n    second = gate.evaluate(_projection(now.date()), now + timedelta(minutes=20))\n\n    # Then\n    assert first.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n    assert second == first\n    assert audit.read_bytes() == first_bytes\n    assert audit.stat().st_mtime_ns == first_stat.st_mtime_ns\n    assert not (audit.parent / \"hold.json\").exists()\n    assert not (audit.parent / \"hold.consuming.json\").exists()\n    payload = json.loads(first_bytes)\n    assert payload[\"provider_calls\"] == payload[\"network_calls\"] == 0\n    assert payload[\"sent\"] is payload[\"delivered\"] is False\n    assert payload[\"message_id\"] is payload[\"provider_receipt\"] is None\n\n\ndef test_prior_day_terminal_audit_allows_next_day(tmp_path: Path, monkeypatch) -> None:\n    # Given\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\n    profile.mkdir(mode=0o700)\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\n    _arm(profile, credentials, now)\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\n    gate = Topic59MaintenanceGate.for_profile(profile)\n    _ = gate.evaluate(_projection(now.date()), now)\n\n    # When\n    result = gate.evaluate(_projection(now.date() + timedelta(days=1)), now + timedelta(days=1))\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.ALLOW\n\n\ndef test_consuming_marker_completes_after_rename_crash(tmp_path: Path, monkeypatch) -> None:\n    # Given\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\n    profile.mkdir(mode=0o700)\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\n    _arm(profile, credentials, now)\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\n    (maintenance / \"hold.json\").rename(maintenance / \"hold.consuming.json\")\n\n    # When\n    result = Topic59MaintenanceGate.for_profile(profile).evaluate(_projection(now.date()), now)\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n    assert (maintenance / \"skip-audit.json\").is_file()\n    assert not (maintenance / \"hold.consuming.json\").exists()\n\n\ndef test_complete_audit_finalizes_consuming_marker_after_replace_crash(tmp_path: Path, monkeypatch) -> None:\n    # Given\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\n    profile.mkdir(mode=0o700)\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\n    _arm(profile, credentials, now)\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\n    hold_bytes = (maintenance / \"hold.json\").read_bytes()\n    gate = Topic59MaintenanceGate.for_profile(profile)\n    first = gate.evaluate(_projection(now.date()), now)\n    consuming = maintenance / \"hold.consuming.json\"\n    consuming.write_bytes(hold_bytes)\n    consuming.chmod(0o600)\n\n    # When\n    recovered = gate.evaluate(_projection(now.date()), now)\n\n    # Then\n    assert recovered == first\n    assert not consuming.exists()\n\n\ndef test_concurrent_ticks_create_one_audit_without_timing_waits(tmp_path: Path, monkeypatch) -> None:\n    # Given\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\n    profile.mkdir(mode=0o700)\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\n    _arm(profile, credentials, now)\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\n    gate = Topic59MaintenanceGate.for_profile(profile)\n    barrier = threading.Barrier(3)\n\n    def evaluate() -> Topic59MaintenanceDecisionKind:\n        barrier.wait(timeout=2)\n        return gate.evaluate(_projection(now.date()), now).kind\n\n    # When\n    with ThreadPoolExecutor(max_workers=2) as workers:\n        futures = (workers.submit(evaluate), workers.submit(evaluate))\n        barrier.wait(timeout=2)\n        outcomes = tuple(future.result(timeout=2) for future in futures)\n\n    # Then\n    assert outcomes == (\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n    )\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\n    assert tuple(path.name for path in maintenance.glob(\"skip-audit.json\")) == (\"skip-audit.json\",)\n"}],"isError":false,"timestamp":1788247004634}}
{"type":"message","id":"342e44b7","parentId":"7d54fec3","timestamp":"2026-09-01T07:16:44.634Z","message":{"role":"toolResult","toolCallId":"call_NPK8lU77gcljkfRHtpBhAeu7|fc_046f5546d6e20d23016a967bdc5b8887d0a8fae37799715f31","toolName":"read","content":[{"type":"text","text":"from __future__ import annotations\n\nfrom datetime import date, datetime\nfrom pathlib import Path\nfrom zoneinfo import ZoneInfo\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecisionKind,\n    Topic59MaintenanceFailure,\n)\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations_models import Topic59Projection\n\n\ndef test_artifact_without_credential_denies_before_publication(tmp_path: Path, monkeypatch) -> None:\n    # Given\n    profile = tmp_path / \"profile\"\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\n    maintenance.mkdir(parents=True, mode=0o700)\n    maintenance.chmod(0o700)\n    hold = maintenance / \"hold.json\"\n    hold.write_text(\"{}\\n\", encoding=\"utf-8\")\n    hold.chmod(0o600)\n    monkeypatch.delenv(\"CREDENTIALS_DIRECTORY\", raising=False)\n    projection = Topic59Projection(\n        \"b\" * 64, \"c\" * 64, \"d\" * 64, date(2031, 2, 3), \"e\" * 64,\n        \"a\" * 64, \"f\" * 64, \"1\" * 64, \"2\" * 64, {}, \"safe\",\n    )\n\n    # When\n    result = Topic59MaintenanceGate.for_profile(profile).evaluate(\n        projection, datetime(2031, 2, 3, 9, tzinfo=ZoneInfo(\"Asia/Seoul\")),\n    )\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.DENY\n    assert result.reason is Topic59MaintenanceFailure.AUTHORITY_MISSING_FOR_TARGET_DAY\n"}],"isError":false,"timestamp":1788247004634}}
{"type":"message","id":"6a49590c","parentId":"342e44b7","timestamp":"2026-09-01T07:16:44.634Z","message":{"role":"toolResult","toolCallId":"call_e8LGo6zihFDPTUrdfTh4zdae|fc_046f5546d6e20d23016a967bdc5b9487d0b9723887a95a78e9","toolName":"read","content":[{"type":"text","text":"from gateway.platforms.nutrition_weekly_operations import Topic59PublicationDisposition\n\n\ndef test_maintenance_disposition_is_distinct_from_delivery() -> None:\n    # Given / When / Then\n    assert Topic59PublicationDisposition.NOOP_MAINTENANCE.value == \"noop_maintenance\"\n"}],"isError":false,"timestamp":1788247004634}}
{"type":"message","id":"06415f00","parentId":"6a49590c","timestamp":"2026-09-01T07:16:44.634Z","message":{"role":"toolResult","toolCallId":"call_3GNUvfr8UKvmUkvrUtm4zWxE|fc_046f5546d6e20d23016a967bdc5b9c87d08f64526d1d2da35d","toolName":"read","content":[{"type":"text","text":"\"\"\"Contract tests for the profile-gated scheduled inline-card path.\"\"\"\n\nfrom __future__ import annotations\n\nimport asyncio\nimport threading\nfrom datetime import datetime\nfrom pathlib import Path\nfrom zoneinfo import ZoneInfo\n\nfrom cron.physique_inline_card import (\n    MORNING_CARD, NUTRITION_TICK_CARD, SOURCE_REVIEW_CARD, LaunchResult,\n    launch_morning_card, launch_scheduled_card,\n)\nfrom cron import scheduler\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n\n\nKST = ZoneInfo(\"Asia/Seoul\")\n\n\nclass FakeCardTransport:\n    \"\"\"A no-network sender that records only the bounded card kind.\"\"\"\n\n    def __init__(self, *, enabled: bool = True, fail: bool = False) -> None:\n        self.enabled = enabled\n        self.fail = fail\n        self.cards: list[str] = []\n\n    def is_inline_card_enabled(self, card: str) -> bool:\n        return self.enabled and card == MORNING_CARD\n\n    def send_inline_card(self, card: str) -> bool:\n        self.cards.append(card)\n        return not self.fail\n\n\nclass AsyncFakeCardTransport:\n    \"\"\"Gateway-loop fake that proves the scheduler does not use stdout delivery.\"\"\"\n\n    def __init__(self, *, error: str | None = None) -> None:\n        self.cards: list[str] = []\n        self.success = False\n        self.error = error\n        self.raw_response = None\n\n    def is_inline_card_enabled(self, card: str) -> bool:\n        return card in {MORNING_CARD, SOURCE_REVIEW_CARD, NUTRITION_TICK_CARD}\n\n    async def send_inline_card(self, card: str) -> \"AsyncFakeCardTransport\":\n        self.cards.append(card)\n        self.success = self.error is None\n        return self\n\n\ndef _morning() -> datetime:\n    return datetime(2031, 2, 3, 8, 11, tzinfo=KST)\n\n\ndef test_launch_sends_exactly_one_card_after_persisting_daily_claim(tmp_path: Path) -> None:\n    \"\"\"Given enabled fake transport, when the same day launches twice, then one card exists.\"\"\"\n    transport = FakeCardTransport()\n\n    first = launch_morning_card(tmp_path, transport, _morning())\n    second = launch_morning_card(tmp_path, transport, _morning())\n\n    assert first.sent is True\n    assert second.duplicate is True\n    assert transport.cards == [MORNING_CARD]\n    assert (tmp_path / \"data\" / \"inline-card-launch-claims\" / \"2031-02-03.claim\").is_file()\n\n\ndef test_launch_claim_survives_sender_failure_without_automatic_retry(tmp_path: Path) -> None:\n    \"\"\"Given a post-claim failure, when cron retries, then no second automatic card is sent.\"\"\"\n    transport = FakeCardTransport(fail=True)\n\n    failed = launch_morning_card(tmp_path, transport, _morning())\n    retry = launch_morning_card(tmp_path, transport, _morning())\n\n    assert failed.sent is False and failed.claimed is True\n    assert retry.duplicate is True\n    assert transport.cards == [MORNING_CARD]\n\n\ndef test_disabled_transport_is_silent_and_does_not_claim(tmp_path: Path) -> None:\n    \"\"\"Given disabled profile feature, when cron fires, then it neither sends nor consumes the day.\"\"\"\n    transport = FakeCardTransport(enabled=False)\n\n    result = launch_morning_card(tmp_path, transport, _morning())\n\n    assert result.disabled is True\n    assert transport.cards == []\n    assert not (tmp_path / \"data\" / \"inline-card-launch-claims\").exists()\n\n\ndef test_scheduler_intercepts_inline_card_before_stdout_delivery(monkeypatch, tmp_path: Path) -> None:\n    \"\"\"Given an inline-card job, when it runs, then the generic script/delivery route is untouched.\"\"\"\n    job = {\"id\": \"card-job\", \"inline_card\": MORNING_CARD}\n    seen: list[tuple[bool, str | None]] = []\n    monkeypatch.setattr(scheduler, \"get_hermes_home\", lambda: tmp_path)\n    monkeypatch.setattr(scheduler, \"save_job_output\", lambda _job_id, _output: tmp_path / \"out.md\")\n    monkeypatch.setattr(scheduler, \"mark_job_run\", lambda _job_id, success, error: seen.append((success, error)))\n    monkeypatch.setattr(scheduler, \"run_job\", lambda _job: (_ for _ in ()).throw(AssertionError(\"generic path\")))\n\n    processed = scheduler.run_one_job(job, adapters={}, loop=None)\n\n    assert processed is True\n    assert seen == [(True, None)]\n\n\ndef test_scheduler_uses_existing_gateway_loop_with_fake_inline_transport(tmp_path: Path) -> None:\n    \"\"\"Given a live loop fake, when scheduled, then a keyboard-capable card is sent once.\"\"\"\n    loop = asyncio.new_event_loop()\n    worker = threading.Thread(target=loop.run_forever)\n    worker.start()\n    transport = AsyncFakeCardTransport()\n    try:\n        result = launch_scheduled_card(tmp_path, transport, loop, _morning())\n    finally:\n        loop.call_soon_threadsafe(loop.stop)\n        worker.join(timeout=5)\n        loop.close()\n\n    assert result.sent is True\n    assert transport.cards == [MORNING_CARD]\n\n\ndef test_source_review_scheduler_does_not_consume_the_morning_daily_claim(tmp_path: Path) -> None:\n    \"\"\"Given a review-card schedule, when it fires twice, then each delivery remains eligible.\"\"\"\n    loop = asyncio.new_event_loop()\n    worker = threading.Thread(target=loop.run_forever)\n    worker.start()\n    transport = AsyncFakeCardTransport()\n    try:\n        first = launch_scheduled_card(tmp_path, transport, loop, _morning(), SOURCE_REVIEW_CARD)\n        second = launch_scheduled_card(tmp_path, transport, loop, _morning(), SOURCE_REVIEW_CARD)\n    finally:\n        loop.call_soon_threadsafe(loop.stop)\n        worker.join(timeout=5)\n        loop.close()\n\n    assert first.sent is True and second.sent is True\n    assert transport.cards == [SOURCE_REVIEW_CARD, SOURCE_REVIEW_CARD]\n    assert not (tmp_path / \"data\" / \"inline-card-launch-claims\").exists()\n\n\ndef test_nutrition_tick_uses_the_live_adapter_without_a_global_day_claim(tmp_path: Path) -> None:\n    loop = asyncio.new_event_loop()\n    worker = threading.Thread(target=loop.run_forever)\n    worker.start()\n    transport = AsyncFakeCardTransport()\n    try:\n        first = launch_scheduled_card(tmp_path, transport, loop, _morning(), NUTRITION_TICK_CARD)\n        second = launch_scheduled_card(tmp_path, transport, loop, _morning(), NUTRITION_TICK_CARD)\n    finally:\n        loop.call_soon_threadsafe(loop.stop)\n        worker.join(timeout=5)\n        loop.close()\n\n    assert first.sent is True and second.sent is True\n    assert transport.cards == [NUTRITION_TICK_CARD, NUTRITION_TICK_CARD]\n    assert not (tmp_path / \"data\" / \"inline-card-launch-claims\").exists()\n\n\ndef test_nutrition_tick_propagates_maintenance_without_fabricating_send(tmp_path: Path) -> None:\n    # Given\n    loop = asyncio.new_event_loop()\n    worker = threading.Thread(target=loop.run_forever)\n    worker.start()\n    transport = AsyncFakeCardTransport()\n    transport.raw_response = NutritionScheduledTickOutcome(\"noop_maintenance\")\n    try:\n        # When\n        result = launch_scheduled_card(tmp_path, transport, loop, _morning(), NUTRITION_TICK_CARD)\n    finally:\n        loop.call_soon_threadsafe(loop.stop)\n        worker.join(timeout=5)\n        loop.close()\n\n    # Then\n    assert result.maintenance_noop is True\n    assert result.sent is False\n    assert result.error is None\n\n\ndef test_nutrition_tick_preserves_the_adapter_failure_reason(tmp_path: Path) -> None:\n    loop = asyncio.new_event_loop()\n    worker = threading.Thread(target=loop.run_forever)\n    worker.start()\n    transport = AsyncFakeCardTransport(error=\"weekly authority drift\")\n    try:\n        result = launch_scheduled_card(\n            tmp_path,\n            transport,\n            loop,\n            _morning(),\n            NUTRITION_TICK_CARD,\n        )\n    finally:\n        loop.call_soon_threadsafe(loop.stop)\n        worker.join(timeout=5)\n        loop.close()\n\n    assert result.sent is False\n    assert result.error == \"weekly authority drift\"\n\n\ndef test_scheduler_records_maintenance_as_success_without_sent_status(monkeypatch, tmp_path: Path) -> None:\n    # Given\n    job = {\"id\": \"maintenance-job\", \"inline_card\": NUTRITION_TICK_CARD}\n    runs: list[tuple[bool, str | None]] = []\n    outputs: list[str] = []\n    monkeypatch.setattr(scheduler, \"get_hermes_home\", lambda: tmp_path)\n    monkeypatch.setattr(\n        \"cron.physique_inline_card.launch_scheduled_card\",\n        lambda *_args, **_kwargs: LaunchResult(maintenance_noop=True),\n    )\n    monkeypatch.setattr(scheduler, \"mark_job_run\", lambda _job_id, ok, error: runs.append((ok, error)))\n    monkeypatch.setattr(scheduler, \"save_job_output\", lambda _job_id, output: outputs.append(output) or tmp_path / \"out\")\n\n    # When\n    processed = scheduler.run_one_job(job)\n\n    # Then\n    assert processed is True\n    assert runs == [(True, None)]\n    assert \"Status: maintenance no-op completed\" in outputs[0]\n    assert \"Status: launch card sent\" not in outputs[0]\n"}],"isError":false,"timestamp":1788247004634}}
{"type":"message","id":"ad1c6828","parentId":"06415f00","timestamp":"2026-09-01T07:16:44.634Z","message":{"role":"toolResult","toolCallId":"call_17dfiJuzfVAHhZFTsaHYR6Pe|fc_046f5546d6e20d23016a967bdc5ba487d0be0118df7da82527","toolName":"bash","content":[{"type":"text","text":"c4bc83bf5153f47760c794815769f594a2df35135314c9a7ac3678de792d7112  tests/gateway/test_nutrition_weekly_topic59_maintenance.py\ne79329824051ca336365c3622cfdab0c2a4d36fe53e2ee55cea6753ceac6d28a  tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\nb1a400491526427abc8236bb1114765260edeaf2a7b56bf7968e6c5d20201d56  tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n5dbc476bf1cb7246392dddf96ba02ee48fddc5c0b7cf6c39f0cecc06eb73aaac  tests/gateway/test_nutrition_weekly_operations_topic59.py\nb9241d89c96293d9625a504f546b1c44ecfb58cabe6b2088f8fec314ea0ae673  tests/cron/test_physique_inline_card.py\nc45b784365292c6572bcab3844dd46b9353f2f5197332ff6850f3752f3eb9b9a  tests/cron/test_scheduler.py\nc75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6  gateway/platforms/nutrition_weekly_operations_publication_contract.py\n6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88  gateway/platforms/telegram_weekly_host_dispatch.py\n5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7  gateway/platforms/telegram.py\n"}],"isError":false,"timestamp":1788247004634}}
{"type":"message","id":"aa29dd35","parentId":"ad1c6828","timestamp":"2026-09-01T07:16:59.641Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Investigating incomplete test coverage**","startedAt":1788247005830,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967bddbee087d08cb558f2226e3e2a\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnvroJbgXzuDgSk2nYCkDao64FPesu3Ur42DyelacSla5UdPAPV3H3mNSyey5W3q0UDZkspMCUYyTzhuIMkvBIKLzuJ6oPvyvIQYld4Pp6EDtOmmWgNWfcrIaiJOqM6ch5WENCb0qf0uCfVRk8cg5UjA6RrPgGatpaXcVPk7tvRoNJkSFi6itjJFckEErzqV7rzk-JbwfpPLzG0MUqd-ZEf8GFvq-R_ufu6Z4oBAG-KBT7hfP2yIsEH-JBLk5zYgqDsFEKBrRXMOgs4PQ990I-LTKMSxcY0I-c-CEqWUQngFlfQ1HfxZhbWcxzWJSRY4RyC3JcE_9wIL_V0cPN3m7O7e0vrE4dC2bQzIRXBMislG6xCmIq7cM-6ucIQtbTg-F9ru-wte53uIfOR8PaiIL8xboy_fjEi2MYXIxIYNQSWnIZ4OF5-vzMCkT7_WtecCxWkgEBxyTosL1wAe2yp9Zjp4HeptgA9rZa_6Ty_edGsjD3LCWGeEzogLfWyF6cngeF9hcGkacH87lV99XybHDCxzqF70RWwjIzK-VwuUtwFbJYFB6MDpEi4VoVf3baykMHcps1H9XF6r1aBmFWDsMrTkeNhuHyaTXxGIo3A8lgUJlE_hIqA7ZuerF-batWiI4tuZVNfU6ciabsYgn4YGgZvPWMsYDmoD2ONRISI7qTVccpznc4OquH7bbq5TNKmHQX3X95BJs5efk7ypCVGEdQX7lkidMrSFCqrUtFDkm-OqcHGpvEVHsYiN0z1CTebRrmij_5MeQXx7EBHAC_vpdouSHn_lGLrzVJJlEMMIrSp-JEDunlHiCIALXGYEhoY4xbTiFdxIjXVv7-z2EYMGlVozPnQbj3FiZn6RemMGSpOWcToLt223Xn3fmJeQ9dNBtoMCvnehajd3-e6L0-ieJgThndgO1YnkDvKeiAUbn5XbeYljELfsc_ythoEUG4HrUxGvFNY9O1oiSOixdnRDeBhUev6-E7ZGdikc9yOF4u51aHrOyqvi5onOHW_NNlWoTUwcyKX-pZlsMu0KxFVyDtPcgbbjzj_oniEuR9v9tsBhHrZLnAmhnXVOdLscamniUfrL4RR8HZzFIDHTAqcX7G52uQ9TmesCG0aZqNMpBN8ifhNG9MGA64w90qcjVOpbOyDSPh946mR4iQ5L5IXU5CPTbBelWkK3kaTcY4c6M3S_dy9jIE7BgKT4xPJcvDsTRRz3LNwsCTTf-KZuSoTPhkeAdspRaWLTsd3tVj9vDavcV-WVM7E3foIUImSSzIG9AuyIQ_KQv-stPzJIaHFJ9oB46LlndAGbbz7Ybr-vMIuBKGvdjv54sy8KesPP8Bb38l4mc6HkYAQkXx4AfQbbJ1FUKraOWEp-NyaqmdcFwQ7UGUkEEAnyAxmjevnz-jqdnZTWZi7o1sfK3NmW6cFMeMe719eptOpyG5fAS0ES-3s5GHhyKqtWUtaFFbQCWbimfDQEkPRF-j4Xq1XH3kPYicURqw==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Investigating incomplete test coverage**\"}]}","endedAt":1788247019528},{"type":"toolCall","id":"call_yb4vdvAuifm1qHfI9tnoQA9Z|fc_046f5546d6e20d23016a967beb708487d091187af0da5b6f3e","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && .venv/bin/pytest --collect-only -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py","timeout":60}},{"type":"toolCall","id":"call_VpefRkOuFtbXwDLUH7QEy3Av|fc_046f5546d6e20d23016a967beb709887d0b769733f087d3f1c","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && rg -n '^def test_|^async def test_' tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py | rg -i 'maint|hold|audit|crash|concurr|tomorrow|histor|sending|canonical|boundary|owner|mode|link|symlink|partial|schedul'","timeout":20}},{"type":"toolCall","id":"call_6Wzm1aR7lTjqDSN5XEY1t7FT|fc_046f5546d6e20d23016a967beb70a487d0bd548feaa2791007","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && rg -n 'sleep\\(|time\\.sleep|asyncio\\.sleep|pytest\\.mark\\.skip|xfail|#\\s*(type:\\s*ignore|noqa)|\\bAny\\b|\\bcast\\(|except\\s+Exception|assert\\s+True|assert\\s+[^\\n]+\\s+or\\s+' gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py cron/physique_inline_card.py cron/scheduler.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py","timeout":20}},{"type":"toolCall","id":"call_0jhGycKx7GpxfAOKGKavEqwY|fc_046f5546d6e20d23016a967beb70b087d0a5eee0188f5ee263","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && find . -maxdepth 4 -type f \\( -name '*.patch' -o -name '*.diff' -o -name '*.orig' \\) -printf '%p\\n' | sort | head -100","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":5877,"output":763,"cacheRead":67072,"cacheWrite":0,"reasoning":29,"totalTokens":73712,"cost":{"input":0.029385,"output":0.02289,"cacheRead":0.033535999999999996,"cacheWrite":0,"total":0.085811}},"stopReason":"toolUse","timestamp":1788247004639,"responseId":"resp_046f5546d6e20d23016a967bdcf9b887d0952b10bfc63f8a25","rawStopReason":"completed"}}
{"type":"message","id":"77be4045","parentId":"aa29dd35","timestamp":"2026-09-01T07:17:00.349Z","message":{"role":"toolResult","toolCallId":"call_yb4vdvAuifm1qHfI9tnoQA9Z|fc_046f5546d6e20d23016a967beb708487d091187af0da5b6f3e","toolName":"bash","content":[{"type":"text","text":"tests/gateway/test_nutrition_weekly_topic59_maintenance.py::test_valid_hold_is_consumed_once_and_same_day_is_idempotent\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py::test_prior_day_terminal_audit_allows_next_day\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py::test_consuming_marker_completes_after_rename_crash\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py::test_complete_audit_finalizes_consuming_marker_after_replace_crash\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py::test_concurrent_ticks_create_one_audit_without_timing_waits\ntests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py::test_artifact_without_credential_denies_before_publication\ntests/gateway/test_nutrition_weekly_dispatcher_maintenance.py::test_maintenance_disposition_is_distinct_from_delivery\ntests/gateway/test_nutrition_weekly_operations_topic59.py::test_topic59_projector_exposes_one_customer_day_publication_binding\ntests/gateway/test_nutrition_weekly_operations_topic59.py::test_seven_kst_days_create_seven_logical_cards\ntests/gateway/test_nutrition_weekly_operations_topic59.py::test_missed_to_late_submitted_edits_the_persisted_message\ntests/gateway/test_nutrition_weekly_operations_topic59.py::test_restart_and_duplicate_tick_do_not_repeat_a_send\ntests/gateway/test_nutrition_weekly_operations_topic59.py::test_rendered_and_durable_payloads_match_the_machine_whitelist\ntests/gateway/test_nutrition_weekly_operations_topic59.py::test_sidecar_extra_health_fields_cannot_cross_the_topic59_whitelist\ntests/gateway/test_nutrition_weekly_operations_topic59.py::test_maintenance_precedes_topic59_claim_and_transport\ntests/gateway/test_nutrition_weekly_operations_topic59_failures.py::test_wrong_topic_is_rejected_before_the_projector_can_call_a_provider\ntests/gateway/test_nutrition_weekly_operations_topic59_failures.py::test_wrong_user_chat_config_or_authority_make_zero_provider_calls\ntests/gateway/test_nutrition_weekly_operations_topic59_failures.py::test_unknown_and_known_send_outcomes_are_terminal_without_replacement\ntests/gateway/test_nutrition_weekly_operations_topic59_failures.py::test_unknown_and_known_edit_outcomes_are_terminal_without_replacement\ntests/gateway/test_nutrition_weekly_operations_topic59_failures.py::test_unresolved_reservation_is_an_incident_not_a_blind_new_send\ntests/gateway/test_nutrition_weekly_operations_topic59_failures.py::test_corrupt_ledger_becomes_an_incident_without_a_provider_call\ntests/gateway/test_nutrition_weekly_operations_topic59_failures.py::test_malformed_sidecar_is_rejected_before_a_provider_call\ntests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py::test_candidate_config_and_route_drift_are_terminal_slot_incidents\ntests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py::test_malformed_stored_slot_is_an_incident_without_provider_replacement\ntests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py::test_concurrent_differing_pins_preserve_one_slot_and_one_initial_send\ntests/gateway/test_nutrition_weekly_operations_topic59_telegram.py::test_real_adapter_uses_strict_topic59_send_then_edits_the_persisted_message\ntests/cron/test_physique_inline_card.py::test_launch_sends_exactly_one_card_after_persisting_daily_claim\ntests/cron/test_physique_inline_card.py::test_launch_claim_survives_sender_failure_without_automatic_retry\ntests/cron/test_physique_inline_card.py::test_disabled_transport_is_silent_and_does_not_claim\ntests/cron/test_physique_inline_card.py::test_scheduler_intercepts_inline_card_before_stdout_delivery\ntests/cron/test_physique_inline_card.py::test_scheduler_uses_existing_gateway_loop_with_fake_inline_transport\ntests/cron/test_physique_inline_card.py::test_source_review_scheduler_does_not_consume_the_morning_daily_claim\ntests/cron/test_physique_inline_card.py::test_nutrition_tick_uses_the_live_adapter_without_a_global_day_claim\ntests/cron/test_physique_inline_card.py::test_nutrition_tick_propagates_maintenance_without_fabricating_send\ntests/cron/test_physique_inline_card.py::test_nutrition_tick_preserves_the_adapter_failure_reason\ntests/cron/test_physique_inline_card.py::test_scheduler_records_maintenance_as_success_without_sent_status\ntests/cron/test_scheduler.py::TestResolveOrigin::test_full_origin\ntests/cron/test_scheduler.py::TestResolveOrigin::test_no_origin\ntests/cron/test_scheduler.py::TestResolveOrigin::test_missing_platform\ntests/cron/test_scheduler.py::TestResolveOrigin::test_missing_chat_id\ntests/cron/test_scheduler.py::TestResolveOrigin::test_empty_origin\ntests/cron/test_scheduler.py::TestResolveOrigin::test_non_dict_origin_returns_none_instead_of_crashing[combined-digest-replaces-x-and-y-20260503]\ntests/cron/test_scheduler.py::TestResolveOrigin::test_non_dict_origin_returns_none_instead_of_crashing[123]\ntests/cron/test_scheduler.py::TestResolveOrigin::test_non_dict_origin_returns_none_instead_of_crashing[non_dict_origin2]\ntests/cron/test_scheduler.py::TestResolveOrigin::test_non_dict_origin_returns_none_instead_of_crashing[non_dict_origin3]\ntests/cron/test_scheduler.py::TestResolveOrigin::test_non_dict_origin_returns_none_instead_of_crashing[42.0]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_preserves_thread_id\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_without_origin_falls_back_to_supported_home_channels[matrix-MATRIX_HOME_ROOM-!bot-room:example.org]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_without_origin_falls_back_to_supported_home_channels[signal-SIGNAL_HOME_CHANNEL-+15551234567]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_without_origin_falls_back_to_supported_home_channels[mattermost-MATTERMOST_HOME_CHANNEL-team-town-square]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_without_origin_falls_back_to_supported_home_channels[sms-SMS_HOME_CHANNEL-+15557654321]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_without_origin_falls_back_to_supported_home_channels[email-EMAIL_HOME_ADDRESS-home@example.com]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_without_origin_falls_back_to_supported_home_channels[dingtalk-DINGTALK_HOME_CHANNEL-cidNNN]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_without_origin_falls_back_to_supported_home_channels[feishu-FEISHU_HOME_CHANNEL-oc_home]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_without_origin_falls_back_to_supported_home_channels[wecom-WECOM_HOME_CHANNEL-wecom-home]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_without_origin_falls_back_to_supported_home_channels[weixin-WEIXIN_HOME_CHANNEL-wxid_home]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_origin_delivery_without_origin_falls_back_to_supported_home_channels[qqbot-QQ_HOME_CHANNEL-group-openid-home]\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_bare_matrix_delivery_uses_matrix_home_room\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_bare_platform_delivery_preserves_home_thread_id\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_telegram_cron_thread_id_overrides_home_thread_id\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_telegram_cron_thread_id_sets_thread_when_home_thread_unset\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_telegram_cron_thread_id_does_not_leak_to_other_platforms\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_explicit_telegram_topic_target_overrides_cron_thread_id\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_explicit_telegram_topic_target_with_thread_id\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_explicit_telegram_topic_thread_survives_bare_directory_match\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_explicit_telegram_chat_id_without_thread_id\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_human_friendly_label_resolved_via_channel_directory\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_human_friendly_label_without_suffix_resolved\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_human_friendly_topic_label_preserves_thread_id\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_raw_id_not_mangled_when_directory_returns_none\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_bare_platform_uses_matching_origin_chat\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_bare_platform_falls_back_to_home_channel\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_explicit_discord_topic_target_with_thread_id\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_explicit_discord_chat_id_without_thread_id\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_explicit_discord_channel_without_thread\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_list_form_deliver_is_normalized\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_list_form_multiple_platforms_normalized\ntests/cron/test_scheduler.py::TestResolveDeliveryTarget::test_empty_list_form_deliver_resolves_to_local\ntests/cron/test_scheduler.py::TestRoutingIntents::test_all_expands_to_every_connected_home_channel\ntests/cron/test_scheduler.py::TestRoutingIntents::test_all_combines_with_explicit_target_and_dedups\ntests/cron/test_scheduler.py::TestRoutingIntents::test_all_with_no_connected_channels_returns_empty\ntests/cron/test_scheduler.py::TestRoutingIntents::test_origin_comma_all_preserves_origin_first\ntests/cron/test_scheduler.py::TestRoutingIntents::test_all_token_case_insensitive\ntests/cron/test_scheduler.py::TestDeliverResultWrapping::test_delivery_wraps_content_with_header_and_footer\ntests/cron/test_scheduler.py::TestDeliverResultWrapping::test_delivery_uses_job_id_when_no_name\ntests/cron/test_scheduler.py::TestDeliverResultWrapping::test_delivery_skips_wrapping_when_config_disabled\ntests/cron/test_scheduler.py::TestDeliverResultWrapping::test_delivery_extracts_media_tags_before_send\ntests/cron/test_scheduler.py::TestDeliverResultWrapping::test_live_adapter_sends_media_as_attachments\ntests/cron/test_scheduler.py::TestDeliverResultWrapping::test_live_adapter_routes_image_to_send_image_file\ntests/cron/test_scheduler.py::TestDeliverResultWrapping::test_live_adapter_media_only_no_text\ntests/cron/test_scheduler.py::TestDeliverResultWrapping::test_live_adapter_sends_cleaned_text_not_raw\ntests/cron/test_scheduler.py::TestDeliverResultWrapping::test_no_mirror_to_session_call\ntests/cron/test_scheduler.py::TestDeliverResultWrapping::test_origin_delivery_preserves_thread_id\ntests/cron/test_scheduler.py::TestDeliverResultErrorReturns::test_returns_error_when_platform_disabled\ntests/cron/test_scheduler.py::TestDeliverResultErrorReturns::test_returns_error_for_unresolved_target\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_passes_session_db_and_cron_platform\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_titles_cron_session_from_job_not_important_hint\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_closes_agent_on_failure_to_prevent_fd_leak\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_reaps_stale_auxiliary_clients_per_tick\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_passes_enabled_toolsets_to_agent\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_disabled_toolsets_layer_user_config_on_baseline\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_enabled_toolsets_resolves_from_platform_config_when_not_set\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_per_job_toolsets_win_over_platform_config\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_empty_response_returns_empty_not_placeholder\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_treats_agent_failure_flag_as_failure[agent_result0-API call failed]\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_treats_agent_failure_flag_as_failure[agent_result1-agent reported failure]\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_treats_agent_failure_flag_as_failure[agent_result2-agent reported failure]\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_treats_agent_failure_flag_as_failure[agent_result3-model abort]\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_completed_true_without_failed_flag_succeeds\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_tick_marks_empty_response_as_error\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_sets_auto_delivery_env_from_dotenv_home_channel\ntests/cron/test_scheduler.py::TestRunJobSessionPersistence::test_run_job_clears_stale_auto_delivery_thread_id_between_jobs\ntests/cron/test_scheduler.py::TestRunJobConfigLogging::test_bad_config_yaml_is_logged\ntests/cron/test_scheduler.py::TestRunJobConfigLogging::test_bad_prefill_messages_is_logged\ntests/cron/test_scheduler.py::TestRunJobConfigEnvVarExpansion::test_model_env_ref_in_config_yaml_is_expanded\ntests/cron/test_scheduler.py::TestRunJobConfigEnvVarExpansion::test_legacy_agent_prefill_messages_file_is_loaded\ntests/cron/test_scheduler.py::TestRunJobConfigEnvVarExpansion::test_fallback_model_env_ref_in_config_yaml_is_expanded\ntests/cron/test_scheduler.py::TestRunJobConfigEnvVarExpansion::test_unexpanded_ref_passthrough_when_var_unset\ntests/cron/test_scheduler.py::TestRunJobSkillBacked::test_run_job_preserves_skill_env_passthrough_into_worker_thread\ntests/cron/test_scheduler.py::TestRunJobSkillBacked::test_run_job_preserves_credential_file_passthrough_into_worker_thread\ntests/cron/test_scheduler.py::TestRunJobSkillBacked::test_run_job_loads_skill_and_disables_recursive_cron_tools\ntests/cron/test_scheduler.py::TestRunJobSkillBacked::test_run_job_loads_multiple_skills_in_order\ntests/cron/test_scheduler.py::TestSilentDelivery::test_silent_response_suppresses_delivery\ntests/cron/test_scheduler.py::TestSilentDelivery::test_silent_with_note_suppresses_delivery\ntests/cron/test_scheduler.py::TestSilentDelivery::test_silent_trailing_suppresses_delivery\ntests/cron/test_scheduler.py::TestSilentDelivery::test_silent_is_case_insensitive\ntests/cron/test_scheduler.py::TestSilentDelivery::test_failed_job_always_delivers\ntests/cron/test_scheduler.py::TestSilentDelivery::test_output_saved_even_when_delivery_suppressed\ntests/cron/test_scheduler.py::TestSilentDelivery::test_whitespace_only_response_is_marked_failed_not_delivered\ntests/cron/test_scheduler.py::TestBuildJobPromptSilentHint::test_hint_always_present\ntests/cron/test_scheduler.py::TestBuildJobPromptSilentHint::test_hint_present_even_without_prompt\ntests/cron/test_scheduler.py::TestBuildJobPromptSilentHint::test_hint_present_when_legacy_prompt_is_null\ntests/cron/test_scheduler.py::TestBuildJobPromptSilentHint::test_delivery_guidance_present\ntests/cron/test_scheduler.py::TestBuildJobPromptSilentHint::test_delivery_guidance_precedes_user_prompt\ntests/cron/test_scheduler.py::TestParseWakeGate::test_empty_output_wakes\ntests/cron/test_scheduler.py::TestParseWakeGate::test_whitespace_only_wakes\ntests/cron/test_scheduler.py::TestParseWakeGate::test_non_json_last_line_wakes\ntests/cron/test_scheduler.py::TestParseWakeGate::test_json_non_dict_wakes\ntests/cron/test_scheduler.py::TestParseWakeGate::test_wake_gate_false_skips\ntests/cron/test_scheduler.py::TestParseWakeGate::test_wake_gate_true_wakes\ntests/cron/test_scheduler.py::TestParseWakeGate::test_wake_gate_missing_wakes\ntests/cron/test_scheduler.py::TestParseWakeGate::test_non_boolean_false_still_wakes\ntests/cron/test_scheduler.py::TestParseWakeGate::test_only_last_non_empty_line_parsed\ntests/cron/test_scheduler.py::TestParseWakeGate::test_trailing_blank_lines_ignored\ntests/cron/test_scheduler.py::TestParseWakeGate::test_non_last_json_line_does_not_gate\ntests/cron/test_scheduler.py::TestRunJobWakeGate::test_wake_false_skips_agent_and_returns_silent\ntests/cron/test_scheduler.py::TestRunJobWakeGate::test_wake_true_runs_agent_with_injected_output\ntests/cron/test_scheduler.py::TestRunJobWakeGate::test_script_runs_only_once_on_wake\ntests/cron/test_scheduler.py::TestRunJobWakeGate::test_script_failure_does_not_trigger_gate\ntests/cron/test_scheduler.py::TestRunJobWakeGate::test_no_script_path_runs_agent_normally\ntests/cron/test_scheduler.py::TestBuildJobPromptMissingSkill::test_missing_skill_does_not_raise\ntests/cron/test_scheduler.py::TestBuildJobPromptMissingSkill::test_missing_skill_injects_user_notice_into_prompt\ntests/cron/test_scheduler.py::TestBuildJobPromptMissingSkill::test_missing_skill_logs_warning\ntests/cron/test_scheduler.py::TestBuildJobPromptMissingSkill::test_valid_skill_loaded_alongside_missing\ntests/cron/test_scheduler.py::TestBuildJobPromptBumpUse::test_bump_use_called_for_loaded_skill\ntests/cron/test_scheduler.py::TestBuildJobPromptBumpUse::test_bump_use_not_called_for_missing_skill\ntests/cron/test_scheduler.py::TestBuildJobPromptBumpUse::test_bump_failure_does_not_break_prompt\ntests/cron/test_scheduler.py::TestSendMediaViaAdapter::test_video_dispatched_to_send_video\ntests/cron/test_scheduler.py::TestSendMediaViaAdapter::test_unknown_ext_dispatched_to_send_document\ntests/cron/test_scheduler.py::TestSendMediaViaAdapter::test_multiple_media_files_all_delivered\ntests/cron/test_scheduler.py::TestParallelTick::test_parallel_jobs_run_concurrently\ntests/cron/test_scheduler.py::TestParallelTick::test_parallel_jobs_isolated_contextvars\ntests/cron/test_scheduler.py::TestParallelTick::test_max_parallel_env_var\ntests/cron/test_scheduler.py::TestDeliverResultTimeoutCancelsFuture::test_live_adapter_timeout_cancels_future_and_falls_back\ntests/cron/test_scheduler.py::TestDeliverResultTimeoutCancelsFuture::test_live_adapter_thread_fallback_records_delivery_error\ntests/cron/test_scheduler.py::TestSendMediaTimeoutCancelsFuture::test_media_send_timeout_cancels_future_and_continues\ntests/cron/test_scheduler.py::TestCronDeliveryTargets::test_lists_configured_platforms_flagging_missing_home_channel\ntests/cron/test_scheduler.py::TestCronDeliveryTargets::test_home_channel_set_marks_target_ready\ntests/cron/test_scheduler.py::TestCronDeliveryTargets::test_unconfigured_platforms_excluded\ntests/cron/test_scheduler.py::TestCronDeliveryTargets::test_no_gateway_config_returns_empty\ntests/cron/test_scheduler.py::TestHomeTargetEnvVarRegistry::test_whatsapp_cloud_registered\ntests/cron/test_scheduler.py::TestHomeTargetEnvVarRegistry::test_baileys_whatsapp_still_registered\n\n==================================== ERRORS ====================================\n__ ERROR collecting tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py ___\nImportError while importing test module '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py'.\nHint: make sure your test modules/packages have valid Python names.\nTraceback:\n/home/cube/miniconda3/lib/python3.12/importlib/__init__.py:90: in import_module\n    return _bootstrap._gcd_import(name[level:], package, level)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntests/gateway/test_nutrition_weekly_dispatcher_epoch2.py:15: in <module>\n    from checkin_cli.customer_coaching import AiProcessingConsent\nE   ModuleNotFoundError: No module named 'checkin_cli'\n_ ERROR collecting tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py _\nImportError while importing test module '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py'.\nHint: make sure your test modules/packages have valid Python names.\nTraceback:\n/home/cube/miniconda3/lib/python3.12/importlib/__init__.py:90: in import_module\n    return _bootstrap._gcd_import(name[level:], package, level)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py:12: in <module>\n    from checkin_cli.models import (\nE   ModuleNotFoundError: No module named 'checkin_cli'\n=========================== short test summary info ============================\nERROR tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py\nERROR tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py\n!!!!!!!!!!!!!!!!!!! Interrupted: 2 errors during collection !!!!!!!!!!!!!!!!!!!!\n171 tests collected, 2 errors in 0.49s\n\n\nCommand exited with code 2"}],"details":{},"isError":true,"timestamp":1788247020349}}
{"type":"message","id":"6d1b2c1d","parentId":"77be4045","timestamp":"2026-09-01T07:17:00.349Z","message":{"role":"toolResult","toolCallId":"call_VpefRkOuFtbXwDLUH7QEy3Av|fc_046f5546d6e20d23016a967beb709887d0b769733f087d3f1c","toolName":"bash","content":[{"type":"text","text":"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py:4:def test_maintenance_disposition_is_distinct_from_delivery() -> None:\ntests/gateway/test_nutrition_weekly_operations_topic59.py:235:async def test_maintenance_precedes_topic59_claim_and_transport(tmp_path: Path, monkeypatch) -> None:\ntests/cron/test_physique_inline_card.py:96:def test_scheduler_intercepts_inline_card_before_stdout_delivery(monkeypatch, tmp_path: Path) -> None:\ntests/cron/test_physique_inline_card.py:111:def test_scheduler_uses_existing_gateway_loop_with_fake_inline_transport(tmp_path: Path) -> None:\ntests/cron/test_physique_inline_card.py:128:def test_source_review_scheduler_does_not_consume_the_morning_daily_claim(tmp_path: Path) -> None:\ntests/cron/test_physique_inline_card.py:165:def test_nutrition_tick_propagates_maintenance_without_fabricating_send(tmp_path: Path) -> None:\ntests/cron/test_physique_inline_card.py:208:def test_scheduler_records_maintenance_as_success_without_sent_status(monkeypatch, tmp_path: Path) -> None:\ntests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:15:def test_artifact_without_credential_denies_before_publication(tmp_path: Path, monkeypatch) -> None:\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py:57:def test_valid_hold_is_consumed_once_and_same_day_is_idempotent(tmp_path: Path, monkeypatch) -> None:\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py:86:def test_prior_day_terminal_audit_allows_next_day(tmp_path: Path, monkeypatch) -> None:\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py:103:def test_consuming_marker_completes_after_rename_crash(tmp_path: Path, monkeypatch) -> None:\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py:122:def test_complete_audit_finalizes_consuming_marker_after_replace_crash(tmp_path: Path, monkeypatch) -> None:\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py:145:def test_concurrent_ticks_create_one_audit_without_timing_waits(tmp_path: Path, monkeypatch) -> None:\n"}],"isError":false,"timestamp":1788247020349}}
{"type":"message","id":"9e29cef7","parentId":"6d1b2c1d","timestamp":"2026-09-01T07:17:00.349Z","message":{"role":"toolResult","toolCallId":"call_6Wzm1aR7lTjqDSN5XEY1t7FT|fc_046f5546d6e20d23016a967beb70a487d0bd548feaa2791007","toolName":"bash","content":[{"type":"text","text":"tests/cron/test_scheduler.py:529:        assert \"To stop or manage this job\" in sent_content\ntests/cron/test_scheduler.py:1823:        assert \"cronjob\" in (kwargs[\"disabled_toolsets\"] or [])\ntests/cron/test_scheduler.py:2225:        assert \"not found\" in result.lower() or \"skipped\" in result.lower()\ntests/cron/test_scheduler.py:2416:            time.sleep(0.05)  # give other thread time to set its vars\ntests/cron/test_scheduler.py:2450:            time.sleep(0.05)\ntests/cron/test_scheduler.py:2659:            # Should not raise — the except Exception clause swallows the timeout\ngateway/platforms/nutrition_weekly_dispatcher.py:136:    store = cast(_InitializableWeeklyStore, cast(object, customer.store))\ncron/scheduler.py:161:    except Exception as exc:\ncron/scheduler.py:352:    except Exception:\ncron/scheduler.py:436:    except Exception:\ncron/scheduler.py:460:    except Exception:\ncron/scheduler.py:537:        except Exception:\ncron/scheduler.py:709:        except Exception as e:\ncron/scheduler.py:742:    except Exception:\ncron/scheduler.py:765:    except Exception as e:\ncron/scheduler.py:836:                        except Exception as ex:\ncron/scheduler.py:878:            except Exception as e:\ncron/scheduler.py:901:            except Exception as e:\ncron/scheduler.py:934:        except Exception:\ncron/scheduler.py:943:        except Exception:\ncron/scheduler.py:954:    except Exception as exc:\ncron/scheduler.py:1063:        except Exception:\ncron/scheduler.py:1078:    except Exception as exc:\ncron/scheduler.py:1088:    LLM run, no delivery. Any other output (non-JSON, missing flag, gate\ncron/scheduler.py:1283:        except Exception:\ncron/scheduler.py:1508:    except Exception as e:\ncron/scheduler.py:1672:                except Exception:\ncron/scheduler.py:1681:        except Exception as e:\ncron/scheduler.py:1690:        except Exception:\ncron/scheduler.py:1718:                except Exception as e:\ncron/scheduler.py:1763:                except Exception as fb_exc:\ncron/scheduler.py:1767:        except Exception as exc:\ncron/scheduler.py:1786:            except Exception as e:\ncron/scheduler.py:1804:        except Exception as _mcp_exc:\ncron/scheduler.py:1891:                        except Exception:\ncron/scheduler.py:1896:        except Exception:\ncron/scheduler.py:1908:                except Exception:\ncron/scheduler.py:1978:    except Exception as e:\ncron/scheduler.py:2044:        # dies as soon as the ``ThreadPoolExecutor`` shuts down. Any async\ncron/scheduler.py:2050:        except Exception as e:\ncron/scheduler.py:2130:            except Exception as de:\ncron/scheduler.py:2144:    except Exception as e:\ncron/scheduler.py:2164:    except Exception as e:\ncron/scheduler.py:2235:            except Exception:\ncron/scheduler.py:2326:            except Exception as _e:\ncron/scheduler.py:2335:                except Exception as exc:\n"}],"isError":false,"timestamp":1788247020349}}
{"type":"message","id":"6a11b515","parentId":"9e29cef7","timestamp":"2026-09-01T07:17:00.349Z","message":{"role":"toolResult","toolCallId":"call_0jhGycKx7GpxfAOKGKavEqwY|fc_046f5546d6e20d23016a967beb70b087d0a5eee0188f5ee263","toolName":"bash","content":[{"type":"text","text":"./gateway/platforms/nutrition_weekly_dispatcher.py.orig\n./gateway/platforms/nutrition_weekly_maintenance_store.py.orig\n"}],"isError":false,"timestamp":1788247020349}}
{"type":"message","id":"70b9a3b5","parentId":"6a11b515","timestamp":"2026-09-01T07:17:09.965Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Investigating PYTHONPATH issues in tests**","startedAt":1788247022986,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967beee68487d0af7b927b33b305a4\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnv1PR9d2yFfgoDteCcoD1rKsKZu7l1LpXsC69-FmgTJpaivoeyx29rfVilJl-_bEVXokemNyrpC-T3UF0fGeiccxZOoITqn7E8uziwz_ENbQAYXbbijYOiTrAQL0wb2mBVp07LTgcagBQcY09eNytJUxucQmWAjFi_wNe7Ph-htxfJXAAcOVgL518H_audugZsv_c8tb8q1DgoG5xaoOJecaI8OPWA1M-zLiS6B6DCSI3bn5sO9ihnwk5Ku-J_b1LpgddVeOLEdckKlajKRcYmkZNacfX1gpIc3PhGOvskbHHweddiFGUPePg661xawQuN5hiciOxNrzZswCO2E4P6xhhck2bDxzHf2FCa7UCx_AdEtCWvDoe9YHlMWUBmifed0zfzA5wgsEXz-6n1l2fh9CDm4P1l5INjaRT2KFHwFgl1hUdnJz_9JCaBcGI37_ugztBinHc-zd61waGIa_P0SktDNmVI5uoU821vWZfVpTPJ2jacREHg2sSGOfj4WeF8QWp3Qw8tI6Waf5241_maLNWEHzu4Vo8QBFEz6TdWX1d37Ujwz5RqLa5yevEGCdfME-d9JIy4T3vA5_xd2If70rbfusa8KOHpTe7uViZsF969g3te5rSuJa9Va0z6FbqksYxtvWlSIA8B93Kkr7NwFwl8HkXCwsalt6hvufYuKV_Ous4S7thcwyqg_l-m3pNaWq9pMZiifGW4S-EumFCxQwu0vtTLqc_MOY3znjwDW1u1dQprjDml3lrkdJe9ytpzzl9EXkwS5PLjE2G4BeTrIz9YXdY-yy9EyARCwK63ivvO__ve9-EhPZ5jektL2iqroRjU6W41OqPqeY-fnl3sfKTpvw4Xx--yJOGJX3ldFChs5n29BXViGeY4J6u9iezIcakE3vHnItR9Ab-4IugqqUPY5KgFitiXIZ5Yw-TcdlpErrbb4ntk_EcXbAhtaRbgVsGh-MZ42Yhx0OI0BOEoOJknR8jR7AtW96DOPxj0gRCxdf0DDlEF7GnWOGT8dxcHGHHg0LSHTF07-vmN0J9vdyjn-ORog_ym5ZxLAqIwEcexLdqK21I5M9nivJvVqep8EDWSa8xlzfMyn2JjL9-YHRpXPEgzs3RiPad-3A4ReKTAV9wsOR-xpZMOJxglDdoxeGJiz2y1TPaZbAAbSBLxZUvFuQCRpKd9X_8UCrhApoH0oHI9Pf7gMB-98Nx0ln6N17YUM7Vf-xXFTqFCchUuxQskIxJNU5iJVDd--U5awO2izYPJm83hS2Gu0YXJvQ0tQlVYzRmPYGbs_pPUKBIvE3wVXMPng7ACm_jvED8udqgzCpKQFGHSK5F5YTCBBw8RzSyOh9Rg6Ekva6sR7G4YvZfx4SxaoOOf-A7-iNqbfWHXhMyrICX5MpsQKOQv4V8CM5ZF4DXr4oLRHeIcusJsruodlsE66EN07bx7HgsfYcMzoLtydkoeBcrImP4qqDaHq_YVPLBCGdd7B1Ql8DsIXqQ==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Investigating PYTHONPATH issues in tests**\"}]}","endedAt":1788247029887},{"type":"toolCall","id":"call_GYgDpdjjXWefjgBWSr9cGKFI|fc_046f5546d6e20d23016a967bf5cb8087d0954c0c15212e9c8a","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/pyproject.toml","offset":1,"limit":220}},{"type":"toolCall","id":"call_WWaIbjmGdnPUCgXkzniKGKSA|fc_046f5546d6e20d23016a967bf5cb9887d0a076e990a65d616b","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && find dualcoach/profile -maxdepth 2 -type f \\( -name 'pyproject.toml' -o -name 'pytest.ini' -o -name 'setup.cfg' \\) -print; printf '%s\\n' '--- tools'; command -v basedpyright || true; command -v ty || true; .venv/bin/python -m ruff --version 2>&1 || true; dualcoach/profile/.venv/bin/python -V","timeout":20}},{"type":"toolCall","id":"call_TxCwK9PVy1I93bVXnrJB7Npr|fc_046f5546d6e20d23016a967bf5cba087d0ba10b92acf917842","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","offset":210,"limit":90}},{"type":"toolCall","id":"call_k7zkydpEAK1AQZoOvYT5pskA|fc_046f5546d6e20d23016a967bf5cba887d0970b24b416687ff1","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatch_result.py"}},{"type":"toolCall","id":"call_sStk4UX2DP1ZJVQKz9LlQmJs|fc_046f5546d6e20d23016a967bf5cbb087d0886f86b022dc581a","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_operations_publication_contract.py","offset":1,"limit":100}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":7432,"output":385,"cacheRead":72192,"cacheWrite":0,"reasoning":35,"totalTokens":80009,"cost":{"input":0.037160000000000006,"output":0.01155,"cacheRead":0.036095999999999996,"cacheWrite":0,"total":0.08480599999999999}},"stopReason":"toolUse","timestamp":1788247020359,"responseId":"resp_046f5546d6e20d23016a967becb4ec87d0818908d5293c3f42","rawStopReason":"completed"}}
{"type":"message","id":"ff9744b9","parentId":"70b9a3b5","timestamp":"2026-09-01T07:17:10.005Z","message":{"role":"toolResult","toolCallId":"call_GYgDpdjjXWefjgBWSr9cGKFI|fc_046f5546d6e20d23016a967bf5cb8087d0954c0c15212e9c8a","toolName":"read","content":[{"type":"text","text":"# PEP 639 SPDX license expression (`license = \"MIT\"` below) requires\n# setuptools>=77. Keep this floor in lockstep with the `license` form in\n# [project]; an older build backend rejects the string form.\n[build-system]\nrequires = [\"setuptools>=77.0,<83\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"hermes-agent\"\nversion = \"0.17.0\"\ndescription = \"The self-improving AI agent — creates skills from experience, improves them during use, and runs anywhere\"\nreadme = \"README.md\"\n# Upper bound is load-bearing, not cosmetic. uv resolves the project's\n# Python from `requires-python`, and an inherited `UV_PYTHON` env var (or a\n# fresh distro whose newest interpreter uv auto-picks) will otherwise select\n# 3.14, where Rust-backed transitives (e.g. pydantic-core) have no cp314\n# wheel yet and fall back to a maturin source build that fails. Capping at\n# <3.14 makes uv refuse 3.14 with a clear error instead of attempting that\n# build. Raise the ceiling once our Rust transitives ship cp314 wheels.\nrequires-python = \">=3.11,<3.14\"\nauthors = [{ name = \"Nous Research\" }]\nlicense = \"MIT\"\nlicense-files = [\"LICENSE\"]\ndependencies = [\n  # Core — every direct dep is exact-pinned to ==X.Y.Z (no ranges).\n  # Rationale: ranges allow PyPI to ship a fresh version of a transitive\n  # at any time without a code review on our side. Exact pins mean the\n  # only way a new package version reaches a user is via an intentional\n  # update on our end (bump the pin in this file, regenerate uv.lock).\n  # This was tightened on 2026-05-12 in response to the Mini Shai-Hulud\n  # worm hitting mistralai 2.4.6 on PyPI; if that release had been\n  # captured by `mistralai>=2.3.0,<3` rather than an exact pin, every\n  # install in the hours before the quarantine would have pulled it.\n  #\n  # When updating: bump the version below AND regenerate uv.lock with\n  # `uv lock` so the transitive resolution stays consistent. Don't\n  # introduce ranges back without a written justification.\n  #\n  # Scope rule: only packages used by EVERY hermes session belong here.\n  # Anything that's provider-specific (`anthropic`, `firecrawl-py`,\n  # `exa-py`, `fal-client`, `edge-tts`, `parallel-web`) belongs in an\n  # extra and gets lazy-installed via `tools/lazy_deps.py` when the\n  # user picks that backend. Smaller `dependencies` = smaller blast\n  # radius for the next supply-chain attack.\n  \"openai==2.24.0\",\n  \"certifi==2026.5.20\",\n  \"python-dotenv==1.2.2\",\n  \"fire==0.7.1\",\n  \"httpx[socks]==0.28.1\",\n  \"rich==14.3.3\",\n  \"tenacity==9.1.4\",\n  \"pyyaml==6.0.3\",\n  \"ruamel.yaml==0.18.17\",\n  \"requests==2.33.0\",  # CVE-2026-25645\n  \"jinja2==3.1.6\",\n  # Bumped from 2.12.5 to 2.13.4 to pull in pydantic-core 2.46.4.\n  # pydantic-core 2.41.5 (pulled by 2.12.5) segfaults when the OpenAI SDK's\n  # Responses API resource is exercised from a non-main thread, which is the\n  # codex_responses dispatch in agent/chat_completion_helpers.py:_call.\n  \"pydantic==2.13.4\",\n  # Interactive CLI (prompt_toolkit is used directly by cli.py)\n  \"prompt_toolkit==3.0.52\",\n  # Cron scheduler (built-in feature — scheduled cron/interval jobs use croniter).\n  \"croniter==6.0.0\",\n  # ``packaging`` is imported directly on three production paths but was never\n  # declared, so it only reached users transitively (pip/uv pull it for other\n  # tools). The slim official Docker image ships without it, where the\n  # try/except-ImportError fallbacks silently degrade: Hindsight's\n  # ``_meets_minimum_version`` disables update_mode='append' (#40503),\n  # tools/lazy_deps.py treats every version constraint as satisfied, and\n  # hermes_cli/main.py drops to naive requirement parsing. Pure-Python\n  # py3-none-any wheel, no compiled extensions — safe to ship everywhere.\n  # Pinned to the version already resolved in uv.lock (no resolution churn).\n  \"packaging==26.0\",\n  # Markdown -> HTML conversion for rich message delivery (Matrix\n  # `formatted_body`, and the `send_message` tool's HTML path). Now on the\n  # DEFAULT delivery path, not matrix-specific: without it both\n  # gateway/platforms/matrix.py and tools/send_message_tool.py silently fall\n  # back to plain text, so cron/agent deliveries render raw `##`/`**`/tables\n  # in clients like Element (see #32486). Pure-Python py3-none-any wheel\n  # (~108KB, no compiled extensions, no platform constraints), so unlike the\n  # matrix extra's `mautrix`/`python-olm` it's safe to ship everywhere — keeps\n  # it out of the lazy-install path that exists only for the heavy matrix deps.\n  \"Markdown==3.10.2\",\n  # Skills Hub (GitHub App JWT auth — optional, only needed for bot identity)\n  \"PyJWT[crypto]==2.13.0\",  # PYSEC-2026-175/177/178/179\n  # urllib3 2.7.0 fixes GHSA-mf9v-mfxr-j63j (decompression-bomb bypass)\n  # and GHSA-qccp-gfcp-xxvc (header leak across origins).\n  \"urllib3>=2.7.0,<3\",\n  # Windows has no IANA tzdata shipped with the OS, so Python's ``zoneinfo``\n  # (PEP 615) raises ``ZoneInfoNotFoundError`` for every non-UTC timezone\n  # out of the box.  ``tzdata`` ships the Olson database as a data package\n  # Python resolves automatically.  No-op on Linux/macOS (which have\n  # /usr/share/zoneinfo).  Credits: PR #13182 (@sprmn24).\n  \"tzdata==2025.3; sys_platform == 'win32'\",\n  # Cross-platform process / PID management.  `psutil` is the canonical\n  # answer for \"is this PID alive\" and process-tree walking across Linux,\n  # macOS and Windows.  It replaces POSIX-only idioms like `os.kill(pid, 0)`\n  # (which is a silent killer on Windows — see CONTRIBUTING.md) and\n  # `os.killpg` (which doesn't exist on Windows).\n  \"psutil==7.2.2\",\n  # Browser CDP supervisor + browser_dialog import this directly. Keep core\n  # so browser tool discovery doesn't fail on lean installs.\n  \"websockets==15.0.1\",\n  # .gitignore-aware file matching for desktop build stamp.\n  \"pathspec==1.1.1\",\n  \"fastapi>=0.104.0,<1\",\n  \"uvicorn[standard]>=0.24.0,<1\",\n  # Streaming multipart uploads for the dashboard file manager (NS-501).\n  # FastAPI's UploadFile/Form depend on python-multipart; it is NOT pulled in\n  # by fastapi itself, so the dashboard's multipart upload endpoint would 500\n  # without an explicit dependency here (and in the `web` extra below).\n  \"python-multipart>=0.0.9,<1\",\n  \"ptyprocess>=0.7.0,<1; sys_platform != 'win32'\",\n  \"pywinpty>=2.0.0,<3; sys_platform == 'win32'\",\n  # Image resize recovery for the vision tools. Pillow shrinks oversized images\n  # (>5 MB or >8000px) at embed time; without it the byte AND pixel-dimension\n  # shrink paths no-op, so an oversized image bakes into immutable history and\n  # bricks the session on Anthropic's non-retryable 400. Pure-wheel, no system\n  # libs required for the codecs we use, so it's safe to ship in the base\n  # install rather than gating it behind an extra + a mid-session lazy install\n  # (which deadlocked the CLI under prompt_toolkit — see #40490).\n  \"Pillow==12.2.0\",\n  # Windows log rotation. Stdlib ``RotatingFileHandler.doRollover()`` uses\n  # ``os.rename()`` which fails with ``PermissionError [WinError 32]`` on\n  # Windows whenever any other process holds an append-mode handle on\n  # ``agent.log`` (always the case in Hermes — TUI, gateway, ``hy_memory``\n  # server, MCP servers, and on-demand CLI commands all log from separate\n  # processes), pinning ``agent.log`` at the 5 MiB threshold and spamming\n  # stderr on every emit (see #44873). ``concurrent-log-handler`` wraps the\n  # rename in a cross-process file lock (via ``portalocker``: pywin32 on\n  # Windows) so only one process rotates at a time. ``hermes_logging.py``\n  # aliases it ONLY on Windows — POSIX renames an open file fine, so stdlib\n  # already works there and managed-mode perms depend on its exact lifecycle.\n  # Hence the ``sys_platform == 'win32'`` marker: the dep (and its portalocker\n  # / pywin32 tree) ships only where it's actually used.\n  \"concurrent-log-handler==0.9.29; sys_platform == 'win32'\",\n]\n\n[project.optional-dependencies]\n# Native Anthropic provider — only needed when provider=anthropic (not via\n# OpenRouter or other aggregators).\nanthropic = [\"anthropic==0.87.0\"]  # CVE-2026-34450, CVE-2026-34452\n# Web search backends — each only loaded when the user picks it as their\n# search provider (configured via `hermes tools` or config.yaml).\nexa = [\"exa-py==2.10.2\"]\nfirecrawl = [\"firecrawl-py==4.17.0\"]\nparallel-web = [\"parallel-web==0.4.2\"]\n# Image generation backends\nfal = [\"fal-client==0.13.1\"]\n# Edge TTS — default TTS provider but still optional (users can pick\n# ElevenLabs / OpenAI / MiniMax instead).\nedge-tts = [\"edge-tts==7.2.7\"]\nmodal = [\"modal==1.3.4\"]\ndaytona = [\"daytona==0.155.0\"]\nhindsight = [\"hindsight-client==0.6.1\"]\ndev = [\"debugpy==1.8.20\", \"pytest==9.0.2\", \"pytest-asyncio==1.3.0\", \"mcp==1.26.0\", \"starlette==1.0.1\", \"ty==0.0.21\", \"ruff==0.15.10\", \"setuptools==81.0.0\"]  # starlette: CVE-2026-48710; setuptools: latest <82 (torch >=2.11 caps setuptools<82)\nmessaging = [\"python-telegram-bot[webhooks]==22.6\", \"discord.py[voice]==2.7.1\", \"aiohttp==3.13.4\", \"brotlicffi==1.2.0.1\", \"slack-bolt==1.27.0\", \"slack-sdk==3.40.1\", \"qrcode==7.4.2\"]  # aiohttp: CVE-2026-34513/34518/34519/34520/34525\ncron = []  # croniter is now a core dependency; this extra kept for back-compat\nslack = [\"slack-bolt==1.27.0\", \"slack-sdk==3.40.1\", \"aiohttp==3.13.4\"]\nmatrix = [\"mautrix[encryption]==0.21.0\", \"aiosqlite==0.22.1\", \"asyncpg==0.31.0\", \"aiohttp-socks==0.11.0\"]\n# WeCom callback-mode adapter — parses untrusted XML POST bodies from\n# WeCom-controlled callback endpoints, so we use defusedxml (drop-in\n# replacement for stdlib xml.etree.ElementTree) to block billion-laughs\n# and XXE. aiohttp/httpx are already in [messaging]; defusedxml lands\n# here to keep the dependency local to wecom_callback's threat model.\nwecom = [\"defusedxml==0.7.1\"]\ncli = [\"simple-term-menu==1.6.6\"]\ntts-premium = [\"elevenlabs==1.59.0\"]\nvoice = [\n  # Local STT pulls in wheel-only transitive deps (ctranslate2, onnxruntime),\n  # so keep it out of the base install for source-build packagers like Homebrew.\n  \"faster-whisper==1.2.1\",\n  \"sounddevice==0.5.5\",\n  \"numpy==2.4.3\",\n]\npty = [\n  # Kept as a no-op back-compat alias — `ptyprocess` and `pywinpty` are now\n  # in the main `dependencies` list (with the same platform markers), so\n  # any existing `pip install hermes-agent[pty]` invocations resolve cleanly\n  # without pulling in extra packages.\n]\nhoncho = [\"honcho-ai==2.0.1\"]\n# Image resize recovery for the vision tools. Pillow is now a CORE dependency\n# (see the main `dependencies` list) since the byte/pixel shrink paths are on\n# the default vision-embed path and the mid-session lazy install deadlocked the\n# CLI under prompt_toolkit (#40490). This extra is kept as a no-op back-compat\n# alias so existing `pip install hermes-agent[vision]` invocations still resolve.\nvision = []\n# CVE-2026-48710 (BadHost): Starlette is pulled transitively by mcp's\n# sse-starlette / HTTP-SSE stack (and by fastapi in the `web` extra). Before\n# 1.0.1, a malformed Host header makes `request.url.path` desync from the path\n# the ASGI router actually dispatched, so middleware/endpoints that gate on\n# `request.url` can be bypassed. We pin a patched Starlette directly in every\n# extra that exposes a Starlette-backed server surface so pip/uv can't resolve\n# a vulnerable pre-1.0.1 transitive. Bump in lockstep with uv.lock.\nmcp = [\"mcp==1.26.0\", \"starlette==1.0.1\"]  # starlette: CVE-2026-48710\nnemo-relay = [\"nemo-relay==0.3\"]\nhomeassistant = [\"aiohttp==3.13.4\"]\nsms = [\"aiohttp==3.13.4\"]\nteams = [\"microsoft-teams-apps==2.0.13.4\", \"aiohttp==3.13.4\"]\n# Computer use — macOS background desktop control via cua-driver (MCP stdio).\n# The cua-driver binary itself is installed via `hermes tools` post-setup\n# (curl install script); this extra just pins the MCP client used to talk\n# to it, which is already provided by the `mcp` extra.\ncomputer-use = [\"mcp==1.26.0\", \"starlette==1.0.1\"]  # starlette: CVE-2026-48710\nacp = [\"agent-client-protocol==0.9.0\"]\n# mistral: Voxtral STT + TTS. Pinned to an exact verified-clean version.\n# The `mistralai` PyPI project was quarantined 2026-05-12 after the malicious\n# 2.4.6 release (Mini Shai-Hulud worm); 2.4.6 was removed from PyPI and the\n# project is serving clean releases again (2.4.7 2026-05-25, 2.4.8 2026-05-28).\n# Like other opt-in TTS/STT backends, this is lazy-installed via\n# tools/lazy_deps.py (stt.mistral / tts.mistral) at first use — deliberately\n# NOT re-added to [all] so a future quarantined release can't break fresh\n# installs (see [all] policy comment below).\nmistral = [\"mistralai==2.4.8\"]\nbedrock = [\"boto3==1.42.89\"]\nazure-identity = [\"azure-identity==1.25.3\"]\ntermux = [\n  # Baseline Android / Termux path for reliable fresh installs.\n\n[166 more lines in file. Use offset=221 to continue.]"}],"isError":false,"timestamp":1788247030005}}
{"type":"message","id":"9e72ba95","parentId":"ff9744b9","timestamp":"2026-09-01T07:17:10.006Z","message":{"role":"toolResult","toolCallId":"call_WWaIbjmGdnPUCgXkzniKGKSA|fc_046f5546d6e20d23016a967bf5cb9887d0a076e990a65d616b","toolName":"bash","content":[{"type":"text","text":"dualcoach/profile/pyproject.toml\n--- tools\n/home/cube/.local/bin/basedpyright\nruff 0.15.10\nPython 3.12.9\n"}],"isError":false,"timestamp":1788247030005}}
{"type":"message","id":"ddb46880","parentId":"9e72ba95","timestamp":"2026-09-01T07:17:10.006Z","message":{"role":"toolResult","toolCallId":"call_TxCwK9PVy1I93bVXnrJB7Npr|fc_046f5546d6e20d23016a967bf5cba087d0ba10b92acf917842","toolName":"read","content":[{"type":"text","text":"    leaky = _LeakySidecarRow(\n        _CUSTOMER_IDENTITY, date(2026, 8, 23), \"submitted\", \"event-submitted\", _digest(\"row\"), _digest(\"digest\"),\n        \"홍길동\", \"70.3kg\", \"2300kcal 식사 기록\",\n    )\n    card = Topic59DayCard.from_sidecar(\n        leaky, completed_field_count=5, draft_state=Topic59DraftState.DRAFTED,\n        approval_state=Topic59ApprovalState.PENDING, delivery_state=Topic59DeliveryState.NOT_SENT,\n        candidate_digest=_CANDIDATE_DIGEST,\n    )\n\n    assert set(card.payload()) == _SAFE_KEYS\n    assert all(value not in card.render() for value in {leaky.customer_name, leaky.raw_weight, leaky.meal_note})\n\n\n@dataclass(frozen=True, slots=True)\nclass _NoopMaintenanceGate:\n    def evaluate(self, projection, now) -> Topic59MaintenanceDecision:\n        _ = projection, now\n        return Topic59MaintenanceDecision(\n            kind=Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n            audit_digest=\"9\" * 64,\n        )\n\n\n@pytest.mark.anyio\nasync def test_maintenance_precedes_topic59_claim_and_transport(tmp_path: Path, monkeypatch) -> None:\n    # Given\n    transport = _Transport()\n    projector = Topic59DayCardProjector(tmp_path / \"topic59.jsonl\", _NoopMaintenanceGate())\n    monkeypatch.setattr(\n        projector._ledger, \"claim\",\n        lambda projection: (_ for _ in ()).throw(AssertionError(projection.logical_key)),\n    )\n\n    # When\n    result = await projector.publish(\n        _request(date(2026, 8, 20), Topic59DayState.SUBMITTED), transport,\n    )\n\n    # Then\n    assert result.disposition is Topic59PublicationDisposition.NOOP_MAINTENANCE\n    assert result.message_id is None\n    assert result.maintenance_audit_digest == \"9\" * 64\n    assert transport.sent == transport.edited == []\n    assert not (tmp_path / \"topic59.jsonl\").exists()\n"}],"isError":false,"timestamp":1788247030006}}
{"type":"message","id":"1ba46ac3","parentId":"ddb46880","timestamp":"2026-09-01T07:17:10.006Z","message":{"role":"toolResult","toolCallId":"call_k7zkydpEAK1AQZoOvYT5pskA|fc_046f5546d6e20d23016a967bf5cba887d0970b24b416687ff1","toolName":"read","content":[{"type":"text","text":"\"\"\"Typed aggregate result for one weekly operations dispatch tick.\"\"\"\n\nfrom dataclasses import dataclass\n\nfrom .nutrition_weekly_operations import Topic59PublicationDisposition\n\n\n@dataclass(frozen=True, slots=True)\nclass WeeklyOperationsDispatchResult:\n    failures: tuple[str, ...]\n    topic59_dispositions: tuple[Topic59PublicationDisposition, ...]\n\n    @property\n    def maintenance_noop(self) -> bool:\n        return (\n            not self.failures\n            and Topic59PublicationDisposition.NOOP_MAINTENANCE\n            in self.topic59_dispositions\n        )\n"}],"isError":false,"timestamp":1788247030006}}
{"type":"message","id":"900cef4d","parentId":"1ba46ac3","timestamp":"2026-09-01T07:17:10.006Z","message":{"role":"toolResult","toolCallId":"call_sStk4UX2DP1ZJVQKz9LlQmJs|fc_046f5546d6e20d23016a967bf5cbb087d0886f86b022dc581a","toolName":"read","content":[{"type":"text","text":"\"\"\"Typed terminal states and provider outcomes for Topic-59 publication.\"\"\"\n\nfrom __future__ import annotations\n\nfrom dataclasses import dataclass\nfrom enum import StrEnum\nfrom typing import TYPE_CHECKING, Literal\n\nif TYPE_CHECKING:\n    from .nutrition_weekly_operations_models import Topic59Projection\n\n\nclass Topic59LedgerError(Exception):\n    \"\"\"The Topic-59 publication history cannot safely advance.\"\"\"\n\n\nclass Topic59LedgerCorruption(Topic59LedgerError):\n    \"\"\"Stored publication bytes failed their typed integrity contract.\"\"\"\n\n\nclass Topic59LedgerConflict(Topic59LedgerError):\n    \"\"\"A reserved publication no longer has a reconcilable pending state.\"\"\"\n\n\nclass Topic59LedgerState(StrEnum):\n    PREPARED = \"prepared\"\n    SENDING = \"sending\"\n    DELIVERED = \"delivered\"\n    SENT_AUDITED = \"sent_audited\"\n    UNKNOWN = \"unknown\"\n    FAILED = \"failed\"\n    AUTHORITY_MISMATCH = \"authority_mismatch\"\n\n\nclass Topic59ProviderFailure(StrEnum):\n    REJECTED = \"rejected\"\n    TIMEOUT = \"timeout\"\n    CONNECTION_LOST = \"connection_lost\"\n    RECEIPT_MISMATCH = \"receipt_mismatch\"\n\n\nclass Topic59IncidentReason(StrEnum):\n    AUTHORITY_REJECTED = \"authority_rejected\"\n    MAINTENANCE_REJECTED = \"maintenance_rejected\"\n    AUTHORITY_MISMATCH = \"authority_mismatch\"\n    LEDGER_CORRUPTION = \"ledger_corruption\"\n    MISSING_MESSAGE_ID = \"missing_message_id\"\n    UNRESOLVED_RESERVATION = \"unresolved_reservation\"\n    PROVIDER_TERMINAL = \"provider_terminal\"\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59ProviderDelivered:\n    message_id: str\n\n    def __post_init__(self) -> None:\n        if not self.message_id.isdecimal() or len(self.message_id) > 19:\n            raise Topic59LedgerError(\"provider receipt\")\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59ProviderKnownFailure:\n    reason: Topic59ProviderFailure\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59ProviderUnknown:\n    reason: Topic59ProviderFailure\n\n\nTopic59ProviderOutcome = Topic59ProviderDelivered | Topic59ProviderKnownFailure | Topic59ProviderUnknown\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59LedgerAction:\n    kind: Literal[\"send\", \"edit\", \"noop\", \"incident\"]\n    projection: Topic59Projection\n    operation: Literal[\"send\", \"edit\"] | None = None\n    message_id: str | None = None\n    reason: Topic59IncidentReason | None = None\n"}],"isError":false,"timestamp":1788247030006}}
{"type":"message","id":"7dd30a45","parentId":"900cef4d","timestamp":"2026-09-01T07:17:32.505Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning negative matrix test isolation**\n\n**Configuring test environment and running affected tests**","startedAt":1788247032996,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967bf8e99c87d087b01ed62fd9c886\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnwMK9u0VvuqGImKMBTmBdUvPZBswHSv-HC-0pyuCjsCR0ATGVQfbwCNMXX0LdidZSDDax_g3pyOeRIwP28k50mlf3Z1ASmE5SS0d_A602Hl4UxHBviEJRMrpcPctUghsALU7bTyR1F-eICkkYOWB0KcUB_ayosURu96JD13FyoMl1H63IPsS2ZW1zryd9cMrjfwDkbM_i-usxdp0SiS0SeyX8s6b_FFiW9edZO-d84T_RgbLlBI_9ZTVferlL9RNP1FVhCf_8yFiM7y_PRcupYJvUD0egSZOKoSC9HnqB4o-UxMxMC4f3aujiJda9VSiSLozoF9-GBrdgRY1q5J0ivE7AuXRF21qvEdkUfrNLKTYzQ5GdtQuqSxa8hgLXqvobkj-OfZmAJ1zqOvQw-dQwscIAp7TDjUmIT9DXfFr_8j-dEZ0McN4ShIgS_Y-iT5m5dE_-YYgjd58Dvy0Xb1zTiCRHMEXk5F0Mmic7NzbnNXeOcH9g6lVB8VO6WwRh4VBVBg9siEzjXiFbwHriHoM07SULS63_8VDz4rySPWhorCC4FruSoADCXj7ZG0KrY4yMazSSIpklofRVuMMrynzQzG7FYGL5FCpRqu17-khEpY7Xufd4jFZ_7LQvQK_CYby8r7UBGtAs9TGB54A1lmGNpSVfliQZUhNHPFypxjgyjB6C_gaNZ78DXZJ5Ocruuk7I2AH4u6WBp5YUR75dHYjE_nGD2fQzvQUF1QIKKdlbV9WCdrzwco_jokrHkqw8dXx6YtIX3ljgkzq_BftwesXlsS2YwIU4tor67clnOo9J7PutGLHa2Q-Y3_FkL9xFWzhLGRkSqbknLxSqUFRmJOCbIbmRgUcMQqgJywc3zNhijEdqed1FdeSI9MBc8wjqJSlW13bkh1RWTDfb9v7bRnNyaKcTerjQ06Vdv-14GkHwc5p-pql0h_EoCMSrRRjh751hFbW-erutLVz1i3c-l26-I3KRafSzSd26_pJUnj8ICFBXjhBQ6wuENex4ZUajVA7GqpRWa7mXuWdXZfExtCPhy0eUixe1v7rsQ6NmMwp-yrFCVCuHCcNeFwaKsTwwDYv4tm99HVVxKFa1jIFM3CJC6kIST_49g2gd1Sd3o7p6aO30bUJJP6OznoVx8HlmXvrXYVdrfSiSCVX1a2lKY7xYLtHYymBRgIvdo31-GnCuX7Sh5dJeIjj-OLnAnK2KUqsUHeUJv9izQmawW6Iv0Mwx-Tt12FUQ6i3av5pcv6JouTsHsq8-ytgLZ9QiA-3WY5n2h6TET5pHQGeMgLhgtXNv5bBOVwosmKG5JZ7buigzAuMv9KtzfNBxCmk2CxSuuFEOPhynSEn71dbPFTF0CQeoZNJN8skXSSDW-Wnl6H0yo42Lzyxs_E2mxhLZ48PgzEf4xRmvroPNI074DsT-cyeXw7o2CjHDpVaaisYXdMTOo9k1pxOmP9v5oxgj3lcISOX7nRmB3DdnKtGv9pITp2v1q1qESmfRD0sFzyB62iMZta8rBZoOkkDEgnSQtdFmkN4ifPSTCyeI5suZsixd4AQWjsYFVNq3mA7Z4LFKMIdfR-v7uHSgrj0MryFpnhXk6viEPZgkM00_M95qKpUttkUmdb2O8-p5kcHNttoZmkBKoV312ZXY8zVyUSQKrH0q6phem9C9PkzHmuYOHvbfuYlT4qxUDEqszu5Tcb-EicB8Ld-pGU9vNhrc44q1yycA3vN8DVnZTfMvuw14WZ3XnWhjFI2unmZwL9iFPBjoMHhKaIzj27morr6_0KwjTtcgVEm4YNzJypPtLxA72-ABhoQwe1yUfToW-8nuF4avOU4JM4yyK4WUhVvgAXOD7DI1wTrvqchguZ6PLJSKrEuhxi9_a4sl2li6C3fPDJezcsosULJ05-Kuxw1wkSggn0ZZGFaHswNMWe75IyZIpwXfh-ZuPsH9MNVqExmIz7RVAKBkKagh9MgcbgzqS_vYzVBM05amg5BbsHFxvMPjVeSS3yMV6IoqdkQfPxQmYmNEgZEjxbI9YODYfmmxBI-3GYW-p4Zjc1Iz6HP922SoUyBf9x4fUni3caGZdwkykRmUv7NOuBkWZAN8Rz98cN89qni4-SlXDdb0lSnwNdIZpyccEKgwEuKmHUbrRUL5WPbpicEmSZ1mXTZnZaFm4_kr1MnGnmJR52ZpEji4ZFsIDyw9FaSdd_Y_uek7sGFZyQoShmroKFKaKuNm7mtet08FdLdNHX0Z1QoELEX39zkNjD0cTgUwWTW-VxqfkbW6VOuzehDcysUCLGYsWU8i4YpwlpwYWXTtuwDjqCZL9WW0MoraSOv_335HFHLAxp8KP-FD-eeE7QLn85QhY2jB-FAtYYl_XBX85DfQM5EAGX4taR59nnzTHQIy0dz2iO_FHYfz4CS3mMHd32Se6ukZFULitRppslBYEZXnX_ZU-HG9b2LYNEYeLHQemSB340xkdh3BNsDir3HYUajcrWCE-LVhMyDWFNCyAuGf14FCWJ1-kAogcIFiKE8fYSkgG8u0weX58krcaxLIbVydopL2CDY-WFIC6OoIS0M7TdRU78g-UhO8CYJI6pg1lnR-6sayUZ382CJeexnVQ9BIf14DFKOGZMP8jqc9maIAiTuMTWZFwLxiRTsiu3ESv3VVS7nNMkf10qofz-mxmtzdy5hW9Hip3gzwFBFuNINZZiT4Y7B_XuoSA8W-iI4kZO8vG-1zQfIR2G7w2PPmWckDqPGxngPOYlkYdhEN9HU2bPuaGRsIhtRYcMU8tQUnEfGIKHWgbuje8H9DvDnPNoHWJEYzD4twqs-_4BhtHOAYIAJCDjHiv10x0JKVa83MQYHBPJEtHUWORXfdfeY0A1CflXuq6GE9eJHfrsa-QFBGDmtjoSrfh7KvxGHt-ooqBVUxhusHS88wE2XeGE4K6nlZO2_7syzYpN4g84XkEu135mCba7O1LKnu-zdiYJkweH2vR3TxOecOoRO_M4sXpLYbvU4aQIqRFtP1Uhi19kkdh5fDkxntLkCuStiO17TGWTby6Kuxj-C7q92AIGAkEQJvY4OlYtu_7L698kRrROXTQgYZ2AA68mGTn0MtPhqNVIp4-BcJMSLDpT03jjmI0XqxRL9yHw_tA5JkhKk4RS1ONP5M_3yyoTyBnFLW3g5S12XJHKw_wGmaatMmtTQ-h7qo_p2iKYH9tb-4G330BLrRW374MazxAXKRF3dmYbVi-czGXI-TgScqTMWCWugbSpzSmkIPU27-rMzHCOCNmgdhaOopZ8zscr3kgGj1Djmg==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning negative matrix test isolation**\"},{\"type\":\"summary_text\",\"text\":\"**Configuring test environment and running affected tests**\"}]}","endedAt":1788247052390},{"type":"toolCall","id":"call_24cIaxPDgw6LS8OLeGMjmKEo|fc_046f5546d6e20d23016a967c0c481087d08b74823e7fba423b","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py","timeout":120}},{"type":"toolCall","id":"call_67nInmsUvbQzbKH7tyIYI0gN|fc_046f5546d6e20d23016a967c0c482087d08b16b5f1189ac646","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_contract.py","severity":"all"}},{"type":"toolCall","id":"call_Tu6h4Le2GTyV4v78U3L5GG5y|fc_046f5546d6e20d23016a967c0c482887d0b78b16e65699be0d","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_io.py","severity":"all"}},{"type":"toolCall","id":"call_Aw5g1xf8CpA9fcSG5F00ffz3|fc_046f5546d6e20d23016a967c0c483087d09b27f401a7f7489a","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","severity":"all"}},{"type":"toolCall","id":"call_1hl3AWzxJX2QRE1FJLMOfVst|fc_046f5546d6e20d23016a967c0c483887d09dd7ca9c8ccd7c0f","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_operations.py","severity":"all"}},{"type":"toolCall","id":"call_gTz32BCBg3Gf2jkNvLsqnBoG|fc_046f5546d6e20d23016a967c0c484087d086c7a9eeb2077713","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatch_result.py","severity":"all"}},{"type":"toolCall","id":"call_rUmUgu2899r1MfeZoDLmXFzW|fc_046f5546d6e20d23016a967c0c484487d0b0448817dbb940b5","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py","severity":"all"}},{"type":"toolCall","id":"call_SogBoew9tdfcFT4qhFfqaFaP|fc_046f5546d6e20d23016a967c0c484c87d0a60c2d366eddc0c8","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_operations_publication_contract.py","severity":"all"}},{"type":"toolCall","id":"call_8SrKhpZOfB0S1KMiJmmgTPru|fc_046f5546d6e20d23016a967c0c485087d08142e560fc0bb8c0","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","severity":"all"}},{"type":"toolCall","id":"call_oALNA4ZuXp4w1URy3PBd7dS2|fc_046f5546d6e20d23016a967c0c485887d0834abae9e2e80b4b","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","severity":"all"}},{"type":"toolCall","id":"call_pdUnb7MWCdyl7zzYaAtxk7Qj|fc_046f5546d6e20d23016a967c0c486087d08bd45f4806e09bf9","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/physique_inline_card.py","severity":"all"}},{"type":"toolCall","id":"call_v7cd6sYDmqRFcNDAeCrQy2J5|fc_046f5546d6e20d23016a967c0c486487d084e5cdc9b50acd61","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","severity":"all"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":5673,"output":1078,"cacheRead":79360,"cacheWrite":0,"reasoning":305,"totalTokens":86111,"cost":{"input":0.028365,"output":0.03234,"cacheRead":0.03968,"cacheWrite":0,"total":0.100385}},"stopReason":"toolUse","timestamp":1788247030011,"responseId":"resp_046f5546d6e20d23016a967bf65a3c87d08db7898ce72114e5","rawStopReason":"completed"}}
{"type":"message","id":"9d0093e5","parentId":"7dd30a45","timestamp":"2026-09-01T07:17:39.576Z","message":{"role":"toolResult","toolCallId":"call_24cIaxPDgw6LS8OLeGMjmKEo|fc_046f5546d6e20d23016a967c0c481087d08b74823e7fba423b","toolName":"bash","content":[{"type":"text","text":"........................................................................ [ 38%]\n........................................................................ [ 77%]\n...........................................                              [100%]\n187 passed in 6.60s\n"}],"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"42d22997","parentId":"9d0093e5","timestamp":"2026-09-01T07:17:39.576Z","message":{"role":"toolResult","toolCallId":"call_67nInmsUvbQzbKH7tyIYI0gN|fc_046f5546d6e20d23016a967c0c482087d08b16b5f1189ac646","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_contract.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"e7f903d8","parentId":"42d22997","timestamp":"2026-09-01T07:17:39.576Z","message":{"role":"toolResult","toolCallId":"call_Tu6h4Le2GTyV4v78U3L5GG5y|fc_046f5546d6e20d23016a967c0c482887d0b78b16e65699be0d","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_io.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"877be47d","parentId":"e7f903d8","timestamp":"2026-09-01T07:17:39.576Z","message":{"role":"toolResult","toolCallId":"call_Aw5g1xf8CpA9fcSG5F00ffz3|fc_046f5546d6e20d23016a967c0c483087d09b27f401a7f7489a","toolName":"lsp_diagnostics","content":[{"type":"text","text":"error[basedpyright] (reportMissingImports) at 26:5: 가져오기 \".nutrition_weekly_maintenance_io\"을(를) 확인할 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 27:23: \"_atomic_write_at\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 28:23: \"_fsync_directory\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 29:17: \"_open_file\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 30:28: \"_open_owned_directory\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 31:22: \"_parse_document\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 32:23: \"_read_credential\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 33:23: \"_read_regular_at\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 68:12: \"authority\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 76:12: \"directory_fd\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 78:15: \"hold\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 78:15: \"kst_day\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 84:41: 인수 형식을 알 수 없습니다.\n  인수가 \"_evaluate_locked\" 함수의 \"directory_fd\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 84:55: 인수 형식을 알 수 없습니다.\n  인수가 \"_evaluate_locked\" 함수의 \"authority\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 86:21: 인수 형식을 알 수 없습니다.\n  인수가 \"close\" 함수의 \"fd\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownVariableType) at 98:12: \"lock_fd\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 100:28: 인수 형식을 알 수 없습니다.\n  인수가 \"flock\" 함수의 \"fd\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 103:28: 인수 형식을 알 수 없습니다.\n  인수가 \"flock\" 함수의 \"fd\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 104:25: 인수 형식을 알 수 없습니다.\n  인수가 \"close\" 함수의 \"fd\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownVariableType) at 168:8: \"raw\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 171:11: 반환 유형을 알 수 없습니다."}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","severity":"all","mode":"file","diagnostics":[{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":25,"character":5},"end":{"line":25,"character":37}},"message":"가져오기 \".nutrition_weekly_maintenance_io\"을(를) 확인할 수 없습니다.","severity":1,"code":"reportMissingImports","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":26,"character":23},"end":{"line":26,"character":39}},"message":"\"_atomic_write_at\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":27,"character":23},"end":{"line":27,"character":39}},"message":"\"_fsync_directory\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":28,"character":17},"end":{"line":28,"character":27}},"message":"\"_open_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":29,"character":28},"end":{"line":29,"character":49}},"message":"\"_open_owned_directory\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":30,"character":22},"end":{"line":30,"character":37}},"message":"\"_parse_document\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":31,"character":23},"end":{"line":31,"character":39}},"message":"\"_read_credential\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":32,"character":23},"end":{"line":32,"character":39}},"message":"\"_read_regular_at\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":67,"character":12},"end":{"line":67,"character":21}},"message":"\"authority\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":75,"character":12},"end":{"line":75,"character":24}},"message":"\"directory_fd\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":77,"character":15},"end":{"line":77,"character":29}},"message":"\"hold\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":77,"character":15},"end":{"line":77,"character":37}},"message":"\"kst_day\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":83,"character":41},"end":{"line":83,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_evaluate_locked\" 함수의 \"directory_fd\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":83,"character":55},"end":{"line":83,"character":64}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_evaluate_locked\" 함수의 \"authority\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":85,"character":21},"end":{"line":85,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"close\" 함수의 \"fd\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":97,"character":12},"end":{"line":97,"character":19}},"message":"\"lock_fd\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":99,"character":28},"end":{"line":99,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"flock\" 함수의 \"fd\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":102,"character":28},"end":{"line":102,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"flock\" 함수의 \"fd\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":103,"character":25},"end":{"line":103,"character":32}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"close\" 함수의 \"fd\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":167,"character":8},"end":{"line":167,"character":11}},"message":"\"raw\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","diagnostic":{"range":{"start":{"line":170,"character":11},"end":{"line":170,"character":38}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}}],"totalDiagnostics":21,"truncated":false},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"0f9eac9b","parentId":"877be47d","timestamp":"2026-09-01T07:17:39.576Z","message":{"role":"toolResult","toolCallId":"call_1hl3AWzxJX2QRE1FJLMOfVst|fc_046f5546d6e20d23016a967c0c483887d09dd7ca9c8ccd7c0f","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_operations.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"dd1186e8","parentId":"0f9eac9b","timestamp":"2026-09-01T07:17:39.576Z","message":{"role":"toolResult","toolCallId":"call_gTz32BCBg3Gf2jkNvLsqnBoG|fc_046f5546d6e20d23016a967c0c484087d086c7a9eeb2077713","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatch_result.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"5afc61f2","parentId":"dd1186e8","timestamp":"2026-09-01T07:17:39.576Z","message":{"role":"toolResult","toolCallId":"call_rUmUgu2899r1MfeZoDLmXFzW|fc_046f5546d6e20d23016a967c0c484487d0b0448817dbb940b5","toolName":"lsp_diagnostics","content":[{"type":"text","text":"error[basedpyright] (reportMissingImports) at 25:5: 가져오기 \".nutrition_weekly_dispatch_result\"을(를) 확인할 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 25:46: \"WeeklyOperationsDispatchResult\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 266:10: 반환 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 285:11: 반환 유형을 알 수 없습니다."}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py","severity":"all","mode":"file","diagnostics":[{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py","diagnostic":{"range":{"start":{"line":24,"character":5},"end":{"line":24,"character":38}},"message":"가져오기 \".nutrition_weekly_dispatch_result\"을(를) 확인할 수 없습니다.","severity":1,"code":"reportMissingImports","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py","diagnostic":{"range":{"start":{"line":24,"character":46},"end":{"line":24,"character":76}},"message":"\"WeeklyOperationsDispatchResult\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py","diagnostic":{"range":{"start":{"line":265,"character":10},"end":{"line":265,"character":41}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py","diagnostic":{"range":{"start":{"line":284,"character":11},"end":{"line":284,"character":79}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}}],"totalDiagnostics":4,"truncated":false},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"5d295433","parentId":"5afc61f2","timestamp":"2026-09-01T07:17:39.576Z","message":{"role":"toolResult","toolCallId":"call_SogBoew9tdfcFT4qhFfqaFaP|fc_046f5546d6e20d23016a967c0c484c87d0a60c2d366eddc0c8","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_operations_publication_contract.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"f3b2f0b5","parentId":"5d295433","timestamp":"2026-09-01T07:17:39.576Z","message":{"role":"toolResult","toolCallId":"call_8SrKhpZOfB0S1KMiJmmgTPru|fc_046f5546d6e20d23016a967c0c485087d08142e560fc0bb8c0","toolName":"lsp_diagnostics","content":[{"type":"text","text":"error[basedpyright] (reportMissingImports) at 23:9: 가져오기 \"gateway.platforms.nutrition_weekly_dispatch_result\"을(를) 확인할 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 24:8: \"WeeklyOperationsDispatchResult\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 156:14: 반환 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 165:12: \"dispatch_weekly_operations_tick\"의 형식을 부분적으로 알 수 없습니다.\n  ‘dispatch_weekly_operations_tick’의 유형이 ‘(host: WeeklyOperationsHost, coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 168:15: 반환 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 172:14: 반환 유형을 알 수 없습니다.\nerror[basedpyright] (reportMissingImports) at 177:13: 가져오기 \"gateway.platforms.nutrition_weekly_dispatch_result\"을(를) 확인할 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 178:12: \"WeeklyOperationsDispatchResult\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 186:19: 반환 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 189:8: \"dispatch\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 189:25: \"_dispatch_weekly_operations_tick\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_dispatch_weekly_operations_tick’의 유형이 ‘(coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 192:8: \"failures\"의 형식을 부분적으로 알 수 없습니다.\n  ‘failures’의 유형이 ‘list[Unknown]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 192:24: \"failures\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 192:24: 인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 193:8: \"extend\"의 형식을 부분적으로 알 수 없습니다.\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 200:15: 반환 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 201:18: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.\nerror[basedpyright] (reportUnknownMemberType) at 201:29: \"topic59_dispositions\" 유형을 알 수 없습니다."}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","severity":"all","mode":"file","diagnostics":[{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":22,"character":9},"end":{"line":22,"character":59}},"message":"가져오기 \"gateway.platforms.nutrition_weekly_dispatch_result\"을(를) 확인할 수 없습니다.","severity":1,"code":"reportMissingImports","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":23,"character":8},"end":{"line":23,"character":38}},"message":"\"WeeklyOperationsDispatchResult\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":155,"character":14},"end":{"line":155,"character":46}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":164,"character":12},"end":{"line":164,"character":43}},"message":"\"dispatch_weekly_operations_tick\"의 형식을 부분적으로 알 수 없습니다.\n  ‘dispatch_weekly_operations_tick’의 유형이 ‘(host: WeeklyOperationsHost, coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":167,"character":15},"end":{"line":169,"character":9}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":171,"character":14},"end":{"line":171,"character":45}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":176,"character":13},"end":{"line":176,"character":63}},"message":"가져오기 \"gateway.platforms.nutrition_weekly_dispatch_result\"을(를) 확인할 수 없습니다.","severity":1,"code":"reportMissingImports","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":177,"character":12},"end":{"line":177,"character":42}},"message":"\"WeeklyOperationsDispatchResult\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":185,"character":19},"end":{"line":187,"character":13}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":188,"character":8},"end":{"line":188,"character":16}},"message":"\"dispatch\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":188,"character":25},"end":{"line":188,"character":62}},"message":"\"_dispatch_weekly_operations_tick\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_dispatch_weekly_operations_tick’의 유형이 ‘(coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":191,"character":8},"end":{"line":191,"character":16}},"message":"\"failures\"의 형식을 부분적으로 알 수 없습니다.\n  ‘failures’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":191,"character":24},"end":{"line":191,"character":41}},"message":"\"failures\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":191,"character":24},"end":{"line":191,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"iterable\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":192,"character":8},"end":{"line":192,"character":23}},"message":"\"extend\"의 형식을 부분적으로 알 수 없습니다.\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":199,"character":15},"end":{"line":201,"character":9}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":200,"character":18},"end":{"line":200,"character":26}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","diagnostic":{"range":{"start":{"line":200,"character":29},"end":{"line":200,"character":58}},"message":"\"topic59_dispositions\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}}],"totalDiagnostics":18,"truncated":false},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"c6e75415","parentId":"f3b2f0b5","timestamp":"2026-09-01T07:17:39.576Z","message":{"role":"toolResult","toolCallId":"call_oALNA4ZuXp4w1URy3PBd7dS2|fc_046f5546d6e20d23016a967c0c485887d0834abae9e2e80b4b","toolName":"lsp_diagnostics","content":[{"type":"text","text":"Found 3603 diagnostics (showing first 200):\nerror[basedpyright] (reportUnusedImport) at 20:7: 가져오기 \"secrets\"에 액세스하지 않았습니다.\nerror[basedpyright] (reportDeprecated) at 27:34: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 27:40: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 27:46: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 27:56: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"set\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 27:76: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"collections.abc.Mapping\"을(를) 사용하세요.\nerror[basedpyright] (reportUnusedImport) at 58:8: 가져오기 \"RoomBootstrapSession\"에 액세스하지 않았습니다.\nerror[basedpyright] (reportUnusedImport) at 59:8: 가져오기 \"RoomBootstrapStore\"에 액세스하지 않았습니다.\nerror[basedpyright] (reportConstantRedefinition) at 92:4: ‘TELEGRAM_AVAILABLE’은(는) 대문자이므로 상수이고 다시 정의할 수 없습니다.\nerror[basedpyright] (reportExplicitAny) at 120:8: Type `Any` is not allowed\nerror[basedpyright] (reportUnannotatedClassAttribute) at 120:8: Type annotation for attribute `DEFAULT_TYPE` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportExplicitAny) at 120:23: Type `Any` is not allowed\nerror[basedpyright] (reportPrivateLocalImportUsage) at 170:4: \"PhysiqueCheckinConfig\"은(는) \"gateway.platforms.physique_checkin\" 모듈에서 내보내지지 않습니다.\n  대신 \"gateway.platforms.physique_checkin_config\"에서 가져오기\nerror[basedpyright] (reportPrivateLocalImportUsage) at 171:4: \"WizardPrompt\"은(는) \"gateway.platforms.physique_checkin\" 모듈에서 내보내지지 않습니다.\n  대신 \"gateway.platforms.physique_checkin_prompts\"에서 가져오기\nerror[basedpyright] (reportUnknownParameterType) at 236:8: 매개 변수 \"reply_markup\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.\nerror[basedpyright] (reportInvalidTypeForm) at 236:22: 형식 식에는 변수를 사용할 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 312:8: 호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportImplicitStringConcatenation) at 346:4: 암시적 문자열 연결이 허용되지 않습니다.\nerror[basedpyright] (reportAttributeAccessIssue) at 397:12: \"object\" 클래스의 \"_diagnostic_production_bot_identity\" 특성에 할당할 수 없음\n  특성 \"_diagnostic_production_bot_identity\" 알 수 없음\nerror[basedpyright] (reportAttributeAccessIssue) at 398:12: \"object\" 클래스의 \"_diagnostic_production_bot_digest\" 특성에 할당할 수 없음\n  특성 \"_diagnostic_production_bot_digest\" 알 수 없음\nerror[basedpyright] (reportAttributeAccessIssue) at 399:12: \"object\" 클래스의 \"_diagnostic_production_adapter_token\" 특성에 할당할 수 없음\n  특성 \"_diagnostic_production_adapter_token\" 알 수 없음\nerror[basedpyright] (reportUnusedVariable) at 429:8: 변수 \"cloud_attempted\"에 액세스하지 않았습니다.\nerror[basedpyright] (reportConstantRedefinition) at 433:12: ‘_LPO’은(는) 대문자이므로 상수이고 다시 정의할 수 없습니다.\nerror[basedpyright] (reportConstantRedefinition) at 461:4: ‘TELEGRAM_AVAILABLE’은(는) 대문자이므로 상수이고 다시 정의할 수 없습니다.\nerror[basedpyright] (reportUnannotatedClassAttribute) at 647:4: Type annotation for attribute `MAX_MESSAGE_LENGTH` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 648:4: Type annotation for attribute `supports_code_blocks` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 651:4: Type annotation for attribute `RICH_MESSAGE_MAX_CHARS` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 654:4: Type annotation for attribute `RICH_MESSAGE_MAX_BYTES` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 657:4: Type annotation for attribute `_SPLIT_THRESHOLD` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 658:4: Type annotation for attribute `MEDIA_GROUP_WAIT_SECONDS` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 659:4: Type annotation for attribute `_GENERAL_TOPIC_THREAD_ID` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 676:4: Type annotation for attribute `_TEXT_BATCH_FAST_LEN` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 677:4: Type annotation for attribute `_TEXT_BATCH_FAST_DELAY_S` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 678:4: Type annotation for attribute `_TEXT_BATCH_SHORT_LEN` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 679:4: Type annotation for attribute `_TEXT_BATCH_SHORT_DELAY_S` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportDeprecated) at 686:19: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 687:19: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportImplicitOverride) at 710:8: “message_len_fn“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.\nerror[basedpyright] (reportDeprecated) at 723:19: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportInvalidTypeForm) at 723:28: 형식 식에는 변수를 사용할 수 없습니다.\nerror[basedpyright] (reportDeprecated) at 724:19: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportInvalidTypeForm) at 724:28: 형식 식에는 변수를 사용할 수 없습니다.\nerror[basedpyright] (reportUnannotatedClassAttribute) at 727:13: Type annotation for attribute `_diagnostic_production_adapter_token` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 728:13: Type annotation for attribute `_diagnostic_production_bot_identity` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 729:13: Type annotation for attribute `_diagnostic_production_bot_digest` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 734:13: Type annotation for attribute `_physique_checkin_config` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportDeprecated) at 735:32: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 736:38: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportUnnecessaryIsInstance) at 737:63: 불필요한 isinstance 호출입니다. \"Dict[str, Any]\"은(는) 항상 \"dict[Unknown, Unknown]\"의 인스턴스입니다.\nerror[basedpyright] (reportUnknownMemberType) at 738:46: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnannotatedClassAttribute) at 742:13: Type annotation for attribute `_nutrition_coaching_config` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 743:13: Type annotation for attribute `_adaptive_nutrition_config` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportDeprecated) at 746:40: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportUnannotatedClassAttribute) at 755:13: Type annotation for attribute `_adaptive_operator_service` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 758:13: Type annotation for attribute `_nutrition_coaching` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 759:13: Type annotation for attribute `_room_bootstrap_transport` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 760:13: Type annotation for attribute `_nutrition_onboarding_runtime` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 761:13: Type annotation for attribute `_nutrition_onboarding_preview` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportDeprecated) at 762:40: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 763:42: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportUnnecessaryIsInstance) at 764:66: 불필요한 isinstance 호출입니다. \"Dict[str, Any]\"은(는) 항상 \"dict[Unknown, Unknown]\"의 인스턴스입니다.\nerror[basedpyright] (reportUnknownMemberType) at 765:47: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportDeprecated) at 769:39: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportUnknownMemberType) at 773:8: \"_mention_patterns\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_mention_patterns’의 유형이 ‘List[Pattern[Unknown]]’입니다.\nerror[basedpyright] (reportUnannotatedClassAttribute) at 773:13: Type annotation for attribute `_mention_patterns` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnknownMemberType) at 773:33: \"_compile_mention_patterns\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_compile_mention_patterns’의 유형이 ‘() -> List[Pattern[Unknown]]’입니다.\nerror[basedpyright] (reportUnannotatedClassAttribute) at 790:13: Type annotation for attribute `_media_batch_delay_seconds` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportDeprecated) at 791:37: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 792:41: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 792:51: ‘Task’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportDeprecated) at 793:34: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 794:33: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 794:43: ‘Task’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnannotatedClassAttribute) at 802:13: Type annotation for attribute `_text_batch_delay_seconds` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 808:13: Type annotation for attribute `_text_batch_split_delay_seconds` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportDeprecated) at 814:36: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 815:40: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 815:50: ‘Task’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportDeprecated) at 816:34: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 816:43: ‘Task’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnannotatedClassAttribute) at 819:13: Type annotation for attribute `_polling_error_callback_ref` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportDeprecated) at 828:25: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportUnannotatedClassAttribute) at 832:13: Type annotation for attribute `_forum_lock` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportAny) at 842:12: Argument type is Any\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportAny) at 845:12: Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportAny) at 848:12: Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportDeprecated) at 851:32: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 851:37: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 851:47: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 853:33: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"set\"을(를) 사용하세요.\nerror[basedpyright] (reportAny) at 854:16: Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportDeprecated) at 865:34: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 865:44: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportDeprecated) at 867:30: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 870:35: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 873:29: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 886:34: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 886:39: ‘tuple’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportDeprecated) at 889:24: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 889:33: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 889:43: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 890:9: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 890:19: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 907:17: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 908:19: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 909:19: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 910:19: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 956:43: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 956:52: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 956:62: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 956:72: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportAny) at 960:19: Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportDeprecated) at 1064:58: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1064:67: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1064:77: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1064:87: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportAny) at 1068:19: Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportDeprecated) at 1071:53: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1071:62: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1071:72: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1071:82: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportAny) at 1075:19: Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportDeprecated) at 1088:19: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1089:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1089:27: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1089:37: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1114:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1115:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1115:27: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1115:37: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1116:23: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1117:9: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportUnusedParameter) at 1129:8: \"chat_id\"에 액세스하지 않았습니다.\nerror[basedpyright] (reportDeprecated) at 1130:19: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1131:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1131:27: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1131:37: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1132:29: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1133:23: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1134:9: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1134:19: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1172:52: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1172:70: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1178:54: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1178:72: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1209:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1209:27: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1209:37: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1210:29: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportAny) at 1249:14: Return type is Any\nerror[basedpyright] (reportAny) at 1251:8: Type of parameter \"send_fn\" is Any\nerror[basedpyright] (reportExplicitAny) at 1251:17: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1252:21: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1252:31: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1253:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1253:27: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1253:37: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1254:29: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1256:21: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1256:30: Type `Any` is not allowed\nerror[basedpyright] (reportExplicitAny) at 1257:9: Type `Any` is not allowed\nerror[basedpyright] (reportAny) at 1260:19: Return type is Any\nerror[basedpyright] (reportImplicitStringConcatenation) at 1269:16: 암시적 문자열 연결이 허용되지 않습니다.\nerror[basedpyright] (reportAny) at 1281:19: Return type is Any\nerror[basedpyright] (reportUnknownVariableType) at 1285:8: \"configured\"의 형식을 부분적으로 알 수 없습니다.\n  ‘configured’의 유형이 ‘Any | list[Unknown]’입니다.\nerror[basedpyright] (reportAny) at 1336:29: Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportAny) at 1338:29: Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportAny) at 1371:29: Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportAny) at 1373:29: Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportAny) at 1387:20: Argument type is Any\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportDeprecated) at 1389:38: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1389:48: Type `Any` is not allowed\nerror[basedpyright] (reportUnknownMemberType) at 1428:51: \"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 1428:51: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.\nerror[basedpyright] (reportUnannotatedClassAttribute) at 1430:4: Type annotation for attribute `_RICH_DETAILS_RE` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 1431:4: Type annotation for attribute `_RICH_MATH_IN_DETAILS_RE` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportImplicitStringConcatenation) at 1432:8: 암시적 문자열 연결이 허용되지 않습니다.\nerror[basedpyright] (reportAny) at 1451:12: Type of \"details_block\" is Any\nerror[basedpyright] (reportAny) at 1452:52: Argument type is Any\n  인수가 \"search\" 함수의 \"string\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportDeprecated) at 1499:38: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1499:47: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1499:57: Type `Any` is not allowed\nerror[basedpyright] (reportImplicitOverride) at 1506:8: “prefers_fresh_final_streaming“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.\nerror[basedpyright] (reportDeprecated) at 1507:38: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1507:47: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1507:57: Type `Any` is not allowed\nerror[basedpyright] (reportImplicitOverride) at 1521:8: “streaming_overflow_limit“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.\nerror[basedpyright] (reportDeprecated) at 1521:42: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1542:9: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1542:19: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1548:17: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1548:27: Type `Any` is not allowed\nerror[basedpyright] (reportUnknownParameterType) at 1590:8: 반환 형식 \"tuple[Unknown, ...] | None\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportDeprecated) at 1593:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1594:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1594:27: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\nerror[basedpyright] (reportExplicitAny) at 1594:37: Type `Any` is not allowed\nerror[basedpyright] (reportDeprecated) at 1595:19: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 1596:9: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 1596:18: ‘tuple’ 제네릭 클래스에 대한 형식 인수가 필요합니다."}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","severity":"all","mode":"file","diagnostics":[{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":19,"character":7},"end":{"line":19,"character":14}},"message":"가져오기 \"secrets\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedImport","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedImport"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedImport"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":26,"character":34},"end":{"line":26,"character":38}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":26,"character":40},"end":{"line":26,"character":44}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":26,"character":46},"end":{"line":26,"character":54}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":26,"character":56},"end":{"line":26,"character":59}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"set\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":26,"character":76},"end":{"line":26,"character":83}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"collections.abc.Mapping\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":57,"character":8},"end":{"line":57,"character":28}},"message":"가져오기 \"RoomBootstrapSession\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedImport","source":"basedpyright","data":{"actions":[{"action":"basedpyright.unusedImport"}],"category":0,"rule":"reportUnusedImport"},"tags":[1],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedImport"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":58,"character":8},"end":{"line":58,"character":26}},"message":"가져오기 \"RoomBootstrapStore\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedImport","source":"basedpyright","data":{"actions":[{"action":"basedpyright.unusedImport"}],"category":0,"rule":"reportUnusedImport"},"tags":[1],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedImport"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":91,"character":4},"end":{"line":91,"character":22}},"message":"‘TELEGRAM_AVAILABLE’은(는) 대문자이므로 상수이고 다시 정의할 수 없습니다.","severity":1,"code":"reportConstantRedefinition","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportConstantRedefinition"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":119,"character":8},"end":{"line":119,"character":20}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":119,"character":8},"end":{"line":119,"character":20}},"message":"Type annotation for attribute `DEFAULT_TYPE` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":119,"character":23},"end":{"line":119,"character":26}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":169,"character":4},"end":{"line":169,"character":25}},"message":"\"PhysiqueCheckinConfig\"은(는) \"gateway.platforms.physique_checkin\" 모듈에서 내보내지지 않습니다.\n  대신 \"gateway.platforms.physique_checkin_config\"에서 가져오기","severity":1,"code":"reportPrivateLocalImportUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateLocalImportUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":170,"character":4},"end":{"line":170,"character":16}},"message":"\"WizardPrompt\"은(는) \"gateway.platforms.physique_checkin\" 모듈에서 내보내지지 않습니다.\n  대신 \"gateway.platforms.physique_checkin_prompts\"에서 가져오기","severity":1,"code":"reportPrivateLocalImportUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateLocalImportUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":235,"character":8},"end":{"line":235,"character":20}},"message":"매개 변수 \"reply_markup\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":235,"character":22},"end":{"line":235,"character":42}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":311,"character":8},"end":{"line":314,"character":9}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":345,"character":4},"end":{"line":346,"character":38}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":396,"character":12},"end":{"line":396,"character":47}},"message":"\"object\" 클래스의 \"_diagnostic_production_bot_identity\" 특성에 할당할 수 없음\n  특성 \"_diagnostic_production_bot_identity\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":397,"character":12},"end":{"line":397,"character":45}},"message":"\"object\" 클래스의 \"_diagnostic_production_bot_digest\" 특성에 할당할 수 없음\n  특성 \"_diagnostic_production_bot_digest\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":398,"character":12},"end":{"line":398,"character":48}},"message":"\"object\" 클래스의 \"_diagnostic_production_adapter_token\" 특성에 할당할 수 없음\n  특성 \"_diagnostic_production_adapter_token\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":428,"character":8},"end":{"line":428,"character":23}},"message":"변수 \"cloud_attempted\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedVariable","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedVariable"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":432,"character":12},"end":{"line":432,"character":16}},"message":"‘_LPO’은(는) 대문자이므로 상수이고 다시 정의할 수 없습니다.","severity":1,"code":"reportConstantRedefinition","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportConstantRedefinition"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":460,"character":4},"end":{"line":460,"character":22}},"message":"‘TELEGRAM_AVAILABLE’은(는) 대문자이므로 상수이고 다시 정의할 수 없습니다.","severity":1,"code":"reportConstantRedefinition","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportConstantRedefinition"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":646,"character":4},"end":{"line":646,"character":22}},"message":"Type annotation for attribute `MAX_MESSAGE_LENGTH` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":647,"character":4},"end":{"line":647,"character":24}},"message":"Type annotation for attribute `supports_code_blocks` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":650,"character":4},"end":{"line":650,"character":26}},"message":"Type annotation for attribute `RICH_MESSAGE_MAX_CHARS` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":653,"character":4},"end":{"line":653,"character":26}},"message":"Type annotation for attribute `RICH_MESSAGE_MAX_BYTES` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":656,"character":4},"end":{"line":656,"character":20}},"message":"Type annotation for attribute `_SPLIT_THRESHOLD` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":657,"character":4},"end":{"line":657,"character":28}},"message":"Type annotation for attribute `MEDIA_GROUP_WAIT_SECONDS` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":658,"character":4},"end":{"line":658,"character":28}},"message":"Type annotation for attribute `_GENERAL_TOPIC_THREAD_ID` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":675,"character":4},"end":{"line":675,"character":24}},"message":"Type annotation for attribute `_TEXT_BATCH_FAST_LEN` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":676,"character":4},"end":{"line":676,"character":28}},"message":"Type annotation for attribute `_TEXT_BATCH_FAST_DELAY_S` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":677,"character":4},"end":{"line":677,"character":25}},"message":"Type annotation for attribute `_TEXT_BATCH_SHORT_LEN` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":678,"character":4},"end":{"line":678,"character":29}},"message":"Type annotation for attribute `_TEXT_BATCH_SHORT_DELAY_S` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":685,"character":19},"end":{"line":685,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":686,"character":19},"end":{"line":686,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":709,"character":8},"end":{"line":709,"character":22}},"message":"“message_len_fn“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":722,"character":19},"end":{"line":722,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":722,"character":28},"end":{"line":722,"character":39}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":723,"character":19},"end":{"line":723,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":723,"character":28},"end":{"line":723,"character":31}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":726,"character":13},"end":{"line":726,"character":49}},"message":"Type annotation for attribute `_diagnostic_production_adapter_token` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":727,"character":13},"end":{"line":727,"character":48}},"message":"Type annotation for attribute `_diagnostic_production_bot_identity` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":728,"character":13},"end":{"line":728,"character":46}},"message":"Type annotation for attribute `_diagnostic_production_bot_digest` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":733,"character":13},"end":{"line":733,"character":37}},"message":"Type annotation for attribute `_physique_checkin_config` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":734,"character":32},"end":{"line":734,"character":40}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":735,"character":38},"end":{"line":735,"character":46}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":736,"character":63},"end":{"line":736,"character":93}},"message":"불필요한 isinstance 호출입니다. \"Dict[str, Any]\"은(는) 항상 \"dict[Unknown, Unknown]\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":737,"character":46},"end":{"line":737,"character":62}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":741,"character":13},"end":{"line":741,"character":39}},"message":"Type annotation for attribute `_nutrition_coaching_config` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":742,"character":13},"end":{"line":742,"character":39}},"message":"Type annotation for attribute `_adaptive_nutrition_config` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":745,"character":40},"end":{"line":745,"character":48}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":754,"character":13},"end":{"line":754,"character":39}},"message":"Type annotation for attribute `_adaptive_operator_service` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":757,"character":13},"end":{"line":757,"character":32}},"message":"Type annotation for attribute `_nutrition_coaching` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":758,"character":13},"end":{"line":758,"character":38}},"message":"Type annotation for attribute `_room_bootstrap_transport` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":759,"character":13},"end":{"line":759,"character":42}},"message":"Type annotation for attribute `_nutrition_onboarding_runtime` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":760,"character":13},"end":{"line":760,"character":42}},"message":"Type annotation for attribute `_nutrition_onboarding_preview` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":761,"character":40},"end":{"line":761,"character":48}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":762,"character":42},"end":{"line":762,"character":50}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":763,"character":66},"end":{"line":763,"character":96}},"message":"불필요한 isinstance 호출입니다. \"Dict[str, Any]\"은(는) 항상 \"dict[Unknown, Unknown]\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":764,"character":47},"end":{"line":764,"character":64}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":768,"character":39},"end":{"line":768,"character":43}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":772,"character":8},"end":{"line":772,"character":30}},"message":"\"_mention_patterns\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_mention_patterns’의 유형이 ‘List[Pattern[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":772,"character":13},"end":{"line":772,"character":30}},"message":"Type annotation for attribute `_mention_patterns` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":772,"character":33},"end":{"line":772,"character":63}},"message":"\"_compile_mention_patterns\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_compile_mention_patterns’의 유형이 ‘() -> List[Pattern[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":789,"character":13},"end":{"line":789,"character":39}},"message":"Type annotation for attribute `_media_batch_delay_seconds` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":790,"character":37},"end":{"line":790,"character":41}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":791,"character":41},"end":{"line":791,"character":45}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":791,"character":51},"end":{"line":791,"character":63}},"message":"‘Task’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":792,"character":34},"end":{"line":792,"character":38}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":793,"character":33},"end":{"line":793,"character":37}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":793,"character":43},"end":{"line":793,"character":55}},"message":"‘Task’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":801,"character":13},"end":{"line":801,"character":38}},"message":"Type annotation for attribute `_text_batch_delay_seconds` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":807,"character":13},"end":{"line":807,"character":44}},"message":"Type annotation for attribute `_text_batch_split_delay_seconds` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":813,"character":36},"end":{"line":813,"character":40}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":814,"character":40},"end":{"line":814,"character":44}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":814,"character":50},"end":{"line":814,"character":62}},"message":"‘Task’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":815,"character":34},"end":{"line":815,"character":42}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":815,"character":43},"end":{"line":815,"character":55}},"message":"‘Task’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":818,"character":13},"end":{"line":818,"character":40}},"message":"Type annotation for attribute `_polling_error_callback_ref` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":827,"character":25},"end":{"line":827,"character":29}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":831,"character":13},"end":{"line":831,"character":24}},"message":"Type annotation for attribute `_forum_lock` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":841,"character":12},"end":{"line":841,"character":60}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":844,"character":12},"end":{"line":844,"character":60}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":847,"character":12},"end":{"line":847,"character":62}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":850,"character":32},"end":{"line":850,"character":36}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":850,"character":37},"end":{"line":850,"character":41}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":850,"character":47},"end":{"line":850,"character":50}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":852,"character":33},"end":{"line":852,"character":36}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"set\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":853,"character":16},"end":{"line":853,"character":28}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":864,"character":34},"end":{"line":864,"character":38}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":864,"character":44},"end":{"line":864,"character":48}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":866,"character":30},"end":{"line":866,"character":34}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":869,"character":35},"end":{"line":869,"character":39}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":872,"character":29},"end":{"line":872,"character":33}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":885,"character":34},"end":{"line":885,"character":38}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":885,"character":39},"end":{"line":885,"character":44}},"message":"‘tuple’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":888,"character":24},"end":{"line":888,"character":32}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":888,"character":33},"end":{"line":888,"character":37}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":888,"character":43},"end":{"line":888,"character":46}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":889,"character":9},"end":{"line":889,"character":13}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":889,"character":19},"end":{"line":889,"character":22}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":906,"character":17},"end":{"line":906,"character":25}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":907,"character":19},"end":{"line":907,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":908,"character":19},"end":{"line":908,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":909,"character":19},"end":{"line":909,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":955,"character":43},"end":{"line":955,"character":51}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":955,"character":52},"end":{"line":955,"character":56}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":955,"character":62},"end":{"line":955,"character":65}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":955,"character":72},"end":{"line":955,"character":80}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":959,"character":19},"end":{"line":959,"character":28}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1063,"character":58},"end":{"line":1063,"character":66}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1063,"character":67},"end":{"line":1063,"character":71}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1063,"character":77},"end":{"line":1063,"character":80}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1063,"character":87},"end":{"line":1063,"character":95}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1067,"character":19},"end":{"line":1067,"character":27}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1070,"character":53},"end":{"line":1070,"character":61}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1070,"character":62},"end":{"line":1070,"character":66}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1070,"character":72},"end":{"line":1070,"character":75}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1070,"character":82},"end":{"line":1070,"character":90}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1074,"character":19},"end":{"line":1074,"character":27}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1087,"character":19},"end":{"line":1087,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1088,"character":18},"end":{"line":1088,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1088,"character":27},"end":{"line":1088,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1088,"character":37},"end":{"line":1088,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1113,"character":18},"end":{"line":1113,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1114,"character":18},"end":{"line":1114,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1114,"character":27},"end":{"line":1114,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1114,"character":37},"end":{"line":1114,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1115,"character":23},"end":{"line":1115,"character":31}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1116,"character":9},"end":{"line":1116,"character":17}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1128,"character":8},"end":{"line":1128,"character":15}},"message":"\"chat_id\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedParameter","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedParameter"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedParameter"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1129,"character":19},"end":{"line":1129,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1130,"character":18},"end":{"line":1130,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1130,"character":27},"end":{"line":1130,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1130,"character":37},"end":{"line":1130,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1131,"character":29},"end":{"line":1131,"character":37}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1132,"character":23},"end":{"line":1132,"character":31}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1133,"character":9},"end":{"line":1133,"character":13}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1133,"character":19},"end":{"line":1133,"character":22}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1171,"character":52},"end":{"line":1171,"character":60}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1171,"character":70},"end":{"line":1171,"character":78}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1177,"character":54},"end":{"line":1177,"character":62}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1177,"character":72},"end":{"line":1177,"character":80}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1208,"character":18},"end":{"line":1208,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1208,"character":27},"end":{"line":1208,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1208,"character":37},"end":{"line":1208,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1209,"character":29},"end":{"line":1209,"character":37}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1248,"character":14},"end":{"line":1248,"character":52}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1250,"character":8},"end":{"line":1250,"character":15}},"message":"Type of parameter \"send_fn\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1250,"character":17},"end":{"line":1250,"character":20}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1251,"character":21},"end":{"line":1251,"character":25}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1251,"character":31},"end":{"line":1251,"character":34}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1252,"character":18},"end":{"line":1252,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1252,"character":27},"end":{"line":1252,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1252,"character":37},"end":{"line":1252,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1253,"character":29},"end":{"line":1253,"character":37}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1255,"character":21},"end":{"line":1255,"character":29}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1255,"character":30},"end":{"line":1255,"character":33}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1256,"character":9},"end":{"line":1256,"character":12}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1259,"character":19},"end":{"line":1259,"character":47}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1268,"character":16},"end":{"line":1269,"character":57}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1280,"character":19},"end":{"line":1280,"character":48}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1284,"character":8},"end":{"line":1284,"character":18}},"message":"\"configured\"의 형식을 부분적으로 알 수 없습니다.\n  ‘configured’의 유형이 ‘Any | list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1335,"character":29},"end":{"line":1335,"character":34}},"message":"Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1337,"character":29},"end":{"line":1337,"character":36}},"message":"Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1370,"character":29},"end":{"line":1370,"character":34}},"message":"Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1372,"character":29},"end":{"line":1372,"character":36}},"message":"Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1386,"character":20},"end":{"line":1386,"character":25}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1388,"character":38},"end":{"line":1388,"character":42}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1388,"character":48},"end":{"line":1388,"character":51}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1427,"character":51},"end":{"line":1427,"character":60}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1427,"character":51},"end":{"line":1427,"character":60}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1429,"character":4},"end":{"line":1429,"character":20}},"message":"Type annotation for attribute `_RICH_DETAILS_RE` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1430,"character":4},"end":{"line":1430,"character":28}},"message":"Type annotation for attribute `_RICH_MATH_IN_DETAILS_RE` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1431,"character":8},"end":{"line":1435,"character":77}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1450,"character":12},"end":{"line":1450,"character":25}},"message":"Type of \"details_block\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1451,"character":52},"end":{"line":1451,"character":65}},"message":"Argument type is Any\n  인수가 \"search\" 함수의 \"string\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1498,"character":38},"end":{"line":1498,"character":46}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1498,"character":47},"end":{"line":1498,"character":51}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1498,"character":57},"end":{"line":1498,"character":60}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1505,"character":8},"end":{"line":1505,"character":37}},"message":"“prefers_fresh_final_streaming“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1506,"character":38},"end":{"line":1506,"character":46}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1506,"character":47},"end":{"line":1506,"character":51}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1506,"character":57},"end":{"line":1506,"character":60}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1520,"character":8},"end":{"line":1520,"character":32}},"message":"“streaming_overflow_limit“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1520,"character":42},"end":{"line":1520,"character":50}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1541,"character":9},"end":{"line":1541,"character":13}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1541,"character":19},"end":{"line":1541,"character":22}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1547,"character":17},"end":{"line":1547,"character":21}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1547,"character":27},"end":{"line":1547,"character":30}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1589,"character":8},"end":{"line":1589,"character":36}},"message":"반환 형식 \"tuple[Unknown, ...] | None\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1592,"character":18},"end":{"line":1592,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1593,"character":18},"end":{"line":1593,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1593,"character":27},"end":{"line":1593,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1593,"character":37},"end":{"line":1593,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1594,"character":19},"end":{"line":1594,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1595,"character":9},"end":{"line":1595,"character":17}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1595,"character":18},"end":{"line":1595,"character":23}},"message":"‘tuple’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1636,"character":18},"end":{"line":1636,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1637,"character":18},"end":{"line":1637,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1637,"character":27},"end":{"line":1637,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1637,"character":37},"end":{"line":1637,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1638,"character":9},"end":{"line":1638,"character":17}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1646,"character":8},"end":{"line":1646,"character":15}},"message":"\"routing\"의 형식을 부분적으로 알 수 없습니다.\n  ‘routing’의 유형이 ‘tuple[Unknown, ...] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1646,"character":18},"end":{"line":1646,"character":51}},"message":"\"_compute_single_send_routing\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_compute_single_send_routing’의 유형이 ‘(chat_id: str, reply_to: str | None, metadata: Dict[str, Any] | None, thread_id: str | None) -> (tuple[Unknown, ...] | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1649,"character":8},"end":{"line":1649,"character":19}},"message":"\"reply_to_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1649,"character":21},"end":{"line":1649,"character":34}},"message":"\"thread_kwargs\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1651,"character":17},"end":{"line":1651,"character":21}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1651,"character":27},"end":{"line":1651,"character":30}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1658,"character":33},"end":{"line":1658,"character":34}},"message":"\"k\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1658,"character":36},"end":{"line":1658,"character":37}},"message":"\"v\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1658,"character":41},"end":{"line":1658,"character":60}},"message":"\"items\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1674,"character":12},"end":{"line":1674,"character":15}},"message":"\"msg\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1674,"character":24},"end":{"line":1674,"character":33}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1674,"character":24},"end":{"line":1674,"character":48}},"message":"\"do_api_request\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1674,"character":34},"end":{"line":1674,"character":48}},"message":"\"do_api_request\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1710,"character":12},"end":{"line":1710,"character":22}},"message":"\"message_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message_id’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1710,"character":25},"end":{"line":1710,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1712,"character":16},"end":{"line":1712,"character":26}},"message":"\"message_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message_id’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1712,"character":29},"end":{"line":1712,"character":58}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1712,"character":30},"end":{"line":1712,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1714,"character":33},"end":{"line":1714,"character":36}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1720,"character":16},"end":{"line":1720,"character":38}},"message":"\"record\"의 형식을 부분적으로 알 수 없습니다.\n  ‘record’의 유형이 ‘(chat_id: Unknown, message_id: Unknown, text: str | None) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1720,"character":57},"end":{"line":1720,"character":67}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1725,"character":27},"end":{"line":1725,"character":37}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1733,"character":9},"end":{"line":1733,"character":17}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1747,"character":17},"end":{"line":1747,"character":21}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1747,"character":27},"end":{"line":1747,"character":30}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1758,"character":18},"end":{"line":1758,"character":27}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1758,"character":18},"end":{"line":1758,"character":42}},"message":"\"do_api_request\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1758,"character":28},"end":{"line":1758,"character":42}},"message":"\"do_api_request\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1810,"character":18},"end":{"line":1810,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1810,"character":27},"end":{"line":1810,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1810,"character":37},"end":{"line":1810,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1820,"character":17},"end":{"line":1820,"character":21}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1820,"character":27},"end":{"line":1820,"character":30}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1829,"character":12},"end":{"line":1829,"character":14}},"message":"\"ok\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1829,"character":23},"end":{"line":1829,"character":32}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1829,"character":23},"end":{"line":1829,"character":47}},"message":"\"do_api_request\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1829,"character":33},"end":{"line":1829,"character":47}},"message":"\"do_api_request\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1830,"character":24},"end":{"line":1830,"character":26}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1862,"character":16},"end":{"line":1862,"character":25}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1862,"character":30},"end":{"line":1862,"character":39}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1862,"character":30},"end":{"line":1862,"character":43}},"message":"\"bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1867,"character":12},"end":{"line":1867,"character":23}},"message":"\"polling_req\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1867,"character":26},"end":{"line":1867,"character":35}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1867,"character":26},"end":{"line":1867,"character":39}},"message":"\"bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1867,"character":26},"end":{"line":1867,"character":48}},"message":"\"_request\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1871,"character":18},"end":{"line":1871,"character":38}},"message":"\"shutdown\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1878,"character":18},"end":{"line":1878,"character":40}},"message":"\"initialize\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1913,"character":16},"end":{"line":1914,"character":37}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1921,"character":8},"end":{"line":1921,"character":13}},"message":"Type of \"delay\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1921,"character":20},"end":{"line":1921,"character":53}},"message":"Argument type is Any\n  인수가 \"min\" 함수의 \"arg1\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1924,"character":53},"end":{"line":1924,"character":58}},"message":"Argument type is Any\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1926,"character":28},"end":{"line":1926,"character":33}},"message":"Argument type is Any\n  인수가 \"sleep\" 함수의 \"delay\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1929,"character":15},"end":{"line":1929,"character":24}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1929,"character":29},"end":{"line":1929,"character":38}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1929,"character":29},"end":{"line":1929,"character":46}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1929,"character":51},"end":{"line":1929,"character":60}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1929,"character":51},"end":{"line":1929,"character":68}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1929,"character":51},"end":{"line":1929,"character":76}},"message":"\"running\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1930,"character":22},"end":{"line":1930,"character":31}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1930,"character":22},"end":{"line":1930,"character":39}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1930,"character":22},"end":{"line":1930,"character":44}},"message":"\"stop\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1938,"character":22},"end":{"line":1938,"character":31}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1938,"character":22},"end":{"line":1938,"character":39}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1938,"character":22},"end":{"line":1938,"character":53}},"message":"\"start_polling\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1938,"character":32},"end":{"line":1938,"character":39}},"message":"\"updater\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1939,"character":36},"end":{"line":1939,"character":52}},"message":"\"ALL_TYPES\"의 형식을 부분적으로 알 수 없습니다.\n  ‘ALL_TYPES’의 유형이 ‘list[str] | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1939,"character":43},"end":{"line":1939,"character":52}},"message":"\"type[Any]\" 클래스의 \"ALL_TYPES\" 특성에 액세스할 수 없음\n  특성 \"ALL_TYPES\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1958,"character":16},"end":{"line":1958,"character":38}},"message":"\"_background_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_background_tasks’의 유형이 ‘set[Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1958,"character":16},"end":{"line":1958,"character":42}},"message":"\"add\"의 형식을 부분적으로 알 수 없습니다.\n  ‘add’의 유형이 ‘(element: Task[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1959,"character":40},"end":{"line":1959,"character":62}},"message":"\"_background_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_background_tasks’의 유형이 ‘set[Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1968,"character":16},"end":{"line":1968,"character":38}},"message":"\"_background_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_background_tasks’의 유형이 ‘set[Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1968,"character":16},"end":{"line":1968,"character":42}},"message":"\"add\"의 형식을 부분적으로 알 수 없습니다.\n  ‘add’의 유형이 ‘(element: Task[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1969,"character":39},"end":{"line":1969,"character":61}},"message":"\"_background_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_background_tasks’의 유형이 ‘set[Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1996,"character":16},"end":{"line":1996,"character":25}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1996,"character":30},"end":{"line":1996,"character":39}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1996,"character":30},"end":{"line":1996,"character":47}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1996,"character":52},"end":{"line":1996,"character":61}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1996,"character":52},"end":{"line":1996,"character":69}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":1996,"character":52},"end":{"line":1996,"character":77}},"message":"\"running\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2007,"character":35},"end":{"line":2007,"character":44}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2007,"character":35},"end":{"line":2007,"character":48}},"message":"\"bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2007,"character":35},"end":{"line":2007,"character":55}},"message":"\"get_me\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2007,"character":35},"end":{"line":2007,"character":57}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"wait_for\" 함수의 \"fut\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2047,"character":16},"end":{"line":2049,"character":27}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2057,"character":19},"end":{"line":2057,"character":28}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2057,"character":33},"end":{"line":2057,"character":42}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2057,"character":33},"end":{"line":2057,"character":50}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2057,"character":55},"end":{"line":2057,"character":64}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2057,"character":55},"end":{"line":2057,"character":72}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2057,"character":55},"end":{"line":2057,"character":80}},"message":"\"running\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2058,"character":26},"end":{"line":2058,"character":35}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2058,"character":26},"end":{"line":2058,"character":43}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2058,"character":26},"end":{"line":2058,"character":48}},"message":"\"stop\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2067,"character":26},"end":{"line":2067,"character":35}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2067,"character":26},"end":{"line":2067,"character":43}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2067,"character":26},"end":{"line":2067,"character":57}},"message":"\"start_polling\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2067,"character":36},"end":{"line":2067,"character":43}},"message":"\"updater\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2068,"character":40},"end":{"line":2068,"character":56}},"message":"\"ALL_TYPES\"의 형식을 부분적으로 알 수 없습니다.\n  ‘ALL_TYPES’의 유형이 ‘list[str] | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2068,"character":47},"end":{"line":2068,"character":56}},"message":"\"type[Any]\" 클래스의 \"ALL_TYPES\" 특성에 액세스할 수 없음\n  특성 \"ALL_TYPES\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2081,"character":20},"end":{"line":2082,"character":46}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2108,"character":12},"end":{"line":2112,"character":86}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2121,"character":15},"end":{"line":2121,"character":24}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2121,"character":29},"end":{"line":2121,"character":38}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2121,"character":29},"end":{"line":2121,"character":46}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2122,"character":22},"end":{"line":2122,"character":31}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2122,"character":22},"end":{"line":2122,"character":39}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2122,"character":22},"end":{"line":2122,"character":44}},"message":"\"stop\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2134,"character":20},"end":{"line":2134,"character":28}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2135,"character":30},"end":{"line":2135,"character":38}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2136,"character":9},"end":{"line":2136,"character":17}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2142,"character":15},"end":{"line":2142,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2145,"character":20},"end":{"line":2145,"character":24}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2145,"character":30},"end":{"line":2145,"character":33}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2151,"character":12},"end":{"line":2151,"character":17}},"message":"\"topic\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2151,"character":26},"end":{"line":2151,"character":35}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2151,"character":26},"end":{"line":2151,"character":54}},"message":"\"create_forum_topic\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2152,"character":12},"end":{"line":2152,"character":21}},"message":"\"thread_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2152,"character":24},"end":{"line":2152,"character":47}},"message":"\"message_thread_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2155,"character":42},"end":{"line":2155,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2157,"character":19},"end":{"line":2157,"character":28}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2169,"character":20},"end":{"line":2171,"character":100}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2181,"character":14},"end":{"line":2181,"character":35}},"message":"“create_handoff_thread“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2185,"character":9},"end":{"line":2185,"character":17}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2199,"character":98},"end":{"line":2199,"character":106}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2214,"character":20},"end":{"line":2214,"character":28}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2214,"character":29},"end":{"line":2214,"character":33}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2214,"character":39},"end":{"line":2214,"character":42}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2215,"character":20},"end":{"line":2215,"character":28}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2215,"character":29},"end":{"line":2215,"character":33}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2215,"character":39},"end":{"line":2215,"character":42}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2220,"character":16},"end":{"line":2220,"character":25}},"message":"Type of \"candidate\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2221,"character":19},"end":{"line":2221,"character":32}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2222,"character":20},"end":{"line":2222,"character":30}},"message":"Type of \"topic_conf\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2227,"character":28},"end":{"line":2227,"character":51}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2236,"character":12},"end":{"line":2236,"character":54}},"message":"Type of \"append\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2259,"character":15},"end":{"line":2259,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2265,"character":14},"end":{"line":2265,"character":23}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2265,"character":14},"end":{"line":2265,"character":40}},"message":"\"edit_forum_topic\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2292,"character":16},"end":{"line":2292,"character":22}},"message":"\"config\"의 형식을 부분적으로 알 수 없습니다.\n  ‘config’의 유형이 ‘Any | dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2297,"character":12},"end":{"line":2297,"character":21}},"message":"\"platforms\"의 형식을 부분적으로 알 수 없습니다.\n  ‘platforms’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2297,"character":24},"end":{"line":2297,"character":41}},"message":"\"setdefault\"의 형식을 부분적으로 알 수 없습니다.\n  ‘setdefault’의 유형이 ‘Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2298,"character":12},"end":{"line":2298,"character":27}},"message":"\"telegram_config\"의 형식을 부분적으로 알 수 없습니다.\n  ‘telegram_config’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2298,"character":30},"end":{"line":2298,"character":50}},"message":"\"setdefault\"의 형식을 부분적으로 알 수 없습니다.\n  ‘setdefault’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2299,"character":12},"end":{"line":2299,"character":17}},"message":"\"extra\"의 형식을 부분적으로 알 수 없습니다.\n  ‘extra’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2299,"character":20},"end":{"line":2299,"character":46}},"message":"\"setdefault\"의 형식을 부분적으로 알 수 없습니다.\n  ‘setdefault’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2300,"character":12},"end":{"line":2300,"character":21}},"message":"\"dm_topics\"의 형식을 부분적으로 알 수 없습니다.\n  ‘dm_topics’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2300,"character":24},"end":{"line":2300,"character":40}},"message":"\"setdefault\"의 형식을 부분적으로 알 수 없습니다.\n  ‘setdefault’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2304,"character":16},"end":{"line":2304,"character":26}},"message":"\"chat_entry\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_entry’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2306,"character":39},"end":{"line":2306,"character":53}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2306,"character":39},"end":{"line":2306,"character":67}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2311,"character":16},"end":{"line":2311,"character":35}},"message":"\"matching_chat_entry\"의 형식을 부분적으로 알 수 없습니다.\n  ‘matching_chat_entry’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2312,"character":20},"end":{"line":2312,"character":21}},"message":"\"t\"의 형식을 부분적으로 알 수 없습니다.\n  ‘t’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2312,"character":25},"end":{"line":2312,"character":46}},"message":"\"setdefault\"의 형식을 부분적으로 알 수 없습니다.\n  ‘setdefault’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2313,"character":23},"end":{"line":2313,"character":28}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2314,"character":51},"end":{"line":2314,"character":56}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2315,"character":31},"end":{"line":2315,"character":36}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2320,"character":20},"end":{"line":2320,"character":41}},"message":"\"setdefault\"의 형식을 부분적으로 알 수 없습니다.\n  ‘setdefault’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2320,"character":20},"end":{"line":2320,"character":62}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2327,"character":16},"end":{"line":2327,"character":32}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2344,"character":20},"end":{"line":2344,"character":57}},"message":"호출 식의 결과가 ‘str’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2382,"character":12},"end":{"line":2382,"character":18}},"message":"Type of \"topics\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2388,"character":31},"end":{"line":2388,"character":37}},"message":"Argument type is Any\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2388,"character":40},"end":{"line":2388,"character":47}},"message":"Argument type is Any\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2391,"character":16},"end":{"line":2391,"character":26}},"message":"Type of \"topic_conf\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2392,"character":16},"end":{"line":2392,"character":26}},"message":"Type of \"topic_name\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2392,"character":29},"end":{"line":2392,"character":43}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2399,"character":16},"end":{"line":2399,"character":34}},"message":"Type of \"existing_thread_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2399,"character":37},"end":{"line":2399,"character":51}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2401,"character":53},"end":{"line":2401,"character":71}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2404,"character":46},"end":{"line":2404,"character":64}},"message":"Argument type is Any\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2409,"character":16},"end":{"line":2409,"character":26}},"message":"Type of \"icon_color\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2409,"character":29},"end":{"line":2409,"character":43}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2410,"character":16},"end":{"line":2410,"character":26}},"message":"Type of \"icon_emoji\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2410,"character":29},"end":{"line":2410,"character":43}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2413,"character":32},"end":{"line":2413,"character":39}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2414,"character":25},"end":{"line":2414,"character":35}},"message":"Argument type is Any\n  인수가 \"_create_dm_topic\" 함수의 \"name\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2415,"character":31},"end":{"line":2415,"character":41}},"message":"Argument type is Any\n  인수가 \"_create_dm_topic\" 함수의 \"icon_color\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2416,"character":41},"end":{"line":2416,"character":51}},"message":"Argument type is Any\n  인수가 \"_create_dm_topic\" 함수의 \"icon_custom_emoji_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2426,"character":57},"end":{"line":2426,"character":64}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2426,"character":67},"end":{"line":2426,"character":77}},"message":"Argument type is Any\n  인수가 \"_persist_dm_topic_thread_id\" 함수의 \"topic_name\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2431,"character":30},"end":{"line":2431,"character":39}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2431,"character":30},"end":{"line":2431,"character":52}},"message":"\"send_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2431,"character":40},"end":{"line":2431,"character":52}},"message":"\"send_message\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2432,"character":40},"end":{"line":2432,"character":47}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2439,"character":39},"end":{"line":2439,"character":49}},"message":"Argument type is Any\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2486,"character":8},"end":{"line":2486,"character":17}},"message":"Type of \"duplicate\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2486,"character":26},"end":{"line":2486,"character":36}},"message":"Type of \"begin\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2498,"character":8},"end":{"line":2498,"character":22}},"message":"Type of \"completed\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2534,"character":8},"end":{"line":2534,"character":11}},"message":"\"app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2534,"character":14},"end":{"line":2534,"character":23}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2537,"character":8},"end":{"line":2537,"character":15}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2537,"character":18},"end":{"line":2537,"character":29}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2540,"character":32},"end":{"line":2540,"character":39}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2554,"character":24},"end":{"line":2554,"character":31}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"setattr\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2559,"character":30},"end":{"line":2559,"character":36}},"message":"\"encode\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2567,"character":13},"end":{"line":2567,"character":43}},"message":"Type annotation for attribute `_telegram_polling_receipt_gate` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2568,"character":8},"end":{"line":2568,"character":17}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2568,"character":8},"end":{"line":2568,"character":29}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2568,"character":18},"end":{"line":2568,"character":29}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2569,"character":12},"end":{"line":2569,"character":60}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2572,"character":8},"end":{"line":2572,"character":17}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2572,"character":8},"end":{"line":2572,"character":29}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2572,"character":18},"end":{"line":2572,"character":29}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2573,"character":12},"end":{"line":2573,"character":63}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2577,"character":20},"end":{"line":2577,"character":27}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2577,"character":36},"end":{"line":2577,"character":45}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2577,"character":36},"end":{"line":2577,"character":45}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"default\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2585,"character":31},"end":{"line":2585,"character":40}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2596,"character":8},"end":{"line":2596,"character":21}},"message":"Type of \"registry_path\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2596,"character":39},"end":{"line":2596,"character":61}},"message":"Type of \"registry_path\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2597,"character":8},"end":{"line":2597,"character":16}},"message":"Type of \"registry\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2597,"character":30},"end":{"line":2597,"character":53}},"message":"Type of \"read_text\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2597,"character":30},"end":{"line":2597,"character":71}},"message":"Argument type is Any\n  인수가 \"loads\" 함수의 \"s\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2599,"character":12},"end":{"line":2599,"character":20}},"message":"Argument type is Any\n  인수가 \"build_staff_chat_inventory\" 함수의 \"registry\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2602,"character":8},"end":{"line":2602,"character":65}},"message":"호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2602,"character":44},"end":{"line":2602,"character":53}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2602,"character":44},"end":{"line":2602,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"verify_subscription_readiness\" 함수의 \"bot\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2603,"character":8},"end":{"line":2603,"character":17}},"message":"Type of \"customers\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2603,"character":20},"end":{"line":2603,"character":32}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2607,"character":20},"end":{"line":2607,"character":46}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2608,"character":16},"end":{"line":2608,"character":19}},"message":"\"row\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2610,"character":27},"end":{"line":2610,"character":34}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2611,"character":20},"end":{"line":2611,"character":39}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2611,"character":20},"end":{"line":2611,"character":54}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2616,"character":28},"end":{"line":2616,"character":54}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2617,"character":24},"end":{"line":2617,"character":27}},"message":"\"row\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2619,"character":35},"end":{"line":2619,"character":42}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2620,"character":28},"end":{"line":2620,"character":47}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2620,"character":28},"end":{"line":2620,"character":62}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2621,"character":32},"end":{"line":2621,"character":58}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2626,"character":13},"end":{"line":2626,"character":49}},"message":"Type annotation for attribute `_nutrition_command_customer_chat_ids` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2627,"character":13},"end":{"line":2627,"character":46}},"message":"Type annotation for attribute `_nutrition_command_staff_chat_ids` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2634,"character":8},"end":{"line":2642,"character":9}},"message":"호출 식의 결과가 ‘dict[str, object]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2643,"character":13},"end":{"line":2643,"character":38}},"message":"Type annotation for attribute `_staff_membership_journal` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2644,"character":13},"end":{"line":2644,"character":52}},"message":"Type annotation for attribute `_staff_membership_subscription_epoch_id` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2645,"character":13},"end":{"line":2645,"character":43}},"message":"Type annotation for attribute `_staff_membership_customer_ids` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2646,"character":13},"end":{"line":2646,"character":39}},"message":"Type annotation for attribute `_staff_membership_chat_ids` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2660,"character":29},"end":{"line":2660,"character":35}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2661,"character":29},"end":{"line":2661,"character":35}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2663,"character":23},"end":{"line":2663,"character":29}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2673,"character":29},"end":{"line":2673,"character":35}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2676,"character":8},"end":{"line":2676,"character":33}},"message":"Type of \"append_transition\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2715,"character":12},"end":{"line":2715,"character":17}},"message":"Type of \"lease\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2715,"character":26},"end":{"line":2715,"character":56}},"message":"Type of \"acquire_operation_lease\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2727,"character":47},"end":{"line":2727,"character":61}},"message":"Type of \"snapshot\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2727,"character":47},"end":{"line":2727,"character":61}},"message":"Argument type is Any\n  인수가 \"_bind_task26_service_snapshot\" 함수의 \"snapshot\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2728,"character":18},"end":{"line":2728,"character":32}},"message":"Type of \"snapshot\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2730,"character":18},"end":{"line":2730,"character":31}},"message":"Type of \"release\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2759,"character":16},"end":{"line":2759,"character":21}},"message":"Type of \"lease\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2759,"character":30},"end":{"line":2759,"character":57}},"message":"Type of \"acquire_update_lease\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2771,"character":51},"end":{"line":2771,"character":65}},"message":"Type of \"snapshot\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2771,"character":51},"end":{"line":2771,"character":65}},"message":"Argument type is Any\n  인수가 \"_bind_task26_service_snapshot\" 함수의 \"snapshot\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2772,"character":22},"end":{"line":2772,"character":44}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2774,"character":22},"end":{"line":2774,"character":35}},"message":"Type of \"release\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2789,"character":15},"end":{"line":2789,"character":31}},"message":"Type of \"authorize\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2789,"character":15},"end":{"line":2789,"character":77}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2794,"character":13},"end":{"line":2794,"character":47}},"message":"Type annotation for attribute `_task26_service_authority_snapshot` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2797,"character":20},"end":{"line":2797,"character":31}},"message":"Argument type is Any\n  인수가 \"setattr\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2801,"character":13},"end":{"line":2801,"character":38}},"message":"Type annotation for attribute `_task26_authority_watcher` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2803,"character":12},"end":{"line":2803,"character":25}},"message":"Type of \"close\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2814,"character":13},"end":{"line":2814,"character":45}},"message":"Type annotation for attribute `_task26_authority_failure_reason` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2816,"character":27},"end":{"line":2816,"character":41}},"message":"Type of \"is_closed\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2818,"character":8},"end":{"line":2818,"character":12}},"message":"Type of \"task\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2818,"character":15},"end":{"line":2818,"character":31}},"message":"Type of \"create_task\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2819,"character":8},"end":{"line":2819,"character":46}},"message":"Type of \"_task26_authority_disconnect_task\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2819,"character":13},"end":{"line":2819,"character":46}},"message":"Type annotation for attribute `_task26_authority_disconnect_task` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2845,"character":16},"end":{"line":2852,"character":17}},"message":"호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2868,"character":20},"end":{"line":2868,"character":31}},"message":"Argument type is Any\n  인수가 \"setattr\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2871,"character":13},"end":{"line":2871,"character":37}},"message":"Type annotation for attribute `_task26_authority_source` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2886,"character":12},"end":{"line":2886,"character":18}},"message":"\"object\" 형식의 인수를 \"__init__\" 함수에서 \"FileCandidateAuthoritySource\" 형식의 \"source\" 매개 변수에 할당할 수 없습니다.\n  \"object\"은 \"FileCandidateAuthoritySource\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2894,"character":13},"end":{"line":2894,"character":35}},"message":"Type annotation for attribute `_task26_authority_loop` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2896,"character":13},"end":{"line":2896,"character":48}},"message":"Type annotation for attribute `_task26_authority_watcher_resources` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2899,"character":14},"end":{"line":2899,"character":21}},"message":"“connect“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2905,"character":13},"end":{"line":2905,"character":36}},"message":"\"_task26_service_revoked\"이(가) 클래스 \"TelegramWeeklyDispatchMixin\"에서 동일한 이름의 기호를 재정의합니다.\n  변수를 변경할 수 있으므로 해당 형식은 고정됩니다.\n    \"bool\" 재정의 형식이 \"bool | None\" 기본 형식과 같지 않습니다.","severity":1,"code":"reportIncompatibleVariableOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportIncompatibleVariableOverride"},"relatedInformation":[{"location":{"uri":"file:///home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","range":{"start":{"line":72,"character":4},"end":{"line":72,"character":27}}},"message":"재정의된 기호"}]}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2906,"character":13},"end":{"line":2906,"character":37}},"message":"Type annotation for attribute `_task26_runtime_required` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2953,"character":21},"end":{"line":2953,"character":45}},"message":"Type annotation for attribute `_task26_candidate_digest` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2954,"character":21},"end":{"line":2954,"character":41}},"message":"Type annotation for attribute `_task26_profile_root` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":2961,"character":16},"end":{"line":2961,"character":79}},"message":"호출 식의 결과가 ‘dict[str, object]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3017,"character":18},"end":{"line":3017,"character":37}},"message":"Type of \"set_my_commands\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3020,"character":16},"end":{"line":3020,"character":19}},"message":"Argument type is Any\n  인수가 \"register_nutrition_chat_commands\" 함수의 \"bot\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3134,"character":12},"end":{"line":3134,"character":19}},"message":"\"builder\"의 형식을 부분적으로 알 수 없습니다.\n  ‘builder’의 유형이 ‘ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]] | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3134,"character":22},"end":{"line":3134,"character":41}},"message":"\"builder\"의 형식을 부분적으로 알 수 없습니다.\n  ‘builder’의 유형이 ‘(() -> ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]]) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3134,"character":22},"end":{"line":3134,"character":49}},"message":"\"token\"의 형식을 부분적으로 알 수 없습니다.\n  ‘token’의 유형이 ‘((token: str) -> ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]]) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3134,"character":34},"end":{"line":3134,"character":41}},"message":"\"type[Any]\" 클래스의 \"builder\" 특성에 액세스할 수 없음\n  특성 \"builder\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3137,"character":16},"end":{"line":3137,"character":23}},"message":"\"builder\"의 형식을 부분적으로 알 수 없습니다.\n  ‘builder’의 유형이 ‘ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]] | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3137,"character":26},"end":{"line":3137,"character":42}},"message":"\"base_url\"의 형식을 부분적으로 알 수 없습니다.\n  ‘base_url’의 유형이 ‘((base_url: str | ((str) -> str)) -> ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]]) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3137,"character":43},"end":{"line":3137,"character":58}},"message":"Argument type is Any\n  인수가 \"base_url\" 함수의 \"base_url\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3138,"character":16},"end":{"line":3138,"character":23}},"message":"\"builder\"의 형식을 부분적으로 알 수 없습니다.\n  ‘builder’의 유형이 ‘ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]] | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3138,"character":26},"end":{"line":3138,"character":47}},"message":"\"base_file_url\"의 형식을 부분적으로 알 수 없습니다.\n  ‘base_file_url’의 유형이 ‘((base_file_url: str | ((str) -> str)) -> ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]]) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3139,"character":20},"end":{"line":3139,"character":75}},"message":"Argument type is Any\n  인수가 \"base_file_url\" 함수의 \"base_file_url\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3139,"character":59},"end":{"line":3139,"character":74}},"message":"Argument type is Any\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3143,"character":31},"end":{"line":3143,"character":46}},"message":"Argument type is Any\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3151,"character":16},"end":{"line":3151,"character":23}},"message":"\"builder\"의 형식을 부분적으로 알 수 없습니다.\n  ‘builder’의 유형이 ‘ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]] | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3151,"character":26},"end":{"line":3151,"character":44}},"message":"\"local_mode\"의 형식을 부분적으로 알 수 없습니다.\n  ‘local_mode’의 유형이 ‘((local_mode: bool) -> ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]]) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3197,"character":16},"end":{"line":3197,"character":23}},"message":"\"request\"의 형식을 부분적으로 알 수 없습니다.\n  ‘request’의 유형이 ‘Unknown | HTTPXRequest’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3197,"character":26},"end":{"line":3200,"character":17}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3198,"character":22},"end":{"line":3198,"character":36}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"connection_pool_size\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"float\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3198,"character":22},"end":{"line":3198,"character":36}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"HTTPVersion\" 형식의 \"http_version\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['1.1']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2.0']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2']\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3198,"character":22},"end":{"line":3198,"character":36}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"Collection[SocketOpt] | None\" 형식의 \"socket_options\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n      ‘float’은(는) ‘Collection[SocketOpt]’ 프로토콜과 호환되지 않습니다.\n        \"__len__\"이(가) 없습니다.\n        \"__iter__\"이(가) 없습니다.\n        \"__contains__\"이(가) 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3198,"character":22},"end":{"line":3198,"character":36}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"str | Proxy | URL | None\" 형식의 \"proxy\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"str | Proxy | URL | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"str | Proxy | URL | None\"에 할당할 수 없습니다.\n      \"float\"은 \"str\"에 할당할 수 없습니다.\n      \"float\"은 \"Proxy\"에 할당할 수 없습니다.\n      \"float\"은 \"URL\"에 할당할 수 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3201,"character":16},"end":{"line":3201,"character":35}},"message":"\"get_updates_request\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get_updates_request’의 유형이 ‘Unknown | HTTPXRequest’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3201,"character":38},"end":{"line":3204,"character":17}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3202,"character":22},"end":{"line":3202,"character":36}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"connection_pool_size\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"float\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3202,"character":22},"end":{"line":3202,"character":36}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"HTTPVersion\" 형식의 \"http_version\" 매개 ���수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['1.1']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2.0']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2']\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3202,"character":22},"end":{"line":3202,"character":36}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"Collection[SocketOpt] | None\" 형식의 \"socket_options\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n      ‘float’은(는) ‘Collection[SocketOpt]’ 프로토콜과 호환되지 않습니다.\n        \"__len__\"이(가) 없습니다.\n        \"__iter__\"이(가) 없습니다.\n        \"__contains__\"이(가) 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3202,"character":22},"end":{"line":3202,"character":36}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"str | Proxy | URL | None\" 형식의 \"proxy\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"str | Proxy | URL | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"str | Proxy | URL | None\"에 할당할 수 없습니다.\n      \"float\"은 \"str\"에 할당할 수 없습니다.\n      \"float\"은 \"Proxy\"에 할당할 수 없습니다.\n      \"float\"은 \"URL\"에 할당할 수 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3207,"character":16},"end":{"line":3207,"character":23}},"message":"\"request\"의 형식을 부분적으로 알 수 없습니다.\n  ‘request’의 유형이 ‘Unknown | HTTPXRequest’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3207,"character":26},"end":{"line":3207,"character":73}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3207,"character":41},"end":{"line":3207,"character":55}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"connection_pool_size\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"float\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3207,"character":41},"end":{"line":3207,"character":55}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"HTTPVersion\" 형식의 \"http_version\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['1.1']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2.0']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2']\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3207,"character":41},"end":{"line":3207,"character":55}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"Collection[SocketOpt] | None\" 형식의 \"socket_options\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n      ‘float’은(는) ‘Collection[SocketOpt]’ 프로토콜과 호환되지 않습니다.\n        \"__len__\"이(가) 없습니다.\n        \"__iter__\"이(가) 없습니다.\n        \"__contains__\"이(가) 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3207,"character":41},"end":{"line":3207,"character":55}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"dict[str, Any] | None\" 형식의 \"httpx_kwargs\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"dict[str, Any] | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"dict[str, Any] | None\"에 할당할 수 없습니다.\n      \"float\"은 \"dict[str, Any]\"에 할당할 수 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3208,"character":16},"end":{"line":3208,"character":35}},"message":"\"get_updates_request\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get_updates_request’의 유형이 ‘Unknown | HTTPXRequest’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3208,"character":38},"end":{"line":3208,"character":85}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3208,"character":53},"end":{"line":3208,"character":67}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"connection_pool_size\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"float\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3208,"character":53},"end":{"line":3208,"character":67}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"HTTPVersion\" 형식의 \"http_version\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['1.1']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2.0']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2']\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3208,"character":53},"end":{"line":3208,"character":67}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"Collection[SocketOpt] | None\" 형식의 \"socket_options\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n      ‘float’은(는) ‘Collection[SocketOpt]’ 프로토콜과 호환되지 않습니다.\n        \"__len__\"이(가) 없습니다.\n        \"__iter__\"이(가) 없습니다.\n        \"__contains__\"이(가) 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3208,"character":53},"end":{"line":3208,"character":67}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"dict[str, Any] | None\" 형식의 \"httpx_kwargs\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"dict[str, Any] | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"dict[str, Any] | None\"에 할당할 수 없습니다.\n      \"float\"은 \"dict[str, Any]\"에 할당할 수 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3212,"character":16},"end":{"line":3212,"character":23}},"message":"\"request\"의 형식을 부분적으로 알 수 없습니다.\n  ‘request’의 유형이 ‘Unknown | HTTPXRequest’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3212,"character":26},"end":{"line":3212,"character":56}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3212,"character":41},"end":{"line":3212,"character":55}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"connection_pool_size\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"float\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3212,"character":41},"end":{"line":3212,"character":55}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"HTTPVersion\" 형식의 \"http_version\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['1.1']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2.0']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2']\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3212,"character":41},"end":{"line":3212,"character":55}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"Collection[SocketOpt] | None\" 형식의 \"socket_options\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n      ‘float’은(는) ‘Collection[SocketOpt]’ 프로토콜과 호환되지 않습니다.\n        \"__len__\"이(가) 없습니다.\n        \"__iter__\"이(가) 없습니다.\n        \"__contains__\"이(가) 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3212,"character":41},"end":{"line":3212,"character":55}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"str | Proxy | URL | None\" 형식의 \"proxy\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"str | Proxy | URL | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"str | Proxy | URL | None\"에 할당할 수 없습니다.\n      \"float\"은 \"str\"에 할당할 수 없습니다.\n      \"float\"은 \"Proxy\"에 할당할 수 없습니다.\n      \"float\"은 \"URL\"에 할당할 수 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3212,"character":41},"end":{"line":3212,"character":55}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"dict[str, Any] | None\" 형식의 \"httpx_kwargs\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"dict[str, Any] | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"dict[str, Any] | None\"에 할당할 수 없습니다.\n      \"float\"은 \"dict[str, Any]\"에 할당할 수 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3213,"character":16},"end":{"line":3213,"character":35}},"message":"\"get_updates_request\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get_updates_request’의 유형이 ‘Unknown | HTTPXRequest’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3213,"character":38},"end":{"line":3213,"character":68}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3213,"character":53},"end":{"line":3213,"character":67}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"connection_pool_size\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"float\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3213,"character":53},"end":{"line":3213,"character":67}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"HTTPVersion\" 형식의 \"http_version\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"HTTPVersion\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['1.1']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2.0']\"에 할당할 수 없습니다.\n      \"float\"은 \"Literal['2']\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3213,"character":53},"end":{"line":3213,"character":67}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"Collection[SocketOpt] | None\" 형식의 \"socket_options\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"Collection[SocketOpt] | None\"에 할당할 수 없습니다.\n      ‘float’은(는) ‘Collection[SocketOpt]’ 프로토콜과 호환되지 않습니다.\n        \"__len__\"이(가) 없습니다.\n        \"__iter__\"이(가) 없습니다.\n        \"__contains__\"이(가) 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3213,"character":53},"end":{"line":3213,"character":67}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"str | Proxy | URL | None\" 형식의 \"proxy\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"str | Proxy | URL | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"str | Proxy | URL | None\"에 할당할 수 없습니다.\n      \"float\"은 \"str\"에 할당할 수 없습니다.\n      \"float\"은 \"Proxy\"에 할당할 수 없습니다.\n      \"float\"은 \"URL\"에 할당할 수 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3213,"character":53},"end":{"line":3213,"character":67}},"message":"\"int | float\" 형식의 인수를 \"__init__\" 함수에서 \"dict[str, Any] | None\" 형식의 \"httpx_kwargs\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | float\"은 형식 \"dict[str, Any] | None\"에 할당할 수 없습니다.\n    형식 \"float\"은 형식 \"dict[str, Any] | None\"에 할당할 수 없습니다.\n      \"float\"은 \"dict[str, Any]\"에 할당할 수 없습니다.\n      \"float\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3215,"character":12},"end":{"line":3215,"character":19}},"message":"\"builder\"의 형식을 부분적으로 알 수 없습니다.\n  ‘builder’의 유형이 ‘ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]] | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3215,"character":22},"end":{"line":3215,"character":37}},"message":"\"request\"의 형식을 부분적으로 알 수 없습니다.\n  ‘request’의 유형이 ‘((request: BaseRequest) -> ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]]) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3215,"character":22},"end":{"line":3215,"character":66}},"message":"\"get_updates_request\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get_updates_request’의 유형이 ‘((get_updates_request: BaseRequest) -> ApplicationBuilder[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]]) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3215,"character":38},"end":{"line":3215,"character":45}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"request\" 함수의 \"request\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | HTTPXRequest\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3215,"character":67},"end":{"line":3215,"character":86}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"get_updates_request\" 함수의 \"get_updates_request\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | HTTPXRequest\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3216,"character":24},"end":{"line":3216,"character":37}},"message":"\"build\"의 형식을 부분적으로 알 수 없습니다.\n  ‘build’의 유형이 ‘(() -> Application[ExtBot[None], CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]], dict[Any, Any], dict[Any, Any], dict[Any, Any], JobQueue[CallbackContext[ExtBot[None], dict[Any, Any], dict[Any, Any], dict[Any, Any]]]]) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3217,"character":24},"end":{"line":3217,"character":33}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3217,"character":24},"end":{"line":3217,"character":37}},"message":"\"bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3217,"character":34},"end":{"line":3217,"character":37}},"message":"\"bot\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3219,"character":65},"end":{"line":3219,"character":74}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3219,"character":65},"end":{"line":3219,"character":74}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_install_task26_update_processing_authority\" 함수의 \"application\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3221,"character":12},"end":{"line":3221,"character":21}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3221,"character":12},"end":{"line":3221,"character":33}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3221,"character":22},"end":{"line":3221,"character":33}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3222,"character":16},"end":{"line":3222,"character":74}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3227,"character":12},"end":{"line":3227,"character":21}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3227,"character":12},"end":{"line":3227,"character":33}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3227,"character":22},"end":{"line":3227,"character":33}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3228,"character":16},"end":{"line":3231,"character":17}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3230,"character":20},"end":{"line":3230,"character":49}},"message":"\"CHAT_MEMBER\"의 형식을 부분적으로 알 수 없습니다.\n  ‘CHAT_MEMBER’의 유형이 ‘Any | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3230,"character":38},"end":{"line":3230,"character":49}},"message":"\"type[Any]\" 클래스의 \"CHAT_MEMBER\" 특성에 액세스할 수 없음\n  특성 \"CHAT_MEMBER\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3239,"character":16},"end":{"line":3239,"character":25}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3239,"character":16},"end":{"line":3239,"character":37}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3239,"character":26},"end":{"line":3239,"character":37}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3239,"character":38},"end":{"line":3242,"character":17}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3240,"character":20},"end":{"line":3240,"character":34}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"filters\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3245,"character":40},"end":{"line":3245,"character":52}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3247,"character":20},"end":{"line":3247,"character":29}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3247,"character":20},"end":{"line":3247,"character":41}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3247,"character":30},"end":{"line":3247,"character":41}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3247,"character":42},"end":{"line":3250,"character":21}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3248,"character":24},"end":{"line":3248,"character":37}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"filters\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3251,"character":41},"end":{"line":3251,"character":53}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3253,"character":20},"end":{"line":3253,"character":29}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3253,"character":20},"end":{"line":3253,"character":41}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3253,"character":30},"end":{"line":3253,"character":41}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3253,"character":42},"end":{"line":3256,"character":21}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3254,"character":24},"end":{"line":3254,"character":38}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"filters\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3257,"character":48},"end":{"line":3257,"character":60}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3259,"character":20},"end":{"line":3259,"character":29}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3259,"character":20},"end":{"line":3259,"character":41}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3259,"character":30},"end":{"line":3259,"character":41}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3259,"character":42},"end":{"line":3262,"character":21}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3260,"character":24},"end":{"line":3260,"character":45}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"filters\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3263,"character":12},"end":{"line":3263,"character":21}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3263,"character":12},"end":{"line":3263,"character":33}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3263,"character":22},"end":{"line":3263,"character":33}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3263,"character":34},"end":{"line":3266,"character":13}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3264,"character":24},"end":{"line":3264,"character":28}},"message":"\"TEXT\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3264,"character":40},"end":{"line":3264,"character":47}},"message":"\"COMMAND\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3267,"character":12},"end":{"line":3267,"character":21}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3267,"character":12},"end":{"line":3267,"character":33}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3267,"character":22},"end":{"line":3267,"character":33}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3267,"character":34},"end":{"line":3270,"character":13}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3268,"character":24},"end":{"line":3268,"character":31}},"message":"\"COMMAND\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3269,"character":16},"end":{"line":3269,"character":36}},"message":"\"_handle_command\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_handle_command’의 유형이 ‘(update: Unknown, context: Unknown) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3269,"character":16},"end":{"line":3269,"character":36}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"callback\" 매개 변수에 해당합니다.\n  인수 형식이 \"(update: Unknown, context: Unknown) -> CoroutineType[Any, Any, None]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3271,"character":12},"end":{"line":3271,"character":21}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3271,"character":12},"end":{"line":3271,"character":33}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3271,"character":22},"end":{"line":3271,"character":33}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3271,"character":34},"end":{"line":3274,"character":13}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3272,"character":24},"end":{"line":3272,"character":32}},"message":"\"LOCATION\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3272,"character":69},"end":{"line":3272,"character":77}},"message":"\"LOCATION\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3273,"character":16},"end":{"line":3273,"character":45}},"message":"\"_handle_location_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_handle_location_message’의 유형이 ‘(update: Unknown, context: Unknown) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3273,"character":16},"end":{"line":3273,"character":45}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"callback\" 매개 변수에 해당합니다.\n  인수 형식이 \"(update: Unknown, context: Unknown) -> CoroutineType[Any, Any, None]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3275,"character":12},"end":{"line":3275,"character":21}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3275,"character":12},"end":{"line":3275,"character":33}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3275,"character":22},"end":{"line":3275,"character":33}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3275,"character":34},"end":{"line":3278,"character":13}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3276,"character":24},"end":{"line":3276,"character":29}},"message":"\"PHOTO\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3276,"character":40},"end":{"line":3276,"character":45}},"message":"\"VIDEO\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3276,"character":56},"end":{"line":3276,"character":61}},"message":"\"AUDIO\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3276,"character":72},"end":{"line":3276,"character":77}},"message":"\"VOICE\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3276,"character":88},"end":{"line":3276,"character":96}},"message":"\"Document\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3276,"character":111},"end":{"line":3276,"character":118}},"message":"\"Sticker\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3277,"character":16},"end":{"line":3277,"character":42}},"message":"\"_handle_media_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_handle_media_message’의 유형이 ‘(update: Unknown, context: Unknown) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3277,"character":16},"end":{"line":3277,"character":42}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"callback\" 매개 변수에 해당합니다.\n  인수 형식이 \"(update: Unknown, context: Unknown) -> CoroutineType[Any, Any, None]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3280,"character":12},"end":{"line":3280,"character":21}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3280,"character":12},"end":{"line":3280,"character":33}},"message":"\"add_handler\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3280,"character":22},"end":{"line":3280,"character":33}},"message":"\"add_handler\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3280,"character":34},"end":{"line":3280,"character":83}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3281,"character":40},"end":{"line":3281,"character":49}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3281,"character":40},"end":{"line":3281,"character":49}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3283,"character":16},"end":{"line":3283,"character":57}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3293,"character":26},"end":{"line":3293,"character":35}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3293,"character":26},"end":{"line":3293,"character":46}},"message":"\"initialize\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3293,"character":36},"end":{"line":3293,"character":46}},"message":"\"initialize\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3295,"character":60},"end":{"line":3295,"character":68}},"message":"\"init_err\"의 형식을 부분적으로 알 수 없습니다.\n  ‘init_err’의 유형이 ‘Unknown | OSError’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3297,"character":24},"end":{"line":3297,"character":28}},"message":"Type of \"wait\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3297,"character":35},"end":{"line":3297,"character":48}},"message":"Argument type is Any\n  인수가 \"min\" 함수의 \"arg1\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3300,"character":67},"end":{"line":3300,"character":75}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | OSError\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3300,"character":77},"end":{"line":3300,"character":81}},"message":"Argument type is Any\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3302,"character":44},"end":{"line":3302,"character":48}},"message":"Argument type is Any\n  인수가 \"sleep\" 함수의 \"delay\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3305,"character":54},"end":{"line":3305,"character":63}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3305,"character":54},"end":{"line":3305,"character":63}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_pin_diagnostic_production_identity\" 함수의 \"bot\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3333,"character":24},"end":{"line":3342,"character":74}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3347,"character":22},"end":{"line":3347,"character":31}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3347,"character":22},"end":{"line":3347,"character":39}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3347,"character":22},"end":{"line":3347,"character":53}},"message":"\"start_webhook\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3347,"character":32},"end":{"line":3347,"character":39}},"message":"\"updater\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3353,"character":36},"end":{"line":3353,"character":52}},"message":"\"ALL_TYPES\"의 형식을 부분적으로 알 수 없습니다.\n  ‘ALL_TYPES’의 유형이 ‘list[str] | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3353,"character":43},"end":{"line":3353,"character":52}},"message":"\"type[Any]\" 클래스의 \"ALL_TYPES\" 특성에 액세스할 수 없음\n  특성 \"ALL_TYPES\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3365,"character":41},"end":{"line":3365,"character":50}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3365,"character":41},"end":{"line":3365,"character":50}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3367,"character":26},"end":{"line":3367,"character":68}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3372,"character":23},"end":{"line":3372,"character":47}},"message":"\"_polling_error_task\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_polling_error_task’의 유형이 ‘Task[Unknown] | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3372,"character":56},"end":{"line":3372,"character":80}},"message":"\"_polling_error_task\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_polling_error_task’의 유형이 ‘Task[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3385,"character":22},"end":{"line":3385,"character":31}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3385,"character":22},"end":{"line":3385,"character":39}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3385,"character":22},"end":{"line":3385,"character":53}},"message":"\"start_polling\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3385,"character":32},"end":{"line":3385,"character":39}},"message":"\"updater\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3386,"character":36},"end":{"line":3386,"character":52}},"message":"\"ALL_TYPES\"의 형식을 부분적으로 알 수 없습니다.\n  ‘ALL_TYPES’의 유형이 ‘list[str] | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3386,"character":43},"end":{"line":3386,"character":52}},"message":"\"type[Any]\" 클래스의 \"ALL_TYPES\" 특성에 액세스할 수 없음\n  특성 \"ALL_TYPES\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3431,"character":30},"end":{"line":3431,"character":39}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3431,"character":30},"end":{"line":3431,"character":55}},"message":"\"set_my_commands\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3431,"character":40},"end":{"line":3431,"character":55}},"message":"\"set_my_commands\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3505,"character":8},"end":{"line":3505,"character":11}},"message":"\"bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3505,"character":14},"end":{"line":3505,"character":23}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3512,"character":18},"end":{"line":3512,"character":46}},"message":"\"set_my_short_description\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3520,"character":14},"end":{"line":3520,"character":24}},"message":"“disconnect“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3529,"character":12},"end":{"line":3529,"character":25}},"message":"Type of \"close\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3540,"character":8},"end":{"line":3540,"character":33}},"message":"\"pending_media_group_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pending_media_group_tasks’의 유형이 ‘list[Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3540,"character":41},"end":{"line":3540,"character":64}},"message":"\"_media_group_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_media_group_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3540,"character":41},"end":{"line":3540,"character":73}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict_values[str, Task[Unknown]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3541,"character":12},"end":{"line":3541,"character":16}},"message":"\"task\"의 형식을 부분적으로 알 수 없습니다.\n  ‘task’의 유형이 ‘Task[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3542,"character":12},"end":{"line":3542,"character":25}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3544,"character":12},"end":{"line":3544,"character":84}},"message":"호출 식의 결과가 ‘list[Unknown | BaseException]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3544,"character":34},"end":{"line":3544,"character":59}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"gather\" 함수의 \"coros_or_futures\" 매개 변수에 해당합니다.\n  인수 형식이 \"Task[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3545,"character":8},"end":{"line":3545,"character":31}},"message":"\"_media_group_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_media_group_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3548,"character":8},"end":{"line":3548,"character":43}},"message":"\"nutrition_generation_recovery_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘nutrition_generation_recovery_tasks’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3549,"character":12},"end":{"line":3549,"character":72}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | set[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3549,"character":66},"end":{"line":3549,"character":71}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"default\" 매개 변수에 해당합니다.\n  인수 형식이 \"set[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3551,"character":12},"end":{"line":3551,"character":16}},"message":"\"task\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3552,"character":12},"end":{"line":3552,"character":23}},"message":"\"cancel\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3554,"character":12},"end":{"line":3557,"character":13}},"message":"호출 식의 결과가 ‘list[Unknown | BaseException]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3555,"character":17},"end":{"line":3555,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"gather\" 함수의 \"coros_or_futures\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3559,"character":12},"end":{"line":3559,"character":53}},"message":"\"_nutrition_generation_recovery_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_nutrition_generation_recovery_tasks’의 유형이 ‘set[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3561,"character":8},"end":{"line":3561,"character":34}},"message":"\"nutrition_generation_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘nutrition_generation_tasks’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3562,"character":12},"end":{"line":3562,"character":63}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | set[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3562,"character":57},"end":{"line":3562,"character":62}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"default\" 매개 변수에 해당합니다.\n  인수 형식이 \"set[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3564,"character":12},"end":{"line":3564,"character":16}},"message":"\"task\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3565,"character":12},"end":{"line":3565,"character":23}},"message":"\"cancel\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3567,"character":12},"end":{"line":3570,"character":13}},"message":"호출 식의 결과가 ‘list[Unknown | BaseException]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3568,"character":17},"end":{"line":3568,"character":43}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"gather\" 함수의 \"coros_or_futures\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3572,"character":12},"end":{"line":3572,"character":44}},"message":"\"_nutrition_generation_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_nutrition_generation_tasks’의 유형이 ‘set[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3574,"character":11},"end":{"line":3574,"character":20}},"message":"\"_app\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_app’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3577,"character":19},"end":{"line":3577,"character":28}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3577,"character":19},"end":{"line":3577,"character":36}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3577,"character":41},"end":{"line":3577,"character":50}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3577,"character":41},"end":{"line":3577,"character":58}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3577,"character":41},"end":{"line":3577,"character":66}},"message":"\"running\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3578,"character":26},"end":{"line":3578,"character":35}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3578,"character":26},"end":{"line":3578,"character":43}},"message":"\"updater\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3578,"character":26},"end":{"line":3578,"character":48}},"message":"\"stop\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3579,"character":19},"end":{"line":3579,"character":28}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3579,"character":19},"end":{"line":3579,"character":36}},"message":"\"running\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3580,"character":26},"end":{"line":3580,"character":35}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3580,"character":26},"end":{"line":3580,"character":40}},"message":"\"stop\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3581,"character":22},"end":{"line":3581,"character":31}},"message":"\"_app\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3581,"character":22},"end":{"line":3581,"character":40}},"message":"\"shutdown\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3586,"character":12},"end":{"line":3586,"character":16}},"message":"\"task\"의 형식을 부분적으로 알 수 없습니다.\n  ‘task’의 유형이 ‘Task[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3586,"character":20},"end":{"line":3586,"character":51}},"message":"\"_pending_photo_batch_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_pending_photo_batch_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3588,"character":16},"end":{"line":3588,"character":29}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3589,"character":8},"end":{"line":3589,"character":39}},"message":"\"_pending_photo_batch_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_pending_photo_batch_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3598,"character":45},"end":{"line":3598,"character":53}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3618,"character":14},"end":{"line":3618,"character":18}},"message":"“send“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3622,"character":18},"end":{"line":3622,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3623,"character":18},"end":{"line":3623,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3623,"character":27},"end":{"line":3623,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3623,"character":37},"end":{"line":3623,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3626,"character":15},"end":{"line":3626,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3736,"character":28},"end":{"line":3736,"character":31}},"message":"\"msg\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3736,"character":40},"end":{"line":3736,"character":49}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3736,"character":40},"end":{"line":3736,"character":62}},"message":"\"send_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3739,"character":53},"end":{"line":3739,"character":64}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3750,"character":32},"end":{"line":3750,"character":35}},"message":"\"msg\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3750,"character":44},"end":{"line":3750,"character":53}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3750,"character":44},"end":{"line":3750,"character":66}},"message":"\"send_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3785,"character":51},"end":{"line":3785,"character":70}},"message":"Argument type is Any\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3793,"character":47},"end":{"line":3793,"character":66}},"message":"Argument type is Any\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3846,"character":28},"end":{"line":3846,"character":32}},"message":"Type of \"wait\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3848,"character":73},"end":{"line":3848,"character":77}},"message":"Argument type is Any\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3849,"character":48},"end":{"line":3849,"character":52}},"message":"Argument type is Any\n  인수가 \"sleep\" 함수의 \"delay\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3856,"character":45},"end":{"line":3856,"character":56}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3867,"character":16},"end":{"line":3867,"character":34}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3867,"character":39},"end":{"line":3867,"character":53}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3867,"character":39},"end":{"line":3867,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3867,"character":43},"end":{"line":3867,"character":53}},"message":"\"message_id\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3881,"character":27},"end":{"line":3881,"character":66}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"message_id\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3917,"character":18},"end":{"line":3917,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3917,"character":27},"end":{"line":3917,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3917,"character":37},"end":{"line":3917,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3929,"character":20},"end":{"line":3929,"character":44}},"message":"\"_status_message_ids\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_status_message_ids’의 유형이 ‘Dict[tuple[Unknown, ...], str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3929,"character":20},"end":{"line":3929,"character":48}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: tuple[Unknown, ...], default: None = None, /) -> (str | None), (key: tuple[Unknown, ...], default: str, /) -> str, (key: tuple[Unknown, ...], default: _T@get, /) -> (str | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3936,"character":20},"end":{"line":3936,"character":44}},"message":"\"_status_message_ids\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_status_message_ids’의 유형이 ‘Dict[tuple[Unknown, ...], str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3939,"character":12},"end":{"line":3939,"character":36}},"message":"\"_status_message_ids\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_status_message_ids’의 유형이 ‘Dict[tuple[Unknown, ...], str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3939,"character":12},"end":{"line":3939,"character":40}},"message":"\"pop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pop’의 유형이 ‘Overload[(key: tuple[Unknown, ...], /) -> str, (key: tuple[Unknown, ...], default: str, /) -> str, (key: tuple[Unknown, ...], default: _T@pop, /) -> (str | _T@pop)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3939,"character":12},"end":{"line":3939,"character":51}},"message":"호출 식의 결과가 ‘str | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3942,"character":12},"end":{"line":3942,"character":36}},"message":"\"_status_message_ids\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_status_message_ids’의 유형이 ‘Dict[tuple[Unknown, ...], str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3945,"character":14},"end":{"line":3945,"character":26}},"message":"“edit_message“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3952,"character":18},"end":{"line":3952,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3952,"character":27},"end":{"line":3952,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3952,"character":37},"end":{"line":3952,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":3964,"character":15},"end":{"line":3964,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4001,"character":22},"end":{"line":4001,"character":31}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4001,"character":22},"end":{"line":4001,"character":49}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4005,"character":41},"end":{"line":4005,"character":52}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4018,"character":22},"end":{"line":4018,"character":31}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4018,"character":22},"end":{"line":4018,"character":49}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4054,"character":26},"end":{"line":4054,"character":35}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4054,"character":26},"end":{"line":4054,"character":53}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4109,"character":18},"end":{"line":4109,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4109,"character":27},"end":{"line":4109,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4109,"character":37},"end":{"line":4109,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4141,"character":26},"end":{"line":4141,"character":35}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4141,"character":26},"end":{"line":4141,"character":53}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4141,"character":36},"end":{"line":4141,"character":53}},"message":"\"edit_message_text\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4145,"character":45},"end":{"line":4145,"character":56}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4150,"character":28},"end":{"line":4151,"character":68}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4154,"character":30},"end":{"line":4154,"character":39}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4154,"character":30},"end":{"line":4154,"character":57}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4154,"character":40},"end":{"line":4154,"character":57}},"message":"\"edit_message_text\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4160,"character":22},"end":{"line":4160,"character":31}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4160,"character":22},"end":{"line":4160,"character":49}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4160,"character":32},"end":{"line":4160,"character":49}},"message":"\"edit_message_text\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4207,"character":20},"end":{"line":4207,"character":28}},"message":"\"sent_msg\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4207,"character":37},"end":{"line":4207,"character":46}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4207,"character":37},"end":{"line":4207,"character":59}},"message":"\"send_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4207,"character":47},"end":{"line":4207,"character":59}},"message":"\"send_message\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4210,"character":45},"end":{"line":4210,"character":56}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4230,"character":28},"end":{"line":4230,"character":36}},"message":"\"sent_msg\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4230,"character":45},"end":{"line":4230,"character":54}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4230,"character":45},"end":{"line":4230,"character":67}},"message":"\"send_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4230,"character":55},"end":{"line":4230,"character":67}},"message":"\"send_message\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4284,"character":33},"end":{"line":4284,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4300,"character":14},"end":{"line":4300,"character":28}},"message":"“delete_message“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4310,"character":15},"end":{"line":4310,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4313,"character":18},"end":{"line":4313,"character":27}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4313,"character":18},"end":{"line":4313,"character":42}},"message":"\"delete_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4325,"character":8},"end":{"line":4325,"character":32}},"message":"“supports_draft_streaming“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4327,"character":19},"end":{"line":4327,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4328,"character":18},"end":{"line":4328,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4328,"character":27},"end":{"line":4328,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4328,"character":37},"end":{"line":4328,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4340,"character":15},"end":{"line":4340,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4340,"character":40},"end":{"line":4340,"character":49}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4340,"character":40},"end":{"line":4340,"character":49}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"hasattr\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4344,"character":14},"end":{"line":4344,"character":24}},"message":"“send_draft“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4349,"character":18},"end":{"line":4349,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4349,"character":27},"end":{"line":4349,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4349,"character":37},"end":{"line":4349,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4363,"character":15},"end":{"line":4363,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4375,"character":23},"end":{"line":4375,"character":32}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4375,"character":23},"end":{"line":4375,"character":32}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"hasattr\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4395,"character":20},"end":{"line":4395,"character":24}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4395,"character":30},"end":{"line":4395,"character":33}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4401,"character":49},"end":{"line":4401,"character":60}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4406,"character":16},"end":{"line":4406,"character":18}},"message":"\"ok\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4406,"character":27},"end":{"line":4406,"character":36}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4406,"character":27},"end":{"line":4406,"character":55}},"message":"\"send_message_draft\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4420,"character":24},"end":{"line":4421,"character":65}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4433,"character":14},"end":{"line":4433,"character":48}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4433,"character":57},"end":{"line":4433,"character":63}},"message":"매개 변수 \"kwargs\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4433,"character":57},"end":{"line":4433,"character":63}},"message":"‘kwargs’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4443,"character":15},"end":{"line":4443,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4446,"character":8},"end":{"line":4446,"character":25}},"message":"\"message_thread_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message_thread_id’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4446,"character":28},"end":{"line":4446,"character":38}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Unknown | None), (key: str, default: Unknown, /) -> Unknown, (key: str, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4448,"character":19},"end":{"line":4448,"character":57}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4448,"character":25},"end":{"line":4448,"character":34}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4448,"character":25},"end":{"line":4448,"character":47}},"message":"\"send_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4458,"character":20},"end":{"line":4458,"character":37}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4460,"character":16},"end":{"line":4460,"character":28}},"message":"\"retry_kwargs\"의 형식을 부분적으로 알 수 없습니다.\n  ‘retry_kwargs’의 유형이 ‘dict[str, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4460,"character":36},"end":{"line":4460,"character":42}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"map\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[str, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4461,"character":16},"end":{"line":4461,"character":32}},"message":"\"pop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pop’의 유형이 ‘Overload[(key: str, /) -> Unknown, (key: str, default: Unknown, /) -> Unknown, (key: str, default: _T@pop, /) -> (Unknown | _T@pop)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4462,"character":23},"end":{"line":4462,"character":67}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4462,"character":29},"end":{"line":4462,"character":38}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4462,"character":29},"end":{"line":4462,"character":51}},"message":"\"send_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4464,"character":14},"end":{"line":4464,"character":40}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4464,"character":49},"end":{"line":4464,"character":55}},"message":"매개 변수 \"kwargs\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4464,"character":49},"end":{"line":4464,"character":55}},"message":"‘kwargs’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4466,"character":15},"end":{"line":4466,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4468,"character":11},"end":{"line":4468,"character":21}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Unknown | None), (key: str, default: Unknown, /) -> Unknown, (key: str, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4470,"character":15},"end":{"line":4470,"character":53}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4470,"character":21},"end":{"line":4470,"character":30}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4470,"character":21},"end":{"line":4470,"character":43}},"message":"\"send_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4472,"character":14},"end":{"line":4472,"character":45}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4472,"character":54},"end":{"line":4472,"character":60}},"message":"매개 변수 \"kwargs\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4472,"character":54},"end":{"line":4472,"character":60}},"message":"‘kwargs’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4474,"character":15},"end":{"line":4474,"character":62}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4474,"character":21},"end":{"line":4474,"character":52}},"message":"\"_send_message_strict_topic\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_strict_topic’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4474,"character":55},"end":{"line":4474,"character":61}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_message_strict_topic\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4478,"character":8},"end":{"line":4478,"character":19}},"message":"\"session_key\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedParameter","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedParameter"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedParameter"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4479,"character":18},"end":{"line":4479,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4479,"character":27},"end":{"line":4479,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4479,"character":37},"end":{"line":4479,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4486,"character":15},"end":{"line":4486,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4491,"character":12},"end":{"line":4491,"character":20}},"message":"\"keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘keyboard’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4491,"character":23},"end":{"line":4496,"character":14}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4491,"character":44},"end":{"line":4496,"character":13}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[Unknown | InlineKeyboardButton]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4493,"character":20},"end":{"line":4493,"character":82}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4494,"character":20},"end":{"line":4494,"character":81}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4499,"character":12},"end":{"line":4499,"character":15}},"message":"\"msg\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4499,"character":24},"end":{"line":4499,"character":63}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4502,"character":37},"end":{"line":4502,"character":48}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4505,"character":18},"end":{"line":4511,"character":17}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4512,"character":18},"end":{"line":4512,"character":45}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4514,"character":59},"end":{"line":4514,"character":73}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4514,"character":59},"end":{"line":4514,"character":73}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4522,"character":18},"end":{"line":4522,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4522,"character":27},"end":{"line":4522,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4522,"character":37},"end":{"line":4522,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4529,"character":15},"end":{"line":4529,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4548,"character":21},"end":{"line":4548,"character":38}},"message":"Type annotation for attribute `_approval_counter` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4551,"character":12},"end":{"line":4551,"character":20}},"message":"\"keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘keyboard’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4551,"character":23},"end":{"line":4560,"character":14}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4551,"character":44},"end":{"line":4560,"character":13}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[Unknown | InlineKeyboardButton]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4553,"character":20},"end":{"line":4553,"character":96}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4554,"character":20},"end":{"line":4554,"character":96}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4557,"character":20},"end":{"line":4557,"character":94}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4558,"character":20},"end":{"line":4558,"character":90}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4562,"character":20},"end":{"line":4562,"character":24}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4562,"character":30},"end":{"line":4562,"character":33}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4565,"character":40},"end":{"line":4565,"character":44}},"message":"\"HTML\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4581,"character":12},"end":{"line":4581,"character":15}},"message":"\"msg\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4581,"character":24},"end":{"line":4581,"character":63}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4581,"character":66},"end":{"line":4581,"character":72}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4586,"character":59},"end":{"line":4586,"character":73}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4586,"character":59},"end":{"line":4586,"character":73}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4591,"character":14},"end":{"line":4591,"character":32}},"message":"“send_slash_confirm“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4593,"character":35},"end":{"line":4593,"character":43}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4593,"character":44},"end":{"line":4593,"character":48}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4593,"character":54},"end":{"line":4593,"character":57}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4596,"character":15},"end":{"line":4596,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4602,"character":12},"end":{"line":4602,"character":20}},"message":"\"keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘keyboard’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4602,"character":23},"end":{"line":4610,"character":14}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4602,"character":44},"end":{"line":4610,"character":13}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[Unknown | InlineKeyboardButton]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4604,"character":20},"end":{"line":4604,"character":97}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4605,"character":20},"end":{"line":4605,"character":102}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4608,"character":20},"end":{"line":4608,"character":93}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4613,"character":20},"end":{"line":4613,"character":24}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4613,"character":30},"end":{"line":4613,"character":33}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4616,"character":40},"end":{"line":4616,"character":51}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4632,"character":12},"end":{"line":4632,"character":15}},"message":"\"msg\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4632,"character":24},"end":{"line":4632,"character":63}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4632,"character":66},"end":{"line":4632,"character":72}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4634,"character":59},"end":{"line":4634,"character":73}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4634,"character":59},"end":{"line":4634,"character":73}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함���의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4639,"character":14},"end":{"line":4639,"character":26}},"message":"“send_clarify“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4643,"character":8},"end":{"line":4643,"character":15}},"message":"매개 변수 \"choices\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"list[Unknown] | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4643,"character":17},"end":{"line":4643,"character":25}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4643,"character":26},"end":{"line":4643,"character":30}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4646,"character":18},"end":{"line":4646,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4646,"character":27},"end":{"line":4646,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4646,"character":37},"end":{"line":4646,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4659,"character":15},"end":{"line":4659,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4672,"character":49},"end":{"line":4672,"character":50}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4673,"character":27},"end":{"line":4673,"character":28}},"message":"\"c\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4673,"character":42},"end":{"line":4673,"character":49}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4677,"character":20},"end":{"line":4677,"character":24}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4677,"character":30},"end":{"line":4677,"character":33}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4680,"character":40},"end":{"line":4680,"character":44}},"message":"\"HTML\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4688,"character":37},"end":{"line":4688,"character":44}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4689,"character":20},"end":{"line":4689,"character":31}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4690,"character":24},"end":{"line":4693,"character":25}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4695,"character":16},"end":{"line":4695,"character":27}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4696,"character":20},"end":{"line":4699,"character":21}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4701,"character":41},"end":{"line":4701,"character":67}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4701,"character":62},"end":{"line":4701,"character":66}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4714,"character":12},"end":{"line":4714,"character":15}},"message":"\"msg\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4714,"character":24},"end":{"line":4714,"character":63}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4714,"character":66},"end":{"line":4714,"character":72}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4716,"character":59},"end":{"line":4716,"character":73}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4716,"character":59},"end":{"line":4716,"character":73}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4724,"character":8},"end":{"line":4724,"character":17}},"message":"매개 변수 \"providers\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4724,"character":19},"end":{"line":4724,"character":23}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4728,"character":8},"end":{"line":4728,"character":25}},"message":"매개 변수 \"on_model_selected\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4728,"character":8},"end":{"line":4728,"character":25}},"message":"‘on_model_selected’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4729,"character":18},"end":{"line":4729,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4729,"character":27},"end":{"line":4729,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4729,"character":37},"end":{"line":4729,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4736,"character":15},"end":{"line":4736,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4740,"character":45},"end":{"line":4740,"character":54}},"message":"형식 \"(provider_id: str) -> str\"을 선언된 형식 \"(slug: Unknown) -> Unknown\"에 할당할 수 없습니다.\n  형식 \"(provider_id: str) -> str\"은 형식 \"(slug: Unknown) -> Unknown\"에 할당할 수 없습니다.\n    매개 변수 이름 불일치: \"slug\" 및 \"provider_id\"","severity":1,"code":"reportAssignmentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAssignmentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4742,"character":16},"end":{"line":4742,"character":25}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4742,"character":26},"end":{"line":4742,"character":30}},"message":"매개 변수 \"slug\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4742,"character":26},"end":{"line":4742,"character":30}},"message":"‘slug’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4743,"character":23},"end":{"line":4743,"character":27}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4747,"character":12},"end":{"line":4747,"character":20}},"message":"\"keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘keyboard’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4747,"character":23},"end":{"line":4747,"character":52}},"message":"\"_build_provider_keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_build_provider_keyboard’의 유형이 ‘(providers: list[Unknown]) -> (Unknown | InlineKeyboardMarkup)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4761,"character":12},"end":{"line":4761,"character":15}},"message":"\"msg\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4761,"character":24},"end":{"line":4761,"character":63}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4764,"character":37},"end":{"line":4764,"character":48}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4767,"character":18},"end":{"line":4773,"character":17}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4774,"character":18},"end":{"line":4774,"character":45}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4778,"character":12},"end":{"line":4778,"character":36}},"message":"\"_model_picker_state\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_model_picker_state’의 유형이 ‘Dict[str, dict[Unknown, Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4779,"character":26},"end":{"line":4779,"character":40}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4787,"character":59},"end":{"line":4787,"character":73}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4787,"character":59},"end":{"line":4787,"character":73}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4792,"character":4},"end":{"line":4792,"character":20}},"message":"Type annotation for attribute `_MODEL_PAGE_SIZE` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4794,"character":8},"end":{"line":4794,"character":32}},"message":"반환 형식 \"Unknown | InlineKeyboardMarkup\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4794,"character":39},"end":{"line":4794,"character":48}},"message":"매개 변수 \"providers\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4794,"character":50},"end":{"line":4794,"character":54}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4805,"character":42},"end":{"line":4805,"character":57}},"message":"\"group_providers\"의 형식을 부분적으로 알 수 없습니다.\n  ‘group_providers’의 유형이 ‘(slugs: Unknown) -> list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4809,"character":8},"end":{"line":4809,"character":15}},"message":"\"by_slug\"의 형식을 부분적으로 알 수 없습니다.\n  ‘by_slug’의 유형이 ‘dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4809,"character":19},"end":{"line":4809,"character":24}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4809,"character":40},"end":{"line":4809,"character":41}},"message":"\"p\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4811,"character":12},"end":{"line":4811,"character":28}},"message":"반환 형식 \"Unknown | InlineKeyboardButton\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4811,"character":29},"end":{"line":4811,"character":30}},"message":"매개 변수 \"p\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4811,"character":29},"end":{"line":4811,"character":30}},"message":"‘p’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4812,"character":12},"end":{"line":4812,"character":17}},"message":"\"count\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4812,"character":20},"end":{"line":4812,"character":25}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4812,"character":46},"end":{"line":4812,"character":51}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4812,"character":46},"end":{"line":4812,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4814,"character":15},"end":{"line":4814,"character":20}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4816,"character":19},"end":{"line":4816,"character":79}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4816,"character":19},"end":{"line":4816,"character":79}},"message":"반환 형식 \"Unknown | InlineKeyboardButton\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4818,"character":8},"end":{"line":4818,"character":15}},"message":"\"buttons\"의 형식을 부분적으로 알 수 없습니다.\n  ‘buttons’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4818,"character":17},"end":{"line":4818,"character":21}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4820,"character":16},"end":{"line":4820,"character":19}},"message":"\"row\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4820,"character":40},"end":{"line":4820,"character":45}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4820,"character":58},"end":{"line":4820,"character":59}},"message":"\"p\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4822,"character":20},"end":{"line":4822,"character":27}},"message":"\"members\"의 형식을 부분적으로 알 수 없습니다.\n  ‘members’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4822,"character":46},"end":{"line":4822,"character":47}},"message":"\"m\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4824,"character":24},"end":{"line":4824,"character":29}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4824,"character":24},"end":{"line":4824,"character":88}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"sum\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"Generator[Unknown, None, None]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4824,"character":50},"end":{"line":4824,"character":55}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4824,"character":50},"end":{"line":4824,"character":69}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4824,"character":76},"end":{"line":4824,"character":77}},"message":"\"m\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4827,"character":27},"end":{"line":4827,"character":32}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4827,"character":27},"end":{"line":4827,"character":63}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"any\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"Generator[Unknown, None, None]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4827,"character":51},"end":{"line":4827,"character":52}},"message":"\"m\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4829,"character":20},"end":{"line":4829,"character":34}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4830,"character":24},"end":{"line":4830,"character":91}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4833,"character":20},"end":{"line":4833,"character":21}},"message":"\"p\"의 형식을 부분적으로 알 수 없습니다.\n  ‘p’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4833,"character":24},"end":{"line":4833,"character":35}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4833,"character":36},"end":{"line":4833,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4835,"character":24},"end":{"line":4835,"character":38}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4835,"character":56},"end":{"line":4835,"character":57}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_provider_button\" 함수의 \"p\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4837,"character":16},"end":{"line":4837,"character":17}},"message":"\"p\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4838,"character":16},"end":{"line":4838,"character":30}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4838,"character":48},"end":{"line":4838,"character":49}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_provider_button\" 함수의 \"p\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4840,"character":8},"end":{"line":4840,"character":12}},"message":"\"rows\"의 형식을 부분적으로 알 수 없습니다.\n  ‘rows’의 유형이 ‘list[list[Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4840,"character":57},"end":{"line":4840,"character":64}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4841,"character":8},"end":{"line":4841,"character":19}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: list[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4841,"character":21},"end":{"line":4841,"character":73}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4842,"character":15},"end":{"line":4842,"character":41}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4842,"character":15},"end":{"line":4842,"character":41}},"message":"반환 형식 \"Unknown | InlineKeyboardMarkup\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4842,"character":36},"end":{"line":4842,"character":40}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[Unknown]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4844,"character":8},"end":{"line":4844,"character":29}},"message":"반환 형식 \"tuple[Unknown, ...]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4844,"character":36},"end":{"line":4844,"character":42}},"message":"매개 변수 \"models\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4844,"character":44},"end":{"line":4844,"character":48}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4844,"character":64},"end":{"line":4844,"character":69}},"message":"‘tuple’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4847,"character":20},"end":{"line":4847,"character":26}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4853,"character":8},"end":{"line":4853,"character":19}},"message":"\"page_models\"의 형식을 부분적으로 알 수 없습니다.\n  ‘page_models’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4855,"character":8},"end":{"line":4855,"character":15}},"message":"\"buttons\"의 형식을 부분적으로 알 수 없습니다.\n  ‘buttons’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4855,"character":17},"end":{"line":4855,"character":21}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4856,"character":15},"end":{"line":4856,"character":23}},"message":"\"model_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4856,"character":37},"end":{"line":4856,"character":48}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4858,"character":12},"end":{"line":4858,"character":17}},"message":"\"short\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4858,"character":20},"end":{"line":4858,"character":34}},"message":"\"split\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4859,"character":19},"end":{"line":4859,"character":24}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4860,"character":16},"end":{"line":4860,"character":21}},"message":"\"short\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4861,"character":12},"end":{"line":4861,"character":26}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4862,"character":16},"end":{"line":4862,"character":74}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4862,"character":37},"end":{"line":4862,"character":42}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4865,"character":8},"end":{"line":4865,"character":12}},"message":"\"rows\"의 형식을 부분적으로 알 수 없습니다.\n  ‘rows’의 유형이 ‘list[list[Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4865,"character":57},"end":{"line":4865,"character":64}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4869,"character":12},"end":{"line":4869,"character":15}},"message":"\"nav\"의 형식을 부분적으로 알 수 없습니다.\n  ‘nav’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4869,"character":17},"end":{"line":4869,"character":21}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4871,"character":16},"end":{"line":4871,"character":26}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4871,"character":27},"end":{"line":4871,"character":89}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4872,"character":12},"end":{"line":4872,"character":22}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4872,"character":23},"end":{"line":4872,"character":97}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4874,"character":16},"end":{"line":4874,"character":26}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4874,"character":27},"end":{"line":4874,"character":89}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4875,"character":12},"end":{"line":4875,"character":23}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: list[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4877,"character":8},"end":{"line":4877,"character":19}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: list[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4878,"character":12},"end":{"line":4878,"character":62}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4879,"character":12},"end":{"line":4879,"character":64}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4883,"character":15},"end":{"line":4883,"character":41}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4883,"character":15},"end":{"line":4883,"character":52}},"message":"반환 형식 \"tuple[Unknown | InlineKeyboardMarkup, str]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4883,"character":36},"end":{"line":4883,"character":40}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[Unknown]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4886,"character":14},"end":{"line":4886,"character":19}},"message":"매개 변수 \"query\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4886,"character":14},"end":{"line":4886,"character":19}},"message":"‘query’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4889,"character":8},"end":{"line":4889,"character":13}},"message":"\"state\"의 형식을 부분적으로 알 수 없습니다.\n  ‘state’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4889,"character":16},"end":{"line":4889,"character":40}},"message":"\"_model_picker_state\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_model_picker_state’의 유형이 ‘Dict[str, dict[Unknown, Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4889,"character":16},"end":{"line":4889,"character":44}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (dict[Unknown, Unknown] | None), (key: str, default: dict[Unknown, Unknown], /) -> dict[Unknown, Unknown], (key: str, default: _T@get, /) -> (dict[Unknown, Unknown] | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4891,"character":18},"end":{"line":4891,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4895,"character":45},"end":{"line":4895,"character":54}},"message":"형식 \"(provider_id: str) -> str\"을 선언된 형식 \"(slug: Unknown) -> Unknown\"에 할당할 수 없습니다.\n  형식 \"(provider_id: str) -> str\"은 형식 \"(slug: Unknown) -> Unknown\"에 할당할 수 없습니다.\n    매개 변수 이름 불일치: \"slug\" 및 \"provider_id\"","severity":1,"code":"reportAssignmentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAssignmentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4897,"character":16},"end":{"line":4897,"character":25}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4897,"character":26},"end":{"line":4897,"character":30}},"message":"매개 변수 \"slug\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4897,"character":26},"end":{"line":4897,"character":30}},"message":"‘slug’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4898,"character":23},"end":{"line":4898,"character":27}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4903,"character":12},"end":{"line":4903,"character":20}},"message":"\"provider\"의 형식을 부분적으로 알 수 없습니다.\n  ‘provider’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4904,"character":16},"end":{"line":4904,"character":77}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"next\" 함수의 \"i\" 매개 변수에 해당합니다.\n  인수 형식이 \"Generator[Unknown, None, None]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4904,"character":23},"end":{"line":4904,"character":24}},"message":"\"p\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4908,"character":22},"end":{"line":4908,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4911,"character":12},"end":{"line":4911,"character":18}},"message":"\"models\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4911,"character":21},"end":{"line":4911,"character":33}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4913,"character":46},"end":{"line":4913,"character":58}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4917,"character":12},"end":{"line":4917,"character":20}},"message":"\"keyboard\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4917,"character":22},"end":{"line":4917,"character":31}},"message":"\"page_info\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4917,"character":34},"end":{"line":4917,"character":60}},"message":"\"_build_model_keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_build_model_keyboard’의 유형이 ‘(models: list[Unknown], page: int) -> tuple[Unknown, ...]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4917,"character":61},"end":{"line":4917,"character":67}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_model_keyboard\" 함수의 \"models\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4919,"character":12},"end":{"line":4919,"character":17}},"message":"\"pname\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4919,"character":20},"end":{"line":4919,"character":32}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4920,"character":12},"end":{"line":4920,"character":17}},"message":"\"total\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4920,"character":20},"end":{"line":4920,"character":32}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4920,"character":53},"end":{"line":4920,"character":59}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4921,"character":24},"end":{"line":4921,"character":30}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4924,"character":18},"end":{"line":4924,"character":41}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4932,"character":37},"end":{"line":4932,"character":48}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4935,"character":18},"end":{"line":4935,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4942,"character":22},"end":{"line":4942,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4945,"character":12},"end":{"line":4945,"character":18}},"message":"\"models\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4945,"character":21},"end":{"line":4945,"character":30}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4948,"character":12},"end":{"line":4948,"character":20}},"message":"\"keyboard\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4948,"character":22},"end":{"line":4948,"character":31}},"message":"\"page_info\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4948,"character":34},"end":{"line":4948,"character":60}},"message":"\"_build_model_keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_build_model_keyboard’의 유형이 ‘(models: list[Unknown], page: int) -> tuple[Unknown, ...]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4948,"character":61},"end":{"line":4948,"character":67}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_model_keyboard\" 함수의 \"models\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4950,"character":12},"end":{"line":4950,"character":17}},"message":"\"pname\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4950,"character":20},"end":{"line":4950,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4951,"character":12},"end":{"line":4951,"character":25}},"message":"\"provider_slug\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4951,"character":28},"end":{"line":4951,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4952,"character":12},"end":{"line":4952,"character":20}},"message":"\"provider\"의 형식을 부분적으로 알 수 없습니다.\n  ‘provider’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4953,"character":16},"end":{"line":4953,"character":77}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"next\" 함수의 \"i\" 매개 변수에 해당합니다.\n  인수 형식이 \"Generator[Unknown, None, None]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4953,"character":23},"end":{"line":4953,"character":24}},"message":"\"p\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4956,"character":12},"end":{"line":4956,"character":17}},"message":"\"total\"의 형식을 부분적으로 알 수 없습니다.\n  ‘total’의 유형이 ‘Unknown | int’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4956,"character":20},"end":{"line":4956,"character":32}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4956,"character":53},"end":{"line":4956,"character":59}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4956,"character":83},"end":{"line":4956,"character":89}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4957,"character":24},"end":{"line":4957,"character":30}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4960,"character":18},"end":{"line":4960,"character":41}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4968,"character":37},"end":{"line":4968,"character":48}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4971,"character":18},"end":{"line":4971,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4978,"character":22},"end":{"line":4978,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4981,"character":12},"end":{"line":4981,"character":22}},"message":"\"model_list\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4981,"character":25},"end":{"line":4981,"character":34}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4982,"character":37},"end":{"line":4982,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4983,"character":22},"end":{"line":4983,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4986,"character":12},"end":{"line":4986,"character":20}},"message":"\"model_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4987,"character":12},"end":{"line":4987,"character":25}},"message":"\"provider_slug\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4987,"character":28},"end":{"line":4987,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4988,"character":12},"end":{"line":4988,"character":20}},"message":"\"callback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘callback’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4988,"character":23},"end":{"line":4988,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4991,"character":22},"end":{"line":4991,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":4996,"character":16},"end":{"line":4996,"character":27}},"message":"\"result_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5003,"character":22},"end":{"line":5003,"character":45}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5004,"character":45},"end":{"line":5004,"character":56}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"format_message\" 함수의 \"content\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5005,"character":41},"end":{"line":5005,"character":52}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5010,"character":26},"end":{"line":5010,"character":49}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5017,"character":18},"end":{"line":5017,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5020,"character":12},"end":{"line":5020,"character":36}},"message":"\"_model_picker_state\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_model_picker_state’의 유형이 ‘Dict[str, dict[Unknown, Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5020,"character":12},"end":{"line":5020,"character":40}},"message":"\"pop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pop’의 유형이 ‘Overload[(key: str, /) -> dict[Unknown, Unknown], (key: str, default: dict[Unknown, Unknown], /) -> dict[Unknown, Unknown], (key: str, default: _T@pop, /) -> (dict[Unknown, Unknown] | _T@pop)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5020,"character":12},"end":{"line":5020,"character":55}},"message":"호출 식의 결과가 ‘dict[Unknown, Unknown] | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5027,"character":22},"end":{"line":5027,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5030,"character":12},"end":{"line":5030,"character":22}},"message":"\"model_list\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5030,"character":25},"end":{"line":5030,"character":34}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5031,"character":37},"end":{"line":5031,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5032,"character":22},"end":{"line":5032,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5035,"character":12},"end":{"line":5035,"character":20}},"message":"\"model_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5036,"character":12},"end":{"line":5036,"character":25}},"message":"\"provider_slug\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5036,"character":28},"end":{"line":5036,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5037,"character":12},"end":{"line":5037,"character":20}},"message":"\"callback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘callback’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5037,"character":23},"end":{"line":5037,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5040,"character":22},"end":{"line":5040,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5050,"character":20},"end":{"line":5050,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"model_name\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5051,"character":29},"end":{"line":5051,"character":42}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"provider\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5056,"character":16},"end":{"line":5056,"character":24}},"message":"\"keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘keyboard’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5056,"character":27},"end":{"line":5062,"character":18}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5056,"character":48},"end":{"line":5062,"character":17}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[Unknown | InlineKeyboardButton]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5057,"character":21},"end":{"line":5057,"character":85}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5059,"character":24},"end":{"line":5059,"character":74}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5060,"character":24},"end":{"line":5060,"character":76}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5063,"character":22},"end":{"line":5063,"character":45}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5067,"character":41},"end":{"line":5067,"character":52}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5070,"character":22},"end":{"line":5070,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5075,"character":16},"end":{"line":5075,"character":27}},"message":"\"result_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5083,"character":22},"end":{"line":5083,"character":45}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5084,"character":45},"end":{"line":5084,"character":56}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"format_message\" 함수의 \"content\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5085,"character":41},"end":{"line":5085,"character":52}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5091,"character":26},"end":{"line":5091,"character":49}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5098,"character":18},"end":{"line":5098,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5103,"character":12},"end":{"line":5103,"character":36}},"message":"\"_model_picker_state\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_model_picker_state’의 유형이 ‘Dict[str, dict[Unknown, Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5103,"character":12},"end":{"line":5103,"character":40}},"message":"\"pop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pop’의 유형이 ‘Overload[(key: str, /) -> dict[Unknown, Unknown], (key: str, default: dict[Unknown, Unknown], /) -> dict[Unknown, Unknown], (key: str, default: _T@pop, /) -> (dict[Unknown, Unknown] | _T@pop)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5103,"character":12},"end":{"line":5103,"character":55}},"message":"호출 식의 결과가 ‘dict[Unknown, Unknown] | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5114,"character":12},"end":{"line":5114,"character":19}},"message":"\"by_slug\"의 형식을 부분적으로 알 수 없습니다.\n  ‘by_slug’의 유형이 ‘dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5114,"character":40},"end":{"line":5114,"character":41}},"message":"\"p\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5115,"character":12},"end":{"line":5115,"character":19}},"message":"\"members\"의 형식을 부분적으로 알 수 없습니다.\n  ‘members’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5117,"character":22},"end":{"line":5117,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5121,"character":16},"end":{"line":5121,"character":17}},"message":"\"p\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5122,"character":16},"end":{"line":5122,"character":21}},"message":"\"count\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5122,"character":24},"end":{"line":5122,"character":29}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5122,"character":50},"end":{"line":5122,"character":55}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5122,"character":50},"end":{"line":5122,"character":69}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5124,"character":19},"end":{"line":5124,"character":24}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5126,"character":16},"end":{"line":5126,"character":30}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5127,"character":20},"end":{"line":5127,"character":80}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5129,"character":12},"end":{"line":5129,"character":16}},"message":"\"rows\"의 형식을 부분적으로 알 수 없습니다.\n  ‘rows’의 유형이 ‘list[list[Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5129,"character":61},"end":{"line":5129,"character":68}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5130,"character":12},"end":{"line":5130,"character":23}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: list[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5131,"character":16},"end":{"line":5131,"character":66}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5132,"character":16},"end":{"line":5132,"character":68}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5134,"character":12},"end":{"line":5134,"character":20}},"message":"\"keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘keyboard’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5134,"character":23},"end":{"line":5134,"character":49}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5134,"character":44},"end":{"line":5134,"character":48}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[Unknown]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5136,"character":18},"end":{"line":5136,"character":41}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5144,"character":37},"end":{"line":5144,"character":48}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5147,"character":18},"end":{"line":5147,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5151,"character":12},"end":{"line":5151,"character":20}},"message":"\"keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘keyboard’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5151,"character":23},"end":{"line":5151,"character":52}},"message":"\"_build_provider_keyboard\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_build_provider_keyboard’의 유형이 ‘(providers: list[Unknown]) -> (Unknown | InlineKeyboardMarkup)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5151,"character":53},"end":{"line":5151,"character":71}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_provider_keyboard\" 함수의 \"providers\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5154,"character":16},"end":{"line":5154,"character":30}},"message":"\"provider_label\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5154,"character":43},"end":{"line":5154,"character":68}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"get_label\" 함수의 \"slug\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5156,"character":16},"end":{"line":5156,"character":30}},"message":"\"provider_label\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5158,"character":18},"end":{"line":5158,"character":41}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5167,"character":37},"end":{"line":5167,"character":48}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5170,"character":18},"end":{"line":5170,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5174,"character":12},"end":{"line":5174,"character":36}},"message":"\"_model_picker_state\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_model_picker_state’의 유형이 ‘Dict[str, dict[Unknown, Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5174,"character":12},"end":{"line":5174,"character":40}},"message":"\"pop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pop’의 유형이 ‘Overload[(key: str, /) -> dict[Unknown, Unknown], (key: str, default: dict[Unknown, Unknown], /) -> dict[Unknown, Unknown], (key: str, default: _T@pop, /) -> (dict[Unknown, Unknown] | _T@pop)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5174,"character":12},"end":{"line":5174,"character":55}},"message":"호출 식의 결과가 ‘dict[Unknown, Unknown] | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5175,"character":18},"end":{"line":5175,"character":41}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5179,"character":18},"end":{"line":5179,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5183,"character":18},"end":{"line":5183,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5185,"character":39},"end":{"line":5185,"character":47}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5195,"character":63},"end":{"line":5195,"character":69}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"config\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5213,"character":29},"end":{"line":5213,"character":38}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5224,"character":16},"end":{"line":5224,"character":29}},"message":"\"raw_nutrition\"의 형식을 부분적으로 알 수 없습니다.\n  ‘raw_nutrition’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5224,"character":32},"end":{"line":5224,"character":41}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5226,"character":20},"end":{"line":5226,"character":29}},"message":"\"root_hint\"의 형식을 부분적으로 알 수 없습니다.\n  ‘root_hint’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5226,"character":32},"end":{"line":5226,"character":49}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5229,"character":50},"end":{"line":5229,"character":65}},"message":"\"get_hermes_home\"은(는) \"hermes_cli.config\" 모듈에서 내보내지지 않습니다.\n  대신 \"hermes_constants\"에서 가져오기","severity":1,"code":"reportPrivateLocalImportUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateLocalImportUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5235,"character":34},"end":{"line":5235,"character":43}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Path | str | Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5250,"character":43},"end":{"line":5250,"character":52}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Path | str | Unknown | Any | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5278,"character":37},"end":{"line":5278,"character":72}},"message":"불필요한 isinstance 호출입니다. \"Dict[str, Any]\"은(는) 항상 \"dict[Unknown, Unknown]\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5284,"character":32},"end":{"line":5284,"character":36}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5285,"character":33},"end":{"line":5285,"character":37}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5292,"character":27},"end":{"line":5292,"character":39}},"message":"Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5304,"character":31},"end":{"line":5304,"character":40}},"message":"Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5306,"character":20},"end":{"line":5306,"character":30}},"message":"\"chat_entry\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5308,"character":39},"end":{"line":5308,"character":49}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5310,"character":30},"end":{"line":5310,"character":44}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5311,"character":29},"end":{"line":5311,"character":43}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5313,"character":39},"end":{"line":5313,"character":49}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Mapping[Unknown, object]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5315,"character":24},"end":{"line":5315,"character":29}},"message":"\"topic\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5316,"character":65},"end":{"line":5316,"character":74}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5317,"character":43},"end":{"line":5317,"character":48}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Mapping[Unknown, object]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5319,"character":36},"end":{"line":5319,"character":45}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5346,"character":39},"end":{"line":5346,"character":50}},"message":"Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5349,"character":31},"end":{"line":5349,"character":42}},"message":"Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5359,"character":12},"end":{"line":5359,"character":42}},"message":"\"validate_review_space_disjoint\"은(는) \"gateway.platforms.nutrition_coaching\" 모듈에서 내보내지지 않습니다.\n  대신 \"checkin_cli.customer_admin\"에서 가져오기","severity":1,"code":"reportPrivateLocalImportUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateLocalImportUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5365,"character":8},"end":{"line":5369,"character":9}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5366,"character":12},"end":{"line":5366,"character":18}},"message":"Argument type is Any\n  인수가 \"validate_review_space_disjoint\" 함수의 \"review_operator\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5373,"character":8},"end":{"line":5373,"character":12}},"message":"매개 변수 \"spec\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5373,"character":8},"end":{"line":5373,"character":12}},"message":"‘spec’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5374,"character":8},"end":{"line":5374,"character":17}},"message":"매개 변수 \"authority\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5374,"character":8},"end":{"line":5374,"character":17}},"message":"‘authority’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5388,"character":17},"end":{"line":5388,"character":21}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"bootstrap_diagnostic_isolation\" 함수의 \"spec\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5389,"character":22},"end":{"line":5389,"character":31}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"bootstrap_diagnostic_isolation\" 함수의 \"authority\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5395,"character":13},"end":{"line":5395,"character":41}},"message":"Type annotation for attribute `_diagnostic_isolation_fenced` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5396,"character":13},"end":{"line":5396,"character":45}},"message":"Type annotation for attribute `_diagnostic_isolation_controller` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5397,"character":13},"end":{"line":5397,"character":40}},"message":"Type annotation for attribute `_diagnostic_control_service` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5398,"character":13},"end":{"line":5398,"character":39}},"message":"Type annotation for attribute `_diagnostic_isolation_host` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5429,"character":24},"end":{"line":5429,"character":32}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"coordinator\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5430,"character":40},"end":{"line":5430,"character":55}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"review_operator\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5431,"character":45},"end":{"line":5431,"character":53}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5433,"character":36},"end":{"line":5433,"character":44}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5449,"character":25},"end":{"line":5449,"character":51}},"message":"Type annotation for attribute `_dual_coach_review_service` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5449,"character":77},"end":{"line":5449,"character":85}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"coordinator\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5449,"character":87},"end":{"line":5449,"character":102}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"review_operator\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5453,"character":30},"end":{"line":5453,"character":38}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5456,"character":28},"end":{"line":5456,"character":36}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5461,"character":19},"end":{"line":5461,"character":27}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5464,"character":16},"end":{"line":5464,"character":22}},"message":"Argument type is Any\n  인수가 \"_configured_nutrition_registry\" 함수의 \"config\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5474,"character":50},"end":{"line":5474,"character":66}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5475,"character":51},"end":{"line":5475,"character":66}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5549,"character":16},"end":{"line":5549,"character":33}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5555,"character":36},"end":{"line":5555,"character":51}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"review_operator\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5576,"character":65},"end":{"line":5576,"character":80}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"review_operator\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5586,"character":47},"end":{"line":5586,"character":53}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5614,"character":36},"end":{"line":5614,"character":43}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5615,"character":15},"end":{"line":5615,"character":30}},"message":"Type of \"accepts\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5618,"character":8},"end":{"line":5618,"character":17}},"message":"\"published\"의 형식을 부분적으로 알 수 없습니다.\n  ‘published’의 유형이 ‘Any | set[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5618,"character":65},"end":{"line":5618,"character":70}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"default\" 매개 변수에 해당합니다.\n  인수 형식이 \"set[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5619,"character":24},"end":{"line":5619,"character":31}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5620,"character":25},"end":{"line":5620,"character":32}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5621,"character":30},"end":{"line":5621,"character":37}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5624,"character":12},"end":{"line":5624,"character":16}},"message":"Type of \"card\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5624,"character":20},"end":{"line":5624,"character":33}},"message":"Type of \"cards\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5628,"character":19},"end":{"line":5628,"character":30}},"message":"‘None’ 유형의 개체를 호출할 수 없습니다.","severity":1,"code":"reportOptionalCall","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalCall"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5630,"character":17},"end":{"line":5630,"character":29}},"message":"Type of \"card_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5632,"character":12},"end":{"line":5632,"character":18}},"message":"\"result\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5632,"character":27},"end":{"line":5632,"character":58}},"message":"\"_send_message_strict_topic\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_strict_topic’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5633,"character":24},"end":{"line":5633,"character":42}},"message":"\"chat_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5633,"character":24},"end":{"line":5633,"character":42}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_message_strict_topic\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5633,"character":35},"end":{"line":5633,"character":42}},"message":"\"object\" 클래스의 \"chat_id\" 특성에 액세스할 수 없음\n  특성 \"chat_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5634,"character":34},"end":{"line":5634,"character":53}},"message":"\"topic_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5634,"character":34},"end":{"line":5634,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_message_strict_topic\" 함수의 \"message_thread_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5634,"character":45},"end":{"line":5634,"character":53}},"message":"\"object\" 클래스의 \"topic_id\" 특성에 액세스할 수 없음\n  특성 \"topic_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5635,"character":21},"end":{"line":5635,"character":30}},"message":"Type of \"text\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5635,"character":21},"end":{"line":5635,"character":30}},"message":"Argument type is Any\n  인수가 \"_send_message_strict_topic\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5638,"character":16},"end":{"line":5638,"character":49}},"message":"‘None’ 유형의 개체를 호출할 수 없습니다.","severity":1,"code":"reportOptionalCall","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalCall"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5638,"character":29},"end":{"line":5638,"character":48}},"message":"‘None’ 유형의 개체를 호출할 수 없습니다.","severity":1,"code":"reportOptionalCall","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalCall"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5639,"character":12},"end":{"line":5639,"character":25}},"message":"\"add\"의 형식을 부분적으로 알 수 없습니다.\n  ‘add’의 유형이 ‘Any | ((element: Unknown, /) -> None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5639,"character":12},"end":{"line":5639,"character":39}},"message":"호출 식의 결과가 ‘Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5639,"character":26},"end":{"line":5639,"character":38}},"message":"Type of \"card_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5639,"character":26},"end":{"line":5639,"character":38}},"message":"Argument type is Any\n  인수가 \"add\" 함수의 \"element\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5641,"character":8},"end":{"line":5641,"character":40}},"message":"\"_dual_coach_review_card_ids\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_dual_coach_review_card_ids’의 유형이 ‘Any | set[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5641,"character":13},"end":{"line":5641,"character":40}},"message":"Type annotation for attribute `_dual_coach_review_card_ids` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5670,"character":26},"end":{"line":5670,"character":33}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5678,"character":12},"end":{"line":5678,"character":17}},"message":"Type of \"pairs\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5678,"character":20},"end":{"line":5678,"character":52}},"message":"Type of \"validated_inline_buttons\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5682,"character":12},"end":{"line":5682,"character":18}},"message":"\"markup\"의 형식을 부분적으로 알 수 없습니다.\n  ‘markup’의 유형이 ‘Unknown | InlineKeyboardMarkup | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5683,"character":16},"end":{"line":5685,"character":17}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5684,"character":20},"end":{"line":5684,"character":109}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[Unknown | InlineKeyboardButton]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5684,"character":22},"end":{"line":5684,"character":78}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5684,"character":43},"end":{"line":5684,"character":53}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5684,"character":69},"end":{"line":5684,"character":77}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"callback_data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5684,"character":84},"end":{"line":5684,"character":89}},"message":"Type of \"label\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5684,"character":91},"end":{"line":5684,"character":99}},"message":"Type of \"callback\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5695,"character":16},"end":{"line":5695,"character":38}},"message":"\"Unknown | InlineKeyboardMarkup\" 형식의 인수를 \"__setitem__\" 함수에서 \"str\" 형식의 \"value\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Unknown | InlineKeyboardMarkup\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"InlineKeyboardMarkup\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5696,"character":19},"end":{"line":5696,"character":66}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5696,"character":25},"end":{"line":5696,"character":56}},"message":"\"_send_message_strict_topic\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_strict_topic’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5698,"character":26},"end":{"line":5698,"character":33}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5700,"character":18},"end":{"line":5700,"character":36}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5715,"character":12},"end":{"line":5715,"character":17}},"message":"\"token\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5715,"character":21},"end":{"line":5715,"character":27}},"message":"\"object\" 반복할 수 없습니다.\n  \"__iter__\" 메서드가 정의되지 않았습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5716,"character":73},"end":{"line":5716,"character":78}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_generation_card_action\" 함수의 \"draft_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5716,"character":80},"end":{"line":5716,"character":85}},"message":"Argument type is Any\n  인수가 \"_nutrition_generation_card_action\" 함수의 \"owner\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5732,"character":12},"end":{"line":5732,"character":17}},"message":"\"token\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5732,"character":19},"end":{"line":5732,"character":29}},"message":"\"not_before\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5732,"character":33},"end":{"line":5732,"character":37}},"message":"\"object\" 반복할 수 없습니다.\n  \"__iter__\" 메서드가 정의되지 않았습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5745,"character":72},"end":{"line":5745,"character":77}},"message":"Argument type is Any\n  인수가 \"_schedule_nutrition_generation\" 함수의 \"owner\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5751,"character":20},"end":{"line":5751,"character":25}},"message":"Argument type is Any\n  인수가 \"_resume_nutrition_generation_after_lease\" 함수의 \"owner\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5757,"character":16},"end":{"line":5757,"character":21}},"message":"\"tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘tasks’의 유형이 ‘set[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5758,"character":16},"end":{"line":5758,"character":57}},"message":"\"_nutrition_generation_recovery_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_nutrition_generation_recovery_tasks’의 유형이 ‘set[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5758,"character":21},"end":{"line":5758,"character":57}},"message":"Type annotation for attribute `_nutrition_generation_recovery_tasks` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5759,"character":12},"end":{"line":5759,"character":21}},"message":"\"add\"의 형식을 부분적으로 알 수 없습니다.\n  ‘add’의 유형이 ‘((element: Unknown, /) -> None) | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5759,"character":12},"end":{"line":5759,"character":27}},"message":"호출 식의 결과가 ‘Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5777,"character":17},"end":{"line":5777,"character":46}},"message":"Type annotation for attribute `_room_bootstrap_recovery_lock` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5794,"character":34},"end":{"line":5794,"character":50}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5838,"character":32},"end":{"line":5839,"character":60}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5859,"character":24},"end":{"line":5863,"character":25}},"message":"호출 식의 결과가 ‘Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5877,"character":19},"end":{"line":5877,"character":27}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5879,"character":8},"end":{"line":5879,"character":11}},"message":"\"raw\"의 형식을 부분적으로 알 수 없습니다.\n  ‘raw’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5879,"character":14},"end":{"line":5879,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5880,"character":40},"end":{"line":5880,"character":47}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5903,"character":19},"end":{"line":5903,"character":27}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5905,"character":8},"end":{"line":5905,"character":11}},"message":"\"raw\"의 형식을 부분적으로 알 수 없습니다.\n  ‘raw’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5905,"character":14},"end":{"line":5905,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5906,"character":40},"end":{"line":5906,"character":47}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5924,"character":16},"end":{"line":5924,"character":56}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"configure_operator_notification_recovery\" 함수의 \"extra\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[Unknown, Unknown] | dict[str, object]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5933,"character":12},"end":{"line":5933,"character":24}},"message":"\"PreviewRoute\"은(는) \"gateway.platforms.telegram_nutrition_onboarding_preview\" 모듈에서 내보내지지 않습니다.\n  대신 \"gateway.platforms.telegram_nutrition_onboarding_preview_types\"에서 가져오기","severity":1,"code":"reportPrivateLocalImportUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateLocalImportUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5937,"character":8},"end":{"line":5937,"character":11}},"message":"\"raw\"의 형식을 부분적으로 알 수 없습니다.\n  ‘raw’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5938,"character":12},"end":{"line":5938,"character":21}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5942,"character":44},"end":{"line":5942,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5949,"character":11},"end":{"line":5949,"character":18}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5951,"character":22},"end":{"line":5951,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5951,"character":22},"end":{"line":5951,"character":46}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5952,"character":23},"end":{"line":5952,"character":30}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5952,"character":23},"end":{"line":5952,"character":48}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5953,"character":15},"end":{"line":5953,"character":22}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5953,"character":15},"end":{"line":5953,"character":42}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5958,"character":59},"end":{"line":5958,"character":68}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...] | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5965,"character":16},"end":{"line":5965,"character":27}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5965,"character":41},"end":{"line":5965,"character":46}},"message":"\"value\"의 형식을 부분적으로 알 수 없습니다.\n  ‘value’의 유형이 ‘Any | Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5979,"character":54},"end":{"line":5979,"character":57}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...] | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5980,"character":29},"end":{"line":5980,"character":34}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5980,"character":40},"end":{"line":5980,"character":45}},"message":"\"value\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5990,"character":19},"end":{"line":5990,"character":27}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5992,"character":8},"end":{"line":5992,"character":11}},"message":"\"raw\"의 형식을 부분적으로 알 수 없습니다.\n  ‘raw’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5993,"character":12},"end":{"line":5993,"character":21}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":5997,"character":40},"end":{"line":5997,"character":47}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6022,"character":27},"end":{"line":6022,"character":52}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6023,"character":37},"end":{"line":6023,"character":63}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6032,"character":37},"end":{"line":6035,"character":13}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6036,"character":41},"end":{"line":6038,"character":13}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6040,"character":37},"end":{"line":6049,"character":13}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6041,"character":16},"end":{"line":6048,"character":17}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[Unknown | InlineKeyboardButton]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6043,"character":24},"end":{"line":6046,"character":25}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6052,"character":15},"end":{"line":6052,"character":47}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6052,"character":21},"end":{"line":6052,"character":37}},"message":"Type of \"send_message\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6074,"character":18},"end":{"line":6074,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6074,"character":24},"end":{"line":6074,"character":30}},"message":"\"object\" 클래스의 \"answer\" 특성에 액세스할 수 없음\n  특성 \"answer\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6076,"character":8},"end":{"line":6081,"character":9}},"message":"호출 식의 결과가 ‘Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6077,"character":12},"end":{"line":6077,"character":17}},"message":"\"object\" 형식의 인수를 \"handle_callback\" 함수에서 \"_OnboardingCallbackQuery\" 형식의 \"query\" 매개 변수에 할당할 수 없습니다.\n  ‘object’은(는) ‘_OnboardingCallbackQuery’ 프로토콜과 호환되지 않습니다.\n    \"id\"이(가) 없습니다.\n    \"from_user\"이(가) 없습니다.\n    \"answer\"이(가) 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6079,"character":12},"end":{"line":6079,"character":19}},"message":"\"object\" 형식의 인수를 \"handle_callback\" 함수에서 \"_OnboardingCallbackMessage\" 형식의 \"message\" 매개 변수에 할당할 수 없습니다.\n  ‘object’은(는) ‘_OnboardingCallbackMessage’ 프로토콜과 호환되지 않습니다.\n    \"message_id\"이(가) 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6108,"character":8},"end":{"line":6108,"character":11}},"message":"\"raw\"의 형식을 부분적으로 알 수 없습니다.\n  ‘raw’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6108,"character":14},"end":{"line":6108,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6109,"character":41},"end":{"line":6109,"character":48}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6161,"character":16},"end":{"line":6161,"character":23}},"message":"\"user_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘user_id’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6161,"character":26},"end":{"line":6161,"character":36}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6162,"character":16},"end":{"line":6162,"character":23}},"message":"\"chat_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_id’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6162,"character":26},"end":{"line":6162,"character":36}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6163,"character":16},"end":{"line":6163,"character":24}},"message":"\"topic_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘topic_id’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6163,"character":27},"end":{"line":6163,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6165,"character":34},"end":{"line":6165,"character":40}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6166,"character":34},"end":{"line":6166,"character":40}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6167,"character":35},"end":{"line":6167,"character":41}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6168,"character":26},"end":{"line":6168,"character":39}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6169,"character":26},"end":{"line":6169,"character":39}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6170,"character":27},"end":{"line":6170,"character":41}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6193,"character":34},"end":{"line":6193,"character":39}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6194,"character":34},"end":{"line":6194,"character":39}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6195,"character":35},"end":{"line":6195,"character":40}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6196,"character":27},"end":{"line":6196,"character":39}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6197,"character":30},"end":{"line":6197,"character":35}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6211,"character":23},"end":{"line":6211,"character":32}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Any | None, Any | None, Any | None] | tuple[Unknown, ...] | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6217,"character":24},"end":{"line":6217,"character":36}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6217,"character":43},"end":{"line":6217,"character":55}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6217,"character":62},"end":{"line":6217,"character":74}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6245,"character":8},"end":{"line":6245,"character":11}},"message":"\"raw\"의 형식을 부분적으로 알 수 없습니다.\n  ‘raw’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6245,"character":14},"end":{"line":6245,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6246,"character":8},"end":{"line":6246,"character":14}},"message":"\"review\"의 형식을 부분적으로 알 수 없습니다.\n  ‘review’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6246,"character":17},"end":{"line":6246,"character":24}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6247,"character":47},"end":{"line":6247,"character":53}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6253,"character":22},"end":{"line":6253,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6253,"character":22},"end":{"line":6253,"character":49}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6254,"character":22},"end":{"line":6254,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6254,"character":22},"end":{"line":6254,"character":49}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6255,"character":23},"end":{"line":6255,"character":33}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6255,"character":23},"end":{"line":6255,"character":51}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6271,"character":57},"end":{"line":6271,"character":67}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...] | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6272,"character":35},"end":{"line":6272,"character":40}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6272,"character":54},"end":{"line":6272,"character":59}},"message":"\"value\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6295,"character":78},"end":{"line":6295,"character":84}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...] | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6298,"character":16},"end":{"line":6298,"character":25}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6299,"character":20},"end":{"line":6299,"character":29}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6312,"character":23},"end":{"line":6312,"character":40}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6312,"character":29},"end":{"line":6312,"character":40}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6313,"character":19},"end":{"line":6313,"character":63}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6313,"character":25},"end":{"line":6313,"character":63}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6316,"character":19},"end":{"line":6320,"character":13}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6316,"character":25},"end":{"line":6320,"character":13}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6329,"character":8},"end":{"line":6333,"character":9}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6331,"character":12},"end":{"line":6332,"character":48}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6336,"character":8},"end":{"line":6336,"character":15}},"message":"\"payload\"의 형식을 부분적으로 알 수 없습니다.\n  ‘payload’의 유형이 ‘dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6337,"character":29},"end":{"line":6337,"character":40}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6337,"character":29},"end":{"line":6337,"character":69}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['처리할 수 없습니다.']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6342,"character":11},"end":{"line":6342,"character":22}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6343,"character":61},"end":{"line":6343,"character":68}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_adaptive_grounding_input\" 함수의 \"payload\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6345,"character":74},"end":{"line":6345,"character":81}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_adaptive_grounding_input\" 함수의 \"payload\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6346,"character":21},"end":{"line":6346,"character":53}},"message":"Type annotation for attribute `_coaching_current_input_supplier` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6356,"character":20},"end":{"line":6360,"character":21}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6358,"character":24},"end":{"line":6359,"character":60}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6365,"character":20},"end":{"line":6365,"character":27}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_adaptive_coach_card_text\" 함수의 \"payload\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6374,"character":8},"end":{"line":6374,"character":15}},"message":"\"buttons\"의 형식을 부분적으로 알 수 없습니다.\n  ‘buttons’의 유형이 ‘Unknown | list[Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6374,"character":42},"end":{"line":6374,"character":53}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6378,"character":16},"end":{"line":6378,"character":20}},"message":"\"item\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6379,"character":46},"end":{"line":6379,"character":54}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6380,"character":32},"end":{"line":6380,"character":40}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6380,"character":32},"end":{"line":6380,"character":81}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6380,"character":50},"end":{"line":6380,"character":58}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6380,"character":50},"end":{"line":6380,"character":80}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6381,"character":20},"end":{"line":6381,"character":31}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6381,"character":33},"end":{"line":6381,"character":107}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6381,"character":84},"end":{"line":6381,"character":105}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6384,"character":20},"end":{"line":6384,"character":31}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6384,"character":33},"end":{"line":6384,"character":81}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6386,"character":16},"end":{"line":6386,"character":22}},"message":"\"markup\"의 형식을 부분적으로 알 수 없습니다.\n  ‘markup’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6386,"character":25},"end":{"line":6386,"character":51}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6386,"character":46},"end":{"line":6386,"character":50}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6388,"character":12},"end":{"line":6388,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6398,"character":12},"end":{"line":6402,"character":13}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6400,"character":16},"end":{"line":6401,"character":52}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6404,"character":11},"end":{"line":6404,"character":22}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6408,"character":16},"end":{"line":6411,"character":17}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6412,"character":22},"end":{"line":6412,"character":60}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6417,"character":25},"end":{"line":6417,"character":31}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_send_adaptive_operator_notice\" 함수의 \"reply_markup\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | InlineKeyboardMarkup | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6419,"character":11},"end":{"line":6419,"character":22}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6429,"character":12},"end":{"line":6429,"character":54}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6431,"character":52},"end":{"line":6431,"character":58}},"message":"\"update\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedParameter","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedParameter"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedParameter"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6440,"character":43},"end":{"line":6440,"character":64}},"message":"Type of \"matches_space\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6442,"character":24},"end":{"line":6442,"character":44}},"message":"Type of \"authenticate\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6451,"character":24},"end":{"line":6451,"character":43}},"message":"Type of \"reserves_space\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6454,"character":24},"end":{"line":6454,"character":44}},"message":"Type of \"authorize_route\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6529,"character":12},"end":{"line":6529,"character":17}},"message":"\"shown\"의 형식을 부분적으로 알 수 없습니다.\n  ‘shown’의 유형이 ‘Any | set[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6529,"character":71},"end":{"line":6529,"character":76}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"default\" 매개 변수에 해당합니다.\n  인수 형식이 \"set[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6531,"character":22},"end":{"line":6531,"character":40}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6531,"character":30},"end":{"line":6531,"character":40}},"message":"\"object\" 클래스의 \"reply_text\" 특성에 액세스할 수 없음\n  특성 \"reply_text\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6535,"character":16},"end":{"line":6535,"character":25}},"message":"\"add\"의 형식을 부분적으로 알 수 없습니다.\n  ‘add’의 유형이 ‘Any | ((element: Unknown, /) -> None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6535,"character":16},"end":{"line":6535,"character":40}},"message":"호출 식의 결과가 ‘Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6555,"character":8},"end":{"line":6555,"character":39}},"message":"반환 형식 \"Unknown | ReplyKeyboardMarkup | Any | list[list[str]]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6559,"character":19},"end":{"line":6559,"character":86}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6559,"character":19},"end":{"line":6559,"character":86}},"message":"반환 형식 \"Unknown | ReplyKeyboardMarkup | Any\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6562,"character":23},"end":{"line":6562,"character":70}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6562,"character":23},"end":{"line":6562,"character":70}},"message":"반환 형식 \"Unknown | ReplyKeyboardMarkup | Any\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6565,"character":14},"end":{"line":6565,"character":35}},"message":"\"_send_nutrition_topic\" 메서드가 호환되지 않는 방식으로 \"TelegramWeeklyTransportMixin\" 클래스를 재정의합니다.\n  반환 형식 불일치: 기본 메서드는 \"CoroutineType[Any, Any, Message | TelegramSendReceipt]\" 형식을 반환하고 재정의는 \"CoroutineType[Any, Any, object]\" 형식을 반환합니다.\n    \"CoroutineType[Any, Any, object]\"은 \"CoroutineType[Any, Any, Message | TelegramSendReceipt]\"에 할당할 수 없습니다.\n      \"_ReturnT_nd_co@CoroutineType\" 형식 매개 변수는 공변(covariant)이지만 \"object\"은(는) \"Message | TelegramSendReceipt\"의 하위 형식이 아닙니다.\n        형식 \"object\"은 형식 \"Message | TelegramSendReceipt\"에 할당할 수 없습니다.\n          \"object\"은 \"Message\"에 할당할 수 없습니다.\n          ‘object’은(는) ‘TelegramSendReceipt’ 프로토콜과 호환되지 않습니다.","severity":1,"code":"reportIncompatibleMethodOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportIncompatibleMethodOverride"},"relatedInformation":[{"location":{"uri":"file:///home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_transport.py","range":{"start":{"line":70,"character":14},"end":{"line":70,"character":35}}},"message":"재정의된 메서드"}]}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6565,"character":14},"end":{"line":6565,"character":35}},"message":"“_send_nutrition_topic“ 메서드가 override로 표시되지 않았지만 “TelegramWeeklyTransportMixin“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6573,"character":15},"end":{"line":6573,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6575,"character":19},"end":{"line":6575,"character":74}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6575,"character":25},"end":{"line":6575,"character":34}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6575,"character":25},"end":{"line":6575,"character":47}},"message":"\"send_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6583,"character":15},"end":{"line":6587,"character":9}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6583,"character":21},"end":{"line":6583,"character":52}},"message":"\"_send_message_strict_topic\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_strict_topic’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6586,"character":14},"end":{"line":6586,"character":27}},"message":"Argument type is Any\n  인수가 \"_send_message_strict_topic\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6590,"character":8},"end":{"line":6590,"character":38}},"message":"반환 형식 \"Unknown | ReplyKeyboardMarkup | Any\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6593,"character":19},"end":{"line":6593,"character":86}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6593,"character":19},"end":{"line":6593,"character":86}},"message":"반환 형식 \"Unknown | ReplyKeyboardMarkup | Any\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6595,"character":19},"end":{"line":6595,"character":66}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6595,"character":19},"end":{"line":6595,"character":66}},"message":"반환 형식 \"Unknown | ReplyKeyboardMarkup | Any\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6603,"character":12},"end":{"line":6603,"character":23}},"message":"\"initialized\"의 형식을 부분적으로 알 수 없습니다.\n  ‘initialized’의 유형이 ‘set[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6607,"character":8},"end":{"line":6612,"character":9}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6611,"character":25},"end":{"line":6611,"character":62}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_send_nutrition_topic\" 함수의 \"reply_markup\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | ReplyKeyboardMarkup | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6613,"character":8},"end":{"line":6613,"character":23}},"message":"\"add\"의 형식을 부분적으로 알 수 없습니다.\n  ‘add’의 유형이 ‘(element: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6625,"character":29},"end":{"line":6625,"character":50}},"message":"‘-’ 연산자는 ‘object’ 및 ‘Any | None’ 형식에 대해 지원되지 않습니다.\n  ‘-’ 연산자는 ‘object’ 및 ‘None’ 형식에 대해 지원되지 않습니다.","severity":1,"code":"reportOperatorIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOperatorIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6625,"character":29},"end":{"line":6625,"character":55}},"message":"\"days\"의 형식을 부분적으로 알 수 없습니다.\n  ‘days’의 유형이 ‘Any | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6625,"character":29},"end":{"line":6625,"character":55}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6641,"character":23},"end":{"line":6641,"character":47}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6642,"character":24},"end":{"line":6642,"character":49}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6643,"character":22},"end":{"line":6643,"character":45}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6667,"character":12},"end":{"line":6670,"character":53}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6671,"character":24},"end":{"line":6671,"character":35}},"message":"\"tuple[tuple[tuple[str, object]], Never] | tuple[tuple[tuple[str, object]]]\" 형식의 인수를 \"__init__\" 함수에서 \"tuple[tuple[tuple[str, str], ...], ...]\" 형식의 \"button_rows\" 매개 변수에 할당할 수 없습니다.\n  형식 \"tuple[tuple[tuple[str, object]], Never] | tuple[tuple[tuple[str, object]]]\"은 형식 \"tuple[tuple[tuple[str, str], ...], ...]\"에 할당할 수 없습니다.\n    \"tuple[tuple[tuple[str, object]], Never]\"은 \"tuple[tuple[tuple[str, str], ...], ...]\"에 할당할 수 없습니다.\n      Tuple 항목 1이(가) 잘못된 형식입니다.\n        \"tuple[tuple[str, object]]\"은 \"tuple[tuple[str, str], ...]\"에 할당할 수 없습니다.\n          Tuple 항목 1이(가) 잘못된 형식입니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6711,"character":12},"end":{"line":6716,"character":13}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6712,"character":24},"end":{"line":6712,"character":39}},"message":"\"chat_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_id’의 유형이 ‘Unknown | str’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6712,"character":24},"end":{"line":6712,"character":39}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_send_nutrition_topic\" 함수의 \"chat_id\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6712,"character":32},"end":{"line":6712,"character":39}},"message":"\"object\" 클래스의 \"chat_id\" 특성에 액세스할 수 없음\n  특성 \"chat_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6713,"character":25},"end":{"line":6713,"character":41}},"message":"\"topic_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘topic_id’의 유형이 ‘Unknown | str’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6713,"character":25},"end":{"line":6713,"character":41}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_send_nutrition_topic\" 함수의 \"topic_id\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6713,"character":33},"end":{"line":6713,"character":41}},"message":"\"object\" 클래스의 \"topic_id\" 특성에 액세스할 수 없음\n  특성 \"topic_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6727,"character":8},"end":{"line":6727,"character":36}},"message":"반환 형식 \"Unknown | None\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6729,"character":9},"end":{"line":6729,"character":29}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6736,"character":37},"end":{"line":6736,"character":42}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6736,"character":63},"end":{"line":6736,"character":76}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6737,"character":16},"end":{"line":6737,"character":21}},"message":"\"label\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6737,"character":23},"end":{"line":6737,"character":36}},"message":"\"callback_data\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6737,"character":40},"end":{"line":6737,"character":47}},"message":"\"Never\" 반복할 수 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6749,"character":12},"end":{"line":6749,"character":60}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6766,"character":16},"end":{"line":6766,"character":25}},"message":"Type of \"candidate\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6766,"character":29},"end":{"line":6766,"character":48}},"message":"Type of \"list_sessions\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6767,"character":16},"end":{"line":6767,"character":24}},"message":"Type of \"customer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6767,"character":27},"end":{"line":6767,"character":47}},"message":"Type of \"role_claim\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6769,"character":20},"end":{"line":6769,"character":35}},"message":"Type of \"state\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6775,"character":24},"end":{"line":6775,"character":40}},"message":"Type of \"user_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6776,"character":24},"end":{"line":6776,"character":40}},"message":"Type of \"chat_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6777,"character":24},"end":{"line":6777,"character":41}},"message":"Type of \"topic_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6779,"character":20},"end":{"line":6779,"character":37}},"message":"Type of \"bootstrap_session\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6785,"character":16},"end":{"line":6785,"character":57}},"message":"Type of \"consent_card_message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6786,"character":19},"end":{"line":6786,"character":42}},"message":"Type of \"state\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6786,"character":46},"end":{"line":6786,"character":60}},"message":"\"BootstrapState\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6787,"character":21},"end":{"line":6787,"character":72}},"message":"Type of \"committed_consent_card_message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6795,"character":12},"end":{"line":6798,"character":13}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6796,"character":21},"end":{"line":6797,"character":39}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6809,"character":12},"end":{"line":6809,"character":19}},"message":"Type of \"current\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6809,"character":22},"end":{"line":6809,"character":31}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6809,"character":32},"end":{"line":6809,"character":60}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6810,"character":12},"end":{"line":6810,"character":19}},"message":"Type of \"handoff\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6810,"character":22},"end":{"line":6810,"character":45}},"message":"Type of \"consent_handoff\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6815,"character":24},"end":{"line":6816,"character":42}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6819,"character":35},"end":{"line":6819,"character":49}},"message":"\"ConsentHandoff\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6824,"character":35},"end":{"line":6824,"character":65}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6826,"character":41},"end":{"line":6826,"character":59}},"message":"Type of \"generation\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6826,"character":41},"end":{"line":6826,"character":59}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"bootstrap_generation\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6832,"character":38},"end":{"line":6832,"character":60}},"message":"\"consent_handoff_digest\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6833,"character":24},"end":{"line":6833,"character":31}},"message":"Argument type is Any\n  인수가 \"consent_handoff_digest\" 함수의 \"session\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6838,"character":16},"end":{"line":6838,"character":23}},"message":"Type of \"current\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6838,"character":26},"end":{"line":6838,"character":52}},"message":"Type of \"bind_consent_handoff\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6839,"character":20},"end":{"line":6839,"character":38}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6840,"character":40},"end":{"line":6840,"character":58}},"message":"Type of \"generation\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6852,"character":16},"end":{"line":6852,"character":75}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6858,"character":20},"end":{"line":6859,"character":75}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6867,"character":8},"end":{"line":6867,"character":15}},"message":"Type of \"current\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6867,"character":18},"end":{"line":6867,"character":27}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6867,"character":28},"end":{"line":6867,"character":56}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6871,"character":12},"end":{"line":6871,"character":32}},"message":"Type of \"customer_key\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6871,"character":12},"end":{"line":6871,"character":32}},"message":"Argument type is Any\n  인수가 \"_room_bootstrap_has_current_consent\" 함수의 \"customer_key\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6874,"character":11},"end":{"line":6874,"character":24}},"message":"Type of \"state\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6874,"character":28},"end":{"line":6874,"character":42}},"message":"\"BootstrapState\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6875,"character":12},"end":{"line":6875,"character":21}},"message":"Type of \"activated\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6875,"character":24},"end":{"line":6875,"character":57}},"message":"Type of \"reconcile_committed_consent\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6876,"character":16},"end":{"line":6876,"character":34}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6877,"character":36},"end":{"line":6877,"character":54}},"message":"Type of \"generation\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6878,"character":36},"end":{"line":6878,"character":71}},"message":"Type of \"consent_publication_attempt\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6879,"character":40},"end":{"line":6879,"character":71}},"message":"Type of \"consent_card_message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6881,"character":13},"end":{"line":6881,"character":26}},"message":"Type of \"state\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6881,"character":30},"end":{"line":6881,"character":44}},"message":"\"BootstrapState\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6882,"character":12},"end":{"line":6882,"character":21}},"message":"Type of \"activated\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6885,"character":8},"end":{"line":6885,"character":15}},"message":"Type of \"handoff\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6885,"character":18},"end":{"line":6885,"character":43}},"message":"Type of \"consent_handoff\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6888,"character":8},"end":{"line":6888,"character":17}},"message":"Type of \"activated\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6888,"character":20},"end":{"line":6888,"character":58}},"message":"Type of \"mark_consent_recovery_reconciled\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6889,"character":12},"end":{"line":6889,"character":32}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6890,"character":32},"end":{"line":6890,"character":52}},"message":"Type of \"generation\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6891,"character":30},"end":{"line":6891,"character":55}},"message":"Type of \"provenance_digest\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6895,"character":12},"end":{"line":6899,"character":13}},"message":"호출 식의 결과가 ‘Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6909,"character":12},"end":{"line":6909,"character":60}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6920,"character":8},"end":{"line":6923,"character":9}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6922,"character":25},"end":{"line":6922,"character":58}},"message":"\"_nutrition_onboarding_markup\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_nutrition_onboarding_markup’의 유형이 ‘(card: object) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6922,"character":25},"end":{"line":6922,"character":68}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"edit_message_text\" 함수의 \"reply_markup\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6933,"character":12},"end":{"line":6935,"character":13}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6943,"character":12},"end":{"line":6943,"character":56}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6953,"character":12},"end":{"line":6953,"character":57}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6961,"character":12},"end":{"line":6963,"character":13}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6976,"character":16},"end":{"line":6976,"character":61}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6983,"character":12},"end":{"line":6986,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6984,"character":34},"end":{"line":6984,"character":38}},"message":"\"text\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6985,"character":51},"end":{"line":6985,"character":63}},"message":"\"WizardPrompt | None\" 형식의 인수를 \"_physique_markup\" 함수에서 \"WizardPrompt\" 형식의 \"prompt\" 매개 변수에 할당할 수 없습니다.\n  형식 \"WizardPrompt | None\"은 형식 \"WizardPrompt\"에 할당할 수 없습니다.\n    \"None\"은 \"WizardPrompt\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6989,"character":52},"end":{"line":6989,"character":62}},"message":"Argument type is Any\n  인수가 \"_render_nutrition_completion\" 함수의 \"completion\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":6993,"character":34},"end":{"line":6993,"character":43}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7015,"character":12},"end":{"line":7019,"character":13}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7093,"character":12},"end":{"line":7093,"character":24}},"message":"Argument type is Any\n  인수가 \"_nutrition_stepper_integer\" 함수의 \"value\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7100,"character":16},"end":{"line":7100,"character":25}},"message":"\"int | None\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"update_id\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | None\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"None\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7102,"character":16},"end":{"line":7102,"character":26}},"message":"\"int | None\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"message_id\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | None\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"None\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7103,"character":16},"end":{"line":7103,"character":24}},"message":"\"int | None\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"actor_id\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | None\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"None\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7104,"character":16},"end":{"line":7104,"character":23}},"message":"\"int | None\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"chat_id\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | None\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"None\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7105,"character":16},"end":{"line":7105,"character":24}},"message":"\"int | None\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"topic_id\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int | None\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"None\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7202,"character":19},"end":{"line":7202,"character":24}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7203,"character":20},"end":{"line":7203,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7204,"character":20},"end":{"line":7204,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7228,"character":19},"end":{"line":7228,"character":31}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7229,"character":20},"end":{"line":7229,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7230,"character":20},"end":{"line":7230,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7288,"character":28},"end":{"line":7288,"character":34}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7307,"character":42},"end":{"line":7307,"character":48}},"message":"Argument type is Any\n  인수가 \"_physique_markup\" 함수의 \"prompt\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7316,"character":21},"end":{"line":7316,"character":46}},"message":"Argument type is Any\n  인수가 \"_send_nutrition_topic\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7317,"character":29},"end":{"line":7317,"character":62}},"message":"Argument type is Any\n  인수가 \"_send_nutrition_topic\" 함수의 \"reply_markup\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7322,"character":12},"end":{"line":7322,"character":25}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"store\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7324,"character":16},"end":{"line":7324,"character":27}},"message":"\"(prepared: object) -> CoroutineType[Any, Any, object]\" 형식의 인수를 \"__init__\" 함수에서 \"_PreparedPromptSender\" 형식의 \"sender\" 매개 변수에 할당할 수 없습니다.\n  형식 \"(prepared: object) -> CoroutineType[Any, Any, object]\"은 형식 \"(prompt: PreparedTelegramPrompt) -> Awaitable[object]\"에 할당할 수 없습니다.\n    매개 변수 이름 불일치: \"prompt\" 및 \"prepared\"","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7349,"character":16},"end":{"line":7349,"character":22}},"message":"\"object | CursorIdentity\" 형식의 인수를 \"__init__\" 함수에서 \"CursorIdentity\" 형식의 \"target\" 매개 변수에 할당할 수 없습니다.\n  형식 \"object | CursorIdentity\"은 형식 \"CursorIdentity\"에 할당할 수 없습니다.\n    \"object\"은 \"CursorIdentity\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7365,"character":52},"end":{"line":7365,"character":62}},"message":"Argument type is Any\n  인수가 \"_render_nutrition_completion\" 함수의 \"completion\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7388,"character":33},"end":{"line":7388,"character":42}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7391,"character":34},"end":{"line":7391,"character":51}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7396,"character":22},"end":{"line":7396,"character":31}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7396,"character":22},"end":{"line":7396,"character":49}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7397,"character":16},"end":{"line":7397,"character":26}},"message":"Type of \"message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7400,"character":26},"end":{"line":7400,"character":35}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7400,"character":26},"end":{"line":7400,"character":53}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7404,"character":16},"end":{"line":7404,"character":26}},"message":"Type of \"message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7408,"character":16},"end":{"line":7408,"character":26}},"message":"Type of \"message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7433,"character":20},"end":{"line":7433,"character":71}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7437,"character":20},"end":{"line":7437,"character":48}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7440,"character":52},"end":{"line":7440,"character":62}},"message":"Argument type is Any\n  인수가 \"_render_nutrition_completion\" 함수의 \"completion\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7514,"character":12},"end":{"line":7520,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7517,"character":20},"end":{"line":7517,"character":32}},"message":"\"object\" 형식의 인수를 \"_nutrition_draft_markup\" 함수에서 \"DraftAction\" 형식의 \"action\" 매개 변수에 할당할 수 없습니다.\n  \"object\"은 \"DraftAction\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7550,"character":12},"end":{"line":7551,"character":34}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7568,"character":26},"end":{"line":7568,"character":32}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7569,"character":27},"end":{"line":7569,"character":33}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7570,"character":24},"end":{"line":7570,"character":30}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7571,"character":27},"end":{"line":7571,"character":33}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7578,"character":26},"end":{"line":7578,"character":32}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7584,"character":26},"end":{"line":7584,"character":32}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7596,"character":16},"end":{"line":7596,"character":20}},"message":"Type of \"item\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7598,"character":20},"end":{"line":7598,"character":24}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7599,"character":38},"end":{"line":7599,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7602,"character":40},"end":{"line":7602,"character":44}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7602,"character":51},"end":{"line":7602,"character":55}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7603,"character":16},"end":{"line":7603,"character":20}},"message":"Type of \"item\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7613,"character":33},"end":{"line":7613,"character":39}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7617,"character":33},"end":{"line":7617,"character":49}},"message":"Type of \"calories\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7618,"character":29},"end":{"line":7618,"character":46}},"message":"Type of \"calories\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7621,"character":33},"end":{"line":7621,"character":50}},"message":"Type of \"protein_g\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7622,"character":29},"end":{"line":7622,"character":47}},"message":"Type of \"protein_g\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7625,"character":34},"end":{"line":7625,"character":49}},"message":"Type of \"carbs_g\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7626,"character":29},"end":{"line":7626,"character":45}},"message":"Type of \"carbs_g\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7629,"character":32},"end":{"line":7629,"character":45}},"message":"Type of \"fat_g\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7630,"character":29},"end":{"line":7630,"character":43}},"message":"Type of \"fat_g\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7669,"character":33},"end":{"line":7669,"character":44}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7669,"character":33},"end":{"line":7669,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7682,"character":30},"end":{"line":7682,"character":41}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7682,"character":30},"end":{"line":7682,"character":64}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7712,"character":21},"end":{"line":7712,"character":30}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7721,"character":8},"end":{"line":7721,"character":13}},"message":"\"by_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘by_id’의 유형이 ‘dict[str, dict[Unknown, Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7722,"character":16},"end":{"line":7722,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7722,"character":16},"end":{"line":7722,"character":35}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7723,"character":16},"end":{"line":7723,"character":19}},"message":"Type of \"row\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7724,"character":52},"end":{"line":7724,"character":59}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7731,"character":12},"end":{"line":7731,"character":15}},"message":"\"row\"의 형식을 부분적으로 알 수 없습니다.\n  ‘row’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7731,"character":18},"end":{"line":7731,"character":27}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (dict[Unknown, Unknown] | None), (key: str, default: dict[Unknown, Unknown], /) -> dict[Unknown, Unknown], (key: str, default: _T@get, /) -> (dict[Unknown, Unknown] | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7734,"character":25},"end":{"line":7734,"character":28}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7735,"character":25},"end":{"line":7735,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7735,"character":25},"end":{"line":7735,"character":56}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7761,"character":43},"end":{"line":7761,"character":62}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7761,"character":79},"end":{"line":7761,"character":97}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7763,"character":19},"end":{"line":7763,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7763,"character":46},"end":{"line":7763,"character":65}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7805,"character":29},"end":{"line":7805,"character":43}},"message":"\"Any | None\" 형식의 인수를 \"__new__\" 함수에서 \"ConvertibleToInt\" 형식의 \"x\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Any | None\"은 형식 \"ConvertibleToInt\"에 할당할 수 없습니다.\n    형식 \"None\"은 형식 \"ConvertibleToInt\"에 할당할 수 없습니다.\n      \"None\"은 \"str\"에 할당할 수 없습니다.\n      ‘None’은(는) ‘Buffer’ 프로토콜과 호환되지 않습니다.\n        \"__buffer__\"이(가) 없습니다.\n      ‘None’은(는) ‘SupportsInt’ 프로토콜과 호환되지 않습니다.\n        \"__int__\"이(가) 없습니다.\n      ‘None’은(는) ‘SupportsIndex’ 프로토콜과 호환되지 않습니다.\n  ...","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7805,"character":29},"end":{"line":7805,"character":43}},"message":"\"Any | None\" 형식의 인수를 \"__new__\" 함수에서 \"ConvertibleToInt\" 형식의 \"x\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Any | None\"은 형식 \"ConvertibleToInt\"에 할당할 수 없습니다.\n    형식 \"None\"은 형식 \"ConvertibleToInt\"에 할당할 수 없습니다.\n      \"None\"은 \"str\"에 할당할 수 없습니다.\n      ‘None’은(는) ‘Buffer’ 프로토콜과 호환되지 않습니다.\n        \"__buffer__\"이(가) 없습니다.\n      ‘None’은(는) ‘SupportsInt’ 프로토콜과 호환되지 않습니다.\n        \"__int__\"이(가) 없습니다.\n      ‘None’은(는) ‘SupportsIndex’ 프로토콜과 호환되지 않습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7813,"character":8},"end":{"line":7813,"character":40}},"message":"\"_nutrition_generation_card_nonce\" 메서드가 호환되지 않는 방식으로 \"TelegramWeeklyOwnerMixin\" 클래스를 재정의합니다.\n  기본 메서드가 staticmethod로 선언되었지만 재정의는 그렇지 않습니다.\n  위치 매개 변수 개수가 일치하지 않습니다. 기본 메서드에 1개가 있지만 재정의에는 2개가 있습니다.","severity":1,"code":"reportIncompatibleMethodOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportIncompatibleMethodOverride"},"relatedInformation":[{"location":{"uri":"file:///home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_owner.py","range":{"start":{"line":189,"character":8},"end":{"line":189,"character":40}}},"message":"재정의된 메서드"}]}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7813,"character":8},"end":{"line":7813,"character":40}},"message":"“_nutrition_generation_card_nonce“ 메서드가 override로 표시되지 않았지만 “TelegramWeeklyOwnerMixin“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7928,"character":12},"end":{"line":7928,"character":18}},"message":"\"object\" 형식의 인수를 \"_nutrition_draft_markup\" 함수에서 \"DraftAction\" 형식의 \"action\" 매개 변수에 할당할 수 없습니다.\n  \"object\"은 \"DraftAction\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7936,"character":18},"end":{"line":7941,"character":13}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7937,"character":28},"end":{"line":7937,"character":53}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7938,"character":31},"end":{"line":7938,"character":41}},"message":"\"object\" 형식의 인수를 \"__new__\" 함수에서 \"ConvertibleToInt\" 형식의 \"x\" 매개 변수에 할당할 수 없습니다.\n  형식 \"object\"은 형식 \"ConvertibleToInt\"에 할당할 수 없습니다.\n    \"object\"은 \"str\"에 할당할 수 없습니다.\n    ‘object’은(는) ‘Buffer’ 프로토콜과 호환되지 않습니다.\n      \"__buffer__\"이(가) 없습니다.\n    ‘object’은(는) ‘SupportsInt’ 프로토콜과 호환되지 않습니다.\n      \"__int__\"이(가) 없습니다.\n    ‘object’은(는) ‘SupportsIndex’ 프로토콜과 호환되지 않습니다.\n      \"__index__\"이(가) 없습니다.\n  ...","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7938,"character":31},"end":{"line":7938,"character":41}},"message":"\"object\" 형식의 인수를 \"__new__\" 함수에서 \"ConvertibleToInt\" 형식의 \"x\" 매개 변수에 할당할 수 없습니다.\n  형식 \"object\"은 형식 \"ConvertibleToInt\"에 할당할 수 없습니다.\n    \"object\"은 \"str\"에 할당할 수 없습니다.\n    ‘object’은(는) ‘Buffer’ 프로토콜과 호환되지 않습니다.\n      \"__buffer__\"이(가) 없습니다.\n    ‘object’은(는) ‘SupportsInt’ 프로토콜과 호환되지 않습니다.\n      \"__int__\"이(가) 없습니다.\n    ‘object’은(는) ‘SupportsIndex’ 프로토콜과 호환되지 않습니다.\n      \"__index__\"이(가) 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7995,"character":16},"end":{"line":7995,"character":35}},"message":"Argument type is Any\n  인수가 \"_activate_nutrition_generation_card\" 함수의 \"message_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":7997,"character":16},"end":{"line":7997,"character":64}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8007,"character":28},"end":{"line":8007,"character":53}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8008,"character":25},"end":{"line":8008,"character":51}},"message":"Argument type is Any\n  인수가 \"_send_nutrition_topic\" 함수의 \"topic_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8012,"character":12},"end":{"line":8018,"character":13}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8031,"character":8},"end":{"line":8035,"character":9}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8048,"character":12},"end":{"line":8048,"character":17}},"message":"\"tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘tasks’의 유형이 ‘set[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8049,"character":12},"end":{"line":8049,"character":44}},"message":"\"_nutrition_generation_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_nutrition_generation_tasks’의 유형이 ‘set[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8049,"character":17},"end":{"line":8049,"character":44}},"message":"Type annotation for attribute `_nutrition_generation_tasks` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8050,"character":8},"end":{"line":8050,"character":17}},"message":"\"add\"의 형식을 부분적으로 알 수 없습니다.\n  ‘add’의 유형이 ‘((element: Unknown, /) -> None) | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8050,"character":8},"end":{"line":8050,"character":23}},"message":"호출 식의 결과가 ‘Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8101,"character":12},"end":{"line":8101,"character":23}},"message":"\"object\" 형식의 인수를 \"__init__\" 함수에서 \"NutritionCoachingCoordinator\" 형식의 \"coordinator\" 매개 변수에 할당할 수 없습니다.\n  \"object\"은 \"NutritionCoachingCoordinator\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8102,"character":12},"end":{"line":8102,"character":17}},"message":"\"object\" 형식의 인수를 \"__init__\" 함수에서 \"IncomingAddress\" 형식의 \"owner\" 매개 변수에 할당할 수 없습니다.\n  \"object\"은 \"IncomingAddress\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8109,"character":12},"end":{"line":8109,"character":40}},"message":"호출 식의 결과가 ‘DraftAction’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8119,"character":12},"end":{"line":8122,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8144,"character":11},"end":{"line":8144,"character":30}},"message":"\"NutritionCoachingCoordinator\" 및 \"None\" 형식이 겹치지 않으므로 조건은 항상 False로 평가됩니다.","severity":1,"code":"reportUnnecessaryComparison","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryComparison"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8219,"character":16},"end":{"line":8222,"character":17}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8277,"character":12},"end":{"line":8279,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8299,"character":12},"end":{"line":8305,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8319,"character":20},"end":{"line":8327,"character":21}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8323,"character":39},"end":{"line":8323,"character":49}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8349,"character":12},"end":{"line":8352,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8370,"character":16},"end":{"line":8376,"character":17}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8383,"character":12},"end":{"line":8386,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8414,"character":20},"end":{"line":8420,"character":21}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8454,"character":12},"end":{"line":8457,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8466,"character":8},"end":{"line":8466,"character":16}},"message":"\"customer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8466,"character":19},"end":{"line":8466,"character":46}},"message":"\"customer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8466,"character":19},"end":{"line":8466,"character":51}},"message":"\"spec\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8466,"character":19},"end":{"line":8466,"character":60}},"message":"\"telegram\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8497,"character":16},"end":{"line":8499,"character":34}},"message":"\"object\" 형식의 개체는 __enter__을(를) 올바르게 구현하지 않으므로 \"with\"와 함께 사용할 수 없습니다.\n  특성 \"__enter__\" 알 수 없음","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8497,"character":16},"end":{"line":8499,"character":34}},"message":"\"object\" 형식의 개체는 __exit__을(를) 올바르게 구현하지 않으므로 \"with\"와 함께 사용할 수 없습니다.\n  특성 \"__exit__\" 알 수 없음","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8502,"character":28},"end":{"line":8502,"character":44}},"message":"\"chat_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8502,"character":28},"end":{"line":8502,"character":44}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_nutrition_topic\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8503,"character":29},"end":{"line":8503,"character":46}},"message":"\"topic_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8503,"character":29},"end":{"line":8503,"character":46}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_nutrition_topic\" 함수의 \"topic_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8515,"character":37},"end":{"line":8515,"character":47}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8525,"character":16},"end":{"line":8525,"character":26}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8535,"character":12},"end":{"line":8541,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8552,"character":12},"end":{"line":8558,"character":13}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8557,"character":20},"end":{"line":8557,"character":30}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8570,"character":20},"end":{"line":8570,"character":30}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8585,"character":12},"end":{"line":8591,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8600,"character":12},"end":{"line":8606,"character":13}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8650,"character":8},"end":{"line":8653,"character":9}},"message":"호출 식의 결과가 ‘Message | bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8668,"character":8},"end":{"line":8668,"character":23}},"message":"\"editing_context\"의 형식을 부분적으로 알 수 없습니다.\n  ‘editing_context’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8668,"character":26},"end":{"line":8668,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8671,"character":19},"end":{"line":8671,"character":34}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8676,"character":8},"end":{"line":8676,"character":16}},"message":"\"draft_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8676,"character":18},"end":{"line":8676,"character":33}},"message":"\"generation_pins\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8684,"character":12},"end":{"line":8694,"character":13}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8702,"character":33},"end":{"line":8702,"character":49}},"message":"\"object\" 형식의 인수를 \"edit_draft\" 함수에서 \"NutritionTargets | None\" 형식의 \"proposed_targets\" 매개 변수에 할당할 수 없습니다.\n  형식 \"object\"은 형식 \"NutritionTargets | None\"에 할당할 수 없습니다.\n    \"object\"은 \"NutritionTargets\"에 할당할 수 없습니다.\n    \"object\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8703,"character":18},"end":{"line":8703,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"edit_draft\" 함수의 \"expected_generation\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8703,"character":18},"end":{"line":8703,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"edit_draft\" 함수의 \"expected_record_digest\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8703,"character":18},"end":{"line":8703,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"edit_draft\" 함수의 \"expected_checkin_revision\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8703,"character":18},"end":{"line":8703,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"edit_draft\" 함수의 \"expected_draft_revision\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8710,"character":18},"end":{"line":8710,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"edit_draft\" 함수의 \"proposed_targets\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8710,"character":18},"end":{"line":8710,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"edit_draft\" 함수의 \"expected_generation\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8710,"character":18},"end":{"line":8710,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"edit_draft\" 함수의 \"expected_record_digest\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8710,"character":18},"end":{"line":8710,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"edit_draft\" 함수의 \"expected_checkin_revision\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8710,"character":18},"end":{"line":8710,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"edit_draft\" 함수의 \"expected_draft_revision\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8714,"character":12},"end":{"line":8714,"character":23}},"message":"\"pop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pop’의 유형이 ‘Overload[(key: Unknown, /) -> Unknown, (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@pop, /) -> (Unknown | _T@pop)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8735,"character":12},"end":{"line":8739,"character":13}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8863,"character":12},"end":{"line":8866,"character":13}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8863,"character":18},"end":{"line":8863,"character":41}},"message":"\"edit_message_text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘edit_message_text’의 유형이 ‘(text: str, reply_markup: Unknown | None = None) -> CoroutineType[Any, Any, object]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8906,"character":26},"end":{"line":8906,"character":38}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8909,"character":15},"end":{"line":8909,"character":70}},"message":"반환 형식 \"Mapping[Unknown, Unknown] | dict[Any, Any] | dict[str, object]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8919,"character":25},"end":{"line":8919,"character":34}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8924,"character":35},"end":{"line":8924,"character":40}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"object | Mapping[Unknown, object]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8988,"character":28},"end":{"line":8988,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":8988,"character":62},"end":{"line":8988,"character":71}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9026,"character":16},"end":{"line":9026,"character":30}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9028,"character":48},"end":{"line":9028,"character":55}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"join\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9029,"character":37},"end":{"line":9029,"character":44}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"join\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9117,"character":16},"end":{"line":9117,"character":28}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9118,"character":23},"end":{"line":9118,"character":28}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9120,"character":25},"end":{"line":9120,"character":30}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"join\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9134,"character":12},"end":{"line":9134,"character":26}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9136,"character":12},"end":{"line":9136,"character":26}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9140,"character":12},"end":{"line":9140,"character":26}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9141,"character":15},"end":{"line":9141,"character":63}},"message":"반환 형식 \"tuple[Unknown, ...] | tuple[Literal['다음 체크인에서도 같은 항목을 기록해 주세요.']]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9141,"character":21},"end":{"line":9141,"character":28}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9195,"character":12},"end":{"line":9195,"character":18}},"message":"Type of \"parsed\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9200,"character":8},"end":{"line":9200,"character":14}},"message":"\"action\"의 형식을 부분적으로 알 수 없습니다.\n  ‘action’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9200,"character":17},"end":{"line":9200,"character":27}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9201,"character":8},"end":{"line":9201,"character":13}},"message":"\"value\"의 형식을 부분적으로 알 수 없습니다.\n  ‘value’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9201,"character":16},"end":{"line":9201,"character":26}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9202,"character":8},"end":{"line":9202,"character":13}},"message":"\"reply\"의 형식을 부분적으로 알 수 없습니다.\n  ‘reply’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9202,"character":16},"end":{"line":9202,"character":26}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9229,"character":35},"end":{"line":9229,"character":44}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9236,"character":18},"end":{"line":9236,"character":27}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9236,"character":18},"end":{"line":9236,"character":45}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9263,"character":18},"end":{"line":9263,"character":57}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9266,"character":18},"end":{"line":9270,"character":17}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9288,"character":8},"end":{"line":9288,"character":13}},"message":"\"queue\"의 형식을 부분적으로 알 수 없습니다.\n  ‘queue’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9292,"character":8},"end":{"line":9292,"character":17}},"message":"\"candidate\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9292,"character":20},"end":{"line":9292,"character":51}},"message":"\"latest_notified_candidate\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9297,"character":12},"end":{"line":9297,"character":18}},"message":"\"result\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9297,"character":21},"end":{"line":9297,"character":34}},"message":"\"approve\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9297,"character":35},"end":{"line":9297,"character":57}},"message":"\"candidate_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9298,"character":15},"end":{"line":9298,"character":36}},"message":"\"approved_count\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9299,"character":84},"end":{"line":9299,"character":99}},"message":"\"title\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9303,"character":18},"end":{"line":9303,"character":57}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9306,"character":18},"end":{"line":9310,"character":17}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9356,"character":16},"end":{"line":9356,"character":24}},"message":"\"supplier\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9367,"character":18},"end":{"line":9367,"character":57}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9370,"character":18},"end":{"line":9374,"character":17}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9380,"character":8},"end":{"line":9380,"character":22}},"message":"\"canonical_text\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedParameter","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedParameter"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedParameter"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9405,"character":24},"end":{"line":9405,"character":33}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9406,"character":28},"end":{"line":9406,"character":40}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9410,"character":27},"end":{"line":9410,"character":43}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9434,"character":24},"end":{"line":9434,"character":33}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9436,"character":29},"end":{"line":9436,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"callable\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9440,"character":15},"end":{"line":9440,"character":39}},"message":"불필요한 isinstance 호출입니다. \"str\"은(는) 항상 \"str\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9440,"character":47},"end":{"line":9440,"character":73}},"message":"불필요한 isinstance 호출입니다. \"str\"은(는) 항상 \"str\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9441,"character":12},"end":{"line":9441,"character":28}},"message":"코드에 접근할 수 없습니다.","severity":1,"code":"reportUnreachable","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnreachable"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnreachable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9448,"character":16},"end":{"line":9448,"character":48}},"message":"\"canonical_sha256\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9448,"character":32},"end":{"line":9448,"character":48}},"message":"\"object\" 클래스의 \"canonical_sha256\" 특성에 액세스할 수 없음\n  특성 \"canonical_sha256\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9456,"character":33},"end":{"line":9456,"character":65}},"message":"Type of \"coaching_feedback_enabled\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9502,"character":12},"end":{"line":9502,"character":27}},"message":"\"pipeline_kwargs\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pipeline_kwargs’의 유형이 ‘dict[str, (() -> bool) | Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9504,"character":43},"end":{"line":9506,"character":17}},"message":"\"revision_binding_digest\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9505,"character":36},"end":{"line":9505,"character":59}},"message":"\"object\" 클래스의 \"revision_binding_digest\" 특성에 액세스할 수 없음\n  특성 \"revision_binding_digest\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9519,"character":18},"end":{"line":9519,"character":33}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"processing_allowed\" 매개 변수에 해당합니다.\n  인수 형식이 \"(() -> bool) | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9519,"character":18},"end":{"line":9519,"character":33}},"message":"\"(() -> bool) | Unknown\" 형식의 인수를 \"str | None\" 형식의 \"revision_binding_digest\" 매개 변수에 할당할 수 없습니다.\n  형식 \"(() -> bool) | Unknown\"은 형식 \"str | None\"에 할당할 수 없습니다.\n    형식 \"() -> bool\"은 형식 \"str | None\"에 할당할 수 없습니다.\n      \"FunctionType\"은 \"str\"에 할당할 수 없습니다.\n      \"FunctionType\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9687,"character":23},"end":{"line":9687,"character":33}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9689,"character":25},"end":{"line":9689,"character":29}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9691,"character":24},"end":{"line":9691,"character":28}},"message":"\"item\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9698,"character":23},"end":{"line":9698,"character":30}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9700,"character":25},"end":{"line":9700,"character":29}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9702,"character":24},"end":{"line":9702,"character":28}},"message":"\"item\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9704,"character":23},"end":{"line":9704,"character":35}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"set[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9704,"character":27},"end":{"line":9704,"character":34}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9704,"character":44},"end":{"line":9704,"character":51}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9710,"character":51},"end":{"line":9710,"character":57}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9712,"character":16},"end":{"line":9712,"character":31}},"message":"\"seen_macro_keys\" 선언이 같은 이름의 선언으로 가려집니다.","severity":1,"code":"reportRedeclaration","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportRedeclaration"},"relatedInformation":[{"location":{"uri":"file:///home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","range":{"start":{"line":9743,"character":16},"end":{"line":9743,"character":31}}},"message":"변수 선언 보기"}]}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9713,"character":20},"end":{"line":9713,"character":24}},"message":"\"pair\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9715,"character":29},"end":{"line":9715,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9716,"character":31},"end":{"line":9716,"character":35}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9717,"character":32},"end":{"line":9717,"character":39}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9720,"character":32},"end":{"line":9720,"character":39}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9728,"character":47},"end":{"line":9728,"character":53}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9731,"character":16},"end":{"line":9731,"character":20}},"message":"\"item\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9733,"character":25},"end":{"line":9733,"character":29}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9734,"character":27},"end":{"line":9734,"character":31}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9735,"character":28},"end":{"line":9735,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9738,"character":28},"end":{"line":9738,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9742,"character":16},"end":{"line":9742,"character":22}},"message":"\"macros\"의 형식을 부분적으로 알 수 없습니다.\n  ‘macros’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9744,"character":23},"end":{"line":9744,"character":29}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9746,"character":20},"end":{"line":9746,"character":24}},"message":"\"pair\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9748,"character":29},"end":{"line":9748,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9749,"character":31},"end":{"line":9749,"character":35}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9750,"character":32},"end":{"line":9750,"character":39}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9753,"character":32},"end":{"line":9753,"character":39}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9774,"character":16},"end":{"line":9774,"character":76}},"message":"호출 식의 결과가 ‘datetime’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9907,"character":17},"end":{"line":9907,"character":39}},"message":"\"canonical_sha256\"의 형식을 부분적으로 알 수 없습니다.\n  ‘canonical_sha256’의 유형이 ‘str | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9907,"character":17},"end":{"line":9907,"character":39}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9907,"character":23},"end":{"line":9907,"character":39}},"message":"\"WeeklyGroundingInput\" 클래스의 \"canonical_sha256\" 특성에 액세스할 수 없음\n  특성 \"canonical_sha256\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9907,"character":23},"end":{"line":9907,"character":39}},"message":"\"AdaptiveGroundingInput\" 클래스의 \"canonical_sha256\" 특성에 액세스할 수 없음\n  특성 \"canonical_sha256\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9908,"character":41},"end":{"line":9908,"character":57}},"message":"\"WeeklyGroundingInput\" 클래스의 \"canonical_sha256\" 특성에 액세스할 수 없음\n  특성 \"canonical_sha256\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9908,"character":41},"end":{"line":9908,"character":57}},"message":"\"AdaptiveGroundingInput\" 클래스의 \"canonical_sha256\" 특성에 액세스할 수 없음\n  특성 \"canonical_sha256\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9932,"character":20},"end":{"line":9932,"character":37}},"message":"\"decision_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘decision_id’의 유형이 ‘Unknown | str’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9932,"character":20},"end":{"line":9932,"character":37}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9932,"character":26},"end":{"line":9932,"character":37}},"message":"\"DailyGroundingInput\" 클래스의 \"decision_id\" 특성에 액세스할 수 없음\n  특성 \"decision_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9932,"character":26},"end":{"line":9932,"character":37}},"message":"\"WeeklyGroundingInput\" 클래스의 \"decision_id\" 특성에 액세스할 수 없음\n  특성 \"decision_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9934,"character":21},"end":{"line":9934,"character":32}},"message":"\"DailyGroundingInput\" 클래스의 \"decision_id\" 특성에 액세스할 수 없음\n  특성 \"decision_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9934,"character":21},"end":{"line":9934,"character":32}},"message":"\"WeeklyGroundingInput\" 클래스의 \"decision_id\" 특성에 액세스할 수 없음\n  특성 \"decision_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9935,"character":42},"end":{"line":9935,"character":53}},"message":"\"DailyGroundingInput\" 클래스의 \"decision_id\" 특성에 액세스할 수 없음\n  특성 \"decision_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9935,"character":42},"end":{"line":9935,"character":53}},"message":"\"WeeklyGroundingInput\" 클래스의 \"decision_id\" 특성에 액세스할 수 없음\n  특성 \"decision_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9939,"character":30},"end":{"line":9939,"character":41}},"message":"\"DailyGroundingInput\" 클래스의 \"decision_id\" 특성에 액세스할 수 없음\n  특성 \"decision_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9939,"character":30},"end":{"line":9939,"character":41}},"message":"\"WeeklyGroundingInput\" 클래스의 \"decision_id\" 특성에 액세스할 수 없음\n  특성 \"decision_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9941,"character":30},"end":{"line":9941,"character":41}},"message":"\"DailyGroundingInput\" 클래스의 \"decision_id\" 특성에 액세스할 수 없음\n  특성 \"decision_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9941,"character":30},"end":{"line":9941,"character":41}},"message":"\"WeeklyGroundingInput\" 클래스의 \"decision_id\" 특성에 액세스할 수 없음\n  특성 \"decision_id\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9991,"character":23},"end":{"line":9991,"character":34}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9992,"character":26},"end":{"line":9992,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":9993,"character":19},"end":{"line":9993,"character":30}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10035,"character":30},"end":{"line":10035,"character":37}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10056,"character":42},"end":{"line":10056,"character":57}},"message":"\"get_hermes_home\"은(는) \"hermes_cli.config\" 모듈에서 내보내지지 않습니다.\n  대신 \"hermes_constants\"에서 가져오기","severity":1,"code":"reportPrivateLocalImportUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateLocalImportUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10066,"character":12},"end":{"line":10066,"character":18}},"message":"\"source\"의 형식을 부분적으로 알 수 없습니다.\n  ‘source’의 유형이 ‘dict[str, str | dict[Unknown, Unknown] | Unknown | Any]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10068,"character":30},"end":{"line":10068,"character":51}},"message":"\"facts\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10068,"character":30},"end":{"line":10068,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"map\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10068,"character":46},"end":{"line":10068,"character":51}},"message":"\"object\" 클래스의 \"facts\" 특성에 액세스할 수 없음\n  특성 \"facts\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10069,"character":35},"end":{"line":10069,"character":66}},"message":"\"verified_memory\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10069,"character":51},"end":{"line":10069,"character":66}},"message":"\"object\" 클래스의 \"verified_memory\" 특성에 액세스할 수 없음\n  특성 \"verified_memory\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10070,"character":43},"end":{"line":10070,"character":82}},"message":"\"revision_binding_digest\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10070,"character":59},"end":{"line":10070,"character":82}},"message":"\"object\" 클래스의 \"revision_binding_digest\" 특성에 액세스할 수 없음\n  특성 \"revision_binding_digest\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10071,"character":38},"end":{"line":10071,"character":72}},"message":"\"source_cluster_ids\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10071,"character":54},"end":{"line":10071,"character":72}},"message":"\"object\" 클래스의 \"source_cluster_ids\" 특성에 액세스할 수 없음\n  특성 \"source_cluster_ids\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10072,"character":37},"end":{"line":10072,"character":70}},"message":"\"excluded_risk_ids\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10072,"character":53},"end":{"line":10072,"character":70}},"message":"\"object\" 클래스의 \"excluded_risk_ids\" 특성에 액세스할 수 없음\n  특성 \"excluded_risk_ids\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10075,"character":63},"end":{"line":10075,"character":69}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"export_coaching_grounding\" 함수의 \"source\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[str, str | dict[Unknown, Unknown] | Unknown | Any]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10094,"character":42},"end":{"line":10094,"character":74}},"message":"Type of \"coaching_feedback_enabled\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10120,"character":15},"end":{"line":10124,"character":9}},"message":"반환 형식 \"Unknown | Literal[False]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10122,"character":21},"end":{"line":10122,"character":52}},"message":"\"revision_binding_digest\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10122,"character":21},"end":{"line":10122,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10122,"character":29},"end":{"line":10122,"character":52}},"message":"\"object\" 클래스의 \"revision_binding_digest\" 특성에 액세스할 수 없음\n  특성 \"revision_binding_digest\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10123,"character":24},"end":{"line":10123,"character":47}},"message":"\"object\" 클래스의 \"revision_binding_digest\" 특성에 액세스할 수 없음\n  특성 \"revision_binding_digest\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10123,"character":51},"end":{"line":10123,"character":90}},"message":"\"revision_binding_digest\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10123,"character":67},"end":{"line":10123,"character":90}},"message":"\"object\" 클래스의 \"revision_binding_digest\" 특성에 액세스할 수 없음\n  특성 \"revision_binding_digest\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10145,"character":8},"end":{"line":10145,"character":20}},"message":"\"safe_binding\"의 형식을 부분적으로 알 수 없습니다.\n  ‘safe_binding’의 유형이 ‘Unknown | Literal['']’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10146,"character":12},"end":{"line":10146,"character":51}},"message":"\"revision_binding_digest\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10146,"character":28},"end":{"line":10146,"character":51}},"message":"\"object\" 클래스의 \"revision_binding_digest\" 특성에 액세스할 수 없음\n  특성 \"revision_binding_digest\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10160,"character":36},"end":{"line":10160,"character":48}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"revision_binding_digest\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10175,"character":42},"end":{"line":10175,"character":57}},"message":"\"get_hermes_home\"은(는) \"hermes_cli.config\" 모듈에서 내보내지지 않습니다.\n  대신 \"hermes_constants\"에서 가져오기","severity":1,"code":"reportPrivateLocalImportUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateLocalImportUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10197,"character":42},"end":{"line":10197,"character":57}},"message":"\"get_hermes_home\"은(는) \"hermes_cli.config\" 모듈에서 내보내지지 않습니다.\n  대신 \"hermes_constants\"에서 가져오기","severity":1,"code":"reportPrivateLocalImportUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateLocalImportUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10223,"character":12},"end":{"line":10223,"character":24}},"message":"Type of \"model_config\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10224,"character":27},"end":{"line":10224,"character":43}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10224,"character":27},"end":{"line":10224,"character":59}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10225,"character":24},"end":{"line":10225,"character":40}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10225,"character":24},"end":{"line":10225,"character":55}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10226,"character":12},"end":{"line":10226,"character":24}},"message":"Type of \"draft_config\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10228,"character":16},"end":{"line":10228,"character":32}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10228,"character":16},"end":{"line":10231,"character":17}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10230,"character":20},"end":{"line":10230,"character":47}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10257,"character":12},"end":{"line":10257,"character":20}},"message":"Type of \"response\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10257,"character":23},"end":{"line":10257,"character":34}},"message":"Type of \"chat\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10257,"character":23},"end":{"line":10257,"character":46}},"message":"Type of \"completions\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10257,"character":23},"end":{"line":10257,"character":53}},"message":"Type of \"create\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10258,"character":26},"end":{"line":10258,"character":42}},"message":"Type of \"choices\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10258,"character":26},"end":{"line":10258,"character":53}},"message":"Type of \"message\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10258,"character":26},"end":{"line":10258,"character":61}},"message":"Type of \"content\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10274,"character":16},"end":{"line":10274,"character":46}},"message":"불필요한 isinstance 호출입니다. \"str\"은(는) 항상 \"str\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10275,"character":19},"end":{"line":10275,"character":48}},"message":"불필요한 isinstance 호출입니다. \"str\"은(는) 항상 \"str\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10277,"character":19},"end":{"line":10277,"character":53}},"message":"불필요한 isinstance 호출입니다. \"int\"은(는) 항상 \"int\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10292,"character":16},"end":{"line":10292,"character":23}},"message":"Type of \"payload\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10297,"character":20},"end":{"line":10297,"character":31}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10427,"character":16},"end":{"line":10427,"character":42}},"message":"\"auxiliary_max_tokens_param\"의 형식을 부분적으로 알 수 없습니다.\n  ‘auxiliary_max_tokens_param’의 유형이 ‘(value: int, *, model: str | None = None) -> dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10433,"character":12},"end":{"line":10433,"character":27}},"message":"Type of \"coaching_config\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10436,"character":24},"end":{"line":10436,"character":43}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10436,"character":24},"end":{"line":10436,"character":91}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10437,"character":24},"end":{"line":10437,"character":43}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10437,"character":24},"end":{"line":10437,"character":76}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10438,"character":26},"end":{"line":10438,"character":45}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10438,"character":26},"end":{"line":10438,"character":66}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10441,"character":27},"end":{"line":10441,"character":46}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10441,"character":27},"end":{"line":10441,"character":80}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10442,"character":24},"end":{"line":10442,"character":43}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10442,"character":24},"end":{"line":10442,"character":75}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10455,"character":41},"end":{"line":10455,"character":60}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10455,"character":41},"end":{"line":10455,"character":81}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10459,"character":24},"end":{"line":10462,"character":25}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"update\" 함수의 \"m\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10466,"character":20},"end":{"line":10466,"character":28}},"message":"Type of \"response\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10466,"character":31},"end":{"line":10466,"character":42}},"message":"Type of \"chat\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10466,"character":31},"end":{"line":10466,"character":54}},"message":"Type of \"completions\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10466,"character":31},"end":{"line":10466,"character":61}},"message":"Type of \"create\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10468,"character":24},"end":{"line":10468,"character":32}},"message":"Argument type is Any\n  인수가 \"provider_result\" 함수의 \"response\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10518,"character":12},"end":{"line":10518,"character":27}},"message":"Type of \"coaching_config\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10520,"character":20},"end":{"line":10520,"character":39}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10520,"character":20},"end":{"line":10520,"character":89}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10521,"character":20},"end":{"line":10521,"character":39}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10521,"character":20},"end":{"line":10521,"character":73}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10522,"character":22},"end":{"line":10522,"character":41}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10522,"character":22},"end":{"line":10522,"character":64}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10534,"character":39},"end":{"line":10534,"character":48}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10540,"character":12},"end":{"line":10540,"character":16}},"message":"\"sent\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10540,"character":25},"end":{"line":10540,"character":64}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10544,"character":18},"end":{"line":10548,"character":17}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10554,"character":12},"end":{"line":10554,"character":74}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10554,"character":57},"end":{"line":10554,"character":72}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10554,"character":57},"end":{"line":10554,"character":72}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10556,"character":12},"end":{"line":10556,"character":67}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10556,"character":50},"end":{"line":10556,"character":65}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10556,"character":50},"end":{"line":10556,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10561,"character":66},"end":{"line":10561,"character":75}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10563,"character":64},"end":{"line":10563,"character":73}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10581,"character":16},"end":{"line":10581,"character":21}},"message":"\"value\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10581,"character":24},"end":{"line":10581,"character":40}},"message":"\"model_dump\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10581,"character":30},"end":{"line":10581,"character":40}},"message":"\"object\" 클래스의 \"model_dump\" 특성에 액세스할 수 없음\n  특성 \"model_dump\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10583,"character":43},"end":{"line":10583,"character":48}},"message":"\"DataclassInstance | type[DataclassInstance]\" 형식의 인수를 \"asdict\" 함수에서 \"DataclassInstance\" 형식의 \"obj\" 매개 변수에 할당할 수 없습니다.\n  형식 \"DataclassInstance | type[DataclassInstance]\"은 형식 \"DataclassInstance\"에 할당할 수 없습니다.\n    \"__dataclass_fields__\"은(는) 프로토콜에서 ClassVar로 정의됩니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10602,"character":33},"end":{"line":10602,"character":46}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10605,"character":16},"end":{"line":10605,"character":24}},"message":"Type of \"document\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10608,"character":50},"end":{"line":10608,"character":58}},"message":"Argument type is Any\n  인수가 \"_nutrition_schedule_digest\" 함수의 \"value\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10613,"character":24},"end":{"line":10613,"character":32}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10614,"character":28},"end":{"line":10614,"character":36}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10621,"character":24},"end":{"line":10621,"character":32}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10621,"character":42},"end":{"line":10621,"character":50}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"default\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10622,"character":20},"end":{"line":10622,"character":28}},"message":"\"customer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10633,"character":12},"end":{"line":10636,"character":13}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_nutrition_schedule_digest\" 함수의 \"value\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[str, Unknown | None]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10634,"character":38},"end":{"line":10634,"character":47}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10635,"character":38},"end":{"line":10635,"character":47}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10652,"character":23},"end":{"line":10652,"character":34}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10663,"character":8},"end":{"line":10663,"character":35}},"message":"“_nutrition_delivery_receipt“ 메서드가 override로 표시되지 않았지만 “TelegramWeeklyTransportMixin“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10668,"character":15},"end":{"line":10668,"character":25}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10668,"character":32},"end":{"line":10668,"character":42}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10670,"character":25},"end":{"line":10670,"character":35}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10671,"character":27},"end":{"line":10671,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10681,"character":15},"end":{"line":10681,"character":31}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10683,"character":26},"end":{"line":10683,"character":42}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10684,"character":62},"end":{"line":10684,"character":73}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...] | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10685,"character":16},"end":{"line":10685,"character":26}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10693,"character":8},"end":{"line":10693,"character":35}},"message":"“_reminder_no_send_rejection“ 메서드가 override로 표시되지 않았지만 “TelegramWeeklyTransportMixin“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10707,"character":20},"end":{"line":10707,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10709,"character":12},"end":{"line":10709,"character":25}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10715,"character":19},"end":{"line":10715,"character":28}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10716,"character":19},"end":{"line":10716,"character":28}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10731,"character":8},"end":{"line":10731,"character":13}},"message":"Type of \"event\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10731,"character":16},"end":{"line":10731,"character":94}},"message":"Type of \"current_terminal_morning_response\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10734,"character":26},"end":{"line":10734,"character":47}},"message":"Type of \"occurred_at_kst\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10734,"character":26},"end":{"line":10734,"character":47}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10767,"character":8},"end":{"line":10767,"character":16}},"message":"\"customer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10767,"character":19},"end":{"line":10767,"character":39}},"message":"\"customer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10767,"character":31},"end":{"line":10767,"character":39}},"message":"\"WeeklyReminderCoordinator\" 클래스의 \"customer\" 특성에 액세스할 수 없음\n  특성 \"customer\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10770,"character":38},"end":{"line":10770,"character":46}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10779,"character":19},"end":{"line":10779,"character":57}},"message":"\"customer_transport_allowed\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10779,"character":31},"end":{"line":10779,"character":57}},"message":"\"WeeklyReminderCoordinator\" 클래스의 \"customer_transport_allowed\" 특성에 액세스할 수 없음\n  특성 \"customer_transport_allowed\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10789,"character":64},"end":{"line":10789,"character":72}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"runtime\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10797,"character":20},"end":{"line":10797,"character":44}},"message":"Argument type is Any\n  인수가 \"reserve_missing_checkin_reminder\" 함수의 \"missing_window\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10807,"character":23},"end":{"line":10807,"character":69}},"message":"반환 형식 \"tuple[object, Unknown]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10807,"character":33},"end":{"line":10807,"character":69}},"message":"\"object\" 형식의 개체를 호출할 수 없습니다.\n  특성 \"__call__\" 알 수 없음","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10809,"character":12},"end":{"line":10809,"character":22}},"message":"\"authorized\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10809,"character":25},"end":{"line":10809,"character":92}},"message":"\"authorize_missing_morning_reminder\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10809,"character":58},"end":{"line":10809,"character":92}},"message":"\"object\" 클래스의 \"authorize_missing_morning_reminder\" 특성에 액세스할 수 없음\n  특성 \"authorize_missing_morning_reminder\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10816,"character":12},"end":{"line":10816,"character":20}},"message":"\"prepared\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10816,"character":22},"end":{"line":10816,"character":29}},"message":"\"sending\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10817,"character":46},"end":{"line":10817,"character":54}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_schedule_state\" 함수의 \"receipt\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10818,"character":16},"end":{"line":10825,"character":17}},"message":"호출 식의 결과가 ‘object | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10819,"character":20},"end":{"line":10819,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"reminder_review_candidate\" 함수의 \"reminder\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10823,"character":36},"end":{"line":10823,"character":60}},"message":"Argument type is Any\n  인수가 \"_terminal_morning_checkin_received_at\" 함수의 \"kst_day\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10827,"character":32},"end":{"line":10827,"character":39}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10834,"character":12},"end":{"line":10834,"character":19}},"message":"\"current\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10834,"character":22},"end":{"line":10834,"character":42}},"message":"\"customer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10834,"character":34},"end":{"line":10834,"character":42}},"message":"\"WeeklyReminderCoordinator\" 클래스의 \"customer\" 특성에 액세스할 수 없음\n  특성 \"customer\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10835,"character":50},"end":{"line":10835,"character":57}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10841,"character":23},"end":{"line":10841,"character":61}},"message":"\"customer_transport_allowed\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10841,"character":35},"end":{"line":10841,"character":61}},"message":"\"WeeklyReminderCoordinator\" 클래스의 \"customer_transport_allowed\" 특성에 액세스할 수 없음\n  특성 \"customer_transport_allowed\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10850,"character":16},"end":{"line":10850,"character":139}},"message":"\"object\" 형식의 개체를 호출할 수 없습니다.\n  특성 \"__call__\" 알 수 없음","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10857,"character":32},"end":{"line":10857,"character":56}},"message":"Argument type is Any\n  인수가 \"_terminal_morning_checkin_received_at\" 함수의 \"kst_day\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10863,"character":16},"end":{"line":10865,"character":17}},"message":"\"object\" 형식의 개체를 호출할 수 없습니다.\n  특성 \"__call__\" 알 수 없음","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10871,"character":16},"end":{"line":10871,"character":68}},"message":"\"object\" 형식의 개체를 호출할 수 없습니다.\n  특성 \"__call__\" 알 수 없음","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10877,"character":24},"end":{"line":10877,"character":55}},"message":"Argument type is Any\n  인수가 \"_send_nutrition_topic\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10878,"character":25},"end":{"line":10878,"character":57}},"message":"Argument type is Any\n  인수가 \"_send_nutrition_topic\" 함수의 \"topic_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10883,"character":16},"end":{"line":10883,"character":81}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10886,"character":12},"end":{"line":10886,"character":21}},"message":"\"delivered\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10886,"character":24},"end":{"line":10888,"character":13}},"message":"\"object\" 형식의 개체를 호출할 수 없습니다.\n  특성 \"__call__\" 알 수 없음","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10889,"character":12},"end":{"line":10889,"character":49}},"message":"\"object\" 형식의 개체를 호출할 수 없습니다.\n  특성 \"__call__\" 알 수 없음","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10894,"character":20},"end":{"line":10894,"character":85}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10896,"character":20},"end":{"line":10896,"character":82}},"message":"\"object\" 형식의 개체를 호출할 수 없습니다.\n  특성 \"__call__\" 알 수 없음","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10918,"character":12},"end":{"line":10918,"character":20}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10923,"character":12},"end":{"line":10923,"character":24}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10949,"character":14},"end":{"line":10949,"character":49}},"message":"“_send_activation_completion_notices“ 메서드가 override로 표시되지 않았지만 “TelegramWeeklyDispatchMixin“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10960,"character":17},"end":{"line":10960,"character":40}},"message":"Type annotation for attribute `_activation_notice_lock` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10985,"character":20},"end":{"line":10985,"character":47}},"message":"호출 식의 결과가 ‘ActivationNoticeReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":10991,"character":20},"end":{"line":10991,"character":88}},"message":"호출 식의 결과가 ‘ActivationNoticeReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11007,"character":20},"end":{"line":11007,"character":28}},"message":"\"customer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11007,"character":31},"end":{"line":11007,"character":51}},"message":"\"customer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11007,"character":43},"end":{"line":11007,"character":51}},"message":"\"object\" 클래스의 \"customer\" 특성에 액세스할 수 없음\n  특성 \"customer\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11008,"character":50},"end":{"line":11008,"character":58}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11013,"character":31},"end":{"line":11013,"character":69}},"message":"\"customer_transport_allowed\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11013,"character":43},"end":{"line":11013,"character":69}},"message":"\"object\" 클래스의 \"customer_transport_allowed\" 특성에 액세스할 수 없음\n  특성 \"customer_transport_allowed\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11023,"character":20},"end":{"line":11023,"character":91}},"message":"호출 식의 결과가 ‘ActivationNoticeReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11039,"character":16},"end":{"line":11039,"character":45}},"message":"호출 식의 결과가 ‘ActivationNoticeReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11042,"character":20},"end":{"line":11042,"character":74}},"message":"호출 식의 결과가 ‘ActivationNoticeReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11066,"character":34},"end":{"line":11066,"character":43}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11131,"character":12},"end":{"line":11131,"character":20}},"message":"Type of \"customer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11134,"character":27},"end":{"line":11134,"character":35}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11139,"character":68},"end":{"line":11139,"character":76}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"runtime\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11142,"character":62},"end":{"line":11142,"character":70}},"message":"Argument type is Any\n  인수가 \"load_verified_dual_coach_risk_policy\" 함수의 \"runtime\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11156,"character":16},"end":{"line":11156,"character":81}},"message":"호출 식의 결과가 ‘WeeklyOperationsTask’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11181,"character":55},"end":{"line":11181,"character":83}},"message":"불필요한 isinstance 호출입니다. \"ScheduledDeliveryReceipt\"은(는) 항상 \"Mapping[Unknown, object]\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11213,"character":12},"end":{"line":11213,"character":27}},"message":"\"weekly_dispatch\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11213,"character":36},"end":{"line":11213,"character":72}},"message":"\"_run_weekly_operations_dispatch\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_run_weekly_operations_dispatch’의 유형이 ‘(tasks: Sequence[WeeklyOperationsTask], local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11214,"character":28},"end":{"line":11214,"character":52}},"message":"\"failures\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11214,"character":28},"end":{"line":11214,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"extend\" 함수의 \"iterable\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11261,"character":12},"end":{"line":11261,"character":20}},"message":"\"customer\"의 형식을 부분적으로 알 수 없습니다.\n  ‘customer’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11261,"character":23},"end":{"line":11261,"character":43}},"message":"\"customer\"의 형식을 부분적으로 알 수 없습니다.\n  ‘customer’의 유형이 ‘(customer_key: str) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11267,"character":16},"end":{"line":11267,"character":24}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_daily_task_is_current\" 함수의 \"customer\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11285,"character":20},"end":{"line":11285,"character":31}},"message":"\"destination\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11285,"character":34},"end":{"line":11285,"character":47}},"message":"\"spec\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11285,"character":34},"end":{"line":11285,"character":56}},"message":"\"telegram\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11288,"character":24},"end":{"line":11288,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"customer_transport_allowed\" 함수의 \"destination\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11299,"character":24},"end":{"line":11299,"character":42}},"message":"\"data_root\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11299,"character":24},"end":{"line":11299,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"build_customer_weekly_summary\" 함수의 \"events_path\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11302,"character":29},"end":{"line":11302,"character":42}},"message":"\"spec\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11302,"character":29},"end":{"line":11302,"character":47}},"message":"\"plan\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11302,"character":29},"end":{"line":11302,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"build_customer_weekly_summary\" 함수의 \"plan\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11303,"character":32},"end":{"line":11303,"character":45}},"message":"\"spec\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11303,"character":32},"end":{"line":11303,"character":53}},"message":"\"profile\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11303,"character":32},"end":{"line":11303,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"build_customer_weekly_summary\" 함수의 \"profile\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11305,"character":20},"end":{"line":11305,"character":33}},"message":"변수 \"prior_summary\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedVariable","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedVariable"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11307,"character":24},"end":{"line":11307,"character":37}},"message":"변수 \"prior_summary\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedVariable","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedVariable"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11308,"character":28},"end":{"line":11308,"character":46}},"message":"\"data_root\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11308,"character":28},"end":{"line":11308,"character":74}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"build_customer_period_report\" 함수의 \"events_path\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11311,"character":33},"end":{"line":11311,"character":46}},"message":"\"spec\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11311,"character":33},"end":{"line":11311,"character":51}},"message":"\"plan\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11311,"character":33},"end":{"line":11311,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"build_customer_period_report\" 함수의 \"plan\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11312,"character":36},"end":{"line":11312,"character":49}},"message":"\"spec\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11312,"character":36},"end":{"line":11312,"character":57}},"message":"\"profile\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11312,"character":36},"end":{"line":11312,"character":57}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"build_customer_period_report\" 함수의 \"profile\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11323,"character":68},"end":{"line":11323,"character":76}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"for_registered\" 함수의 \"runtime\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11323,"character":78},"end":{"line":11323,"character":85}},"message":"‘_events’은(는) 선언된 클래스 외부에서 보호되고 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11325,"character":28},"end":{"line":11325,"character":36}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"for_registered\" 함수의 \"runtime\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11328,"character":58},"end":{"line":11328,"character":70}},"message":"‘_read_events’은(는) 선언된 클래스 외부에서 보호되고 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11334,"character":42},"end":{"line":11334,"character":76}},"message":"\"CustomerActionOutcome | None\" 형식의 인수를 \"build_customer_weekly_review_source\" 함수에서 \"WeeklyActionOutcome | None\" 형식의 \"latest_action\" 매개 변수에 할당할 수 없습니다.\n  형식 \"CustomerActionOutcome | None\"은 형식 \"WeeklyActionOutcome | None\"에 할당할 수 없습니다.\n    형식 \"CustomerActionOutcome\"은 형식 \"WeeklyActionOutcome | None\"에 할당할 수 없습니다.\n      ‘CustomerActionOutcome’은(는) ‘WeeklyActionOutcome’ 프로토콜과 호환되지 않습니다.\n        \"action_text\"(이)가 프로토콜에서 읽기 전용이 아닙니다.\n        \"action_text\"은(는) 프로토콜에서 쓸 수 있습니다.\n        \"outcome\"(이)가 프로토콜에서 읽기 전용이 아닙니다.\n        \"outcome\"은(는) 프로토콜에서 쓸 수 있습니다.\n      \"CustomerActionOutcome\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11359,"character":24},"end":{"line":11359,"character":39}},"message":"\"grounding_input\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11360,"character":24},"end":{"line":11360,"character":44}},"message":"\"current_weekly_input\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11363,"character":27},"end":{"line":11363,"character":41}},"message":"\"canonical_body\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11364,"character":71},"end":{"line":11364,"character":82}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_nutrition_schedule_destination\" 함수의 \"address\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | IncomingAddress\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11373,"character":27},"end":{"line":11373,"character":48}},"message":"불필요한 isinstance 호출입니다. \"str\"은(는) 항상 \"str\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11380,"character":32},"end":{"line":11380,"character":46}},"message":"\"canonical_body\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11383,"character":24},"end":{"line":11383,"character":39}},"message":"\"grounding_input\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11384,"character":24},"end":{"line":11384,"character":44}},"message":"\"current_weekly_input\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11387,"character":27},"end":{"line":11387,"character":41}},"message":"\"canonical_body\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11391,"character":20},"end":{"line":11391,"character":24}},"message":"\"WeeklyOperationsTask\" 형식의 인수를 \"reserve_customer_task_delivery\" 함수에서 \"CustomerScheduleTask\" 형식의 \"task\" 매개 변수에 할당할 수 없습니다.\n  \"WeeklyOperationsTask\"은 \"CustomerScheduleTask\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11423,"character":20},"end":{"line":11427,"character":21}},"message":"호출 식의 결과가 ‘ScheduledDeliveryReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11438,"character":16},"end":{"line":11438,"character":32}},"message":"\"current_customer\"의 형식을 부분적으로 알 수 없습니다.\n  ‘current_customer’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11438,"character":35},"end":{"line":11438,"character":55}},"message":"\"customer\"의 형식을 부분적으로 알 수 없습니다.\n  ‘customer’의 유형이 ‘(customer_key: str) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11439,"character":16},"end":{"line":11439,"character":35}},"message":"\"current_destination\"의 형식을 부분적으로 알 수 없습니다.\n  ‘current_destination’의 유형이 ‘Unknown | IncomingAddress’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11440,"character":20},"end":{"line":11440,"character":41}},"message":"\"spec\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11440,"character":20},"end":{"line":11440,"character":50}},"message":"\"telegram\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11440,"character":37},"end":{"line":11440,"character":41}},"message":"\"spec\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11447,"character":20},"end":{"line":11447,"character":39}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_nutrition_schedule_destination\" 함수의 \"address\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | IncomingAddress\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11454,"character":28},"end":{"line":11454,"character":44}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_daily_task_is_current\" 함수의 \"customer\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11467,"character":28},"end":{"line":11467,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"customer_transport_allowed\" 함수의 \"destination\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | IncomingAddress\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11475,"character":20},"end":{"line":11479,"character":21}},"message":"호출 식의 결과가 ‘ScheduledDeliveryReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11487,"character":28},"end":{"line":11487,"character":59}},"message":"Argument type is Any\n  인수가 \"_send_nutrition_topic\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11487,"character":36},"end":{"line":11487,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | IncomingAddress\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11488,"character":29},"end":{"line":11488,"character":61}},"message":"Argument type is Any\n  인수가 \"_send_nutrition_topic\" 함수의 \"topic_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11488,"character":37},"end":{"line":11488,"character":48}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | IncomingAddress\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11493,"character":20},"end":{"line":11497,"character":21}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11494,"character":24},"end":{"line":11494,"character":35}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_activate_nutrition_generation_card\" 함수의 \"owner\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | IncomingAddress\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11500,"character":20},"end":{"line":11504,"character":21}},"message":"호출 식의 결과가 ‘ScheduledDeliveryReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11511,"character":20},"end":{"line":11515,"character":21}},"message":"호출 식의 결과가 ‘ScheduledDeliveryReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11524,"character":20},"end":{"line":11528,"character":21}},"message":"호출 식의 결과가 ‘ScheduledDeliveryReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11543,"character":20},"end":{"line":11547,"character":21}},"message":"호출 식의 결과가 ‘ScheduledDeliveryReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11554,"character":16},"end":{"line":11554,"character":72}},"message":"호출 식의 결과가 ‘ScheduledDeliveryReceipt’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11560,"character":8},"end":{"line":11560,"character":24}},"message":"\"maintenance_noop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘maintenance_noop’의 유형이 ‘Unknown | bool’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11563,"character":16},"end":{"line":11563,"character":48}},"message":"\"maintenance_noop\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11576,"character":8},"end":{"line":11576,"character":20}},"message":"\"display_name\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedParameter","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedParameter"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedParameter"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11623,"character":12},"end":{"line":11623,"character":25}},"message":"\"change_number\"의 형식을 부분적으로 알 수 없습니다.\n  ‘change_number’의 유형이 ‘float | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11623,"character":28},"end":{"line":11623,"character":58}},"message":"‘-’ 연산자는 ‘float’ 및 ‘float | None’ 형식에 대해 지원되지 않습니다.\n  ‘-’ 연산자는 ‘float’ 및 ‘None’ 형식에 대해 지원되지 않습니다.","severity":1,"code":"reportOperatorIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOperatorIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11623,"character":28},"end":{"line":11623,"character":73}},"message":"‘/’ 연산자는 ‘float | Unknown’ 및 ‘float | None’ 형식에 대해 지원되지 않습니다.\n  ‘/’ 연산자는 ‘float’ 및 ‘None’ 형식에 대해 지원되지 않습니다.","severity":1,"code":"reportOperatorIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOperatorIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11642,"character":12},"end":{"line":11642,"character":25}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_nutrition_weekly_interpretation\" 함수의 \"change\" 매개 변수에 해당합니다.\n  인수 형식이 \"float | Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11649,"character":12},"end":{"line":11649,"character":25}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_nutrition_weekly_judgment\" 함수의 \"change\" 매개 변수에 해당합니다.\n  인수 형식이 \"float | Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11660,"character":64},"end":{"line":11660,"character":118}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_nutrition_percent_text\" 함수의 \"value\" 매개 변수에 해당합니다.\n  인수 형식이 \"float | Unknown | object | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11685,"character":16},"end":{"line":11685,"character":21}},"message":"\"value\"의 형식을 부분적으로 알 수 없습니다.\n  ‘value’의 유형이 ‘object | Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11685,"character":24},"end":{"line":11685,"character":35}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11688,"character":41},"end":{"line":11688,"character":46}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"object | Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11689,"character":23},"end":{"line":11689,"character":28}},"message":"반환 형식 \"object | Unknown | Any\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11734,"character":20},"end":{"line":11734,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11736,"character":23},"end":{"line":11736,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11742,"character":20},"end":{"line":11742,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11744,"character":23},"end":{"line":11744,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11753,"character":52},"end":{"line":11753,"character":57}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...] | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11754,"character":59},"end":{"line":11754,"character":67}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_report_number\" 함수의 \"value\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11755,"character":60},"end":{"line":11755,"character":68}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_report_number\" 함수의 \"value\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11761,"character":31},"end":{"line":11761,"character":36}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, Unknown] | list[Unknown] | Mapping[Unknown, object] | object | tuple[Unknown, ...]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11769,"character":20},"end":{"line":11769,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11771,"character":23},"end":{"line":11771,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11777,"character":20},"end":{"line":11777,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11779,"character":23},"end":{"line":11779,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, /) -> (object | None), (key: Unknown, default: object, /) -> object, (key: Unknown, default: _T@get, /) -> (object | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11785,"character":54},"end":{"line":11785,"character":59}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...] | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11786,"character":59},"end":{"line":11786,"character":67}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_report_number\" 함수의 \"value\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11787,"character":60},"end":{"line":11787,"character":68}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_report_number\" 함수의 \"value\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11789,"character":60},"end":{"line":11789,"character":71}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"object | tuple[Unknown, ...] | list[Unknown] | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11792,"character":31},"end":{"line":11792,"character":41}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11792,"character":50},"end":{"line":11792,"character":60}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11802,"character":29},"end":{"line":11802,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11802,"character":39},"end":{"line":11802,"character":43}},"message":"\"item\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11952,"character":25},"end":{"line":11952,"character":31}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, ...] | list[Unknown] | set[Unknown] | frozenset[Unknown] | tuple[()]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11962,"character":35},"end":{"line":11962,"character":40}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11962,"character":61},"end":{"line":11962,"character":66}},"message":"\"value\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11962,"character":84},"end":{"line":11962,"character":89}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11966,"character":8},"end":{"line":11966,"character":41}},"message":"반환 형식 \"Unknown | None\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11969,"character":42},"end":{"line":11969,"character":57}},"message":"\"get_hermes_home\"은(는) \"hermes_cli.config\" 모듈에서 내보내지지 않습니다.\n  대신 \"hermes_constants\"에서 가져오기","severity":1,"code":"reportPrivateLocalImportUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateLocalImportUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11978,"character":17},"end":{"line":11978,"character":47}},"message":"가져오기 \"source_collector.source_review\"을(를) 확인할 수 없습니다.","severity":1,"code":"reportMissingImports","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11978,"character":55},"end":{"line":11978,"character":72}},"message":"\"SourceReviewQueue\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11980,"character":19},"end":{"line":11980,"character":87}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11986,"character":56},"end":{"line":11986,"character":65}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11988,"character":8},"end":{"line":11988,"character":13}},"message":"\"queue\"의 형식을 부분적으로 알 수 없습니다.\n  ‘queue’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11991,"character":8},"end":{"line":11991,"character":17}},"message":"\"candidate\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11991,"character":20},"end":{"line":11991,"character":40}},"message":"\"next_candidate\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11994,"character":8},"end":{"line":11994,"character":23}},"message":"\"callback_prefix\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11994,"character":26},"end":{"line":11994,"character":48}},"message":"\"candidate_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11995,"character":8},"end":{"line":11995,"character":17}},"message":"\"published\"의 형식을 부분적으로 알 수 없습니다.\n  ‘published’의 유형이 ‘Unknown | Literal['공개일 미상']’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11995,"character":20},"end":{"line":11995,"character":42}},"message":"\"published_at\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11998,"character":19},"end":{"line":11998,"character":35}},"message":"\"source\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11998,"character":19},"end":{"line":11998,"character":41}},"message":"\"value\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":11999,"character":19},"end":{"line":11999,"character":34}},"message":"\"title\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12001,"character":19},"end":{"line":12001,"character":37}},"message":"\"item_url\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12004,"character":8},"end":{"line":12004,"character":14}},"message":"\"markup\"의 형식을 부분적으로 알 수 없습니다.\n  ‘markup’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12004,"character":17},"end":{"line":12011,"character":10}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12004,"character":38},"end":{"line":12011,"character":9}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[Unknown | InlineKeyboardButton]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12005,"character":13},"end":{"line":12005,"character":66}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12005,"character":47},"end":{"line":12005,"character":65}},"message":"\"item_url\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12005,"character":47},"end":{"line":12005,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"url\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12007,"character":16},"end":{"line":12007,"character":90}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12008,"character":16},"end":{"line":12008,"character":73}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12010,"character":13},"end":{"line":12010,"character":81}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12013,"character":12},"end":{"line":12013,"character":16}},"message":"\"sent\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12013,"character":25},"end":{"line":12013,"character":64}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12017,"character":18},"end":{"line":12021,"character":17}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12026,"character":8},"end":{"line":12026,"character":27}},"message":"\"mark_notified\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12026,"character":28},"end":{"line":12026,"character":50}},"message":"\"candidate_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12027,"character":55},"end":{"line":12027,"character":70}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12027,"character":55},"end":{"line":12027,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12043,"character":18},"end":{"line":12043,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12043,"character":24},"end":{"line":12043,"character":30}},"message":"\"object\" 클래스의 \"answer\" 특성에 액세스할 수 없음\n  특성 \"answer\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12047,"character":18},"end":{"line":12047,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12047,"character":24},"end":{"line":12047,"character":30}},"message":"\"object\" 클래스의 \"answer\" 특성에 액세스할 수 없음\n  특성 \"answer\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12049,"character":8},"end":{"line":12049,"character":13}},"message":"\"queue\"의 형식을 부분적으로 알 수 없습니다.\n  ‘queue’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12051,"character":18},"end":{"line":12051,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12051,"character":24},"end":{"line":12051,"character":30}},"message":"\"object\" 클래스의 \"answer\" 특성에 액세스할 수 없음\n  특성 \"answer\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12056,"character":12},"end":{"line":12056,"character":18}},"message":"\"result\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12056,"character":21},"end":{"line":12056,"character":38}},"message":"\"approve_all\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12057,"character":41},"end":{"line":12057,"character":62}},"message":"\"approved_count\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12059,"character":12},"end":{"line":12059,"character":21}},"message":"\"candidate\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12059,"character":24},"end":{"line":12059,"character":49}},"message":"\"candidate_by_prefix\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12061,"character":22},"end":{"line":12061,"character":34}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12061,"character":28},"end":{"line":12061,"character":34}},"message":"\"object\" 클래스의 \"answer\" 특성에 액세스할 수 없음\n  특성 \"answer\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12064,"character":16},"end":{"line":12064,"character":22}},"message":"\"result\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12064,"character":25},"end":{"line":12064,"character":38}},"message":"\"approve\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12064,"character":39},"end":{"line":12064,"character":61}},"message":"\"candidate_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12067,"character":16},"end":{"line":12067,"character":22}},"message":"\"result\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12067,"character":25},"end":{"line":12067,"character":36}},"message":"\"defer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12067,"character":37},"end":{"line":12067,"character":59}},"message":"\"candidate_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12069,"character":11},"end":{"line":12069,"character":32}},"message":"\"approved_count\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12069,"character":42},"end":{"line":12069,"character":63}},"message":"\"deferred_count\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12070,"character":18},"end":{"line":12070,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12070,"character":24},"end":{"line":12070,"character":30}},"message":"\"object\" 클래스의 \"answer\" 특성에 액세스할 수 없음\n  특성 \"answer\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12072,"character":14},"end":{"line":12072,"character":26}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12072,"character":20},"end":{"line":12072,"character":26}},"message":"\"object\" 클래스의 \"answer\" 특성에 액세스할 수 없음\n  특성 \"answer\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12073,"character":14},"end":{"line":12073,"character":37}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12073,"character":20},"end":{"line":12073,"character":37}},"message":"\"object\" 클래스의 \"edit_message_text\" 특성에 액세스할 수 없음\n  특성 \"edit_message_text\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12078,"character":74},"end":{"line":12078,"character":83}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12099,"character":12},"end":{"line":12099,"character":16}},"message":"\"sent\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12099,"character":25},"end":{"line":12099,"character":64}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12103,"character":18},"end":{"line":12107,"character":17}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12110,"character":51},"end":{"line":12110,"character":56}},"message":"\"split\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12111,"character":16},"end":{"line":12111,"character":78}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12111,"character":61},"end":{"line":12111,"character":76}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12111,"character":61},"end":{"line":12111,"character":76}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12112,"character":59},"end":{"line":12112,"character":74}},"message":"\"message_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12112,"character":59},"end":{"line":12112,"character":74}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12129,"character":12},"end":{"line":12132,"character":13}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12135,"character":8},"end":{"line":12135,"character":14}},"message":"Type of \"result\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12135,"character":17},"end":{"line":12135,"character":40}},"message":"Type of \"handle_callback\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12140,"character":40},"end":{"line":12140,"character":50}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12141,"character":12},"end":{"line":12141,"character":18}},"message":"\"result\"의 형식을 부분적으로 알 수 없습니다.\n  ‘result’의 유형이 ‘dict[str, str | list[Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12149,"character":8},"end":{"line":12149,"character":15}},"message":"\"payload\"의 형식을 부분적으로 알 수 없습니다.\n  ‘payload’의 유형이 ‘dict[str, str | list[Unknown]] | dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12161,"character":12},"end":{"line":12161,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12161,"character":12},"end":{"line":12161,"character":70}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Unknown | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12161,"character":38},"end":{"line":12161,"character":49}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12169,"character":31},"end":{"line":12169,"character":61}},"message":"Type of \"terminal_delivery_card\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12169,"character":31},"end":{"line":12169,"character":76}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"map\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12171,"character":16},"end":{"line":12171,"character":23}},"message":"\"payload\"의 형식을 부분적으로 알 수 없습니다.\n  ‘payload’의 유형이 ‘dict[str, str | list[Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12175,"character":24},"end":{"line":12175,"character":35}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12175,"character":24},"end":{"line":12176,"character":60}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Unknown | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12180,"character":13},"end":{"line":12180,"character":24}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12180,"character":68},"end":{"line":12180,"character":79}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12181,"character":12},"end":{"line":12181,"character":19}},"message":"\"payload\"의 형식을 부분적으로 알 수 없습니다.\n  ‘payload’의 유형이 ‘dict[str, str | list[Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12183,"character":12},"end":{"line":12183,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Any, default: None = None, /) -> (Any | None), (key: Any, default: Any, /) -> Any, (key: Any, default: _T@get, /) -> (Any | _T@get)] | Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12184,"character":27},"end":{"line":12184,"character":38}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Any, default: None = None, /) -> (Any | None), (key: Any, default: Any, /) -> Any, (key: Any, default: _T@get, /) -> (Any | _T@get)] | Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12187,"character":12},"end":{"line":12187,"character":19}},"message":"\"payload\"의 형식을 부분적으로 알 수 없습니다.\n  ‘payload’의 유형이 ‘dict[str, Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12196,"character":29},"end":{"line":12196,"character":40}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | None), (key: str, default: Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]], /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]]), (key: str, default: _T@get, /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | _T@get)] | Overload[(key: Any, default: None = None, /) -> (Any | None), (key: Any, default: Any, /) -> Any, (key: Any, default: _T@get, /) -> (Any | _T@get)] | Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12196,"character":29},"end":{"line":12196,"character":58}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12198,"character":8},"end":{"line":12198,"character":15}},"message":"\"buttons\"의 형식을 부분적으로 알 수 없습니다.\n  ‘buttons’의 유형이 ‘Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12198,"character":18},"end":{"line":12198,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | None), (key: str, default: Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]], /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]]), (key: str, default: _T@get, /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | _T@get)] | Overload[(key: Any, default: None = None, /) -> (Any | None), (key: Any, default: Any, /) -> Any, (key: Any, default: _T@get, /) -> (Any | _T@get)] | Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12199,"character":8},"end":{"line":12199,"character":26}},"message":"\"publication_status\"의 형식을 부분적으로 알 수 없습니다.\n  ‘publication_status’의 유형이 ‘Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12199,"character":29},"end":{"line":12199,"character":40}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | None), (key: str, default: Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]], /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]]), (key: str, default: _T@get, /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | _T@get)] | Overload[(key: Any, default: None = None, /) -> (Any | None), (key: Any, default: Any, /) -> Any, (key: Any, default: _T@get, /) -> (Any | _T@get)] | Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12201,"character":8},"end":{"line":12201,"character":20}},"message":"\"summary_text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘summary_text’의 유형이 ‘Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12201,"character":23},"end":{"line":12201,"character":34}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | None), (key: str, default: Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]], /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]]), (key: str, default: _T@get, /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | _T@get)] | Overload[(key: Any, default: None = None, /) -> (Any | None), (key: Any, default: Any, /) -> Any, (key: Any, default: _T@get, /) -> (Any | _T@get)] | Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12202,"character":8},"end":{"line":12202,"character":19}},"message":"\"detail_text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘detail_text’의 유형이 ‘Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12202,"character":22},"end":{"line":12202,"character":33}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | None), (key: str, default: Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]], /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]]), (key: str, default: _T@get, /) -> (Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]] | _T@get)] | Overload[(key: Any, default: None = None, /) -> (Any | None), (key: Any, default: Any, /) -> Any, (key: Any, default: _T@get, /) -> (Any | _T@get)] | Overload[(key: str, default: None = None, /) -> (str | list[Unknown] | None), (key: str, default: str | list[Unknown], /) -> (str | list[Unknown]), (key: str, default: _T@get, /) -> (str | _T@get | list[Unknown])] | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12220,"character":61},"end":{"line":12220,"character":68}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_adaptive_grounding_input\" 함수의 \"payload\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[str, Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]]] | dict[Any, Any] | dict[str, str | list[Unknown]] | dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12221,"character":70},"end":{"line":12221,"character":77}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_adaptive_grounding_input\" 함수의 \"payload\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[str, str | list[Unknown]] | dict[Unknown, Unknown] | dict[Any, Any] | dict[str, Any | str | list[dict[str, str | Any | Unknown | list[Unknown]]]] | dict[str, Any | str]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12248,"character":20},"end":{"line":12248,"character":24}},"message":"\"item\"의 형식을 부분적으로 알 수 없습니다.\n  ‘item’의 유형이 ‘Unknown | dict[str, str | Any | Unknown | list[Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12249,"character":50},"end":{"line":12249,"character":58}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Overload[(key: str, default: None = None, /) -> (str | Any | Unknown | list[Unknown] | None), (key: str, default: str | Any | Unknown | list[Unknown], /) -> (str | Any | Unknown | list[Unknown]), (key: str, default: _T@get, /) -> (str | Any | Unknown | _T@get | list[Unknown])]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12250,"character":24},"end":{"line":12250,"character":35}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12252,"character":32},"end":{"line":12255,"character":33}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12253,"character":40},"end":{"line":12253,"character":48}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Overload[(key: str, default: None = None, /) -> (str | Any | Unknown | list[Unknown] | None), (key: str, default: str | Any | Unknown | list[Unknown], /) -> (str | Any | Unknown | list[Unknown]), (key: str, default: _T@get, /) -> (str | Any | Unknown | _T@get | list[Unknown])]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12253,"character":40},"end":{"line":12253,"character":89}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Any | Unknown | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12253,"character":58},"end":{"line":12253,"character":66}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Overload[(key: str, default: None = None, /) -> (str | Any | Unknown | list[Unknown] | None), (key: str, default: str | Any | Unknown | list[Unknown], /) -> (str | Any | Unknown | list[Unknown]), (key: str, default: _T@get, /) -> (str | Any | Unknown | _T@get | list[Unknown])]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12254,"character":54},"end":{"line":12254,"character":75}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str | Any | list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12259,"character":24},"end":{"line":12259,"character":35}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12261,"character":32},"end":{"line":12264,"character":33}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12268,"character":20},"end":{"line":12268,"character":26}},"message":"\"markup\"의 형식을 부분적으로 알 수 없습니다.\n  ‘markup’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12268,"character":29},"end":{"line":12268,"character":55}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12268,"character":50},"end":{"line":12268,"character":54}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12272,"character":20},"end":{"line":12272,"character":23}},"message":"Type of \"row\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12272,"character":35},"end":{"line":12272,"character":41}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | InlineKeyboardMarkup | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12274,"character":24},"end":{"line":12274,"character":30}},"message":"Type of \"button\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12275,"character":35},"end":{"line":12275,"character":41}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12276,"character":28},"end":{"line":12276,"character":47}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12277,"character":32},"end":{"line":12280,"character":33}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12284,"character":28},"end":{"line":12284,"character":47}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12284,"character":48},"end":{"line":12284,"character":54}},"message":"Argument type is Any\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12285,"character":20},"end":{"line":12285,"character":31}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12287,"character":20},"end":{"line":12287,"character":26}},"message":"\"markup\"의 형식을 부분적으로 알 수 없습니다.\n  ‘markup’의 유형이 ‘Unknown | InlineKeyboardMarkup’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12287,"character":29},"end":{"line":12287,"character":55}},"message":"\"Any\"을(를) 인스턴스화할 수 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12287,"character":50},"end":{"line":12287,"character":54}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"inline_keyboard\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12302,"character":43},"end":{"line":12302,"character":50}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12306,"character":25},"end":{"line":12306,"character":29}},"message":"\"object\" 형식의 개체는 __enter__을(를) 올바르게 구현하지 않으므로 \"with\"와 함께 사용할 수 없습니다.\n  특성 \"__enter__\" 알 수 없음","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12306,"character":25},"end":{"line":12306,"character":29}},"message":"\"object\" 형식의 개체는 __exit__을(를) 올바르게 구현하지 않으므로 \"with\"와 함께 사용할 수 없습니다.\n  특성 \"__exit__\" 알 수 없음","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12321,"character":24},"end":{"line":12321,"character":43}},"message":"Type of \"pending_publication\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12321,"character":46},"end":{"line":12321,"character":74}},"message":"Type of \"mark_publish_pending\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12330,"character":24},"end":{"line":12330,"character":41}},"message":"Type of \"publication_claim\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12330,"character":44},"end":{"line":12330,"character":71}},"message":"Type of \"_claim_pending_card\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12340,"character":24},"end":{"line":12340,"character":42}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12343,"character":20},"end":{"line":12351,"character":21}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12346,"character":28},"end":{"line":12347,"character":64}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12367,"character":20},"end":{"line":12367,"character":29}},"message":"\"published\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12367,"character":38},"end":{"line":12367,"character":76}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12370,"character":28},"end":{"line":12370,"character":54}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | object\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12374,"character":24},"end":{"line":12374,"character":46}},"message":"Type of \"mark_published\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12392,"character":24},"end":{"line":12392,"character":42}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12397,"character":28},"end":{"line":12397,"character":35}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12403,"character":32},"end":{"line":12406,"character":33}},"message":"호출 식의 결과가 ‘object’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12419,"character":30},"end":{"line":12426,"character":25}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12432,"character":8},"end":{"line":12432,"character":13}},"message":"매개 변수 \"query\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12432,"character":8},"end":{"line":12432,"character":13}},"message":"‘query’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12434,"character":8},"end":{"line":12434,"character":21}},"message":"매개 변수 \"query_message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12434,"character":8},"end":{"line":12434,"character":21}},"message":"‘query_message’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12435,"character":8},"end":{"line":12435,"character":17}},"message":"매개 변수 \"nutrition\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12435,"character":8},"end":{"line":12435,"character":17}},"message":"‘nutrition’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12435,"character":8},"end":{"line":12435,"character":17}},"message":"\"nutrition\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedParameter","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedParameter"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedParameter"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12439,"character":18},"end":{"line":12439,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12441,"character":42},"end":{"line":12441,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_address\" 함수의 \"message_or_query\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12441,"character":49},"end":{"line":12441,"character":62}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_address\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12442,"character":26},"end":{"line":12442,"character":33}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12444,"character":18},"end":{"line":12444,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12446,"character":52},"end":{"line":12446,"character":57}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_handle_adaptive_review_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12446,"character":65},"end":{"line":12446,"character":78}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_handle_adaptive_review_callback\" 함수의 \"query_message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12450,"character":8},"end":{"line":12450,"character":15}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12450,"character":18},"end":{"line":12450,"character":25}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12456,"character":24},"end":{"line":12456,"character":31}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12457,"character":23},"end":{"line":12457,"character":30}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12460,"character":29},"end":{"line":12460,"character":36}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12464,"character":23},"end":{"line":12464,"character":30}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12472,"character":18},"end":{"line":12472,"character":36}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12475,"character":12},"end":{"line":12475,"character":68}},"message":"호출 식의 결과가 ‘RoomBootstrapSession’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12491,"character":18},"end":{"line":12491,"character":36}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12495,"character":18},"end":{"line":12495,"character":36}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12502,"character":32},"end":{"line":12502,"character":65}},"message":"Type of \"consent_card_message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12503,"character":18},"end":{"line":12503,"character":36}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12505,"character":14},"end":{"line":12505,"character":32}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12518,"character":8},"end":{"line":12518,"character":17}},"message":"Type of parameter \"nutrition\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12518,"character":19},"end":{"line":12518,"character":22}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12519,"character":8},"end":{"line":12519,"character":15}},"message":"Type of parameter \"address\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12519,"character":17},"end":{"line":12519,"character":20}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12523,"character":27},"end":{"line":12523,"character":36}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12541,"character":8},"end":{"line":12541,"character":17}},"message":"Type of parameter \"nutrition\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12541,"character":19},"end":{"line":12541,"character":22}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12542,"character":8},"end":{"line":12542,"character":17}},"message":"Type of parameter \"transport\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12542,"character":19},"end":{"line":12542,"character":22}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12543,"character":8},"end":{"line":12543,"character":15}},"message":"Type of parameter \"session\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12543,"character":17},"end":{"line":12543,"character":20}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12544,"character":9},"end":{"line":12544,"character":12}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12552,"character":24},"end":{"line":12552,"character":33}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12555,"character":8},"end":{"line":12555,"character":15}},"message":"Type of \"current\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12555,"character":18},"end":{"line":12555,"character":27}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12555,"character":28},"end":{"line":12555,"character":46}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12556,"character":11},"end":{"line":12556,"character":24}},"message":"Type of \"state\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12558,"character":11},"end":{"line":12558,"character":36}},"message":"Type of \"recovery_attempts\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12560,"character":8},"end":{"line":12560,"character":16}},"message":"Type of \"customer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12560,"character":19},"end":{"line":12560,"character":37}},"message":"Type of \"role_claim\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12561,"character":23},"end":{"line":12561,"character":42}},"message":"Type of \"role_claims\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12561,"character":23},"end":{"line":12561,"character":42}},"message":"Argument type is Any\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12565,"character":12},"end":{"line":12565,"character":28}},"message":"Type of \"user_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12565,"character":12},"end":{"line":12565,"character":28}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"user_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12566,"character":12},"end":{"line":12566,"character":28}},"message":"Type of \"chat_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12566,"character":12},"end":{"line":12566,"character":28}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12567,"character":12},"end":{"line":12567,"character":29}},"message":"Type of \"topic_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12567,"character":12},"end":{"line":12567,"character":29}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"topic_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12570,"character":12},"end":{"line":12570,"character":43}},"message":"Type of \"consent_card_message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12574,"character":16},"end":{"line":12574,"character":36}},"message":"Type of \"customer_key\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12574,"character":16},"end":{"line":12574,"character":36}},"message":"Argument type is Any\n  인수가 \"_room_bootstrap_has_current_consent\" 함수의 \"customer_key\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12577,"character":19},"end":{"line":12577,"character":52}},"message":"Type of \"reconcile_committed_consent\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12577,"character":19},"end":{"line":12582,"character":13}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12578,"character":16},"end":{"line":12578,"character":34}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12579,"character":36},"end":{"line":12579,"character":54}},"message":"Type of \"generation\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12580,"character":36},"end":{"line":12580,"character":71}},"message":"Type of \"consent_publication_attempt\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12581,"character":40},"end":{"line":12581,"character":71}},"message":"Type of \"consent_card_message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12584,"character":19},"end":{"line":12584,"character":26}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12585,"character":8},"end":{"line":12585,"character":18}},"message":"Type of \"onboarding\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12585,"character":21},"end":{"line":12585,"character":55}},"message":"Type of \"open_customer_onboarding\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12588,"character":8},"end":{"line":12588,"character":19}},"message":"Type of \"publication\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12588,"character":22},"end":{"line":12588,"character":55}},"message":"Type of \"reserve_consent_publication\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12589,"character":12},"end":{"line":12589,"character":30}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12590,"character":32},"end":{"line":12590,"character":50}},"message":"Type of \"generation\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12594,"character":8},"end":{"line":12594,"character":15}},"message":"Type of \"attempt\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12594,"character":18},"end":{"line":12594,"character":48}},"message":"Type of \"reserve_recovery_attempt\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12595,"character":12},"end":{"line":12595,"character":34}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12598,"character":32},"end":{"line":12598,"character":54}},"message":"Type of \"generation\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12604,"character":21},"end":{"line":12604,"character":36}},"message":"Type of \"text\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12604,"character":21},"end":{"line":12604,"character":36}},"message":"Argument type is Any\n  인수가 \"_send_nutrition_topic\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12605,"character":29},"end":{"line":12605,"character":62}},"message":"\"_nutrition_onboarding_markup\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_nutrition_onboarding_markup’의 유형이 ‘(card: object) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12605,"character":29},"end":{"line":12605,"character":74}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"_send_nutrition_topic\" 함수의 \"reply_markup\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12605,"character":63},"end":{"line":12605,"character":73}},"message":"Argument type is Any\n  인수가 \"_nutrition_onboarding_markup\" 함수의 \"card\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12609,"character":16},"end":{"line":12609,"character":57}},"message":"Type of \"acknowledge_recovery_no_side_effect\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12610,"character":20},"end":{"line":12610,"character":38}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12611,"character":25},"end":{"line":12611,"character":37}},"message":"Type of \"slot\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12612,"character":28},"end":{"line":12612,"character":43}},"message":"Type of \"chat_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12613,"character":39},"end":{"line":12613,"character":57}},"message":"Type of \"generation\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12619,"character":15},"end":{"line":12619,"character":42}},"message":"Type of \"bind_recovery_receipt\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12619,"character":15},"end":{"line":12625,"character":9}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12620,"character":12},"end":{"line":12620,"character":30}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12621,"character":17},"end":{"line":12621,"character":29}},"message":"Type of \"slot\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12622,"character":20},"end":{"line":12622,"character":35}},"message":"Type of \"chat_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12623,"character":31},"end":{"line":12623,"character":49}},"message":"Type of \"generation\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12624,"character":27},"end":{"line":12624,"character":37}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12685,"character":16},"end":{"line":12686,"character":56}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12694,"character":16},"end":{"line":12694,"character":27}},"message":"Type of \"failed\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12705,"character":30},"end":{"line":12705,"character":37}},"message":"\"context\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedParameter","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedParameter"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedParameter"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12709,"character":36},"end":{"line":12709,"character":41}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12717,"character":8},"end":{"line":12717,"character":12}},"message":"Type of \"data\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12717,"character":15},"end":{"line":12717,"character":25}},"message":"Type of \"data\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12718,"character":32},"end":{"line":12718,"character":37}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12720,"character":35},"end":{"line":12720,"character":39}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12722,"character":65},"end":{"line":12722,"character":70}},"message":"Argument type is Any\n  인수가 \"handle_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12725,"character":18},"end":{"line":12725,"character":30}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12729,"character":15},"end":{"line":12729,"character":19}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12731,"character":16},"end":{"line":12731,"character":21}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_operator_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12732,"character":20},"end":{"line":12732,"character":24}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12736,"character":15},"end":{"line":12736,"character":19}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12738,"character":16},"end":{"line":12738,"character":21}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_onboarding_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12739,"character":20},"end":{"line":12739,"character":24}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12747,"character":15},"end":{"line":12747,"character":19}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12754,"character":18},"end":{"line":12754,"character":30}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12766,"character":16},"end":{"line":12766,"character":33}},"message":"Type of \"get_by_chat\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12766,"character":38},"end":{"line":12766,"character":51}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12776,"character":18},"end":{"line":12776,"character":30}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12780,"character":20},"end":{"line":12780,"character":24}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12781,"character":20},"end":{"line":12781,"character":43}},"message":"Type of \"state\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12781,"character":20},"end":{"line":12781,"character":49}},"message":"Type of \"value\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12785,"character":20},"end":{"line":12785,"character":25}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_consent_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12786,"character":24},"end":{"line":12786,"character":28}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12787,"character":20},"end":{"line":12787,"character":33}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_consent_callback\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12790,"character":22},"end":{"line":12790,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12796,"character":34},"end":{"line":12796,"character":49}},"message":"Type of \"from_user\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12796,"character":34},"end":{"line":12796,"character":49}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12799,"character":45},"end":{"line":12799,"character":50}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12804,"character":50},"end":{"line":12804,"character":82}},"message":"Type of \"matches_space\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12809,"character":20},"end":{"line":12809,"character":51}},"message":"Type of \"authenticate\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12815,"character":26},"end":{"line":12815,"character":38}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12819,"character":20},"end":{"line":12819,"character":50}},"message":"Type of \"reserves_space\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12825,"character":20},"end":{"line":12825,"character":51}},"message":"Type of \"authorize_route\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12831,"character":26},"end":{"line":12831,"character":38}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12834,"character":53},"end":{"line":12834,"character":58}},"message":"Argument type is Any\n  인수가 \"_nutrition_address\" 함수의 \"message_or_query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12834,"character":60},"end":{"line":12834,"character":73}},"message":"Argument type is Any\n  인수가 \"_nutrition_address\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12837,"character":20},"end":{"line":12837,"character":25}},"message":"Argument type is Any\n  인수가 \"_handle_adaptive_review_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12838,"character":20},"end":{"line":12838,"character":24}},"message":"Argument type is Any\n  인수가 \"_handle_adaptive_review_callback\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12839,"character":20},"end":{"line":12839,"character":33}},"message":"Argument type is Any\n  인수가 \"_handle_adaptive_review_callback\" 함수의 \"query_message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12847,"character":11},"end":{"line":12847,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12849,"character":22},"end":{"line":12849,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12852,"character":20},"end":{"line":12852,"character":25}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_consent_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12853,"character":20},"end":{"line":12853,"character":24}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_consent_callback\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12854,"character":20},"end":{"line":12854,"character":33}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_consent_callback\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12857,"character":11},"end":{"line":12857,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12859,"character":22},"end":{"line":12859,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12862,"character":20},"end":{"line":12862,"character":25}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_pause_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12863,"character":20},"end":{"line":12863,"character":24}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_pause_callback\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12864,"character":20},"end":{"line":12864,"character":33}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_pause_callback\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12867,"character":11},"end":{"line":12867,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12869,"character":22},"end":{"line":12869,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12872,"character":20},"end":{"line":12872,"character":25}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_start_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12873,"character":20},"end":{"line":12873,"character":24}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_start_callback\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12874,"character":20},"end":{"line":12874,"character":33}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_customer_start_callback\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12877,"character":11},"end":{"line":12877,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12879,"character":22},"end":{"line":12879,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12883,"character":46},"end":{"line":12883,"character":51}},"message":"Argument type is Any\n  인수가 \"_nutrition_address\" 함수의 \"message_or_query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12883,"character":53},"end":{"line":12883,"character":66}},"message":"Argument type is Any\n  인수가 \"_nutrition_address\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12884,"character":70},"end":{"line":12884,"character":74}},"message":"Argument type is Any\n  인수가 \"open_trainer_private_launcher\" 함수의 \"callback_data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12886,"character":22},"end":{"line":12886,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12889,"character":37},"end":{"line":12889,"character":50}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12898,"character":22},"end":{"line":12898,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12903,"character":18},"end":{"line":12903,"character":30}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12905,"character":22},"end":{"line":12905,"character":45}},"message":"Type of \"edit_message_text\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12910,"character":11},"end":{"line":12910,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12912,"character":22},"end":{"line":12912,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12914,"character":22},"end":{"line":12914,"character":62}},"message":"\"_handle_adaptive_nutrition_callback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_handle_adaptive_nutrition_callback’의 유형이 ‘(query: Unknown, data: str, query_message: Unknown, nutrition: Unknown) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12915,"character":20},"end":{"line":12915,"character":25}},"message":"Argument type is Any\n  인수가 \"_handle_adaptive_nutrition_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12915,"character":27},"end":{"line":12915,"character":31}},"message":"Argument type is Any\n  인수가 \"_handle_adaptive_nutrition_callback\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12915,"character":33},"end":{"line":12915,"character":46}},"message":"Argument type is Any\n  인수가 \"_handle_adaptive_nutrition_callback\" 함수의 \"query_message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12918,"character":11},"end":{"line":12918,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12919,"character":47},"end":{"line":12919,"character":52}},"message":"Argument type is Any\n  인수가 \"_render_nutrition_draft\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12919,"character":54},"end":{"line":12919,"character":71}},"message":"Type of \"removeprefix\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12919,"character":54},"end":{"line":12919,"character":79}},"message":"Argument type is Any\n  인수가 \"_render_nutrition_draft\" 함수의 \"token\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12919,"character":81},"end":{"line":12919,"character":94}},"message":"Argument type is Any\n  인수가 \"_render_nutrition_draft\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12921,"character":11},"end":{"line":12921,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12922,"character":12},"end":{"line":12922,"character":83}},"message":"호출 식의 결과가 ‘NutritionDraftCallbackDenied | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12922,"character":56},"end":{"line":12922,"character":61}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_draft_callback\" 함수의 \"query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12922,"character":63},"end":{"line":12922,"character":67}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_draft_callback\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12922,"character":69},"end":{"line":12922,"character":82}},"message":"Argument type is Any\n  인수가 \"_handle_nutrition_draft_callback\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12924,"character":11},"end":{"line":12924,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12927,"character":46},"end":{"line":12927,"character":51}},"message":"Argument type is Any\n  인수가 \"_nutrition_address\" 함수의 \"message_or_query\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12927,"character":53},"end":{"line":12927,"character":66}},"message":"Argument type is Any\n  인수가 \"_nutrition_address\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12928,"character":42},"end":{"line":12928,"character":46}},"message":"Argument type is Any\n  인수가 \"parse\" 함수의 \"value\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12937,"character":20},"end":{"line":12937,"character":46}},"message":"Type of \"has_binding\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12940,"character":34},"end":{"line":12940,"character":38}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12940,"character":61},"end":{"line":12940,"character":74}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12942,"character":22},"end":{"line":12942,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12944,"character":26},"end":{"line":12944,"character":49}},"message":"Type of \"edit_message_text\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12955,"character":20},"end":{"line":12955,"character":46}},"message":"Type of \"has_binding\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12958,"character":34},"end":{"line":12958,"character":38}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12958,"character":61},"end":{"line":12958,"character":74}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12960,"character":22},"end":{"line":12960,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12962,"character":26},"end":{"line":12962,"character":49}},"message":"Type of \"edit_message_text\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12981,"character":28},"end":{"line":12981,"character":41}},"message":"Argument type is Any\n  인수가 \"_execute_nutrition_stepper\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12982,"character":26},"end":{"line":12982,"character":31}},"message":"Argument type is Any\n  인수가 \"_execute_nutrition_stepper\" 함수의 \"actor\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12987,"character":28},"end":{"line":12987,"character":32}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12989,"character":40},"end":{"line":12989,"character":53}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12993,"character":34},"end":{"line":12993,"character":38}},"message":"Argument type is Any\n  인수가 \"_execute_nutrition_stepper\" 함수의 \"callback_data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12998,"character":34},"end":{"line":12998,"character":38}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":12998,"character":61},"end":{"line":12998,"character":74}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13000,"character":22},"end":{"line":13000,"character":34}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13002,"character":26},"end":{"line":13002,"character":49}},"message":"Type of \"edit_message_text\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13013,"character":34},"end":{"line":13013,"character":38}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13013,"character":61},"end":{"line":13013,"character":74}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13018,"character":26},"end":{"line":13018,"character":49}},"message":"Type of \"edit_message_text\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13067,"character":11},"end":{"line":13067,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13070,"character":16},"end":{"line":13070,"character":62}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13073,"character":16},"end":{"line":13073,"character":20}},"message":"Argument type is Any\n  인수가 \"handle_callback\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13075,"character":39},"end":{"line":13075,"character":52}},"message":"Argument type is Any\n  인수가 \"_physique_chat_id\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13076,"character":41},"end":{"line":13076,"character":54}},"message":"Argument type is Any\n  인수가 \"_physique_thread_id\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13077,"character":28},"end":{"line":13077,"character":41}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13079,"character":12},"end":{"line":13079,"character":56}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13081,"character":60},"end":{"line":13081,"character":65}},"message":"\"_ChannelInboxCallbackQuery | Any\" 형식의 인수를 \"_render_physique_callback_prompt\" 함수에서 \"_NutritionDraftQuery\" 형식의 \"query\" 매개 변수에 할당할 수 없습니다.\n  형식 \"_ChannelInboxCallbackQuery | Any\"은 형식 \"_NutritionDraftQuery\"에 할당할 수 없습니다.\n    ‘_ChannelInboxCallbackQuery’은(는) ‘_NutritionDraftQuery’ 프로토콜과 호환되지 않습니다.\n      \"edit_message_text\"이(가) 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13084,"character":11},"end":{"line":13084,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13085,"character":70},"end":{"line":13085,"character":74}},"message":"Argument type is Any\n  인수가 \"_handle_physique_source_review_callback\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13089,"character":11},"end":{"line":13089,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13090,"character":26},"end":{"line":13090,"character":39}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13090,"character":26},"end":{"line":13090,"character":47}},"message":"\"chat_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_id’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13090,"character":26},"end":{"line":13090,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13090,"character":32},"end":{"line":13090,"character":39}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13090,"character":52},"end":{"line":13090,"character":65}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13090,"character":58},"end":{"line":13090,"character":65}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13092,"character":22},"end":{"line":13092,"character":56}},"message":"\"_handle_model_picker_callback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_handle_model_picker_callback’의 유형이 ‘(query: Unknown, data: str, chat_id: str) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13092,"character":64},"end":{"line":13092,"character":68}},"message":"Argument type is Any\n  인수가 \"_handle_model_picker_callback\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13096,"character":11},"end":{"line":13096,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13097,"character":18},"end":{"line":13097,"character":52}},"message":"\"_handle_gmail_triage_callback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_handle_gmail_triage_callback’의 유형이 ‘(query: Unknown, data: str, *, query_chat_id: Unknown, query_chat_type: Unknown, query_thread_id: Unknown, query_user_name: Unknown) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13099,"character":16},"end":{"line":13099,"character":20}},"message":"Argument type is Any\n  인수가 \"_handle_gmail_triage_callback\" 함수의 \"data\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13108,"character":11},"end":{"line":13108,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13109,"character":12},"end":{"line":13109,"character":17}},"message":"Type of \"parts\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13109,"character":20},"end":{"line":13109,"character":30}},"message":"Type of \"split\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13110,"character":19},"end":{"line":13110,"character":24}},"message":"Argument type is Any\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13111,"character":16},"end":{"line":13111,"character":22}},"message":"Type of \"choice\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13113,"character":38},"end":{"line":13113,"character":46}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13115,"character":20},"end":{"line":13115,"character":69}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13123,"character":34},"end":{"line":13123,"character":49}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13124,"character":34},"end":{"line":13124,"character":49}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13127,"character":20},"end":{"line":13127,"character":92}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13132,"character":20},"end":{"line":13132,"character":87}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13143,"character":38},"end":{"line":13143,"character":44}},"message":"Argument type is Any\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13145,"character":16},"end":{"line":13145,"character":46}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13149,"character":26},"end":{"line":13149,"character":49}},"message":"\"edit_message_text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘edit_message_text’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13149,"character":32},"end":{"line":13149,"character":49}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"edit_message_text\" 특성에 액세스할 수 없음\n  특성 \"edit_message_text\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13151,"character":45},"end":{"line":13151,"character":56}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13160,"character":66},"end":{"line":13160,"character":72}},"message":"Argument type is Any\n  인수가 \"resolve_gateway_approval\" 함수의 \"choice\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13163,"character":44},"end":{"line":13163,"character":50}},"message":"Argument type is Any\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13175,"character":52},"end":{"line":13175,"character":65}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13179,"character":11},"end":{"line":13179,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13180,"character":12},"end":{"line":13180,"character":17}},"message":"Type of \"parts\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13180,"character":20},"end":{"line":13180,"character":30}},"message":"Type of \"split\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13181,"character":19},"end":{"line":13181,"character":24}},"message":"Argument type is Any\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13182,"character":16},"end":{"line":13182,"character":22}},"message":"Type of \"choice\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13183,"character":16},"end":{"line":13183,"character":26}},"message":"Type of \"confirm_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13189,"character":34},"end":{"line":13189,"character":49}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13190,"character":34},"end":{"line":13190,"character":49}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13193,"character":20},"end":{"line":13193,"character":94}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13196,"character":60},"end":{"line":13196,"character":70}},"message":"Argument type is Any\n  인수가 \"pop\" 함수의 \"key\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13198,"character":20},"end":{"line":13198,"character":85}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13207,"character":38},"end":{"line":13207,"character":44}},"message":"Argument type is Any\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13209,"character":16},"end":{"line":13209,"character":46}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13212,"character":26},"end":{"line":13212,"character":49}},"message":"\"edit_message_text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘edit_message_text’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13212,"character":32},"end":{"line":13212,"character":49}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"edit_message_text\" 특성에 액세스할 수 없음\n  특성 \"edit_message_text\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13214,"character":45},"end":{"line":13214,"character":56}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13227,"character":37},"end":{"line":13227,"character":47}},"message":"Argument type is Any\n  인수가 \"resolve\" 함수의 \"confirm_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13227,"character":49},"end":{"line":13227,"character":55}},"message":"Argument type is Any\n  인수가 \"resolve\" 함수의 \"choice\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13229,"character":39},"end":{"line":13229,"character":52}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13229,"character":45},"end":{"line":13229,"character":52}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13233,"character":44},"end":{"line":13233,"character":57}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13233,"character":44},"end":{"line":13233,"character":57}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13233,"character":50},"end":{"line":13233,"character":57}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13234,"character":39},"end":{"line":13234,"character":52}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13234,"character":39},"end":{"line":13234,"character":52}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13234,"character":45},"end":{"line":13234,"character":52}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13236,"character":52},"end":{"line":13236,"character":65}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13236,"character":52},"end":{"line":13236,"character":65}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13236,"character":58},"end":{"line":13236,"character":65}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13237,"character":37},"end":{"line":13237,"character":41}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13237,"character":47},"end":{"line":13237,"character":50}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13238,"character":43},"end":{"line":13238,"character":56}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13238,"character":43},"end":{"line":13238,"character":64}},"message":"\"chat_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_id’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13238,"character":43},"end":{"line":13238,"character":64}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13238,"character":49},"end":{"line":13238,"character":56}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13240,"character":52},"end":{"line":13240,"character":63}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13246,"character":41},"end":{"line":13246,"character":48}},"message":"\"PRIVATE\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13247,"character":49},"end":{"line":13247,"character":56}},"message":"\"PRIVATE\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13247,"character":76},"end":{"line":13247,"character":83}},"message":"\"PRIVATE\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13250,"character":46},"end":{"line":13250,"character":63}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13254,"character":40},"end":{"line":13254,"character":53}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13254,"character":40},"end":{"line":13254,"character":61}},"message":"\"chat_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_id’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13254,"character":40},"end":{"line":13254,"character":61}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13254,"character":46},"end":{"line":13254,"character":53}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13255,"character":40},"end":{"line":13255,"character":49}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13257,"character":57},"end":{"line":13257,"character":66}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13267,"character":40},"end":{"line":13267,"character":53}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13267,"character":40},"end":{"line":13267,"character":61}},"message":"\"chat_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_id’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13267,"character":40},"end":{"line":13267,"character":61}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13267,"character":46},"end":{"line":13267,"character":53}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13268,"character":40},"end":{"line":13268,"character":49}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13269,"character":54},"end":{"line":13269,"character":63}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13273,"character":30},"end":{"line":13273,"character":69}},"message":"\"_send_message_with_thread_fallback\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_message_with_thread_fallback’의 유형이 ‘(**kwargs: Unknown) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13273,"character":72},"end":{"line":13273,"character":83}},"message":"Argument type is Any\n  인수가 \"_send_message_with_thread_fallback\" 함수의 \"kwargs\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13279,"character":11},"end":{"line":13279,"character":26}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13280,"character":12},"end":{"line":13280,"character":17}},"message":"Type of \"parts\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13280,"character":20},"end":{"line":13280,"character":30}},"message":"Type of \"split\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13281,"character":19},"end":{"line":13281,"character":24}},"message":"Argument type is Any\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13282,"character":16},"end":{"line":13282,"character":26}},"message":"Type of \"clarify_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13283,"character":16},"end":{"line":13283,"character":28}},"message":"Type of \"choice_token\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13289,"character":34},"end":{"line":13289,"character":49}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13290,"character":34},"end":{"line":13290,"character":49}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13293,"character":20},"end":{"line":13293,"character":94}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13296,"character":54},"end":{"line":13296,"character":64}},"message":"Argument type is Any\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13298,"character":20},"end":{"line":13298,"character":85}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13312,"character":24},"end":{"line":13312,"character":54}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13312,"character":43},"end":{"line":13312,"character":53}},"message":"Argument type is Any\n  인수가 \"mark_awaiting_text\" 함수의 \"clarify_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13316,"character":20},"end":{"line":13316,"character":79}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13318,"character":30},"end":{"line":13318,"character":53}},"message":"\"edit_message_text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘edit_message_text’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13318,"character":36},"end":{"line":13318,"character":53}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"edit_message_text\" 특성에 액세스할 수 없음\n  특성 \"edit_message_text\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13319,"character":38},"end":{"line":13319,"character":51}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13319,"character":38},"end":{"line":13319,"character":56}},"message":"\"text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘text’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13319,"character":44},"end":{"line":13319,"character":51}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13320,"character":49},"end":{"line":13320,"character":53}},"message":"\"HTML\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13329,"character":30},"end":{"line":13329,"character":42}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13331,"character":20},"end":{"line":13331,"character":62}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13337,"character":31},"end":{"line":13337,"character":39}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13339,"character":54},"end":{"line":13339,"character":62}},"message":"\"_entries\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13340,"character":49},"end":{"line":13340,"character":59}},"message":"Argument type is Any\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13353,"character":16},"end":{"line":13353,"character":57}},"message":"호출 식의 결과가 ‘str | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13353,"character":40},"end":{"line":13353,"character":50}},"message":"Argument type is Any\n  인수가 \"pop\" 함수의 \"key\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13356,"character":55},"end":{"line":13356,"character":65}},"message":"Argument type is Any\n  인수가 \"resolve_gateway_clarify\" 함수의 \"clarify_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13361,"character":16},"end":{"line":13361,"character":66}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13363,"character":26},"end":{"line":13363,"character":49}},"message":"\"edit_message_text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘edit_message_text’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13363,"character":32},"end":{"line":13363,"character":49}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"edit_message_text\" 특성에 액세스할 수 없음\n  특성 \"edit_message_text\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13364,"character":47},"end":{"line":13364,"character":60}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13364,"character":47},"end":{"line":13364,"character":65}},"message":"\"text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘text’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13364,"character":47},"end":{"line":13364,"character":71}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"escape\" 함수의 \"s\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13364,"character":53},"end":{"line":13364,"character":60}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13365,"character":45},"end":{"line":13365,"character":49}},"message":"\"HTML\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13374,"character":24},"end":{"line":13374,"character":34}},"message":"Argument type is Any\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13379,"character":24},"end":{"line":13379,"character":34}},"message":"Argument type is Any\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13384,"character":15},"end":{"line":13384,"character":30}},"message":"Type of \"startswith\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13386,"character":8},"end":{"line":13386,"character":14}},"message":"Type of \"answer\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13386,"character":17},"end":{"line":13386,"character":27}},"message":"Type of \"split\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13391,"character":26},"end":{"line":13391,"character":41}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13392,"character":26},"end":{"line":13392,"character":41}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13395,"character":12},"end":{"line":13395,"character":89}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13397,"character":8},"end":{"line":13397,"character":74}},"message":"호출 식의 결과가 ‘bool | Any | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13401,"character":18},"end":{"line":13401,"character":41}},"message":"\"edit_message_text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘edit_message_text’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13401,"character":24},"end":{"line":13401,"character":41}},"message":"\"_ChannelInboxCallbackQuery\" 클래스의 \"edit_message_text\" 특성에 액세스할 수 없음\n  특성 \"edit_message_text\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13403,"character":37},"end":{"line":13403,"character":48}},"message":"\"MARKDOWN_V2\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13414,"character":12},"end":{"line":13414,"character":34}},"message":"호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13415,"character":12},"end":{"line":13415,"character":38}},"message":"호출 식의 결과가 ‘Path’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13428,"character":4},"end":{"line":13428,"character":21}},"message":"\"_GT_VERB_DISPATCH\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_GT_VERB_DISPATCH’의 유형이 ‘dict[str, tuple[str, list[Unknown], str, bool] | tuple[str, list[str], str, bool]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13428,"character":4},"end":{"line":13428,"character":21}},"message":"Type annotation for attribute `_GT_VERB_DISPATCH` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13443,"character":8},"end":{"line":13443,"character":13}},"message":"매개 변수 \"query\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13443,"character":8},"end":{"line":13443,"character":13}},"message":"‘query’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13446,"character":8},"end":{"line":13446,"character":21}},"message":"매개 변수 \"query_chat_id\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13446,"character":8},"end":{"line":13446,"character":21}},"message":"‘query_chat_id’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13447,"character":8},"end":{"line":13447,"character":23}},"message":"매개 변수 \"query_chat_type\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13447,"character":8},"end":{"line":13447,"character":23}},"message":"‘query_chat_type’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13448,"character":8},"end":{"line":13448,"character":23}},"message":"매개 변수 \"query_thread_id\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13448,"character":8},"end":{"line":13448,"character":23}},"message":"‘query_thread_id’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13449,"character":8},"end":{"line":13449,"character":23}},"message":"매개 변수 \"query_user_name\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13449,"character":8},"end":{"line":13449,"character":23}},"message":"‘query_user_name’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13454,"character":18},"end":{"line":13454,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13458,"character":32},"end":{"line":13458,"character":47}},"message":"\"from_user\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13458,"character":32},"end":{"line":13458,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13461,"character":20},"end":{"line":13461,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_callback_user_authorized\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13462,"character":26},"end":{"line":13462,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13463,"character":26},"end":{"line":13463,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13464,"character":22},"end":{"line":13464,"character":37}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_callback_user_authorized\" 함수의 \"user_name\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13466,"character":18},"end":{"line":13466,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13469,"character":8},"end":{"line":13469,"character":13}},"message":"\"entry\"의 형식을 부분적으로 알 수 없습니다.\n  ‘entry’의 유형이 ‘tuple[str, list[Unknown], str, bool] | tuple[str, list[str], str, bool] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13469,"character":16},"end":{"line":13469,"character":38}},"message":"\"_GT_VERB_DISPATCH\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_GT_VERB_DISPATCH’의 유형이 ‘dict[str, tuple[str, list[Unknown], str, bool] | tuple[str, list[str], str, bool]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13469,"character":16},"end":{"line":13469,"character":42}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (tuple[str, list[Unknown], str, bool] | tuple[str, list[str], str, bool] | None), (key: str, default: tuple[str, list[Unknown], str, bool] | tuple[str, list[str], str, bool], /) -> (tuple[str, list[Unknown], str, bool] | tuple[str, list[str], str, bool]), (key: str, default: _T@get, /) -> (tuple[str, list[Unknown], str, bool] | tuple[str, list[str], str, bool] | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13471,"character":18},"end":{"line":13471,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13477,"character":18},"end":{"line":13477,"character":30}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13517,"character":14},"end":{"line":13517,"character":26}},"message":"\"answer\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13521,"character":31},"end":{"line":13521,"character":46}},"message":"\"from_user\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13521,"character":31},"end":{"line":13521,"character":46}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13522,"character":8},"end":{"line":13522,"character":21}},"message":"\"original_text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘original_text’의 유형이 ‘Unknown | Literal['']’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13522,"character":25},"end":{"line":13522,"character":38}},"message":"\"message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13522,"character":25},"end":{"line":13522,"character":43}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13522,"character":54},"end":{"line":13522,"character":67}},"message":"\"message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13528,"character":22},"end":{"line":13528,"character":45}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13531,"character":22},"end":{"line":13531,"character":45}},"message":"\"edit_message_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13550,"character":57},"end":{"line":13550,"character":66}},"message":"Type of parameter \"file_size\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13550,"character":68},"end":{"line":13550,"character":71}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13563,"character":43},"end":{"line":13563,"character":49}},"message":"Type of parameter \"source\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13563,"character":51},"end":{"line":13563,"character":54}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13563,"character":83},"end":{"line":13563,"character":91}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13566,"character":28},"end":{"line":13566,"character":34}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13577,"character":14},"end":{"line":13577,"character":24}},"message":"“send_voice“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13581,"character":17},"end":{"line":13581,"character":25}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13582,"character":18},"end":{"line":13582,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13583,"character":18},"end":{"line":13583,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13583,"character":27},"end":{"line":13583,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13583,"character":37},"end":{"line":13583,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13584,"character":10},"end":{"line":13584,"character":16}},"message":"매개 변수 \"kwargs\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13584,"character":10},"end":{"line":13584,"character":16}},"message":"‘kwargs’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13587,"character":15},"end":{"line":13587,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13607,"character":20},"end":{"line":13607,"character":23}},"message":"Type of \"msg\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13608,"character":24},"end":{"line":13608,"character":33}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13608,"character":24},"end":{"line":13608,"character":44}},"message":"\"send_voice\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13633,"character":20},"end":{"line":13633,"character":23}},"message":"Type of \"msg\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13634,"character":24},"end":{"line":13634,"character":33}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13634,"character":24},"end":{"line":13634,"character":44}},"message":"\"send_audio\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13651,"character":33},"end":{"line":13651,"character":51}},"message":"\"send_document\"의 형식을 부분적으로 알 수 없습니다.\n  ‘send_document’의 유형이 ‘(chat_id: str, file_path: str, caption: str | None = None, file_name: str | None = None, reply_to: str | None = None, metadata: Dict[str, Any] | None = None, **kwargs: Unknown) -> CoroutineType[Any, Any, SendResult]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13658,"character":59},"end":{"line":13658,"character":73}},"message":"Type of \"message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13658,"character":59},"end":{"line":13658,"character":73}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13666,"character":25},"end":{"line":13666,"character":43}},"message":"\"send_voice\"의 형식을 부분적으로 알 수 없습니다.\n  ‘send_voice’의 유형이 ‘(chat_id: str, audio_path: str, caption: str | None = None, reply_to: str | None = None, metadata: Dict[str, Any] | None = None, **kwargs: Unknown) -> CoroutineType[Any, Any, SendResult]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13668,"character":14},"end":{"line":13668,"character":34}},"message":"“send_multiple_images“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13671,"character":8},"end":{"line":13671,"character":14}},"message":"매개 변수 \"images\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"List[tuple[Unknown, ...]]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13671,"character":16},"end":{"line":13671,"character":20}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13671,"character":21},"end":{"line":13671,"character":26}},"message":"‘tuple’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13672,"character":18},"end":{"line":13672,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13672,"character":27},"end":{"line":13672,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13672,"character":37},"end":{"line":13672,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13686,"character":15},"end":{"line":13686,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13698,"character":56},"end":{"line":13698,"character":62}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"send_multiple_images\" 함수의 \"images\" 매개 변수에 해당합니다.\n  인수 형식이 \"List[tuple[Unknown, ...]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13702,"character":8},"end":{"line":13702,"character":18}},"message":"\"animations\"의 형식을 부분적으로 알 수 없습니다.\n  ‘animations’의 유형이 ‘list[tuple[Unknown, ...]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13702,"character":20},"end":{"line":13702,"character":24}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13702,"character":25},"end":{"line":13702,"character":30}},"message":"‘tuple’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13703,"character":8},"end":{"line":13703,"character":14}},"message":"\"photos\"의 형식을 부분적으로 알 수 없습니다.\n  ‘photos’의 유형이 ‘list[tuple[Unknown, ...]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13703,"character":16},"end":{"line":13703,"character":20}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13703,"character":21},"end":{"line":13703,"character":26}},"message":"‘tuple’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13704,"character":12},"end":{"line":13704,"character":21}},"message":"\"image_url\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13704,"character":23},"end":{"line":13704,"character":31}},"message":"\"alt_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13705,"character":19},"end":{"line":13705,"character":39}},"message":"\"startswith\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13705,"character":78},"end":{"line":13705,"character":87}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_animation_url\" 함수의 \"url\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13706,"character":16},"end":{"line":13706,"character":33}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: tuple[Unknown, ...], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13708,"character":16},"end":{"line":13708,"character":29}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: tuple[Unknown, ...], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13713,"character":25},"end":{"line":13713,"character":35}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"send_multiple_images\" 함수의 \"images\" 매개 변수에 해당합니다.\n  인수 형식이 \"List[tuple[Unknown, ...]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13724,"character":8},"end":{"line":13724,"character":14}},"message":"\"chunks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chunks’의 유형이 ‘list[list[tuple[Unknown, ...]]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13724,"character":60},"end":{"line":13724,"character":66}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"List[tuple[Unknown, ...]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13726,"character":23},"end":{"line":13726,"character":28}},"message":"\"chunk\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chunk’의 유형이 ‘list[tuple[Unknown, ...]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13726,"character":42},"end":{"line":13726,"character":48}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[tuple[Unknown, ...]]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13730,"character":19},"end":{"line":13730,"character":23}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13730,"character":24},"end":{"line":13730,"character":27}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13731,"character":26},"end":{"line":13731,"character":30}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13731,"character":31},"end":{"line":13731,"character":34}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13733,"character":20},"end":{"line":13733,"character":29}},"message":"\"image_url\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13733,"character":31},"end":{"line":13733,"character":39}},"message":"\"alt_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13734,"character":20},"end":{"line":13734,"character":27}},"message":"\"caption\"의 형식을 부분적으로 알 수 없습니다.\n  ‘caption’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13735,"character":23},"end":{"line":13735,"character":43}},"message":"\"startswith\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13736,"character":46},"end":{"line":13736,"character":59}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"unquote\" 함수의 \"string\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13745,"character":71},"end":{"line":13745,"character":78}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"caption\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13747,"character":59},"end":{"line":13747,"character":68}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"media\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13747,"character":78},"end":{"line":13747,"character":85}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"caption\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13754,"character":62},"end":{"line":13754,"character":68}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[tuple[Unknown, ...]]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13766,"character":24},"end":{"line":13766,"character":26}},"message":"Type of \"fh\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13768,"character":28},"end":{"line":13768,"character":35}},"message":"Type of \"seek\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13773,"character":20},"end":{"line":13773,"character":29}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13773,"character":20},"end":{"line":13773,"character":46}},"message":"\"send_media_group\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13789,"character":50},"end":{"line":13789,"character":56}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[list[tuple[Unknown, ...]]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13794,"character":29},"end":{"line":13794,"character":34}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"send_multiple_images\" 함수의 \"images\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[tuple[Unknown, ...]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13797,"character":20},"end":{"line":13797,"character":22}},"message":"Type of \"fh\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13799,"character":24},"end":{"line":13799,"character":32}},"message":"Type of \"close\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13803,"character":14},"end":{"line":13803,"character":29}},"message":"“send_image_file“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13807,"character":17},"end":{"line":13807,"character":25}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13808,"character":18},"end":{"line":13808,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13809,"character":18},"end":{"line":13809,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13809,"character":27},"end":{"line":13809,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13809,"character":37},"end":{"line":13809,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13810,"character":10},"end":{"line":13810,"character":16}},"message":"매개 변수 \"kwargs\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13810,"character":10},"end":{"line":13810,"character":16}},"message":"‘kwargs’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13813,"character":15},"end":{"line":13813,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13830,"character":16},"end":{"line":13830,"character":19}},"message":"Type of \"msg\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13831,"character":20},"end":{"line":13831,"character":29}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13831,"character":20},"end":{"line":13831,"character":40}},"message":"\"send_photo\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13845,"character":59},"end":{"line":13845,"character":73}},"message":"Type of \"message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13845,"character":59},"end":{"line":13845,"character":73}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13861,"character":20},"end":{"line":13862,"character":45}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13868,"character":20},"end":{"line":13869,"character":50}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13878,"character":29},"end":{"line":13878,"character":47}},"message":"\"send_document\"의 형식을 부분적으로 알 수 없습니다.\n  ‘send_document’의 유형이 ‘(chat_id: str, file_path: str, caption: str | None = None, file_name: str | None = None, reply_to: str | None = None, metadata: Dict[str, Any] | None = None, **kwargs: Unknown) -> CoroutineType[Any, Any, SendResult]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13888,"character":20},"end":{"line":13889,"character":54}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13894,"character":29},"end":{"line":13894,"character":52}},"message":"\"send_image_file\"의 형식을 부분적으로 알 수 없습니다.\n  ‘send_image_file’의 유형이 ‘(chat_id: str, image_path: str, caption: str | None = None, reply_to: str | None = None, metadata: Dict[str, Any] | None = None, **kwargs: Unknown) -> CoroutineType[Any, Any, SendResult]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13896,"character":14},"end":{"line":13896,"character":27}},"message":"“send_document“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13900,"character":17},"end":{"line":13900,"character":25}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13901,"character":19},"end":{"line":13901,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13902,"character":18},"end":{"line":13902,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13903,"character":18},"end":{"line":13903,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13903,"character":27},"end":{"line":13903,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13903,"character":37},"end":{"line":13903,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13904,"character":10},"end":{"line":13904,"character":16}},"message":"매개 변수 \"kwargs\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13904,"character":10},"end":{"line":13904,"character":16}},"message":"‘kwargs’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13907,"character":15},"end":{"line":13907,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13926,"character":16},"end":{"line":13926,"character":19}},"message":"Type of \"msg\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13927,"character":20},"end":{"line":13927,"character":29}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13927,"character":20},"end":{"line":13927,"character":43}},"message":"\"send_document\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13942,"character":59},"end":{"line":13942,"character":73}},"message":"Type of \"message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13942,"character":59},"end":{"line":13942,"character":73}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13945,"character":25},"end":{"line":13945,"character":46}},"message":"\"send_document\"의 형식을 부분적으로 알 수 없습니다.\n  ‘send_document’의 유형이 ‘(chat_id: str, file_path: str, caption: str | None = None, file_name: str | None = None, reply_to: str | None = None, metadata: Dict[str, Any] | None = None, **kwargs: Unknown) -> CoroutineType[Any, Any, SendResult]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13947,"character":14},"end":{"line":13947,"character":24}},"message":"“send_video“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13951,"character":17},"end":{"line":13951,"character":25}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13952,"character":18},"end":{"line":13952,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13953,"character":18},"end":{"line":13953,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13953,"character":27},"end":{"line":13953,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13953,"character":37},"end":{"line":13953,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13954,"character":10},"end":{"line":13954,"character":16}},"message":"매개 변수 \"kwargs\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13954,"character":10},"end":{"line":13954,"character":16}},"message":"‘kwargs’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13957,"character":15},"end":{"line":13957,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13974,"character":16},"end":{"line":13974,"character":19}},"message":"Type of \"msg\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13975,"character":20},"end":{"line":13975,"character":29}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13975,"character":20},"end":{"line":13975,"character":40}},"message":"\"send_video\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13989,"character":59},"end":{"line":13989,"character":73}},"message":"Type of \"message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13989,"character":59},"end":{"line":13989,"character":73}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13992,"character":25},"end":{"line":13992,"character":43}},"message":"\"send_video\"의 형식을 부분적으로 알 수 없습니다.\n  ‘send_video’의 유형이 ‘(chat_id: str, video_path: str, caption: str | None = None, reply_to: str | None = None, metadata: Dict[str, Any] | None = None, **kwargs: Unknown) -> CoroutineType[Any, Any, SendResult]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13994,"character":14},"end":{"line":13994,"character":24}},"message":"“send_image“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13998,"character":17},"end":{"line":13998,"character":25}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":13999,"character":18},"end":{"line":13999,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14000,"character":18},"end":{"line":14000,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14000,"character":27},"end":{"line":14000,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14000,"character":37},"end":{"line":14000,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14007,"character":15},"end":{"line":14007,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14026,"character":12},"end":{"line":14026,"character":15}},"message":"Type of \"msg\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14027,"character":16},"end":{"line":14027,"character":25}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14027,"character":16},"end":{"line":14027,"character":36}},"message":"\"send_photo\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14040,"character":59},"end":{"line":14040,"character":73}},"message":"Type of \"message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14040,"character":59},"end":{"line":14040,"character":73}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14053,"character":20},"end":{"line":14053,"character":43}},"message":"호출 식의 결과가 ‘Response’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14058,"character":20},"end":{"line":14058,"character":33}},"message":"\"_photo_thread\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14060,"character":40},"end":{"line":14060,"character":51}},"message":"\"reply_to_id\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14063,"character":16},"end":{"line":14063,"character":19}},"message":"Type of \"msg\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14064,"character":20},"end":{"line":14064,"character":29}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14064,"character":20},"end":{"line":14064,"character":40}},"message":"\"send_photo\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14069,"character":47},"end":{"line":14069,"character":58}},"message":"\"reply_to_id\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14074,"character":20},"end":{"line":14074,"character":31}},"message":"\"reply_to_id\"은(는) 바인딩되지 않은 것일 수 있습니다.","severity":1,"code":"reportPossiblyUnboundVariable","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPossiblyUnboundVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14077,"character":63},"end":{"line":14077,"character":77}},"message":"Type of \"message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14077,"character":63},"end":{"line":14077,"character":77}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14088,"character":14},"end":{"line":14088,"character":28}},"message":"“send_animation“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14092,"character":17},"end":{"line":14092,"character":25}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14093,"character":18},"end":{"line":14093,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14094,"character":18},"end":{"line":14094,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14094,"character":27},"end":{"line":14094,"character":31}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14094,"character":37},"end":{"line":14094,"character":40}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14097,"character":15},"end":{"line":14097,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14110,"character":12},"end":{"line":14110,"character":15}},"message":"Type of \"msg\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14111,"character":16},"end":{"line":14111,"character":25}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14111,"character":16},"end":{"line":14111,"character":40}},"message":"\"send_animation\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14124,"character":59},"end":{"line":14124,"character":73}},"message":"Type of \"message_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14124,"character":59},"end":{"line":14124,"character":73}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14135,"character":14},"end":{"line":14135,"character":25}},"message":"“send_typing“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14135,"character":56},"end":{"line":14135,"character":64}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14135,"character":65},"end":{"line":14135,"character":69}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14135,"character":75},"end":{"line":14135,"character":78}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14137,"character":11},"end":{"line":14137,"character":20}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14139,"character":31},"end":{"line":14139,"character":39}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14144,"character":22},"end":{"line":14144,"character":31}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14144,"character":22},"end":{"line":14144,"character":48}},"message":"\"send_chat_action\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14155,"character":30},"end":{"line":14155,"character":39}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14155,"character":30},"end":{"line":14155,"character":56}},"message":"\"send_chat_action\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14170,"character":14},"end":{"line":14170,"character":27}},"message":"“get_chat_info“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14170,"character":51},"end":{"line":14170,"character":55}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14170,"character":61},"end":{"line":14170,"character":64}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14172,"character":15},"end":{"line":14172,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14176,"character":12},"end":{"line":14176,"character":16}},"message":"\"chat\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14176,"character":25},"end":{"line":14176,"character":34}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14176,"character":25},"end":{"line":14176,"character":43}},"message":"\"get_chat\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14179,"character":15},"end":{"line":14179,"character":24}},"message":"\"type\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14179,"character":37},"end":{"line":14179,"character":42}},"message":"\"GROUP\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14181,"character":17},"end":{"line":14181,"character":26}},"message":"\"type\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14181,"character":39},"end":{"line":14181,"character":49}},"message":"\"SUPERGROUP\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14183,"character":19},"end":{"line":14183,"character":32}},"message":"\"is_forum\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14185,"character":17},"end":{"line":14185,"character":26}},"message":"\"type\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14185,"character":39},"end":{"line":14185,"character":46}},"message":"\"CHANNEL\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14189,"character":24},"end":{"line":14189,"character":34}},"message":"\"title\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14189,"character":38},"end":{"line":14189,"character":52}},"message":"\"full_name\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14191,"character":28},"end":{"line":14191,"character":41}},"message":"\"username\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14192,"character":36},"end":{"line":14192,"character":40}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14204,"character":8},"end":{"line":14204,"character":22}},"message":"“format_message“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14216,"character":8},"end":{"line":14216,"character":20}},"message":"\"placeholders\"의 형식을 부분적으로 알 수 없습니다.\n  ‘placeholders’의 유형이 ‘dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14216,"character":22},"end":{"line":14216,"character":26}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14234,"character":28},"end":{"line":14234,"character":29}},"message":"매개 변수 \"m\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14234,"character":28},"end":{"line":14234,"character":29}},"message":"‘m’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14235,"character":12},"end":{"line":14235,"character":15}},"message":"\"raw\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14235,"character":18},"end":{"line":14235,"character":25}},"message":"\"group\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14237,"character":12},"end":{"line":14237,"character":20}},"message":"\"open_end\"의 형식을 부분적으로 알 수 없습니다.\n  ‘open_end’의 유형이 ‘Unknown | Literal[3]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14237,"character":23},"end":{"line":14237,"character":32}},"message":"\"index\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14238,"character":12},"end":{"line":14238,"character":19}},"message":"\"opening\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14239,"character":12},"end":{"line":14239,"character":26}},"message":"\"body_and_close\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14240,"character":12},"end":{"line":14240,"character":16}},"message":"\"body\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14241,"character":12},"end":{"line":14241,"character":16}},"message":"\"body\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14241,"character":19},"end":{"line":14241,"character":31}},"message":"\"replace\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14241,"character":19},"end":{"line":14241,"character":53}},"message":"\"replace\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14242,"character":23},"end":{"line":14242,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_ph\" 함수의 \"value\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14246,"character":12},"end":{"line":14246,"character":27}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"sub\" 함수의 \"repl\" 매개 변수에 해당합니다.\n  인수 형식이 \"(m: Unknown) -> str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14260,"character":26},"end":{"line":14260,"character":27}},"message":"매개 변수 \"m\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14260,"character":26},"end":{"line":14260,"character":27}},"message":"‘m’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14261,"character":35},"end":{"line":14261,"character":42}},"message":"\"group\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14261,"character":35},"end":{"line":14261,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_escape_mdv2\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14262,"character":12},"end":{"line":14262,"character":15}},"message":"\"url\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14262,"character":18},"end":{"line":14262,"character":25}},"message":"\"group\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14262,"character":18},"end":{"line":14262,"character":36}},"message":"\"replace\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14262,"character":18},"end":{"line":14262,"character":58}},"message":"\"replace\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14265,"character":72},"end":{"line":14265,"character":85}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"sub\" 함수의 \"repl\" 매개 변수에 해당합니다.\n  인수 형식이 \"(m: Unknown) -> str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14268,"character":28},"end":{"line":14268,"character":29}},"message":"매개 변수 \"m\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14268,"character":28},"end":{"line":14268,"character":29}},"message":"‘m’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14269,"character":12},"end":{"line":14269,"character":17}},"message":"\"inner\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14269,"character":20},"end":{"line":14269,"character":27}},"message":"\"group\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14269,"character":20},"end":{"line":14269,"character":36}},"message":"\"strip\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14271,"character":52},"end":{"line":14271,"character":57}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"sub\" 함수의 \"string\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14275,"character":32},"end":{"line":14275,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"sub\" 함수의 \"repl\" 매개 변수에 해당합니다.\n  인수 형식이 \"(m: Unknown) -> str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14311,"character":32},"end":{"line":14311,"character":33}},"message":"매개 변수 \"m\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14311,"character":32},"end":{"line":14311,"character":33}},"message":"‘m’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14312,"character":12},"end":{"line":14312,"character":18}},"message":"\"prefix\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14312,"character":21},"end":{"line":14312,"character":28}},"message":"\"group\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14313,"character":12},"end":{"line":14313,"character":19}},"message":"\"content\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14313,"character":22},"end":{"line":14313,"character":29}},"message":"\"group\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14316,"character":15},"end":{"line":14316,"character":32}},"message":"\"startswith\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14316,"character":43},"end":{"line":14316,"character":59}},"message":"\"endswith\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14317,"character":52},"end":{"line":14317,"character":64}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_escape_mdv2\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14318,"character":48},"end":{"line":14318,"character":55}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_escape_mdv2\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14322,"character":12},"end":{"line":14322,"character":31}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"sub\" 함수의 \"repl\" 매개 변수에 해당합니다.\n  인수 형식이 \"(m: Unknown) -> str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14332,"character":12},"end":{"line":14332,"character":15}},"message":"\"key\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14332,"character":28},"end":{"line":14332,"character":53}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"sequence\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14332,"character":33},"end":{"line":14332,"character":52}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict_keys[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14333,"character":32},"end":{"line":14333,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"replace\" 함수의 \"old\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14333,"character":37},"end":{"line":14333,"character":54}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"replace\" 함수의 \"new\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14343,"character":16},"end":{"line":14343,"character":34}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14346,"character":20},"end":{"line":14346,"character":29}},"message":"반환 형식 \"Unknown | LiteralString | Literal['(', ')']\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14346,"character":30},"end":{"line":14346,"character":31}},"message":"매개 변수 \"m\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14346,"character":30},"end":{"line":14346,"character":31}},"message":"‘m’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14346,"character":33},"end":{"line":14346,"character":37}},"message":"‘_seg’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14347,"character":20},"end":{"line":14347,"character":21}},"message":"\"s\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14347,"character":24},"end":{"line":14347,"character":31}},"message":"\"start\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14348,"character":20},"end":{"line":14348,"character":22}},"message":"\"ch\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14348,"character":25},"end":{"line":14348,"character":32}},"message":"\"group\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14351,"character":31},"end":{"line":14351,"character":33}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14361,"character":43},"end":{"line":14361,"character":48}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"start\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14361,"character":54},"end":{"line":14361,"character":62}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"max\" 함수의 \"arg1\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14370,"character":27},"end":{"line":14370,"character":36}},"message":"반환 형식 \"Unknown | LiteralString\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14371,"character":16},"end":{"line":14371,"character":34}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14371,"character":53},"end":{"line":14371,"character":62}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"sub\" 함수의 \"repl\" 매개 변수에 해당합니다.\n  인수 형식이 \"(m: Unknown, _seg: str | Any = _seg) -> (Unknown | LiteralString | Literal['(', ')'])\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14372,"character":23},"end":{"line":14372,"character":34}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"join\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14384,"character":24},"end":{"line":14384,"character":34}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14401,"character":24},"end":{"line":14401,"character":34}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14410,"character":24},"end":{"line":14410,"character":34}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14419,"character":24},"end":{"line":14419,"character":34}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14427,"character":24},"end":{"line":14427,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14427,"character":42},"end":{"line":14427,"character":46}},"message":"\"part\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14427,"character":61},"end":{"line":14427,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14442,"character":24},"end":{"line":14442,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14442,"character":42},"end":{"line":14442,"character":46}},"message":"\"part\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14442,"character":61},"end":{"line":14442,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14451,"character":24},"end":{"line":14451,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14451,"character":42},"end":{"line":14451,"character":46}},"message":"\"part\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14451,"character":61},"end":{"line":14451,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14481,"character":24},"end":{"line":14481,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14481,"character":42},"end":{"line":14481,"character":46}},"message":"\"part\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14481,"character":61},"end":{"line":14481,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14490,"character":12},"end":{"line":14490,"character":18}},"message":"\"values\"의 형식을 부분적으로 알 수 없습니다.\n  ‘values’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14495,"character":12},"end":{"line":14495,"character":17}},"message":"\"value\"의 형식을 부분적으로 알 수 없습니다.\n  ‘value’의 유형이 ‘Unknown | str’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14496,"character":23},"end":{"line":14496,"character":28}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14502,"character":90},"end":{"line":14502,"character":95}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14505,"character":8},"end":{"line":14505,"character":33}},"message":"반환 형식 \"List[Pattern[Unknown]]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14505,"character":43},"end":{"line":14505,"character":47}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14505,"character":48},"end":{"line":14505,"character":58}},"message":"‘Pattern’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14512,"character":20},"end":{"line":14512,"character":26}},"message":"Type of \"loaded\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14520,"character":19},"end":{"line":14520,"character":21}},"message":"반환 형식 \"list[Pattern[Unknown]]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14527,"character":21},"end":{"line":14527,"character":29}},"message":"Argument type is Any\n  인수가 \"__init__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14529,"character":19},"end":{"line":14529,"character":21}},"message":"반환 형식 \"list[Pattern[Unknown]]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14531,"character":8},"end":{"line":14531,"character":16}},"message":"\"compiled\"의 형식을 부분적으로 알 수 없습니다.\n  ‘compiled’의 유형이 ‘list[Pattern[Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14531,"character":18},"end":{"line":14531,"character":22}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14531,"character":23},"end":{"line":14531,"character":33}},"message":"‘Pattern’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14532,"character":12},"end":{"line":14532,"character":19}},"message":"\"pattern\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pattern’의 유형이 ‘str | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14536,"character":16},"end":{"line":14536,"character":31}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Pattern[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14540,"character":85},"end":{"line":14540,"character":93}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"List[Pattern[Unknown]]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14541,"character":15},"end":{"line":14541,"character":23}},"message":"반환 형식 \"List[Pattern[Unknown]]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14543,"character":29},"end":{"line":14543,"character":36}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14543,"character":38},"end":{"line":14543,"character":45}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14544,"character":23},"end":{"line":14544,"character":30}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14547,"character":32},"end":{"line":14547,"character":36}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14550,"character":31},"end":{"line":14550,"character":38}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14550,"character":40},"end":{"line":14550,"character":47}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14551,"character":15},"end":{"line":14551,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14551,"character":40},"end":{"line":14551,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14553,"character":29},"end":{"line":14553,"character":53}},"message":"\"reply_to_message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14553,"character":29},"end":{"line":14553,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14554,"character":43},"end":{"line":14554,"character":53}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14554,"character":78},"end":{"line":14554,"character":87}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14554,"character":78},"end":{"line":14554,"character":87}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14557,"character":39},"end":{"line":14557,"character":46}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14557,"character":48},"end":{"line":14557,"character":55}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14567,"character":12},"end":{"line":14567,"character":25}},"message":"반환 형식 \"Generator[tuple[Any | Literal[''], Any | list[Unknown]], Any, None]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14568,"character":26},"end":{"line":14568,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14568,"character":64},"end":{"line":14568,"character":71}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14569,"character":26},"end":{"line":14569,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14569,"character":67},"end":{"line":14569,"character":74}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14571,"character":25},"end":{"line":14571,"character":33}},"message":"\"entities\"의 형식을 부분적으로 알 수 없습니다.\n  ‘entities’의 유형이 ‘Any | list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14572,"character":16},"end":{"line":14572,"character":22}},"message":"\"entity\"의 형식을 부분적으로 알 수 없습니다.\n  ‘entity’의 유형이 ‘Any | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14573,"character":42},"end":{"line":14573,"character":48}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14576,"character":37},"end":{"line":14576,"character":43}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14577,"character":37},"end":{"line":14577,"character":43}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14602,"character":22},"end":{"line":14602,"character":30}},"message":"\"entities\"의 형식을 부분적으로 알 수 없습니다.\n  ‘entities’의 유형이 ‘Any | list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14605,"character":91},"end":{"line":14605,"character":99}},"message":"Argument type is Any\n  인수가 \"finditer\" 함수의 \"string\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14610,"character":36},"end":{"line":14610,"character":43}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14610,"character":45},"end":{"line":14610,"character":52}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14611,"character":15},"end":{"line":14611,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14614,"character":32},"end":{"line":14614,"character":41}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14614,"character":32},"end":{"line":14614,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14615,"character":25},"end":{"line":14615,"character":34}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14615,"character":25},"end":{"line":14615,"character":34}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14618,"character":12},"end":{"line":14618,"character":25}},"message":"반환 형식 \"Generator[tuple[Any | Literal[''], Any | list[Unknown]], Any, None]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14619,"character":26},"end":{"line":14619,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14619,"character":64},"end":{"line":14619,"character":71}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14620,"character":26},"end":{"line":14620,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14620,"character":67},"end":{"line":14620,"character":74}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14628,"character":25},"end":{"line":14628,"character":33}},"message":"\"entities\"의 형식을 부분적으로 알 수 없습니다.\n  ‘entities’의 유형이 ‘Any | list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14629,"character":16},"end":{"line":14629,"character":22}},"message":"\"entity\"의 형식을 부분적으로 알 수 없습니다.\n  ‘entity’의 유형이 ‘Any | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14630,"character":42},"end":{"line":14630,"character":48}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14632,"character":41},"end":{"line":14632,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14633,"character":41},"end":{"line":14633,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14639,"character":35},"end":{"line":14639,"character":41}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14640,"character":40},"end":{"line":14640,"character":44}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14652,"character":41},"end":{"line":14652,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14653,"character":41},"end":{"line":14653,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14663,"character":35},"end":{"line":14663,"character":70}},"message":"\"_extract_bot_mention_usernames\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_extract_bot_mention_usernames’의 유형이 ‘(message: Unknown) -> set[str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14663,"character":71},"end":{"line":14663,"character":78}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_extract_bot_mention_usernames\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14666,"character":50},"end":{"line":14666,"character":57}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14666,"character":59},"end":{"line":14666,"character":66}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14680,"character":15},"end":{"line":14680,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14683,"character":32},"end":{"line":14683,"character":41}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14683,"character":32},"end":{"line":14683,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14687,"character":34},"end":{"line":14687,"character":69}},"message":"\"_extract_bot_mention_usernames\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_extract_bot_mention_usernames’의 유형이 ‘(message: Unknown) -> set[str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14687,"character":70},"end":{"line":14687,"character":77}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_extract_bot_mention_usernames\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14690,"character":48},"end":{"line":14690,"character":55}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14690,"character":57},"end":{"line":14690,"character":64}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14691,"character":15},"end":{"line":14691,"character":37}},"message":"\"_mention_patterns\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_mention_patterns’의 유형이 ‘List[Pattern[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14693,"character":34},"end":{"line":14693,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14693,"character":66},"end":{"line":14693,"character":73}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14696,"character":16},"end":{"line":14696,"character":23}},"message":"\"pattern\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pattern’의 유형이 ‘Pattern[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14696,"character":27},"end":{"line":14696,"character":49}},"message":"\"_mention_patterns\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_mention_patterns’의 유형이 ‘List[Pattern[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14697,"character":19},"end":{"line":14697,"character":33}},"message":"\"search\"의 형식을 부분적으로 알 수 없습니다.\n  ‘search’의 유형이 ‘Overload[(string: str, pos: int = 0, endpos: int = sys.maxsize) -> (Match[str] | None), (string: Buffer, pos: int = 0, endpos: int = sys.maxsize) -> (Match[bytes] | None), (string: Unknown, pos: int = 0, endpos: int = sys.maxsize) -> (Match[Unknown] | None)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14697,"character":34},"end":{"line":14697,"character":43}},"message":"Argument type is Any\n  인수가 \"search\" 함수의 \"string\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14701,"character":32},"end":{"line":14701,"character":39}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14701,"character":41},"end":{"line":14701,"character":48}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14707,"character":47},"end":{"line":14707,"character":73}},"message":"\"_message_mentions_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_message_mentions_bot’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14707,"character":74},"end":{"line":14707,"character":81}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_message_mentions_bot\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14709,"character":44},"end":{"line":14709,"character":52}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14709,"character":62},"end":{"line":14709,"character":70}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14710,"character":27},"end":{"line":14710,"character":36}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14710,"character":52},"end":{"line":14710,"character":61}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14710,"character":52},"end":{"line":14710,"character":61}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14712,"character":8},"end":{"line":14712,"character":16}},"message":"\"username\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14712,"character":29},"end":{"line":14712,"character":38}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14712,"character":29},"end":{"line":14712,"character":47}},"message":"\"username\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14712,"character":29},"end":{"line":14712,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"escape\" 함수의 \"pattern\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14716,"character":56},"end":{"line":14716,"character":63}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14716,"character":65},"end":{"line":14716,"character":72}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14720,"character":15},"end":{"line":14720,"character":34}},"message":"\"_is_group_chat\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_is_group_chat’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14720,"character":35},"end":{"line":14720,"character":42}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_group_chat\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14723,"character":28},"end":{"line":14723,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14726,"character":27},"end":{"line":14726,"character":36}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14732,"character":23},"end":{"line":14732,"character":32}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14737,"character":42},"end":{"line":14737,"character":49}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14738,"character":55},"end":{"line":14738,"character":95}},"message":"\"_explicit_bot_mentions_exclude_self\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_explicit_bot_mentions_exclude_self’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14738,"character":96},"end":{"line":14738,"character":103}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_explicit_bot_mentions_exclude_self\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14757,"character":11},"end":{"line":14757,"character":32}},"message":"\"_is_reply_to_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_is_reply_to_bot’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14757,"character":33},"end":{"line":14757,"character":40}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_reply_to_bot\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14759,"character":11},"end":{"line":14759,"character":37}},"message":"\"_message_mentions_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_message_mentions_bot’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14759,"character":38},"end":{"line":14759,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_message_mentions_bot\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14761,"character":11},"end":{"line":14761,"character":49}},"message":"\"_message_matches_mention_patterns\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_message_matches_mention_patterns’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14761,"character":50},"end":{"line":14761,"character":57}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_message_matches_mention_patterns\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14765,"character":8},"end":{"line":14765,"character":45}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14765,"character":52},"end":{"line":14765,"character":58}},"message":"매개 변수 \"source\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14765,"character":52},"end":{"line":14765,"character":58}},"message":"‘source’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14767,"character":15},"end":{"line":14767,"character":90}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14767,"character":35},"end":{"line":14767,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"replace\" 함수의 \"obj\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14791,"character":34},"end":{"line":14791,"character":53}},"message":"\"_is_group_chat\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_is_group_chat’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14791,"character":54},"end":{"line":14791,"character":65}},"message":"Argument type is Any\n  인수가 \"_is_group_chat\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14793,"character":42},"end":{"line":14793,"character":53}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14797,"character":24},"end":{"line":14797,"character":66}},"message":"\"_telegram_group_observe_shared_source\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_telegram_group_observe_shared_source’의 유형이 ‘(source: Unknown) -> Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14813,"character":34},"end":{"line":14813,"character":37}},"message":"매개 변수 \"msg\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14813,"character":39},"end":{"line":14813,"character":46}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14815,"character":11},"end":{"line":14815,"character":22}},"message":"\"sticker\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14817,"character":11},"end":{"line":14817,"character":20}},"message":"\"photo\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14819,"character":11},"end":{"line":14819,"character":20}},"message":"\"video\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14821,"character":11},"end":{"line":14821,"character":20}},"message":"\"audio\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14823,"character":11},"end":{"line":14823,"character":20}},"message":"\"voice\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14827,"character":42},"end":{"line":14827,"character":45}},"message":"매개 변수 \"msg\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14827,"character":47},"end":{"line":14827,"character":54}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14836,"character":8},"end":{"line":14836,"character":14}},"message":"\"source\"의 형식을 부분적으로 알 수 없습니다.\n  ‘source’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14836,"character":16},"end":{"line":14836,"character":24}},"message":"\"filename\"의 형식을 부분적으로 알 수 없습니다.\n  ‘filename’의 유형이 ‘Any | str | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14836,"character":26},"end":{"line":14836,"character":30}},"message":"\"mime\"의 형식을 부분적으로 알 수 없습니다.\n  ‘mime’의 유형이 ‘LiteralString | Unknown | Literal['', 'video/mp4', 'audio/ogg']’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14836,"character":39},"end":{"line":14836,"character":66}},"message":"\"_observed_media_source\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_observed_media_source’의 유형이 ‘(msg: Unknown) -> (tuple[Unknown, Literal[''], Literal[''], Literal['image']] | tuple[Unknown, Literal[''], Literal['video/mp4'], Literal['video']] | tuple[Unknown, Literal['voice.ogg'], Literal['audio/ogg'], Literal['audio']] | tuple[Unknown, Any | str, Literal[''], Literal['audio']] | tuple[Unknown, Unknown | Literal[''], LiteralString | Unknown, None] | tuple[None, Literal[''], Literal[''], None])’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14836,"character":67},"end":{"line":14836,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_observed_media_source\" 함수의 \"msg\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14841,"character":28},"end":{"line":14841,"character":34}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14856,"character":12},"end":{"line":14856,"character":20}},"message":"\"file_obj\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14856,"character":29},"end":{"line":14856,"character":44}},"message":"\"get_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14857,"character":25},"end":{"line":14857,"character":63}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14857,"character":31},"end":{"line":14857,"character":61}},"message":"\"download_as_bytearray\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14859,"character":52},"end":{"line":14859,"character":60}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14860,"character":54},"end":{"line":14860,"character":62}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"cache_media_bytes\" 함수의 \"filename\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14860,"character":74},"end":{"line":14860,"character":78}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"cache_media_bytes\" 함수의 \"mime_type\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown | Literal['', 'video/mp4', 'audio/ogg']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14880,"character":41},"end":{"line":14880,"character":44}},"message":"Type of parameter \"msg\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14880,"character":46},"end":{"line":14880,"character":49}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14884,"character":28},"end":{"line":14884,"character":31}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14887,"character":8},"end":{"line":14887,"character":14}},"message":"\"source\"의 형식을 부분적으로 알 수 없습니다.\n  ‘source’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14887,"character":16},"end":{"line":14887,"character":24}},"message":"\"filename\"의 형식을 부분적으로 알 수 없습니다.\n  ‘filename’의 유형이 ‘Any | str | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14887,"character":26},"end":{"line":14887,"character":30}},"message":"\"mime\"의 형식을 부분적으로 알 수 없습니다.\n  ‘mime’의 유형이 ‘LiteralString | Unknown | Literal['', 'video/mp4', 'audio/ogg']’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14887,"character":39},"end":{"line":14887,"character":66}},"message":"\"_observed_media_source\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_observed_media_source’의 유형이 ‘(msg: Unknown) -> (tuple[Unknown, Literal[''], Literal[''], Literal['image']] | tuple[Unknown, Literal[''], Literal['video/mp4'], Literal['video']] | tuple[Unknown, Literal['voice.ogg'], Literal['audio/ogg'], Literal['audio']] | tuple[Unknown, Any | str, Literal[''], Literal['audio']] | tuple[Unknown, Unknown | Literal[''], LiteralString | Unknown, None] | tuple[None, Literal[''], Literal[''], None])’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14887,"character":67},"end":{"line":14887,"character":76}},"message":"Argument type is Any\n  인수가 \"_observed_media_source\" 함수의 \"msg\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14892,"character":28},"end":{"line":14892,"character":34}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14901,"character":12},"end":{"line":14901,"character":20}},"message":"\"file_obj\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14901,"character":29},"end":{"line":14901,"character":44}},"message":"\"get_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14902,"character":25},"end":{"line":14902,"character":63}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14902,"character":31},"end":{"line":14902,"character":61}},"message":"\"download_as_bytearray\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14904,"character":52},"end":{"line":14904,"character":60}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14905,"character":54},"end":{"line":14905,"character":62}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"cache_media_bytes\" 함수의 \"filename\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14905,"character":74},"end":{"line":14905,"character":78}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"cache_media_bytes\" 함수의 \"mime_type\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown | Literal['', 'video/mp4', 'audio/ogg']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14926,"character":8},"end":{"line":14926,"character":30}},"message":"반환 형식 \"tuple[Unknown, Literal[''], Literal[''], Literal['image']] | tuple[Unknown, Literal[''], Literal['video/mp4'], Literal['video']] | tuple[Unknown, Literal['voice.ogg'], Literal['audio/ogg'], Literal['audio']] | tuple[Unknown, Any | str, Literal[''], Literal['audio']] | tuple[Unknown, Unknown | Literal[''], LiteralString | Unknown, None] | tuple[None, Literal[''], Literal[''], None]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14926,"character":37},"end":{"line":14926,"character":40}},"message":"매개 변수 \"msg\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14926,"character":42},"end":{"line":14926,"character":49}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14928,"character":11},"end":{"line":14928,"character":20}},"message":"\"photo\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14929,"character":19},"end":{"line":14929,"character":28}},"message":"\"photo\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14929,"character":19},"end":{"line":14929,"character":49}},"message":"반환 형식 \"tuple[Unknown, Literal[''], Literal[''], Literal['image']]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14930,"character":11},"end":{"line":14930,"character":20}},"message":"\"video\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14931,"character":19},"end":{"line":14931,"character":28}},"message":"\"video\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14931,"character":19},"end":{"line":14931,"character":54}},"message":"반환 형식 \"tuple[Unknown, Literal[''], Literal['video/mp4'], Literal['video']]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14932,"character":11},"end":{"line":14932,"character":20}},"message":"\"voice\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14933,"character":19},"end":{"line":14933,"character":28}},"message":"\"voice\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14933,"character":19},"end":{"line":14933,"character":63}},"message":"반환 형식 \"tuple[Unknown, Literal['voice.ogg'], Literal['audio/ogg'], Literal['audio']]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14934,"character":11},"end":{"line":14934,"character":20}},"message":"\"audio\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14935,"character":19},"end":{"line":14935,"character":28}},"message":"\"audio\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14935,"character":19},"end":{"line":14935,"character":84}},"message":"반환 형식 \"tuple[Unknown, Any | str, Literal[''], Literal['audio']]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14935,"character":38},"end":{"line":14935,"character":47}},"message":"\"audio\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14935,"character":38},"end":{"line":14935,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14936,"character":11},"end":{"line":14936,"character":23}},"message":"\"document\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14937,"character":12},"end":{"line":14937,"character":15}},"message":"\"doc\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14937,"character":18},"end":{"line":14937,"character":30}},"message":"\"document\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14938,"character":19},"end":{"line":14938,"character":80}},"message":"반환 형식 \"tuple[Unknown, Unknown | Literal[''], LiteralString | Unknown, None]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14938,"character":24},"end":{"line":14938,"character":37}},"message":"\"file_name\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14938,"character":45},"end":{"line":14938,"character":72}},"message":"\"lower\"의 형식을 부분적으로 알 수 없습니다.\n  ‘lower’의 유형이 ‘Unknown | Overload[() -> LiteralString, () -> str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14938,"character":46},"end":{"line":14938,"character":59}},"message":"\"mime_type\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14942,"character":40},"end":{"line":14942,"character":48}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14951,"character":8},"end":{"line":14951,"character":15}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14951,"character":17},"end":{"line":14951,"character":24}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14953,"character":19},"end":{"line":14953,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14954,"character":15},"end":{"line":14954,"character":23}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14961,"character":55},"end":{"line":14961,"character":62}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_message_event\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14962,"character":28},"end":{"line":14962,"character":70}},"message":"\"_telegram_group_observe_shared_source\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_telegram_group_observe_shared_source’의 유형이 ‘(source: Unknown) -> Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14963,"character":12},"end":{"line":14963,"character":25}},"message":"Type of \"session_entry\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14963,"character":28},"end":{"line":14963,"character":55}},"message":"Type of \"get_or_create_session\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14972,"character":12},"end":{"line":14972,"character":38}},"message":"Type of \"append_to_transcript\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14972,"character":39},"end":{"line":14972,"character":63}},"message":"Type of \"session_id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14977,"character":32},"end":{"line":14977,"character":39}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14984,"character":38},"end":{"line":14984,"character":45}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":14984,"character":47},"end":{"line":14984,"character":54}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15006,"character":55},"end":{"line":15006,"character":62}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_onboarding_preview_reserves\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15008,"character":49},"end":{"line":15008,"character":56}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_address\" 함수의 \"message_or_query\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15008,"character":58},"end":{"line":15008,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_address\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15015,"character":35},"end":{"line":15015,"character":42}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_physique_chat_id\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15016,"character":37},"end":{"line":15016,"character":44}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_physique_thread_id\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15019,"character":15},"end":{"line":15019,"character":34}},"message":"\"_is_group_chat\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_is_group_chat’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15019,"character":35},"end":{"line":15019,"character":42}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_group_chat\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15022,"character":28},"end":{"line":15022,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15025,"character":27},"end":{"line":15025,"character":36}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15032,"character":23},"end":{"line":15032,"character":32}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15035,"character":102},"end":{"line":15035,"character":111}},"message":"Argument type is Any\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15037,"character":15},"end":{"line":15037,"character":34}},"message":"\"_is_group_chat\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_is_group_chat’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15037,"character":35},"end":{"line":15037,"character":42}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_group_chat\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15040,"character":46},"end":{"line":15040,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15045,"character":42},"end":{"line":15045,"character":49}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15047,"character":55},"end":{"line":15047,"character":95}},"message":"\"_explicit_bot_mentions_exclude_self\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_explicit_bot_mentions_exclude_self’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15047,"character":96},"end":{"line":15047,"character":103}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_explicit_bot_mentions_exclude_self\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15052,"character":24},"end":{"line":15052,"character":46}},"message":"\"_is_guest_mention\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_is_guest_mention’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15052,"character":47},"end":{"line":15052,"character":54}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_guest_mention\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15067,"character":11},"end":{"line":15067,"character":32}},"message":"\"_is_reply_to_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_is_reply_to_bot’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15067,"character":33},"end":{"line":15067,"character":40}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_reply_to_bot\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15071,"character":47},"end":{"line":15071,"character":73}},"message":"\"_message_mentions_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_message_mentions_bot’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15071,"character":74},"end":{"line":15071,"character":81}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_message_mentions_bot\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15073,"character":15},"end":{"line":15073,"character":53}},"message":"\"_message_matches_mention_patterns\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_message_matches_mention_patterns’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15073,"character":54},"end":{"line":15073,"character":61}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_message_matches_mention_patterns\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15075,"character":43},"end":{"line":15075,"character":50}},"message":"매개 변수 \"message\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15075,"character":43},"end":{"line":15075,"character":50}},"message":"‘message’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15084,"character":31},"end":{"line":15084,"character":38}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15085,"character":43},"end":{"line":15085,"character":47}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15087,"character":30},"end":{"line":15087,"character":37}},"message":"Type of \"id\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15087,"character":30},"end":{"line":15087,"character":37}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15104,"character":22},"end":{"line":15104,"character":31}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15104,"character":22},"end":{"line":15104,"character":47}},"message":"\"set_my_commands\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15104,"character":32},"end":{"line":15104,"character":47}},"message":"\"set_my_commands\"은(는) \"None\"의 알려진 특성이 아님","severity":1,"code":"reportOptionalMemberAccess","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportOptionalMemberAccess"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15110,"character":8},"end":{"line":15110,"character":33}},"message":"반환 형식 \"Unknown | None\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15110,"character":40},"end":{"line":15110,"character":46}},"message":"매개 변수 \"update\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15110,"character":48},"end":{"line":15110,"character":54}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15110,"character":59},"end":{"line":15110,"character":67}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15110,"character":68},"end":{"line":15110,"character":75}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15119,"character":28},"end":{"line":15119,"character":34}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15121,"character":23},"end":{"line":15121,"character":28}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15135,"character":19},"end":{"line":15135,"character":41}},"message":"Type of \"get_by_chat\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15135,"character":46},"end":{"line":15135,"character":55}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15148,"character":8},"end":{"line":15148,"character":15}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15148,"character":18},"end":{"line":15148,"character":48}},"message":"\"_effective_update_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_effective_update_message’의 유형이 ‘(update: Unknown) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15152,"character":53},"end":{"line":15152,"character":60}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_room_bootstrap_reserves_ingress\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15154,"character":12},"end":{"line":15154,"character":71}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15154,"character":63},"end":{"line":15154,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15160,"character":8},"end":{"line":15160,"character":15}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15160,"character":18},"end":{"line":15160,"character":48}},"message":"\"_effective_update_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_effective_update_message’의 유형이 ‘(update: Unknown) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15164,"character":53},"end":{"line":15164,"character":60}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_room_bootstrap_reserves_ingress\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15166,"character":12},"end":{"line":15166,"character":71}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15166,"character":63},"end":{"line":15166,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15172,"character":8},"end":{"line":15172,"character":15}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15172,"character":18},"end":{"line":15172,"character":48}},"message":"\"_effective_update_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_effective_update_message’의 유형이 ‘(update: Unknown) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15176,"character":53},"end":{"line":15176,"character":60}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_room_bootstrap_reserves_ingress\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15178,"character":12},"end":{"line":15178,"character":71}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15178,"character":63},"end":{"line":15178,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15184,"character":8},"end":{"line":15184,"character":15}},"message":"\"message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘message’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15184,"character":18},"end":{"line":15184,"character":48}},"message":"\"_effective_update_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_effective_update_message’의 유형이 ‘(update: Unknown) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15188,"character":53},"end":{"line":15188,"character":60}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_room_bootstrap_reserves_ingress\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15190,"character":12},"end":{"line":15190,"character":71}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15190,"character":63},"end":{"line":15190,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15201,"character":8},"end":{"line":15201,"character":11}},"message":"\"msg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘msg’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15201,"character":14},"end":{"line":15201,"character":44}},"message":"\"_effective_update_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_effective_update_message’의 유형이 ‘(update: Unknown) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15202,"character":26},"end":{"line":15202,"character":34}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15205,"character":52},"end":{"line":15205,"character":55}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"reserves\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15206,"character":12},"end":{"line":15206,"character":42}},"message":"호출 식의 결과가 ‘bool | Any’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15206,"character":38},"end":{"line":15206,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"handle_text\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15208,"character":24},"end":{"line":15208,"character":32}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15208,"character":24},"end":{"line":15208,"character":32}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15213,"character":81},"end":{"line":15213,"character":84}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_address\" 함수의 \"message_or_query\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15214,"character":22},"end":{"line":15214,"character":36}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15214,"character":37},"end":{"line":15214,"character":58}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15214,"character":54},"end":{"line":15214,"character":58}},"message":"\"WizardReply\" 클래스의 \"text\" 특성에 액세스할 수 없음\n  특성 \"text\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15216,"character":64},"end":{"line":15216,"character":67}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_handle_nutrition_onboarding_text\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15218,"character":49},"end":{"line":15218,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_room_bootstrap_reserves_ingress\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15220,"character":62},"end":{"line":15220,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15226,"character":46},"end":{"line":15226,"character":49}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_address\" 함수의 \"message_or_query\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15228,"character":16},"end":{"line":15228,"character":19}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_handle_nutrition_draft_edit_text\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15232,"character":22},"end":{"line":15232,"character":36}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15238,"character":61},"end":{"line":15238,"character":69}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15238,"character":61},"end":{"line":15238,"character":69}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_nutrition_customer_start_command\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15239,"character":20},"end":{"line":15243,"character":21}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15240,"character":24},"end":{"line":15240,"character":27}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_nutrition_customer_card\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15247,"character":28},"end":{"line":15247,"character":31}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_execute_nutrition_stepper\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15248,"character":26},"end":{"line":15248,"character":29}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_execute_nutrition_stepper\" 함수의 \"actor\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15251,"character":66},"end":{"line":15251,"character":74}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15251,"character":66},"end":{"line":15251,"character":74}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"handle_text\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15255,"character":60},"end":{"line":15255,"character":68}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15255,"character":60},"end":{"line":15255,"character":68}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"handle_text\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15256,"character":50},"end":{"line":15256,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_nutrition_text\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15260,"character":68},"end":{"line":15260,"character":76}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15260,"character":68},"end":{"line":15260,"character":76}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"handle_trainer_text\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15262,"character":20},"end":{"line":15262,"character":23}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_nutrition_text\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15269,"character":68},"end":{"line":15269,"character":76}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15269,"character":68},"end":{"line":15269,"character":76}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"handle_trainer_text\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15271,"character":20},"end":{"line":15271,"character":23}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_nutrition_text\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15279,"character":29},"end":{"line":15279,"character":37}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15279,"character":29},"end":{"line":15279,"character":43}},"message":"\"split\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15279,"character":29},"end":{"line":15279,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"join\" 함수의 \"iterable\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15283,"character":26},"end":{"line":15283,"character":40}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15285,"character":37},"end":{"line":15285,"character":70}},"message":"\"_nutrition_onboarding_markup\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_nutrition_onboarding_markup’의 유형이 ‘(card: object) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15290,"character":58},"end":{"line":15290,"character":66}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15290,"character":58},"end":{"line":15290,"character":66}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_nutrition_customer_start_command\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15295,"character":26},"end":{"line":15295,"character":40}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15296,"character":24},"end":{"line":15296,"character":39}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15296,"character":35},"end":{"line":15296,"character":39}},"message":"\"object\" 클래스의 \"text\" 특성에 액세스할 수 없음\n  특성 \"text\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15297,"character":37},"end":{"line":15297,"character":70}},"message":"\"_nutrition_onboarding_markup\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_nutrition_onboarding_markup’의 유형이 ‘(card: object) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15302,"character":22},"end":{"line":15302,"character":36}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15306,"character":57},"end":{"line":15306,"character":65}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15306,"character":57},"end":{"line":15306,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_nutrition_customer_start_command\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15317,"character":52},"end":{"line":15317,"character":55}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_physique_text_owner_id\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15318,"character":45},"end":{"line":15318,"character":48}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_physique_chat_id\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15319,"character":48},"end":{"line":15319,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_physique_thread_id\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15320,"character":50},"end":{"line":15320,"character":58}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15320,"character":50},"end":{"line":15320,"character":58}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_physique_recovery_command\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15326,"character":20},"end":{"line":15326,"character":75}},"message":"호출 식의 결과가 ‘SendResult’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15328,"character":113},"end":{"line":15328,"character":121}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15328,"character":113},"end":{"line":15328,"character":121}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_physique_source_approval_request\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15329,"character":65},"end":{"line":15329,"character":68}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_handle_physique_source_approval_text\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15331,"character":113},"end":{"line":15331,"character":121}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15331,"character":113},"end":{"line":15331,"character":121}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_physique_feedback_replay_request\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15334,"character":64},"end":{"line":15334,"character":67}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_physique_feedback_replay\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15337,"character":16},"end":{"line":15337,"character":24}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15337,"character":16},"end":{"line":15337,"character":24}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"handle_text\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15347,"character":64},"end":{"line":15347,"character":67}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_physique_text_prompt\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15349,"character":73},"end":{"line":15349,"character":81}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15349,"character":73},"end":{"line":15349,"character":81}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_interpret_physique_active_turn\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15355,"character":28},"end":{"line":15355,"character":31}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_physique_model_turn\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15358,"character":63},"end":{"line":15358,"character":66}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_physique_conversation_reply\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15358,"character":68},"end":{"line":15358,"character":76}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15358,"character":68},"end":{"line":15358,"character":76}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_physique_conversation_reply\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15361,"character":73},"end":{"line":15361,"character":81}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15361,"character":73},"end":{"line":15361,"character":81}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_interpret_physique_active_turn\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15367,"character":28},"end":{"line":15367,"character":31}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_physique_model_turn\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15370,"character":63},"end":{"line":15370,"character":66}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_physique_conversation_reply\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15370,"character":68},"end":{"line":15370,"character":76}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15370,"character":68},"end":{"line":15370,"character":76}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_physique_conversation_reply\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15372,"character":104},"end":{"line":15372,"character":112}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15372,"character":104},"end":{"line":15372,"character":112}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_is_physique_numeric_answer\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15373,"character":16},"end":{"line":15373,"character":71}},"message":"호출 식의 결과가 ‘SendResult’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15376,"character":63},"end":{"line":15376,"character":66}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_physique_conversation_reply\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15376,"character":68},"end":{"line":15376,"character":76}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15376,"character":68},"end":{"line":15376,"character":76}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_render_physique_conversation_reply\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15378,"character":15},"end":{"line":15378,"character":43}},"message":"\"_should_process_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_should_process_message’의 유형이 ‘(message: Unknown, *, is_command: bool = False) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15378,"character":44},"end":{"line":15378,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_should_process_message\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15379,"character":15},"end":{"line":15379,"character":61}},"message":"\"_should_observe_unmentioned_group_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_should_observe_unmentioned_group_message’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15379,"character":62},"end":{"line":15379,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_should_observe_unmentioned_group_message\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15380,"character":16},"end":{"line":15380,"character":55}},"message":"\"_observe_unmentioned_group_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_observe_unmentioned_group_message’의 유형이 ‘(message: Unknown, msg_type: MessageType, update_id: int | None = None, event: MessageEvent | None = None) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15380,"character":56},"end":{"line":15380,"character":59}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_observe_unmentioned_group_message\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15380,"character":89},"end":{"line":15380,"character":105}},"message":"\"object\" 형식의 인수를 \"_observe_unmentioned_group_message\" 함수에서 \"int | None\" 형식의 \"update_id\" 매개 변수에 할당할 수 없습니다.\n  형식 \"object\"은 형식 \"int | None\"에 할당할 수 없습니다.\n    \"object\"은 \"int\"에 할당할 수 없습니다.\n    \"object\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15382,"character":14},"end":{"line":15382,"character":41}},"message":"\"_ensure_forum_commands\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_ensure_forum_commands’의 유형이 ‘(message: Unknown) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15382,"character":42},"end":{"line":15382,"character":56}},"message":"\"message\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15382,"character":42},"end":{"line":15382,"character":56}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_ensure_forum_commands\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15382,"character":49},"end":{"line":15382,"character":56}},"message":"\"_IngressUpdate\" 클래스의 \"message\" 특성에 액세스할 수 없음\n  특성 \"message\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15384,"character":42},"end":{"line":15384,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_message_event\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15384,"character":75},"end":{"line":15384,"character":91}},"message":"\"object\" 형식의 인수를 \"_build_message_event\" 함수에서 \"int | None\" 형식의 \"update_id\" 매개 변수에 할당할 수 없습니다.\n  형식 \"object\"은 형식 \"int | None\"에 할당할 수 없습니다.\n    \"object\"은 \"int\"에 할당할 수 없습니다.\n    \"object\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15385,"character":21},"end":{"line":15385,"character":61}},"message":"\"MessageEvent\" 클래스의 \"text\" 특성에 할당할 수 없음\n  형식 \"str | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15390,"character":36},"end":{"line":15390,"character":42}},"message":"매개 변수 \"update\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15390,"character":44},"end":{"line":15390,"character":50}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15390,"character":52},"end":{"line":15390,"character":59}},"message":"매개 변수 \"context\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15390,"character":52},"end":{"line":15390,"character":59}},"message":"\"context\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedParameter","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedParameter"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedParameter"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15390,"character":61},"end":{"line":15390,"character":73}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15390,"character":61},"end":{"line":15390,"character":86}},"message":"\"DEFAULT_TYPE\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15392,"character":8},"end":{"line":15392,"character":11}},"message":"\"msg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘msg’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15392,"character":14},"end":{"line":15392,"character":44}},"message":"\"_effective_update_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_effective_update_message’의 유형이 ‘(update: Unknown) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15392,"character":45},"end":{"line":15392,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_effective_update_message\" 함수의 \"update\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15393,"character":26},"end":{"line":15393,"character":34}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15397,"character":69},"end":{"line":15397,"character":77}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15397,"character":69},"end":{"line":15397,"character":77}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15399,"character":18},"end":{"line":15399,"character":55}},"message":"\"_handle_rehearsal_customer_start\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_handle_rehearsal_customer_start’의 유형이 ‘(message: Unknown, token: str) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15400,"character":16},"end":{"line":15400,"character":19}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_handle_rehearsal_customer_start\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15404,"character":8},"end":{"line":15404,"character":15}},"message":"\"command\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15404,"character":18},"end":{"line":15404,"character":26}},"message":"\"text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15404,"character":18},"end":{"line":15404,"character":32}},"message":"\"split\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15404,"character":18},"end":{"line":15404,"character":53}},"message":"\"split\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15404,"character":18},"end":{"line":15404,"character":70}},"message":"\"lower\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15410,"character":46},"end":{"line":15410,"character":49}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_address\" 함수의 \"message_or_query\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15410,"character":51},"end":{"line":15410,"character":54}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_nutrition_address\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15415,"character":54},"end":{"line":15415,"character":57}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_adaptive_operator_result\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15420,"character":44},"end":{"line":15420,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15421,"character":38},"end":{"line":15421,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15422,"character":31},"end":{"line":15422,"character":34}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15425,"character":33},"end":{"line":15425,"character":39}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15435,"character":16},"end":{"line":15435,"character":25}},"message":"\"recovered\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15435,"character":34},"end":{"line":15440,"character":17}},"message":"“object“은(는) awaitable이 아닙니다.\n  ‘object’은(는) ‘Awaitable[_T_co@Awaitable]’ 프로토콜과 호환되지 않습니다.\n    \"__await__\"이(가) 없습니다.","severity":1,"code":"reportGeneralTypeIssues","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportGeneralTypeIssues"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15443,"character":30},"end":{"line":15443,"character":44}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15447,"character":49},"end":{"line":15447,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_room_bootstrap_reserves_ingress\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15449,"character":54},"end":{"line":15449,"character":60}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"update\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15449,"character":62},"end":{"line":15449,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15454,"character":16},"end":{"line":15454,"character":49}},"message":"호출 식의 결과가 ‘bool | Any’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15454,"character":45},"end":{"line":15454,"character":48}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"handle_command\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15457,"character":38},"end":{"line":15457,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15459,"character":22},"end":{"line":15459,"character":36}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15461,"character":38},"end":{"line":15461,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15462,"character":31},"end":{"line":15462,"character":34}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15463,"character":18},"end":{"line":15463,"character":32}},"message":"\"reply_text\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15464,"character":16},"end":{"line":15465,"character":76}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15468,"character":15},"end":{"line":15468,"character":43}},"message":"\"_should_process_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_should_process_message’의 유형이 ‘(message: Unknown, *, is_command: bool = False) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15468,"character":44},"end":{"line":15468,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_should_process_message\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15470,"character":14},"end":{"line":15470,"character":41}},"message":"\"_ensure_forum_commands\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_ensure_forum_commands’의 유형이 ‘(message: Unknown) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15470,"character":42},"end":{"line":15470,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_ensure_forum_commands\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15472,"character":42},"end":{"line":15472,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_message_event\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15472,"character":78},"end":{"line":15472,"character":94}},"message":"\"update_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15472,"character":78},"end":{"line":15472,"character":94}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_message_event\" 함수의 \"update_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15473,"character":21},"end":{"line":15473,"character":61}},"message":"\"MessageEvent\" 클래스의 \"text\" 특성에 할당할 수 없음\n  형식 \"str | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15478,"character":45},"end":{"line":15478,"character":51}},"message":"매개 변수 \"update\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15478,"character":53},"end":{"line":15478,"character":59}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15478,"character":61},"end":{"line":15478,"character":68}},"message":"매개 변수 \"context\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15478,"character":61},"end":{"line":15478,"character":68}},"message":"\"context\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedParameter","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedParameter"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedParameter"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15478,"character":70},"end":{"line":15478,"character":82}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15478,"character":70},"end":{"line":15478,"character":95}},"message":"\"DEFAULT_TYPE\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15480,"character":8},"end":{"line":15480,"character":11}},"message":"\"msg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘msg’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15480,"character":14},"end":{"line":15480,"character":44}},"message":"\"_effective_update_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_effective_update_message’의 유형이 ‘(update: Unknown) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15480,"character":45},"end":{"line":15480,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_effective_update_message\" 함수의 \"update\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15485,"character":49},"end":{"line":15485,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_room_bootstrap_reserves_ingress\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15487,"character":54},"end":{"line":15487,"character":60}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"update\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15487,"character":62},"end":{"line":15487,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15489,"character":15},"end":{"line":15489,"character":43}},"message":"\"_should_process_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_should_process_message’의 유형이 ‘(message: Unknown, *, is_command: bool = False) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15489,"character":44},"end":{"line":15489,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_should_process_message\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15490,"character":15},"end":{"line":15490,"character":61}},"message":"\"_should_observe_unmentioned_group_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_should_observe_unmentioned_group_message’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15490,"character":62},"end":{"line":15490,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_should_observe_unmentioned_group_message\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15491,"character":16},"end":{"line":15491,"character":55}},"message":"\"_observe_unmentioned_group_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_observe_unmentioned_group_message’의 유형이 ‘(message: Unknown, msg_type: MessageType, update_id: int | None = None, event: MessageEvent | None = None) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15491,"character":56},"end":{"line":15491,"character":59}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_observe_unmentioned_group_message\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15491,"character":93},"end":{"line":15491,"character":109}},"message":"\"update_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15491,"character":93},"end":{"line":15491,"character":109}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_observe_unmentioned_group_message\" 함수의 \"update_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15494,"character":24},"end":{"line":15494,"character":27}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15495,"character":27},"end":{"line":15495,"character":32}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15495,"character":74},"end":{"line":15495,"character":77}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15500,"character":22},"end":{"line":15500,"character":30}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15501,"character":22},"end":{"line":15501,"character":30}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15508,"character":28},"end":{"line":15508,"character":33}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15509,"character":30},"end":{"line":15509,"character":35}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15519,"character":42},"end":{"line":15519,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_message_event\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15519,"character":79},"end":{"line":15519,"character":95}},"message":"\"update_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15519,"character":79},"end":{"line":15519,"character":95}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_message_event\" 함수의 \"update_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15539,"character":36},"end":{"line":15539,"character":90}},"message":"Argument type is Any\n  인수가 \"build_session_key\" 함수의 \"group_sessions_per_user\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15540,"character":37},"end":{"line":15540,"character":93}},"message":"Argument type is Any\n  인수가 \"build_session_key\" 함수의 \"thread_sessions_per_user\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15555,"character":18},"end":{"line":15555,"character":33}},"message":"\"MessageEvent\" 클래스의 \"_last_chunk_len\" 특성에 할당할 수 없음\n  특성 \"_last_chunk_len\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15561,"character":21},"end":{"line":15561,"character":36}},"message":"\"MessageEvent\" 클래스의 \"_last_chunk_len\" 특성에 할당할 수 없음\n  특성 \"_last_chunk_len\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15568,"character":8},"end":{"line":15568,"character":18}},"message":"\"prior_task\"의 형식을 부분적으로 알 수 없습니다.\n  ‘prior_task’의 유형이 ‘Task[Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15568,"character":21},"end":{"line":15568,"character":51}},"message":"\"_pending_text_batch_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_pending_text_batch_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15568,"character":21},"end":{"line":15568,"character":55}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Task[Unknown] | None), (key: str, default: Task[Unknown], /) -> Task[Unknown], (key: str, default: _T@get, /) -> (Task[Unknown] | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15570,"character":12},"end":{"line":15570,"character":31}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15571,"character":8},"end":{"line":15571,"character":38}},"message":"\"_pending_text_batch_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_pending_text_batch_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15616,"character":15},"end":{"line":15616,"character":45}},"message":"\"_pending_text_batch_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_pending_text_batch_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15616,"character":15},"end":{"line":15616,"character":49}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Task[Unknown] | None), (key: str, default: Task[Unknown], /) -> Task[Unknown], (key: str, default: _T@get, /) -> (Task[Unknown] | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15617,"character":16},"end":{"line":15617,"character":46}},"message":"\"_pending_text_batch_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_pending_text_batch_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15617,"character":16},"end":{"line":15617,"character":50}},"message":"\"pop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pop’의 유형이 ‘Overload[(key: str, /) -> Task[Unknown], (key: str, default: Task[Unknown], /) -> Task[Unknown], (key: str, default: _T@pop, /) -> (Task[Unknown] | _T@pop)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15617,"character":16},"end":{"line":15617,"character":61}},"message":"호출 식의 결과가 ‘Task[Unknown] | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15623,"character":52},"end":{"line":15623,"character":55}},"message":"매개 변수 \"msg\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15623,"character":57},"end":{"line":15623,"character":64}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15628,"character":36},"end":{"line":15628,"character":90}},"message":"Argument type is Any\n  인수가 \"build_session_key\" 함수의 \"group_sessions_per_user\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15629,"character":37},"end":{"line":15629,"character":93}},"message":"Argument type is Any\n  인수가 \"build_session_key\" 함수의 \"thread_sessions_per_user\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15631,"character":33},"end":{"line":15631,"character":36}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15647,"character":15},"end":{"line":15647,"character":46}},"message":"\"_pending_photo_batch_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_pending_photo_batch_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15647,"character":15},"end":{"line":15647,"character":50}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Task[Unknown] | None), (key: str, default: Task[Unknown], /) -> Task[Unknown], (key: str, default: _T@get, /) -> (Task[Unknown] | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15648,"character":16},"end":{"line":15648,"character":47}},"message":"\"_pending_photo_batch_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_pending_photo_batch_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15648,"character":16},"end":{"line":15648,"character":51}},"message":"\"pop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pop’의 유형이 ‘Overload[(key: str, /) -> Task[Unknown], (key: str, default: Task[Unknown], /) -> Task[Unknown], (key: str, default: _T@pop, /) -> (Task[Unknown] | _T@pop)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15648,"character":16},"end":{"line":15648,"character":68}},"message":"호출 식의 결과가 ‘Task[Unknown] | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15661,"character":8},"end":{"line":15661,"character":18}},"message":"\"prior_task\"의 형식을 부분적으로 알 수 없습니다.\n  ‘prior_task’의 유형이 ‘Task[Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15661,"character":21},"end":{"line":15661,"character":52}},"message":"\"_pending_photo_batch_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_pending_photo_batch_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15661,"character":21},"end":{"line":15661,"character":56}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Task[Unknown] | None), (key: str, default: Task[Unknown], /) -> Task[Unknown], (key: str, default: _T@get, /) -> (Task[Unknown] | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15663,"character":12},"end":{"line":15663,"character":31}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15665,"character":8},"end":{"line":15665,"character":39}},"message":"\"_pending_photo_batch_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_pending_photo_batch_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15667,"character":42},"end":{"line":15667,"character":48}},"message":"매개 변수 \"update\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15667,"character":50},"end":{"line":15667,"character":56}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15667,"character":58},"end":{"line":15667,"character":65}},"message":"매개 변수 \"context\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15667,"character":58},"end":{"line":15667,"character":65}},"message":"\"context\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedParameter","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedParameter"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedParameter"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15667,"character":67},"end":{"line":15667,"character":79}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15667,"character":67},"end":{"line":15667,"character":92}},"message":"\"DEFAULT_TYPE\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15669,"character":8},"end":{"line":15669,"character":11}},"message":"\"msg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘msg’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15669,"character":14},"end":{"line":15669,"character":44}},"message":"\"_effective_update_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_effective_update_message’의 유형이 ‘(update: Unknown) -> (Unknown | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15669,"character":45},"end":{"line":15669,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_effective_update_message\" 함수의 \"update\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15674,"character":49},"end":{"line":15674,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_room_bootstrap_reserves_ingress\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15676,"character":54},"end":{"line":15676,"character":60}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"update\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15676,"character":62},"end":{"line":15676,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_reserve_adaptive_review_update\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15678,"character":15},"end":{"line":15678,"character":43}},"message":"\"_should_process_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_should_process_message’의 유형이 ‘(message: Unknown, *, is_command: bool = False) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15678,"character":44},"end":{"line":15678,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_should_process_message\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15679,"character":15},"end":{"line":15679,"character":61}},"message":"\"_should_observe_unmentioned_group_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_should_observe_unmentioned_group_message’의 유형이 ‘(message: Unknown) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15679,"character":62},"end":{"line":15679,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_should_observe_unmentioned_group_message\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15680,"character":16},"end":{"line":15680,"character":18}},"message":"\"_m\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15681,"character":32},"end":{"line":15681,"character":56}},"message":"\"_media_message_type\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_media_message_type’의 유형이 ‘(msg: Unknown) -> MessageType’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15681,"character":57},"end":{"line":15681,"character":59}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_media_message_type\" 함수의 \"msg\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15682,"character":51},"end":{"line":15682,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_message_event\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15682,"character":80},"end":{"line":15682,"character":96}},"message":"\"update_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15682,"character":80},"end":{"line":15682,"character":96}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_message_event\" 함수의 \"update_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15683,"character":19},"end":{"line":15683,"character":29}},"message":"\"caption\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15684,"character":34},"end":{"line":15684,"character":74}},"message":"\"MessageEvent\" 클래스의 \"text\" 특성에 할당할 수 없음\n  형식 \"str | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15684,"character":63},"end":{"line":15684,"character":73}},"message":"\"caption\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15684,"character":63},"end":{"line":15684,"character":73}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_clean_bot_trigger_text\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15685,"character":22},"end":{"line":15685,"character":48}},"message":"\"_cache_observed_media\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_cache_observed_media’의 유형이 ‘(msg: Unknown, event: MessageEvent) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15685,"character":49},"end":{"line":15685,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_cache_observed_media\" 함수의 \"msg\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15686,"character":16},"end":{"line":15686,"character":55}},"message":"\"_observe_unmentioned_group_message\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_observe_unmentioned_group_message’의 유형이 ‘(message: Unknown, msg_type: MessageType, update_id: int | None = None, event: MessageEvent | None = None) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15687,"character":20},"end":{"line":15687,"character":22}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_observe_unmentioned_group_message\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15687,"character":55},"end":{"line":15687,"character":71}},"message":"\"update_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15687,"character":55},"end":{"line":15687,"character":71}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_observe_unmentioned_group_message\" 함수의 \"update_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15691,"character":19},"end":{"line":15691,"character":43}},"message":"\"_media_message_type\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_media_message_type’의 유형이 ‘(msg: Unknown) -> MessageType’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15691,"character":44},"end":{"line":15691,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_media_message_type\" 함수의 \"msg\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15693,"character":42},"end":{"line":15693,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_message_event\" 함수의 \"message\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15693,"character":67},"end":{"line":15693,"character":83}},"message":"\"update_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15693,"character":67},"end":{"line":15693,"character":83}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_build_message_event\" 함수의 \"update_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15696,"character":11},"end":{"line":15696,"character":22}},"message":"\"caption\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15697,"character":25},"end":{"line":15697,"character":66}},"message":"\"MessageEvent\" 클래스의 \"text\" 특성에 할당할 수 없음\n  형식 \"str | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15697,"character":54},"end":{"line":15697,"character":65}},"message":"\"caption\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15697,"character":54},"end":{"line":15697,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_clean_bot_trigger_text\" 함수의 \"text\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15700,"character":11},"end":{"line":15700,"character":22}},"message":"\"sticker\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15701,"character":18},"end":{"line":15701,"character":38}},"message":"\"_handle_sticker\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_handle_sticker’의 유형이 ‘(msg: Unknown, event: MessageEvent) -> CoroutineType[Any, Any, None]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15701,"character":39},"end":{"line":15701,"character":42}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_handle_sticker\" 함수의 \"msg\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15712,"character":11},"end":{"line":15712,"character":20}},"message":"\"photo\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15715,"character":16},"end":{"line":15715,"character":21}},"message":"\"photo\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15715,"character":24},"end":{"line":15715,"character":33}},"message":"\"photo\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15716,"character":16},"end":{"line":15716,"character":24}},"message":"\"file_obj\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15716,"character":33},"end":{"line":15716,"character":47}},"message":"\"get_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15718,"character":16},"end":{"line":15718,"character":27}},"message":"\"image_bytes\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15718,"character":36},"end":{"line":15718,"character":66}},"message":"\"download_as_bytearray\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15721,"character":19},"end":{"line":15721,"character":37}},"message":"\"file_path\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15723,"character":27},"end":{"line":15723,"character":45}},"message":"\"file_path\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15723,"character":27},"end":{"line":15723,"character":51}},"message":"\"lower\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15723,"character":27},"end":{"line":15723,"character":62}},"message":"\"endswith\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15727,"character":59},"end":{"line":15727,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15731,"character":41},"end":{"line":15731,"character":44}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15733,"character":60},"end":{"line":15733,"character":74}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15735,"character":32},"end":{"line":15735,"character":53}},"message":"\"_photo_batch_key\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_photo_batch_key’의 유형이 ‘(event: MessageEvent, msg: Unknown) -> str’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15735,"character":61},"end":{"line":15735,"character":64}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_photo_batch_key\" 함수의 \"msg\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15743,"character":11},"end":{"line":15743,"character":20}},"message":"\"voice\" 유형을 알 수 없습��다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15745,"character":66},"end":{"line":15745,"character":75}},"message":"\"voice\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15748,"character":93},"end":{"line":15748,"character":102}},"message":"\"voice\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15748,"character":93},"end":{"line":15748,"character":102}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15751,"character":16},"end":{"line":15751,"character":24}},"message":"\"file_obj\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15751,"character":33},"end":{"line":15751,"character":42}},"message":"\"voice\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15751,"character":33},"end":{"line":15751,"character":51}},"message":"\"get_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15752,"character":16},"end":{"line":15752,"character":27}},"message":"\"audio_bytes\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15752,"character":36},"end":{"line":15752,"character":66}},"message":"\"download_as_bytearray\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15753,"character":59},"end":{"line":15753,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15759,"character":13},"end":{"line":15759,"character":22}},"message":"\"audio\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15761,"character":66},"end":{"line":15761,"character":75}},"message":"\"audio\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15764,"character":93},"end":{"line":15764,"character":102}},"message":"\"audio\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15764,"character":93},"end":{"line":15764,"character":102}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15767,"character":16},"end":{"line":15767,"character":24}},"message":"\"file_obj\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15767,"character":33},"end":{"line":15767,"character":42}},"message":"\"audio\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15767,"character":33},"end":{"line":15767,"character":51}},"message":"\"get_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15768,"character":16},"end":{"line":15768,"character":27}},"message":"\"audio_bytes\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15768,"character":36},"end":{"line":15768,"character":66}},"message":"\"download_as_bytearray\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15769,"character":59},"end":{"line":15769,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15776,"character":13},"end":{"line":15776,"character":22}},"message":"\"video\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15778,"character":16},"end":{"line":15778,"character":24}},"message":"\"file_obj\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15778,"character":33},"end":{"line":15778,"character":42}},"message":"\"video\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15778,"character":33},"end":{"line":15778,"character":51}},"message":"\"get_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15779,"character":16},"end":{"line":15779,"character":27}},"message":"\"video_bytes\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15779,"character":36},"end":{"line":15779,"character":66}},"message":"\"download_as_bytearray\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15781,"character":27},"end":{"line":15781,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15783,"character":27},"end":{"line":15783,"character":45}},"message":"\"file_path\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15783,"character":27},"end":{"line":15783,"character":51}},"message":"\"lower\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15783,"character":27},"end":{"line":15783,"character":62}},"message":"\"endswith\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15786,"character":59},"end":{"line":15786,"character":70}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15794,"character":13},"end":{"line":15794,"character":25}},"message":"\"document\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15795,"character":12},"end":{"line":15795,"character":15}},"message":"\"doc\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15795,"character":18},"end":{"line":15795,"character":30}},"message":"\"document\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15799,"character":16},"end":{"line":15799,"character":33}},"message":"\"original_filename\"의 형식을 부분적으로 알 수 없습니다.\n  ‘original_filename’의 유형이 ‘Unknown | Literal['']’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15799,"character":36},"end":{"line":15799,"character":49}},"message":"\"file_name\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15801,"character":20},"end":{"line":15801,"character":21}},"message":"\"_\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15801,"character":23},"end":{"line":15801,"character":26}},"message":"\"ext\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15801,"character":46},"end":{"line":15801,"character":63}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"splitext\" 함수의 \"p\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15802,"character":20},"end":{"line":15802,"character":23}},"message":"\"ext\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15802,"character":26},"end":{"line":15802,"character":35}},"message":"\"lower\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15806,"character":16},"end":{"line":15806,"character":24}},"message":"\"doc_mime\"의 형식을 부분적으로 알 수 없습니다.\n  ‘doc_mime’의 유형이 ‘LiteralString | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15806,"character":27},"end":{"line":15806,"character":54}},"message":"\"lower\"의 형식을 부분적으로 알 수 없습니다.\n  ‘lower’의 유형이 ‘Unknown | Overload[() -> LiteralString, () -> str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15806,"character":28},"end":{"line":15806,"character":41}},"message":"\"mime_type\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15810,"character":58},"end":{"line":15810,"character":66}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15813,"character":46},"end":{"line":15813,"character":54}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15817,"character":23},"end":{"line":15817,"character":36}},"message":"\"file_size\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15817,"character":40},"end":{"line":15817,"character":53}},"message":"\"file_size\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15823,"character":75},"end":{"line":15823,"character":88}},"message":"\"file_size\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15823,"character":75},"end":{"line":15823,"character":88}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15830,"character":56},"end":{"line":15830,"character":75}},"message":"\"startswith\"의 형식을 부분적으로 알 수 없습니다.\n  ‘startswith’의 유형이 ‘((prefix: str | tuple[str, ...], start: SupportsIndex | None = None, end: SupportsIndex | None = None, /) -> bool) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15831,"character":20},"end":{"line":15831,"character":28}},"message":"\"file_obj\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15831,"character":37},"end":{"line":15831,"character":49}},"message":"\"get_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15832,"character":20},"end":{"line":15832,"character":31}},"message":"\"image_bytes\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15832,"character":40},"end":{"line":15832,"character":70}},"message":"\"download_as_bytearray\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15833,"character":20},"end":{"line":15833,"character":29}},"message":"\"image_ext\"의 형식을 부분적으로 알 수 없습니다.\n  ‘image_ext’의 유형이 ‘str | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15833,"character":110},"end":{"line":15833,"character":118}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15835,"character":67},"end":{"line":15835,"character":78}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15835,"character":85},"end":{"line":15835,"character":94}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"cache_image_from_bytes\" 함수의 \"ext\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15847,"character":53},"end":{"line":15847,"character":72}},"message":"\"startswith\"의 형식을 부분적으로 알 수 없습니다.\n  ‘startswith’의 유형이 ‘((prefix: str | tuple[str, ...], start: SupportsIndex | None = None, end: SupportsIndex | None = None, /) -> bool) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15847,"character":120},"end":{"line":15847,"character":129}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15850,"character":45},"end":{"line":15850,"character":48}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15852,"character":64},"end":{"line":15852,"character":78}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15854,"character":36},"end":{"line":15854,"character":57}},"message":"\"_photo_batch_key\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_photo_batch_key’의 유형이 ‘(event: MessageEvent, msg: Unknown) -> str’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15854,"character":65},"end":{"line":15854,"character":68}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_photo_batch_key\" 함수의 \"msg\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15858,"character":31},"end":{"line":15858,"character":44}},"message":"\"mime_type\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15860,"character":48},"end":{"line":15860,"character":61}},"message":"\"mime_type\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15860,"character":48},"end":{"line":15860,"character":61}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15862,"character":31},"end":{"line":15862,"character":44}},"message":"\"mime_type\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15867,"character":24},"end":{"line":15867,"character":65}},"message":"호출 식의 결과가 ‘str’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15868,"character":48},"end":{"line":15868,"character":61}},"message":"\"mime_type\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15868,"character":48},"end":{"line":15868,"character":61}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15871,"character":20},"end":{"line":15871,"character":28}},"message":"\"file_obj\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15871,"character":37},"end":{"line":15871,"character":49}},"message":"\"get_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15872,"character":20},"end":{"line":15872,"character":31}},"message":"\"video_bytes\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15872,"character":40},"end":{"line":15872,"character":70}},"message":"\"download_as_bytearray\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15873,"character":63},"end":{"line":15873,"character":74}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15873,"character":81},"end":{"line":15873,"character":84}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"cache_video_from_bytes\" 함수의 \"ext\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15894,"character":76},"end":{"line":15894,"character":92}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15899,"character":16},"end":{"line":15899,"character":24}},"message":"\"file_obj\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15899,"character":33},"end":{"line":15899,"character":45}},"message":"\"get_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15900,"character":16},"end":{"line":15900,"character":25}},"message":"\"doc_bytes\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15900,"character":34},"end":{"line":15900,"character":64}},"message":"\"download_as_bytearray\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15901,"character":34},"end":{"line":15901,"character":43}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15902,"character":67},"end":{"line":15902,"character":104}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"cache_document_from_bytes\" 함수의 \"filename\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15913,"character":24},"end":{"line":15913,"character":36}},"message":"\"display_name\"의 형식을 부분적으로 알 수 없습니다.\n  ‘display_name’의 유형이 ‘Unknown | str’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15914,"character":65},"end":{"line":15914,"character":77}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"sub\" 함수의 \"string\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15929,"character":33},"end":{"line":15929,"character":36}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15931,"character":52},"end":{"line":15931,"character":66}},"message":"Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15953,"character":8},"end":{"line":15953,"character":18}},"message":"\"prior_task\"의 형식을 부분적으로 알 수 없습니다.\n  ‘prior_task’의 유형이 ‘Task[Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15953,"character":21},"end":{"line":15953,"character":44}},"message":"\"_media_group_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_media_group_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15953,"character":21},"end":{"line":15953,"character":48}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Task[Unknown] | None), (key: str, default: Task[Unknown], /) -> Task[Unknown], (key: str, default: _T@get, /) -> (Task[Unknown] | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15955,"character":12},"end":{"line":15955,"character":31}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15957,"character":8},"end":{"line":15957,"character":31}},"message":"\"_media_group_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_media_group_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15970,"character":12},"end":{"line":15970,"character":35}},"message":"\"_media_group_tasks\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_media_group_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15970,"character":12},"end":{"line":15970,"character":39}},"message":"\"pop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pop’의 유형이 ‘Overload[(key: str, /) -> Task[Unknown], (key: str, default: Task[Unknown], /) -> Task[Unknown], (key: str, default: _T@pop, /) -> (Task[Unknown] | _T@pop)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15970,"character":12},"end":{"line":15970,"character":61}},"message":"호출 식의 결과가 ‘Task[Unknown] | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15972,"character":36},"end":{"line":15972,"character":39}},"message":"매개 변수 \"msg\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15972,"character":41},"end":{"line":15972,"character":48}},"message":"형식 식에는 변수를 사용할 수 없습니다.","severity":1,"code":"reportInvalidTypeForm","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportInvalidTypeForm"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15981,"character":12},"end":{"line":15981,"character":34}},"message":"\"get_cached_description\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get_cached_description’의 유형이 ‘(file_unique_id: str) -> (dict[Unknown, Unknown] | None)’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15988,"character":8},"end":{"line":15988,"character":15}},"message":"\"sticker\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15988,"character":18},"end":{"line":15988,"character":29}},"message":"\"sticker\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15989,"character":8},"end":{"line":15989,"character":13}},"message":"\"emoji\"의 형식을 부분적으로 알 수 없습니다.\n  ‘emoji’의 유형이 ‘Unknown | Literal['']’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15989,"character":16},"end":{"line":15989,"character":29}},"message":"\"emoji\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15990,"character":8},"end":{"line":15990,"character":16}},"message":"\"set_name\"의 형식을 부분적으로 알 수 없습니다.\n  ‘set_name’의 유형이 ‘Unknown | Literal['']’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15990,"character":19},"end":{"line":15990,"character":35}},"message":"\"set_name\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15993,"character":11},"end":{"line":15993,"character":30}},"message":"\"is_animated\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15993,"character":34},"end":{"line":15993,"character":50}},"message":"\"is_video\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15994,"character":58},"end":{"line":15994,"character":63}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"build_animated_sticker_injection\" 함수의 \"emoji\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15998,"character":8},"end":{"line":15998,"character":14}},"message":"\"cached\"의 형식을 부분적으로 알 수 없습니다.\n  ‘cached’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15998,"character":40},"end":{"line":15998,"character":62}},"message":"\"file_unique_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":15998,"character":40},"end":{"line":15998,"character":62}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"get_cached_description\" 함수의 \"file_unique_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16001,"character":16},"end":{"line":16001,"character":37}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"build_sticker_injection\" 함수의 \"description\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16001,"character":39},"end":{"line":16001,"character":49}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16001,"character":39},"end":{"line":16001,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"build_sticker_injection\" 함수의 \"emoji\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16001,"character":67},"end":{"line":16001,"character":77}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16001,"character":67},"end":{"line":16001,"character":99}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"build_sticker_injection\" 함수의 \"set_name\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16003,"character":60},"end":{"line":16003,"character":82}},"message":"\"file_unique_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16003,"character":60},"end":{"line":16003,"character":82}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16008,"character":12},"end":{"line":16008,"character":20}},"message":"\"file_obj\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16008,"character":29},"end":{"line":16008,"character":45}},"message":"\"get_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16009,"character":12},"end":{"line":16009,"character":23}},"message":"\"image_bytes\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16009,"character":32},"end":{"line":16009,"character":62}},"message":"\"download_as_bytearray\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16010,"character":55},"end":{"line":16010,"character":66}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16018,"character":12},"end":{"line":16018,"character":18}},"message":"Type of \"result\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16020,"character":15},"end":{"line":16020,"character":25}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16021,"character":16},"end":{"line":16021,"character":27}},"message":"Type of \"description\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16021,"character":30},"end":{"line":16021,"character":40}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16022,"character":42},"end":{"line":16022,"character":64}},"message":"\"file_unique_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16022,"character":42},"end":{"line":16022,"character":64}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"cache_sticker_description\" 함수의 \"file_unique_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16022,"character":66},"end":{"line":16022,"character":77}},"message":"Argument type is Any\n  인수가 \"cache_sticker_description\" 함수의 \"description\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16022,"character":79},"end":{"line":16022,"character":84}},"message":"인수 형식을 부분적��로 알 수 없습니다.\n  인수가 \"cache_sticker_description\" 함수의 \"emoji\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16022,"character":86},"end":{"line":16022,"character":94}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"cache_sticker_description\" 함수의 \"set_name\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16023,"character":53},"end":{"line":16023,"character":64}},"message":"Argument type is Any\n  인수가 \"build_sticker_injection\" 함수의 \"description\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16023,"character":66},"end":{"line":16023,"character":71}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"build_sticker_injection\" 함수의 \"emoji\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16023,"character":73},"end":{"line":16023,"character":81}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"build_sticker_injection\" 함수의 \"set_name\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16028,"character":20},"end":{"line":16028,"character":25}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"build_sticker_injection\" 함수의 \"emoji\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16028,"character":27},"end":{"line":16028,"character":35}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"build_sticker_injection\" 함수의 \"set_name\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16034,"character":16},"end":{"line":16034,"character":21}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"build_sticker_injection\" 함수의 \"emoji\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16034,"character":23},"end":{"line":16034,"character":31}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"build_sticker_injection\" 함수의 \"set_name\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16051,"character":16},"end":{"line":16051,"character":22}},"message":"\"config\"의 형식을 부분적으로 알 수 없습니다.\n  ‘config’의 유형이 ‘Any | dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16053,"character":12},"end":{"line":16053,"character":21}},"message":"\"dm_topics\"의 형식을 부분적으로 알 수 없습니다.\n  ‘dm_topics’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16054,"character":16},"end":{"line":16054,"character":26}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16054,"character":16},"end":{"line":16055,"character":20}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16054,"character":16},"end":{"line":16056,"character":20}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16054,"character":16},"end":{"line":16057,"character":20}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16069,"character":20},"end":{"line":16069,"character":41}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16069,"character":47},"end":{"line":16069,"character":57}},"message":"\"chat_entry\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_entry’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16071,"character":16},"end":{"line":16071,"character":26}},"message":"\"chat_entry\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_entry’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16072,"character":16},"end":{"line":16072,"character":19}},"message":"\"cid\"의 형식을 부분적으로 알 수 없습니다.\n  ‘cid’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16072,"character":22},"end":{"line":16072,"character":36}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16075,"character":20},"end":{"line":16075,"character":21}},"message":"\"t\"의 형식을 부분적으로 알 수 없습니다.\n  ‘t’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16075,"character":25},"end":{"line":16075,"character":39}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16076,"character":20},"end":{"line":16076,"character":23}},"message":"\"tid\"의 형식을 부분적으로 알 수 없습니다.\n  ‘tid’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16076,"character":26},"end":{"line":16076,"character":31}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16077,"character":20},"end":{"line":16077,"character":24}},"message":"\"name\"의 형식을 부분적으로 알 수 없습니다.\n  ‘name’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16077,"character":27},"end":{"line":16077,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16081,"character":61},"end":{"line":16081,"character":64}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16084,"character":54},"end":{"line":16084,"character":57}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16089,"character":58},"end":{"line":16089,"character":66}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16089,"character":76},"end":{"line":16089,"character":84}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16089,"character":85},"end":{"line":16089,"character":89}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16089,"character":95},"end":{"line":16089,"character":98}},"message":"Type `Any` is not allowed","severity":1,"code":"reportExplicitAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportExplicitAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16110,"character":28},"end":{"line":16110,"character":29}},"message":"Type of \"t\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16111,"character":31},"end":{"line":16111,"character":36}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16112,"character":39},"end":{"line":16112,"character":40}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16124,"character":28},"end":{"line":16124,"character":29}},"message":"Type of \"t\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16125,"character":31},"end":{"line":16125,"character":36}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16126,"character":39},"end":{"line":16126,"character":40}},"message":"Return type is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16145,"character":19},"end":{"line":16145,"character":27}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16217,"character":12},"end":{"line":16217,"character":31}},"message":"Type of \"group_topics_config\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16217,"character":33},"end":{"line":16217,"character":37}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16218,"character":16},"end":{"line":16218,"character":26}},"message":"\"chat_entry\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16219,"character":23},"end":{"line":16219,"character":37}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16219,"character":23},"end":{"line":16219,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16220,"character":24},"end":{"line":16220,"character":29}},"message":"\"topic\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16220,"character":33},"end":{"line":16220,"character":47}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16221,"character":24},"end":{"line":16221,"character":27}},"message":"\"tid\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16221,"character":30},"end":{"line":16221,"character":39}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16222,"character":51},"end":{"line":16222,"character":54}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16223,"character":28},"end":{"line":16223,"character":38}},"message":"\"chat_topic\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16223,"character":41},"end":{"line":16223,"character":50}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16224,"character":28},"end":{"line":16224,"character":39}},"message":"\"topic_skill\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16224,"character":42},"end":{"line":16224,"character":51}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16252,"character":23},"end":{"line":16252,"character":33}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"build_source\" 함수의 \"chat_topic\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Any | Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16269,"character":33},"end":{"line":16269,"character":38}},"message":"Argument type is Any\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16271,"character":16},"end":{"line":16271,"character":29}},"message":"Type of \"reply_to_text\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16286,"character":40},"end":{"line":16286,"character":62}},"message":"\"lookup\"의 형식을 부분적으로 알 수 없습니다.\n  ‘lookup’의 유형이 ‘(chat_id: Unknown, message_id: Unknown) -> (str | None)’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16293,"character":43},"end":{"line":16293,"character":65}},"message":"\"resolve_channel_prompt\"의 형식을 부분적으로 알 수 없습니다.\n  ‘resolve_channel_prompt’의 유형이 ‘(config_extra: dict[Unknown, Unknown], channel_id: str, parent_id: str | None = None) -> (str | None)’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16310,"character":23},"end":{"line":16310,"character":34}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"auto_skill\" 매개 변수에 해당합니다.\n  인수 형식이 \"Any | Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16323,"character":15},"end":{"line":16323,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16326,"character":18},"end":{"line":16326,"character":27}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16326,"character":18},"end":{"line":16326,"character":48}},"message":"\"set_message_reaction\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16344,"character":15},"end":{"line":16344,"character":24}},"message":"\"_bot\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_bot’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16347,"character":18},"end":{"line":16347,"character":27}},"message":"\"_bot\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16347,"character":18},"end":{"line":16347,"character":48}},"message":"\"set_message_reaction\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16357,"character":14},"end":{"line":16357,"character":33}},"message":"“on_processing_start“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16364,"character":12},"end":{"line":16364,"character":71}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16364,"character":37},"end":{"line":16364,"character":44}},"message":"Argument type is Any\n  인수가 \"_set_reaction\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16364,"character":46},"end":{"line":16364,"character":56}},"message":"Argument type is Any\n  인수가 \"_set_reaction\" 함수의 \"message_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16366,"character":14},"end":{"line":16366,"character":36}},"message":"“on_processing_complete“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다.","severity":1,"code":"reportImplicitOverride","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitOverride"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16386,"character":12},"end":{"line":16386,"character":60}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16386,"character":40},"end":{"line":16386,"character":47}},"message":"Argument type is Any\n  인수가 \"_clear_reactions\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16386,"character":49},"end":{"line":16386,"character":59}},"message":"Argument type is Any\n  인수가 \"_clear_reactions\" 함수의 \"message_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16388,"character":12},"end":{"line":16392,"character":13}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16389,"character":16},"end":{"line":16389,"character":23}},"message":"Argument type is Any\n  인수가 \"_set_reaction\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py","diagnostic":{"range":{"start":{"line":16390,"character":16},"end":{"line":16390,"character":26}},"message":"Argument type is Any\n  인수가 \"_set_reaction\" 함수의 \"message_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}}],"totalDiagnostics":3603,"truncated":true},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"0d0625f6","parentId":"c6e75415","timestamp":"2026-09-01T07:17:39.604Z","message":{"role":"toolResult","toolCallId":"call_pdUnb7MWCdyl7zzYaAtxk7Qj|fc_046f5546d6e20d23016a967c0c486087d08bd45f4806e09bf9","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/physique_inline_card.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"d01fc947","parentId":"0d0625f6","timestamp":"2026-09-01T07:17:39.604Z","message":{"role":"toolResult","toolCallId":"call_v7cd6sYDmqRFcNDAeCrQy2J5|fc_046f5546d6e20d23016a967c0c486487d084e5cdc9b50acd61","toolName":"lsp_diagnostics","content":[{"type":"text","text":"Found 675 diagnostics (showing first 200):\nerror[basedpyright] (reportDeprecated) at 34:19: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 34:25: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportPrivateUsage) at 43:43: \"_expand_env_vars\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.\nerror[basedpyright] (reportUnknownVariableType) at 43:43: \"_expand_env_vars\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_expand_env_vars’의 유형이 ‘(obj: Unknown) -> (str | dict[Unknown, str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Unknown] | Unknown] | list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Unknown] | list[Unknown] | Unknown] | Unknown)’입니다.\nerror[basedpyright] (reportUnknownParameterType) at 49:41: 매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 49:46: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownVariableType) at 56:4: \"job_name\"의 형식을 부분적으로 알 수 없습니다.\n  ‘job_name’의 유형이 ‘Unknown | Literal['cron job']’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 56:15: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 56:34: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownParameterType) at 115:36: 매개 변수 \"cfg\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 115:41: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownVariableType) at 129:4: \"agent_cfg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘agent_cfg’의 유형이 ‘Unknown | dict[Unknown, Unknown]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 129:16: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 130:4: \"user_disabled\"의 형식을 부분적으로 알 수 없습니다.\n  ‘user_disabled’의 유형이 ‘Unknown | list[Unknown]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 130:20: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 131:8: \"name\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 132:19: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownParameterType) at 138:35: 매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 138:40: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownParameterType) at 138:46: 매개 변수 \"cfg\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 138:51: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownVariableType) at 155:4: \"per_job\"의 형식을 부분적으로 알 수 없습니다.\n  ‘per_job’의 유형이 ‘Unknown | None’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 155:14: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 157:15: 반환 유형을 알 수 없습니다.\nerror[basedpyright] (reportPrivateUsage) at 159:44: \"_get_platform_tools\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.\nerror[basedpyright] (reportUnknownVariableType) at 159:44: \"_get_platform_tools\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_get_platform_tools’의 유형이 ‘(config: dict[Unknown, Unknown], platform: str, *, include_default_mcp_servers: bool = True) -> Set[str]’입니다.\nerror[basedpyright] (reportDeprecated) at 218:16: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 219:28: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportUnknownVariableType) at 220:0: \"_running_job_ids\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_running_job_ids’의 유형이 ‘set[Unknown]’입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 220:18: ‘set’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportDeprecated) at 227:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 230:36: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportUnusedCallResult) at 273:0: 호출 식의 결과가 ‘() -> None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportUnknownParameterType) at 292:4: 반환 형식 \"dict[Unknown, Unknown] | None\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 292:20: 매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 292:25: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportDeprecated) at 292:34: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 292:43: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownVariableType) at 304:4: \"origin\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin’의 유형이 ‘Unknown | None’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 304:13: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 307:4: \"platform\"의 형식을 부분적으로 알 수 없습니다.\n  ‘platform’의 유형이 ‘Unknown | None’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 307:15: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 308:4: \"chat_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_id’의 유형이 ‘Unknown | None’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 308:14: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 310:15: 반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 314:32: 매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 314:37: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownVariableType) at 323:4: \"origin\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin’의 유형이 ‘Unknown | None’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 323:13: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 329:8: \"value\"의 형식을 부분적으로 알 수 없습니다.\n  ‘value’의 유형이 ‘Unknown | None’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 329:16: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 332:19: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 334:12: \"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 335:26: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"join\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.\nerror[basedpyright] (reportDeprecated) at 396:54: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportUnknownParameterType) at 440:4: 반환 형식 \"list[dict[Unknown, Unknown]]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportMissingTypeArgument) at 440:36: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownVariableType) at 454:4: \"targets\"의 형식을 부분적으로 알 수 없습니다.\n  ‘targets’의 유형이 ‘list[dict[Unknown, Unknown]]’입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 454:18: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownVariableType) at 462:8: \"connected\"의 형식을 부분적으로 알 수 없습니다.\n  ‘connected’의 유형이 ‘set[Unknown]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 470:8: \"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: dict[Unknown, Unknown], /) -> None’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 478:11: 반환 형식 \"list[dict[Unknown, Unknown]]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 481:4: 반환 형식 \"dict[Unknown, Unknown] | None\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 481:36: 매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 481:41: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportDeprecated) at 481:70: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 481:79: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownVariableType) at 484:4: \"origin\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 491:19: 반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 493:31: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 494:29: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 503:20: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 503:20: 인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 503:36: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 503:36: 인수 형식을 알 수 없습니다.\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownVariableType) at 506:23: 반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportPrivateUsage) at 517:44: \"_parse_target_ref\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.\nerror[basedpyright] (reportArgumentType) at 528:58: \"str | Any | None\" 형식의 인수를 \"resolve_channel_name\" 함수에서 \"str\" 형식의 \"name\" 매개 변수에 할당할 수 없습니다.\n  형식 \"str | Any | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 540:15: 반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 547:18: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 548:15: 반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 550:27: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 551:25: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 560:11: 반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 567:29: 매개 변수 \"deliver\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 567:29: ‘deliver’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 582:21: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownVariableType) at 582:36: \"p\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 582:56: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 584:15: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportDeprecated) at 594:41: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.\nerror[basedpyright] (reportDeprecated) at 605:14: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.\nerror[basedpyright] (reportUnknownParameterType) at 612:4: 반환 형식 \"List[dict[Unknown, Unknown]]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 612:30: 매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 612:35: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportDeprecated) at 612:44: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 612:49: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownMemberType) at 622:39: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 622:39: 인수 형식을 알 수 없습니다.\n  인수가 \"_normalize_deliver_value\" 함수의 \"deliver\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownVariableType) at 624:15: 반환 형식 \"list[dict[Unknown, Unknown]]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportDeprecated) at 629:11: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.\nerror[basedpyright] (reportUnknownVariableType) at 633:4: \"seen\"의 형식을 부분적으로 알 수 없습니다.\n  ‘seen’의 유형이 ‘set[Unknown]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 636:8: \"target\"의 형식을 부분적으로 알 수 없습니다.\n  ‘target’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 638:12: \"key\"의 형식을 부분적으로 알 수 없습니다.\n  ‘key’의 유형이 ‘tuple[Unknown, str, Unknown | None]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 638:19: \"lower\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 638:51: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 638:71: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 640:16: \"add\"의 형식을 부분적으로 알 수 없습니다.\n  ‘add’의 유형이 ‘(element: Unknown, /) -> None’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 641:16: \"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 642:11: 반환 형식 \"list[Unknown]\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 645:4: 반환 형식 \"dict[Unknown, Unknown] | None\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 645:29: 매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 645:34: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportDeprecated) at 645:43: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportMissingTypeArgument) at 645:52: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownVariableType) at 647:4: \"targets\"의 형식을 부분적으로 알 수 없습니다.\n  ‘targets’의 유형이 ‘List[dict[Unknown, Unknown]]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 648:11: 반환 형식 \"dict[Unknown, Unknown] | None\"을(를) 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 658:4: 매개 변수 \"adapter\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 658:4: ‘adapter’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 660:4: 매개 변수 \"media_files\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"list[Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 660:17: ‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownParameterType) at 661:4: 매개 변수 \"metadata\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown] | None\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 661:14: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownParameterType) at 662:4: 매개 변수 \"loop\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 662:4: ‘loop’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 663:4: 매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 663:9: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownParameterType) at 664:4: 매개 변수 \"platform\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.\nerror[basedpyright] (reportMissingParameterType) at 664:4: ‘platform’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 674:60: \"should_send_media_as_audio\"의 형식을 부분적으로 알 수 없습니다.\n  ‘should_send_media_as_audio’의 유형이 ‘(platform: Unknown, ext: str, is_voice: bool = False) -> bool’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 676:18: \"filter_media_delivery_paths\"의 형식을 부분적으로 알 수 없습니다.\n  ‘filter_media_delivery_paths’의 유형이 ‘(media_files: Unknown) -> List[Tuple[str, bool]]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 678:8: \"media_path\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 678:20: \"_is_voice\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 680:23: 인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownVariableType) at 681:12: \"route_platform\"의 형식을 부분적으로 알 수 없습니다.\n  ‘route_platform’의 유형이 ‘Unknown | Any | None’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 681:75: 인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 682:72: 인수 형식을 알 수 없습니다.\n  인수가 \"should_send_media_as_audio\" 함수의 \"is_voice\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownVariableType) at 683:16: \"coro\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 683:23: \"send_voice\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 685:16: \"coro\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 685:23: \"send_video\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 687:16: \"coro\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 687:23: \"send_image_file\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 689:16: \"coro\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 689:23: \"send_document\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 691:42: \"safe_schedule_threadsafe\"의 형식을 부분적으로 알 수 없습니다.\n  ‘safe_schedule_threadsafe’의 유형이 ‘(coro: Coroutine[Any, Any, Any], loop: AbstractEventLoop | None, *, logger: Logger | None = None, log_message: str = \"Failed to schedule coroutine on \", log_level: int = logging.DEBUG) -> (Future[Unknown] | None)’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 692:12: \"future\"의 형식을 부분적으로 알 수 없습니다.\n  ‘future’의 유형이 ‘Future[Unknown] | None’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 692:46: 인수 형식을 알 수 없습니다.\n  인수가 \"safe_schedule_threadsafe\" 함수의 \"coro\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 692:52: 인수 형식을 알 수 없습니다.\n  인수가 \"safe_schedule_threadsafe\" 함수의 \"loop\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 696:20: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 696:20: 인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 696:40: 인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownVariableType) at 700:16: \"result\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 702:16: 호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportUnknownArgumentType) at 704:38: 인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 707:20: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 707:20: 인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 707:40: 인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 707:60: 인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 710:68: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 710:68: 인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 710:88: 인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownParameterType) at 713:20: 매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportMissingTypeArgument) at 713:25: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\nerror[basedpyright] (reportUnknownParameterType) at 713:45: 매개 변수 \"adapters\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.\nerror[basedpyright] (reportMissingParameterType) at 713:45: ‘adapters’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 713:60: 매개 변수 \"loop\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.\nerror[basedpyright] (reportMissingParameterType) at 713:60: ‘loop’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportDeprecated) at 713:74: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\nerror[basedpyright] (reportUnknownVariableType) at 724:4: \"targets\"의 형식을 부분적으로 알 수 없습니다.\n  ‘targets’의 유형이 ‘List[dict[Unknown, Unknown]]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 726:11: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 727:61: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 728:43: 인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportPrivateUsage) at 732:40: \"_send_to_platform\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.\nerror[basedpyright] (reportUnknownVariableType) at 732:40: \"_send_to_platform\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_to_platform’의 유형이 ‘(platform: Unknown, pconfig: Unknown, chat_id: Unknown, message: Unknown, thread_id: Unknown | None = None, media_files: Unknown | None = None, force_document: bool = False) -> CoroutineType[Any, Any, Unknown]’입니다.\nerror[basedpyright] (reportAny) at 741:8: Type of \"wrap_response\" is Any\nerror[basedpyright] (reportAny) at 741:24: Type of \"get\" is Any\nerror[basedpyright] (reportUnknownVariableType) at 746:8: \"task_name\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 746:20: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 746:36: 인수 형식을 알 수 없습니다.\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownVariableType) at 747:8: \"job_id\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 747:17: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 761:18: \"filter_media_delivery_paths\"의 형식을 부분적으로 알 수 없습니다.\n  ‘filter_media_delivery_paths’의 유형이 ‘(media_files: Unknown) -> List[Tuple[str, bool]]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 767:37: 인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownVariableType) at 772:8: \"target\"의 형식을 부분적으로 알 수 없습니다.\n  ‘target’의 유형이 ‘dict[Unknown, Unknown]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 773:8: \"platform_name\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 774:8: \"chat_id\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 775:8: \"thread_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘thread_id’의 유형이 ‘Unknown | None’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 775:20: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 778:8: \"origin\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin’의 유형이 ‘dict[Unknown, Unknown]’입니다.\nerror[basedpyright] (reportUnknownVariableType) at 779:8: \"origin_thread\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin_thread’의 유형이 ‘Unknown | None’입니다.\nerror[basedpyright] (reportUnknownMemberType) at 779:24: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportImplicitStringConcatenation) at 782:16: 암시적 문자열 연결이 허용되지 않습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 784:16: 인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 784:27: 인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 784:42: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 784:42: 인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 784:71: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportUnknownArgumentType) at 789:16: 인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownArgumentType) at 789:27: 인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다."}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","severity":"all","mode":"file","diagnostics":[{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":33,"character":19},"end":{"line":33,"character":23}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":33,"character":25},"end":{"line":33,"character":33}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":42,"character":43},"end":{"line":42,"character":59}},"message":"\"_expand_env_vars\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":42,"character":43},"end":{"line":42,"character":59}},"message":"\"_expand_env_vars\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_expand_env_vars’의 유형이 ‘(obj: Unknown) -> (str | dict[Unknown, str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Unknown] | Unknown] | list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Unknown] | list[Unknown] | Unknown] | Unknown)’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":48,"character":41},"end":{"line":48,"character":44}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":48,"character":46},"end":{"line":48,"character":50}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":55,"character":4},"end":{"line":55,"character":12}},"message":"\"job_name\"의 형식을 부분적으로 알 수 없습니다.\n  ‘job_name’의 유형이 ‘Unknown | Literal['cron job']’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":55,"character":15},"end":{"line":55,"character":22}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":55,"character":34},"end":{"line":55,"character":41}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":114,"character":36},"end":{"line":114,"character":39}},"message":"매개 변수 \"cfg\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":114,"character":41},"end":{"line":114,"character":45}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":128,"character":4},"end":{"line":128,"character":13}},"message":"\"agent_cfg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘agent_cfg’의 유형이 ‘Unknown | dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":128,"character":16},"end":{"line":128,"character":31}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":129,"character":4},"end":{"line":129,"character":17}},"message":"\"user_disabled\"의 형식을 부분적으로 알 수 없습니다.\n  ‘user_disabled’의 유형이 ‘Unknown | list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":129,"character":20},"end":{"line":129,"character":33}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":130,"character":8},"end":{"line":130,"character":12}},"message":"\"name\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":131,"character":19},"end":{"line":131,"character":23}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":137,"character":35},"end":{"line":137,"character":38}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":137,"character":40},"end":{"line":137,"character":44}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":137,"character":46},"end":{"line":137,"character":49}},"message":"매개 변수 \"cfg\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":137,"character":51},"end":{"line":137,"character":55}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":154,"character":4},"end":{"line":154,"character":11}},"message":"\"per_job\"의 형식을 부분적으로 알 수 없습니다.\n  ‘per_job’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":154,"character":14},"end":{"line":154,"character":21}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":156,"character":15},"end":{"line":156,"character":22}},"message":"반환 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":158,"character":44},"end":{"line":158,"character":63}},"message":"\"_get_platform_tools\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":158,"character":44},"end":{"line":158,"character":63}},"message":"\"_get_platform_tools\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_get_platform_tools’의 유형이 ‘(config: dict[Unknown, Unknown], platform: str, *, include_default_mcp_servers: bool = True) -> Set[str]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":217,"character":16},"end":{"line":217,"character":24}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":218,"character":28},"end":{"line":218,"character":36}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":219,"character":0},"end":{"line":219,"character":16}},"message":"\"_running_job_ids\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_running_job_ids’의 유형이 ‘set[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":219,"character":18},"end":{"line":219,"character":21}},"message":"‘set’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":226,"character":18},"end":{"line":226,"character":26}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":229,"character":36},"end":{"line":229,"character":44}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":272,"character":0},"end":{"line":272,"character":40}},"message":"호출 식의 결과가 ‘() -> None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":291,"character":4},"end":{"line":291,"character":19}},"message":"반환 형식 \"dict[Unknown, Unknown] | None\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":291,"character":20},"end":{"line":291,"character":23}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":291,"character":25},"end":{"line":291,"character":29}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":291,"character":34},"end":{"line":291,"character":42}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":291,"character":43},"end":{"line":291,"character":47}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":303,"character":4},"end":{"line":303,"character":10}},"message":"\"origin\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":303,"character":13},"end":{"line":303,"character":20}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":306,"character":4},"end":{"line":306,"character":12}},"message":"\"platform\"의 형식을 부분적으로 알 수 없습니다.\n  ‘platform’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":306,"character":15},"end":{"line":306,"character":25}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":307,"character":4},"end":{"line":307,"character":11}},"message":"\"chat_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘chat_id’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":307,"character":14},"end":{"line":307,"character":24}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":309,"character":15},"end":{"line":309,"character":21}},"message":"반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":313,"character":32},"end":{"line":313,"character":35}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":313,"character":37},"end":{"line":313,"character":41}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":322,"character":4},"end":{"line":322,"character":10}},"message":"\"origin\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":322,"character":13},"end":{"line":322,"character":20}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":328,"character":8},"end":{"line":328,"character":13}},"message":"\"value\"의 형식을 부분적으로 알 수 없습니다.\n  ‘value’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":328,"character":16},"end":{"line":328,"character":26}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":331,"character":19},"end":{"line":331,"character":24}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":333,"character":12},"end":{"line":333,"character":25}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":334,"character":26},"end":{"line":334,"character":32}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"join\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":395,"character":54},"end":{"line":395,"character":62}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":439,"character":4},"end":{"line":439,"character":25}},"message":"반환 형식 \"list[dict[Unknown, Unknown]]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":439,"character":36},"end":{"line":439,"character":40}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":453,"character":4},"end":{"line":453,"character":11}},"message":"\"targets\"의 형식을 부분적으로 알 수 없습니다.\n  ‘targets’의 유형이 ‘list[dict[Unknown, Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":453,"character":18},"end":{"line":453,"character":22}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":461,"character":8},"end":{"line":461,"character":17}},"message":"\"connected\"의 형식을 부분적으로 알 수 없습니다.\n  ‘connected’의 유형이 ‘set[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":469,"character":8},"end":{"line":469,"character":22}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: dict[Unknown, Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":477,"character":11},"end":{"line":477,"character":18}},"message":"반환 형식 \"list[dict[Unknown, Unknown]]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":480,"character":4},"end":{"line":480,"character":35}},"message":"반환 형식 \"dict[Unknown, Unknown] | None\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":480,"character":36},"end":{"line":480,"character":39}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":480,"character":41},"end":{"line":480,"character":45}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":480,"character":70},"end":{"line":480,"character":78}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":480,"character":79},"end":{"line":480,"character":83}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":483,"character":4},"end":{"line":483,"character":10}},"message":"\"origin\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":490,"character":19},"end":{"line":494,"character":13}},"message":"반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":492,"character":31},"end":{"line":492,"character":48}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":493,"character":29},"end":{"line":493,"character":39}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":502,"character":20},"end":{"line":502,"character":27}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":502,"character":20},"end":{"line":502,"character":55}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":502,"character":36},"end":{"line":502,"character":43}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":502,"character":36},"end":{"line":502,"character":54}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":505,"character":23},"end":{"line":509,"character":17}},"message":"반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":516,"character":44},"end":{"line":516,"character":61}},"message":"\"_parse_target_ref\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":527,"character":58},"end":{"line":527,"character":65}},"message":"\"str | Any | None\" 형식의 인수를 \"resolve_channel_name\" 함수에서 \"str\" 형식의 \"name\" 매개 변수에 할당할 수 없습니다.\n  형식 \"str | Any | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":539,"character":15},"end":{"line":543,"character":9}},"message":"반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":546,"character":18},"end":{"line":546,"character":28}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":547,"character":15},"end":{"line":551,"character":9}},"message":"반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":549,"character":27},"end":{"line":549,"character":44}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":550,"character":25},"end":{"line":550,"character":35}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":559,"character":11},"end":{"line":563,"character":5}},"message":"반환 형식 \"dict[Unknown, Unknown]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":566,"character":29},"end":{"line":566,"character":36}},"message":"매개 변수 \"deliver\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":566,"character":29},"end":{"line":566,"character":36}},"message":"‘deliver’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":581,"character":21},"end":{"line":581,"character":22}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":581,"character":36},"end":{"line":581,"character":37}},"message":"\"p\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":581,"character":56},"end":{"line":581,"character":57}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":583,"character":15},"end":{"line":583,"character":22}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":593,"character":41},"end":{"line":593,"character":45}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":604,"character":14},"end":{"line":604,"character":18}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":611,"character":4},"end":{"line":611,"character":29}},"message":"반환 형식 \"List[dict[Unknown, Unknown]]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":611,"character":30},"end":{"line":611,"character":33}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":611,"character":35},"end":{"line":611,"character":39}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":611,"character":44},"end":{"line":611,"character":48}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":611,"character":49},"end":{"line":611,"character":53}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":621,"character":39},"end":{"line":621,"character":46}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":621,"character":39},"end":{"line":621,"character":66}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_normalize_deliver_value\" 함수의 \"deliver\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":623,"character":15},"end":{"line":623,"character":17}},"message":"반환 형식 \"list[dict[Unknown, Unknown]]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":628,"character":11},"end":{"line":628,"character":15}},"message":"이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":632,"character":4},"end":{"line":632,"character":8}},"message":"\"seen\"의 형식을 부분적으로 알 수 없습니다.\n  ‘seen’의 유형이 ‘set[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":635,"character":8},"end":{"line":635,"character":14}},"message":"\"target\"의 형식을 부분적으로 알 수 없습니다.\n  ‘target’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":637,"character":12},"end":{"line":637,"character":15}},"message":"\"key\"의 형식을 부분적으로 알 수 없습니다.\n  ‘key’의 유형이 ‘tuple[Unknown, str, Unknown | None]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":637,"character":19},"end":{"line":637,"character":43}},"message":"\"lower\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":637,"character":51},"end":{"line":637,"character":68}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":637,"character":71},"end":{"line":637,"character":81}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":639,"character":16},"end":{"line":639,"character":24}},"message":"\"add\"의 형식을 부분적으로 알 수 없습니다.\n  ‘add’의 유형이 ‘(element: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":640,"character":16},"end":{"line":640,"character":30}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":641,"character":11},"end":{"line":641,"character":18}},"message":"반환 형식 \"list[Unknown]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":644,"character":4},"end":{"line":644,"character":28}},"message":"반환 형식 \"dict[Unknown, Unknown] | None\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":644,"character":29},"end":{"line":644,"character":32}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":644,"character":34},"end":{"line":644,"character":38}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":644,"character":43},"end":{"line":644,"character":51}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":644,"character":52},"end":{"line":644,"character":56}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":646,"character":4},"end":{"line":646,"character":11}},"message":"\"targets\"의 형식을 부분적으로 알 수 없습니다.\n  ‘targets’의 유형이 ‘List[dict[Unknown, Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":647,"character":11},"end":{"line":647,"character":42}},"message":"반환 형식 \"dict[Unknown, Unknown] | None\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":657,"character":4},"end":{"line":657,"character":11}},"message":"매개 변수 \"adapter\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":657,"character":4},"end":{"line":657,"character":11}},"message":"‘adapter’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":659,"character":4},"end":{"line":659,"character":15}},"message":"매개 변수 \"media_files\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":659,"character":17},"end":{"line":659,"character":21}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":660,"character":4},"end":{"line":660,"character":12}},"message":"매개 변수 \"metadata\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown] | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":660,"character":14},"end":{"line":660,"character":18}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":661,"character":4},"end":{"line":661,"character":8}},"message":"매개 변수 \"loop\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":661,"character":4},"end":{"line":661,"character":8}},"message":"‘loop’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":662,"character":4},"end":{"line":662,"character":7}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":662,"character":9},"end":{"line":662,"character":13}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":663,"character":4},"end":{"line":663,"character":12}},"message":"매개 변수 \"platform\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":663,"character":4},"end":{"line":663,"character":12}},"message":"‘platform’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":673,"character":60},"end":{"line":673,"character":86}},"message":"\"should_send_media_as_audio\"의 형식을 부분적으로 알 수 없습니다.\n  ‘should_send_media_as_audio’의 유형이 ‘(platform: Unknown, ext: str, is_voice: bool = False) -> bool’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":675,"character":18},"end":{"line":675,"character":65}},"message":"\"filter_media_delivery_paths\"의 형식을 부분적으로 알 수 없습니다.\n  ‘filter_media_delivery_paths’의 유형이 ‘(media_files: Unknown) -> List[Tuple[str, bool]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":677,"character":8},"end":{"line":677,"character":18}},"message":"\"media_path\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":677,"character":20},"end":{"line":677,"character":29}},"message":"\"_is_voice\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":679,"character":23},"end":{"line":679,"character":33}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":680,"character":12},"end":{"line":680,"character":26}},"message":"\"route_platform\"의 형식을 부분적으로 알 수 없습니다.\n  ‘route_platform’의 유형이 ‘Unknown | Any | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":680,"character":75},"end":{"line":680,"character":82}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":681,"character":72},"end":{"line":681,"character":81}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"should_send_media_as_audio\" 함수의 \"is_voice\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":682,"character":16},"end":{"line":682,"character":20}},"message":"\"coro\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":682,"character":23},"end":{"line":682,"character":41}},"message":"\"send_voice\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":684,"character":16},"end":{"line":684,"character":20}},"message":"\"coro\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":684,"character":23},"end":{"line":684,"character":41}},"message":"\"send_video\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":686,"character":16},"end":{"line":686,"character":20}},"message":"\"coro\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":686,"character":23},"end":{"line":686,"character":46}},"message":"\"send_image_file\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":688,"character":16},"end":{"line":688,"character":20}},"message":"\"coro\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":688,"character":23},"end":{"line":688,"character":44}},"message":"\"send_document\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":690,"character":42},"end":{"line":690,"character":66}},"message":"\"safe_schedule_threadsafe\"의 형식을 부분적으로 알 수 없습니다.\n  ‘safe_schedule_threadsafe’의 유형이 ‘(coro: Coroutine[Any, Any, Any], loop: AbstractEventLoop | None, *, logger: Logger | None = None, log_message: str = \"Failed to schedule coroutine on \", log_level: int = logging.DEBUG) -> (Future[Unknown] | None)’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":691,"character":12},"end":{"line":691,"character":18}},"message":"\"future\"의 형식을 부분적으로 알 수 없습니다.\n  ‘future’의 유형이 ‘Future[Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":691,"character":46},"end":{"line":691,"character":50}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"safe_schedule_threadsafe\" 함수의 \"coro\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":691,"character":52},"end":{"line":691,"character":56}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"safe_schedule_threadsafe\" 함수의 \"loop\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":695,"character":20},"end":{"line":695,"character":27}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":695,"character":20},"end":{"line":695,"character":38}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":695,"character":40},"end":{"line":695,"character":50}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":699,"character":16},"end":{"line":699,"character":22}},"message":"\"result\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":701,"character":16},"end":{"line":701,"character":31}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":703,"character":38},"end":{"line":703,"character":44}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":706,"character":20},"end":{"line":706,"character":27}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":706,"character":20},"end":{"line":706,"character":38}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":706,"character":40},"end":{"line":706,"character":50}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":706,"character":60},"end":{"line":706,"character":66}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":709,"character":68},"end":{"line":709,"character":75}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":709,"character":68},"end":{"line":709,"character":86}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":709,"character":88},"end":{"line":709,"character":98}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":712,"character":20},"end":{"line":712,"character":23}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":712,"character":25},"end":{"line":712,"character":29}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":712,"character":45},"end":{"line":712,"character":53}},"message":"매개 변수 \"adapters\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":712,"character":45},"end":{"line":712,"character":53}},"message":"‘adapters’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":712,"character":60},"end":{"line":712,"character":64}},"message":"매개 변수 \"loop\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":712,"character":60},"end":{"line":712,"character":64}},"message":"‘loop’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":712,"character":74},"end":{"line":712,"character":82}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":723,"character":4},"end":{"line":723,"character":11}},"message":"\"targets\"의 형식을 부분적으로 알 수 없습니다.\n  ‘targets’의 유형이 ‘List[dict[Unknown, Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":725,"character":11},"end":{"line":725,"character":18}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":726,"character":61},"end":{"line":726,"character":68}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":727,"character":43},"end":{"line":727,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":731,"character":40},"end":{"line":731,"character":57}},"message":"\"_send_to_platform\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":731,"character":40},"end":{"line":731,"character":57}},"message":"\"_send_to_platform\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_send_to_platform’의 유형이 ‘(platform: Unknown, pconfig: Unknown, chat_id: Unknown, message: Unknown, thread_id: Unknown | None = None, media_files: Unknown | None = None, force_document: bool = False) -> CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":740,"character":8},"end":{"line":740,"character":21}},"message":"Type of \"wrap_response\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":740,"character":24},"end":{"line":740,"character":52}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":745,"character":8},"end":{"line":745,"character":17}},"message":"\"task_name\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":745,"character":20},"end":{"line":745,"character":27}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":745,"character":36},"end":{"line":745,"character":45}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":746,"character":8},"end":{"line":746,"character":14}},"message":"\"job_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":746,"character":17},"end":{"line":746,"character":24}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":760,"character":18},"end":{"line":760,"character":65}},"message":"\"filter_media_delivery_paths\"의 형식을 부분적으로 알 수 없습니다.\n  ‘filter_media_delivery_paths’의 유형이 ‘(media_files: Unknown) -> List[Tuple[str, bool]]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":766,"character":37},"end":{"line":766,"character":46}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":771,"character":8},"end":{"line":771,"character":14}},"message":"\"target\"의 형식을 부분적으로 알 수 없습니다.\n  ‘target’의 유형이 ‘dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":772,"character":8},"end":{"line":772,"character":21}},"message":"\"platform_name\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":773,"character":8},"end":{"line":773,"character":15}},"message":"\"chat_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":774,"character":8},"end":{"line":774,"character":17}},"message":"\"thread_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘thread_id’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":774,"character":20},"end":{"line":774,"character":30}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":777,"character":8},"end":{"line":777,"character":14}},"message":"\"origin\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin’의 유형이 ‘dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":778,"character":8},"end":{"line":778,"character":21}},"message":"\"origin_thread\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin_thread’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":778,"character":24},"end":{"line":778,"character":34}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":781,"character":16},"end":{"line":782,"character":41}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":783,"character":16},"end":{"line":783,"character":25}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":783,"character":27},"end":{"line":783,"character":40}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":783,"character":42},"end":{"line":783,"character":49}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":783,"character":42},"end":{"line":783,"character":69}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":783,"character":71},"end":{"line":783,"character":77}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":788,"character":16},"end":{"line":788,"character":25}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":788,"character":27},"end":{"line":788,"character":40}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":788,"character":42},"end":{"line":788,"character":49}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":788,"character":51},"end":{"line":788,"character":60}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":794,"character":32},"end":{"line":794,"character":51}},"message":"\"lower\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":797,"character":43},"end":{"line":797,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":798,"character":12},"end":{"line":798,"character":34}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":804,"character":43},"end":{"line":804,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":805,"character":12},"end":{"line":805,"character":34}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":810,"character":8},"end":{"line":810,"character":23}},"message":"\"runtime_adapter\"의 형식을 부분적으로 알 수 없습니다.\n  ‘runtime_adapter’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":810,"character":26},"end":{"line":810,"character":46}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":813,"character":72},"end":{"line":813,"character":76}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":814,"character":12},"end":{"line":814,"character":25}},"message":"\"send_metadata\"의 형식을 부분적으로 알 수 없습니다.\n  ‘send_metadata’의 유형이 ‘dict[str, Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":820,"character":50},"end":{"line":820,"character":74}},"message":"\"safe_schedule_threadsafe\"의 형식을 부분적으로 알 수 없습니다.\n  ‘safe_schedule_threadsafe’의 유형이 ‘(coro: Coroutine[Any, Any, Any], loop: AbstractEventLoop | None, *, logger: Logger | None = None, log_message: str = \"Failed to schedule coroutine on \", log_level: int = logging.DEBUG) -> (Future[Unknown] | None)’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":821,"character":20},"end":{"line":821,"character":26}},"message":"\"future\"의 형식을 부분적으로 알 수 없습니다.\n  ‘future’의 유형이 ‘Future[Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":822,"character":24},"end":{"line":822,"character":44}},"message":"\"send\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":822,"character":24},"end":{"line":822,"character":91}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"safe_schedule_threadsafe\" 함수의 \"coro\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":823,"character":24},"end":{"line":823,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"safe_schedule_threadsafe\" 함수의 \"loop\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":827,"character":24},"end":{"line":827,"character":44}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":830,"character":28},"end":{"line":830,"character":39}},"message":"\"send_result\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":832,"character":28},"end":{"line":832,"character":43}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":833,"character":28},"end":{"line":833,"character":48}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":836,"character":28},"end":{"line":836,"character":48}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":839,"character":62},"end":{"line":839,"character":73}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":840,"character":42},"end":{"line":840,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":844,"character":32},"end":{"line":844,"character":41}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":846,"character":28},"end":{"line":846,"character":48}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":851,"character":40},"end":{"line":851,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":852,"character":32},"end":{"line":852,"character":56}},"message":"\"raw_response\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":852,"character":32},"end":{"line":852,"character":60}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":854,"character":28},"end":{"line":854,"character":47}},"message":"\"requested_thread_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":854,"character":50},"end":{"line":854,"character":74}},"message":"\"raw_response\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":854,"character":50},"end":{"line":854,"character":78}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":859,"character":59},"end":{"line":859,"character":68}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":860,"character":28},"end":{"line":860,"character":50}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":865,"character":24},"end":{"line":865,"character":39}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_media_via_adapter\" 함수의 \"adapter\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":866,"character":24},"end":{"line":866,"character":31}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_media_via_adapter\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":869,"character":24},"end":{"line":869,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_media_via_adapter\" 함수의 \"loop\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":875,"character":81},"end":{"line":875,"character":90}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":875,"character":92},"end":{"line":875,"character":105}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":875,"character":107},"end":{"line":875,"character":114}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":879,"character":46},"end":{"line":879,"character":49}},"message":"\"err\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":880,"character":20},"end":{"line":880,"character":40}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":883,"character":20},"end":{"line":883,"character":29}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":888,"character":12},"end":{"line":888,"character":16}},"message":"\"coro\"의 형식을 부분적으로 알 수 없습니다.\n  ‘coro’의 유형이 ‘CoroutineType[Any, Any, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":888,"character":56},"end":{"line":888,"character":63}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_to_platform\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":890,"character":16},"end":{"line":890,"character":22}},"message":"\"result\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":890,"character":37},"end":{"line":890,"character":41}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"run\" 함수의 \"main\" 매개 변수에 해당합니다.\n  인수 형식이 \"CoroutineType[Any, Any, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":898,"character":20},"end":{"line":898,"character":26}},"message":"\"future\"의 형식을 부분적으로 알 수 없습니다.\n  ‘future’의 유형이 ‘Future[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":898,"character":91},"end":{"line":898,"character":98}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_send_to_platform\" 함수의 \"chat_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":899,"character":20},"end":{"line":899,"character":26}},"message":"\"result\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":902,"character":45},"end":{"line":902,"character":54}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":903,"character":16},"end":{"line":903,"character":36}},"message":"\"extend\"의 형식을 부분적으로 알 수 없습니다.\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":904,"character":16},"end":{"line":904,"character":38}},"message":"\"extend\"의 형식을 부분적으로 알 수 없습니다.\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":907,"character":26},"end":{"line":907,"character":36}},"message":"\"get\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":909,"character":45},"end":{"line":909,"character":54}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":910,"character":16},"end":{"line":910,"character":36}},"message":"\"extend\"의 형식을 부분적으로 알 수 없습니다.\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":911,"character":16},"end":{"line":911,"character":38}},"message":"\"extend\"의 형식을 부분적으로 알 수 없습니다.\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":914,"character":56},"end":{"line":914,"character":65}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":914,"character":67},"end":{"line":914,"character":80}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":914,"character":82},"end":{"line":914,"character":89}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":917,"character":25},"end":{"line":917,"character":40}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"join\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":947,"character":8},"end":{"line":947,"character":16}},"message":"\"cron_cfg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘cron_cfg’의 유형이 ‘Any | dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":947,"character":42},"end":{"line":947,"character":63}},"message":"불필요한 isinstance 호출입니다. \"Dict[str, Any]\"은(는) 항상 \"dict[Unknown, Unknown]\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":948,"character":8},"end":{"line":948,"character":18}},"message":"\"configured\"의 형식을 부분적으로 알 수 없습니다.\n  ‘configured’의 유형이 ‘Unknown | Any | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":948,"character":21},"end":{"line":948,"character":33}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":950,"character":32},"end":{"line":950,"character":42}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1003,"character":8},"end":{"line":1003,"character":46}},"message":"호출 식의 결과가 ‘Path’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1042,"character":45},"end":{"line":1042,"character":69}},"message":"\"_sanitize_subprocess_env\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1042,"character":45},"end":{"line":1042,"character":69}},"message":"\"_sanitize_subprocess_env\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_sanitize_subprocess_env’의 유형이 ‘(base_env: dict[Unknown, Unknown] | None, extra_env: dict[Unknown, Unknown] | None = None) -> dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1045,"character":8},"end":{"line":1045,"character":14}},"message":"\"result\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1045,"character":17},"end":{"line":1053,"character":9}},"message":"제공된 인수와 일치하는 \"run\"에 대한 오버로드가 없습니다.","severity":1,"code":"reportCallIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportCallIssue"},"relatedInformation":[{"location":{"uri":"file:///home/cube/.local/share/uv/tools/basedpyright/lib/python3.12/site-packages/basedpyright/dist/typeshed-fallback/stdlib/subprocess.pyi","range":{"start":{"line":268,"character":8},"end":{"line":268,"character":11}}},"message":"오버로드 6이(가) 가장 가까운 일치 항목입니다."}]}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"StrOrBytesPath | None\" 형식의 \"executable\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int\"은 형식 \"StrOrBytesPath | None\"에 할당할 수 없습니다.\n    \"int\"은 \"str\"에 할당할 수 없습니다.\n    \"int\"은 \"bytes\"에 할당할 수 없습니다.\n    ‘int’은(는) ‘PathLike[str]’ 프로토콜과 호환되지 않습니다.\n      \"__fspath__\"이(가) 없습니다.\n    ‘int’은(는) ‘PathLike[bytes]’ 프로토콜과 호환되지 않습니다.\n      \"__fspath__\"이(가) 없습니다.\n    \"int\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"(() -> object) | None\" 형식의 \"preexec_fn\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int\"은 형식 \"(() -> object) | None\"에 할당할 수 없습니다.\n    형식 \"int\"은 형식 \"() -> object\"에 할당할 수 없습니다.\n    \"int\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"bool\" 형식의 \"close_fds\" 매개 변수에 할당할 수 없습니다.\n  \"int\"은 \"bool\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"bool\" 형식의 \"shell\" 매개 변수에 할당할 수 없습니다.\n  \"int\"은 \"bool\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"bool | None\" 형식의 \"universal_newlines\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int\"은 형식 \"bool | None\"에 할당할 수 없습니다.\n    \"int\"은 \"bool\"에 할당할 수 없습니다.\n    \"int\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"bool\" 형식의 \"restore_signals\" 매개 변수에 할당할 수 없습니다.\n  \"int\"은 \"bool\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"bool\" 형식의 \"start_new_session\" 매개 변수에 할당할 수 없습니다.\n  \"int\"은 \"bool\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"Collection[int]\" 형식의 \"pass_fds\" 매개 변수에 할당할 수 없습니다.\n  ‘int’은(는) ‘Collection[int]’ 프로토콜과 호환되지 않습니다.\n    \"__len__\"이(가) 없습니다.\n    \"__iter__\"이(가) 없습니다.\n    \"__contains__\"이(가) 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"bool\" 형식의 \"check\" 매개 변수에 할당할 수 없습니다.\n  \"int\"은 \"bool\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"str | None\" 형식의 \"encoding\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int\"은 형식 \"str | None\"에 할당할 수 없습니다.\n    \"int\"은 \"str\"에 할당할 수 없습니다.\n    \"int\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"str | None\" 형식의 \"errors\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int\"은 형식 \"str | None\"에 할당할 수 없습니다.\n    \"int\"은 \"str\"에 할당할 수 없습니다.\n    \"int\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"_InputString | None\" 형식의 \"input\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int\"은 형식 \"_InputString | None\"에 할당할 수 없습니다.\n    ‘int’은(는) ‘Buffer’ 프로토콜과 호환되지 않습니다.\n      \"__buffer__\"이(가) 없습니다.\n    \"int\"은 \"str\"에 할당할 수 없습니다.\n    \"int\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1052,"character":14},"end":{"line":1052,"character":26}},"message":"\"int\" 형식의 인수를 \"run\" 함수에서 \"Iterable[str | int] | None\" 형식의 \"extra_groups\" 매개 변수에 할당할 수 없습니다.\n  형식 \"int\"은 형식 \"Iterable[str | int] | None\"에 할당할 수 없습니다.\n    ‘int’은(는) ‘Iterable[str | int]’ 프로토콜과 호환되지 않습니다.\n      \"__iter__\"이(가) 없습니다.\n    \"int\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1054,"character":8},"end":{"line":1054,"character":14}},"message":"\"stdout\"의 형식을 부분적으로 알 수 없습니다.\n  ‘stdout’의 유형이 ‘LiteralString | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1054,"character":17},"end":{"line":1054,"character":44}},"message":"\"strip\"의 형식을 부분적으로 알 수 없습니다.\n  ‘strip’의 유형이 ‘Unknown | Overload[(chars: LiteralString | None = None, /) -> LiteralString, (chars: str | None = None, /) -> str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1054,"character":18},"end":{"line":1054,"character":31}},"message":"\"stdout\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1055,"character":8},"end":{"line":1055,"character":14}},"message":"\"stderr\"의 형식을 부분적으로 알 수 없습니다.\n  ‘stderr’의 유형이 ‘LiteralString | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1055,"character":17},"end":{"line":1055,"character":44}},"message":"\"strip\"의 형식을 부분적으로 알 수 없습니다.\n  ‘strip’의 유형이 ‘Unknown | Overload[(chars: LiteralString | None = None, /) -> LiteralString, (chars: str | None = None, /) -> str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1055,"character":18},"end":{"line":1055,"character":31}},"message":"\"stderr\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1060,"character":43},"end":{"line":1060,"character":49}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"redact_sensitive_text\" 함수의 \"text\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1061,"character":43},"end":{"line":1061,"character":49}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"redact_sensitive_text\" 함수의 \"text\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1065,"character":11},"end":{"line":1065,"character":28}},"message":"\"returncode\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1066,"character":48},"end":{"line":1066,"character":65}},"message":"\"returncode\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1073,"character":15},"end":{"line":1073,"character":27}},"message":"반환 형식 \"tuple[Literal[True], str | LiteralString | Unknown]\"을(를) 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1099,"character":8},"end":{"line":1099,"character":12}},"message":"Type of \"gate\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1104,"character":11},"end":{"line":1104,"character":19}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1107,"character":22},"end":{"line":1107,"character":25}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1107,"character":27},"end":{"line":1107,"character":31}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1107,"character":33},"end":{"line":1107,"character":46}},"message":"매개 변수 \"prerun_script\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"tuple[Unknown, ...] | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1107,"character":48},"end":{"line":1107,"character":56}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1107,"character":57},"end":{"line":1107,"character":62}},"message":"‘tuple’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1118,"character":22},"end":{"line":1118,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1118,"character":22},"end":{"line":1118,"character":45}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1120,"character":4},"end":{"line":1120,"character":10}},"message":"\"skills\"의 형식을 부분적으로 알 수 없습니다.\n  ‘skills’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1120,"character":13},"end":{"line":1120,"character":20}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1129,"character":4},"end":{"line":1129,"character":15}},"message":"\"script_path\"의 형식을 부분적으로 알 수 없습니다.\n  ‘script_path’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1129,"character":18},"end":{"line":1129,"character":25}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1132,"character":12},"end":{"line":1132,"character":19}},"message":"\"success\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1132,"character":21},"end":{"line":1132,"character":34}},"message":"\"script_output\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1134,"character":53},"end":{"line":1134,"character":64}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_run_job_script\" 함수의 \"script_path\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1147,"character":23},"end":{"line":1147,"character":27}},"message":"형식 \"None\"을 형식 \"str\"에 반환하도록 할당할 수 없습니다.\n  \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportReturnType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportReturnType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1158,"character":4},"end":{"line":1158,"character":16}},"message":"\"context_from\"의 형식을 부분적으로 알 수 없습니다.\n  ‘context_from’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1158,"character":19},"end":{"line":1158,"character":26}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1163,"character":12},"end":{"line":1163,"character":25}},"message":"\"source_job_id\"의 형식을 부분적으로 알 수 없습니다.\n  ‘source_job_id’의 유형이 ‘str | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1165,"character":72},"end":{"line":1165,"character":73}},"message":"\"c\"의 형식을 부분적으로 알 수 없습니다.\n  ‘c’의 유형이 ‘str | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1168,"character":20},"end":{"line":1168,"character":33}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1169,"character":20},"end":{"line":1169,"character":27}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1169,"character":20},"end":{"line":1169,"character":33}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1170,"character":20},"end":{"line":1170,"character":27}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1170,"character":20},"end":{"line":1170,"character":35}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1175,"character":16},"end":{"line":1175,"character":30}},"message":"\"job_output_dir\"의 형식을 부분적으로 알 수 없습니다.\n  ‘job_output_dir’의 유형이 ‘Path | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1176,"character":23},"end":{"line":1176,"character":44}},"message":"\"exists\"의 형식을 부분적으로 알 수 없습니다.\n  ‘exists’의 유형이 ‘((*, follow_symlinks: bool = True) -> bool) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1179,"character":20},"end":{"line":1179,"character":39}},"message":"\"glob\"의 형식을 부분적으로 알 수 없습니다.\n  ‘glob’의 유형이 ‘((pattern: str, *, case_sensitive: bool | None = None) -> Generator[Path, None, None]) | Unknown’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1179,"character":20},"end":{"line":1179,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"sorted\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"Generator[Path, None, None] | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1202,"character":85},"end":{"line":1202,"character":98}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1220,"character":8},"end":{"line":1220,"character":14}},"message":"\"legacy\"의 형식을 부분적으로 알 수 없습니다.\n  ‘legacy’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1220,"character":17},"end":{"line":1220,"character":24}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1221,"character":8},"end":{"line":1221,"character":14}},"message":"\"skills\"의 형식을 부분적으로 알 수 없습니다.\n  ‘skills’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1225,"character":23},"end":{"line":1225,"character":27}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1225,"character":41},"end":{"line":1225,"character":45}},"message":"\"name\"의 형식을 부분적으로 알 수 없습니다.\n  ‘name’의 유형이 ‘Unknown | str’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1225,"character":63},"end":{"line":1225,"character":67}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | str\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1251,"character":28},"end":{"line":1251,"character":35}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1251,"character":28},"end":{"line":1251,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1256,"character":20},"end":{"line":1256,"character":32}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1257,"character":16},"end":{"line":1257,"character":28}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1261,"character":16},"end":{"line":1261,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1261,"character":16},"end":{"line":1261,"character":46}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1261,"character":32},"end":{"line":1261,"character":39}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1261,"character":32},"end":{"line":1261,"character":45}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1268,"character":12},"end":{"line":1268,"character":18}},"message":"Type of \"loaded\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1270,"character":88},"end":{"line":1270,"character":95}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1270,"character":88},"end":{"line":1270,"character":118}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1270,"character":104},"end":{"line":1270,"character":111}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1270,"character":104},"end":{"line":1270,"character":117}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1273,"character":15},"end":{"line":1273,"character":25}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1274,"character":20},"end":{"line":1274,"character":30}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1275,"character":76},"end":{"line":1275,"character":83}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1275,"character":76},"end":{"line":1275,"character":106}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1275,"character":92},"end":{"line":1275,"character":99}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1275,"character":92},"end":{"line":1275,"character":105}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1285,"character":22},"end":{"line":1285,"character":32}},"message":"Type of \"get\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1287,"character":12},"end":{"line":1287,"character":24}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1288,"character":8},"end":{"line":1288,"character":20}},"message":"\"extend\"의 형식을 부분적으로 알 수 없습니다.\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1303,"character":8},"end":{"line":1303,"character":20}},"message":"\"insert\"의 형식을 부분적으로 알 수 없습니다.\n  ‘insert’의 유형이 ‘(index: SupportsIndex, object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1306,"character":8},"end":{"line":1306,"character":20}},"message":"\"extend\"의 형식을 부분적으로 알 수 없습니다.\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1307,"character":49},"end":{"line":1307,"character":54}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"join\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1312,"character":4},"end":{"line":1312,"character":7}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1312,"character":9},"end":{"line":1312,"character":13}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1316,"character":17},"end":{"line":1316,"character":25}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1353,"character":36},"end":{"line":1353,"character":53}},"message":"\"_scan_cron_prompt\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1353,"character":55},"end":{"line":1353,"character":81}},"message":"\"_scan_cron_skill_assembled\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1370,"character":8},"end":{"line":1370,"character":17}},"message":"\"job_label\"의 형식을 부분적으로 알 수 없습니다.\n  ‘job_label’의 유형이 ‘Unknown | Literal['<unknown>']’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1370,"character":20},"end":{"line":1370,"character":27}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1370,"character":39},"end":{"line":1370,"character":46}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1373,"character":12},"end":{"line":1373,"character":21}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['<unknown>']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1380,"character":12},"end":{"line":1380,"character":15}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1380,"character":17},"end":{"line":1380,"character":21}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1380,"character":48},"end":{"line":1380,"character":56}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1387,"character":4},"end":{"line":1387,"character":10}},"message":"\"job_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1388,"character":19},"end":{"line":1388,"character":26}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1388,"character":19},"end":{"line":1388,"character":79}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['cron job']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1388,"character":38},"end":{"line":1388,"character":45}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1408,"character":7},"end":{"line":1408,"character":14}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1409,"character":8},"end":{"line":1409,"character":19}},"message":"\"script_path\"의 형식을 부분적으로 알 수 없습니다.\n  ‘script_path’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1409,"character":22},"end":{"line":1409,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1412,"character":41},"end":{"line":1412,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1418,"character":8},"end":{"line":1418,"character":20}},"message":"\"_job_workdir\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_job_workdir’의 유형이 ‘LiteralString | Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1418,"character":23},"end":{"line":1418,"character":55}},"message":"\"strip\"의 형식을 부분적으로 알 수 없습니다.\n  ‘strip’의 유형이 ‘Unknown | Overload[(chars: LiteralString | None = None, /) -> LiteralString, (chars: str | None = None, /) -> str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1418,"character":24},"end":{"line":1418,"character":31}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1420,"character":33},"end":{"line":1420,"character":45}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1423,"character":25},"end":{"line":1423,"character":37}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"chdir\" 함수의 \"path\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1428,"character":41},"end":{"line":1428,"character":52}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_run_job_script\" 함수의 \"script_path\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1461,"character":74},"end":{"line":1461,"character":80}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1473,"character":74},"end":{"line":1473,"character":80}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1508,"character":73},"end":{"line":1508,"character":80}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1508,"character":73},"end":{"line":1508,"character":91}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1515,"character":4},"end":{"line":1515,"character":15}},"message":"\"script_path\"의 형식을 부분적으로 알 수 없습니다.\n  ‘script_path’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1515,"character":18},"end":{"line":1515,"character":25}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1517,"character":40},"end":{"line":1517,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"_run_job_script\" 함수의 \"script_path\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1522,"character":26},"end":{"line":1522,"character":32}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1541,"character":22},"end":{"line":1541,"character":28}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1557,"character":7},"end":{"line":1557,"character":21}},"message":"\"str\" 및 \"None\" 형식이 겹치지 않으므로 조건은 항상 False로 평가됩니다.","severity":1,"code":"reportUnnecessaryComparison","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryComparison"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1560,"character":4},"end":{"line":1560,"character":10}},"message":"\"origin\"의 형식을 부분적으로 알 수 없습니다.\n  ‘origin’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1560,"character":4},"end":{"line":1560,"character":10}},"message":"변수 \"origin\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedVariable","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedVariable"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedVariable"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1563,"character":55},"end":{"line":1563,"character":61}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1575,"character":40},"end":{"line":1575,"character":56}},"message":"\"set_session_vars\"의 형식을 부분적으로 알 수 없습니다.\n  ‘set_session_vars’의 유형이 ‘(platform: str = \"\", source: str = \"\", chat_id: str = \"\", chat_name: str = \"\", thread_id: str = \"\", user_id: str = \"\", user_name: str = \"\", session_key: str = \"\", session_id: str = \"\", message_id: str = \"\", cwd: str = \"\") -> list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1575,"character":58},"end":{"line":1575,"character":76}},"message":"\"clear_session_vars\"의 형식을 부분적으로 알 수 없습니다.\n  ‘clear_session_vars’의 유형이 ‘(tokens: list[Unknown]) -> None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1575,"character":78},"end":{"line":1575,"character":86}},"message":"\"_VAR_MAP\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1575,"character":78},"end":{"line":1575,"character":86}},"message":"\"_VAR_MAP\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_VAR_MAP’의 유형이 ‘dict[str, ContextVar[Unknown]]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1598,"character":4},"end":{"line":1598,"character":15}},"message":"\"_ctx_tokens\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_ctx_tokens’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1609,"character":8},"end":{"line":1609,"character":31}},"message":"\"set\"의 형식을 부분적으로 알 수 없습니다.\n  ‘set’의 유형이 ‘(value: Unknown, /) -> Token[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1609,"character":8},"end":{"line":1609,"character":35}},"message":"호출 식의 결과가 ‘Token[Unknown]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1621,"character":4},"end":{"line":1621,"character":16}},"message":"\"_job_workdir\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_job_workdir’의 유형이 ‘LiteralString | Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1621,"character":19},"end":{"line":1621,"character":51}},"message":"\"strip\"의 형식을 부분적으로 알 수 없습니다.\n  ‘strip’의 유형이 ‘Unknown | Overload[(chars: LiteralString | None = None, /) -> LiteralString, (chars: str | None = None, /) -> str]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1621,"character":20},"end":{"line":1621,"character":27}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1622,"character":33},"end":{"line":1622,"character":45}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1627,"character":12},"end":{"line":1627,"character":18}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1627,"character":20},"end":{"line":1627,"character":32}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1633,"character":50},"end":{"line":1633,"character":56}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1633,"character":58},"end":{"line":1633,"character":70}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1640,"character":12},"end":{"line":1640,"character":90}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1642,"character":12},"end":{"line":1642,"character":92}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1644,"character":8},"end":{"line":1644,"character":23}},"message":"\"delivery_target\"의 형식을 부분적으로 알 수 없습니다.\n  ‘delivery_target’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1646,"character":12},"end":{"line":1646,"character":61}},"message":"\"set\"의 형식을 부분적으로 알 수 없습니다.\n  ‘set’의 유형이 ‘(value: Unknown, /) -> Token[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1646,"character":12},"end":{"line":1646,"character":90}},"message":"호출 식의 결과가 ‘Token[Unknown]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1646,"character":62},"end":{"line":1646,"character":89}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"set\" 함수의 \"value\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1647,"character":12},"end":{"line":1647,"character":60}},"message":"\"set\"의 형식을 부분적으로 알 수 없습니다.\n  ‘set’의 유형이 ‘(value: Unknown, /) -> Token[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1647,"character":12},"end":{"line":1647,"character":93}},"message":"호출 식의 결과가 ‘Token[Unknown]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1647,"character":65},"end":{"line":1647,"character":91}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1648,"character":12},"end":{"line":1648,"character":62}},"message":"\"set\"의 형식을 부분적으로 알 수 없습니다.\n  ‘set’의 유형이 ‘(value: Unknown, /) -> Token[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1648,"character":12},"end":{"line":1652,"character":13}},"message":"호출 식의 결과가 ‘Token[Unknown]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1650,"character":19},"end":{"line":1650,"character":38}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1651,"character":25},"end":{"line":1651,"character":53}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1654,"character":8},"end":{"line":1654,"character":13}},"message":"\"model\"의 형식을 부분적으로 알 수 없습니다.\n  ‘model’의 유형이 ‘Unknown | str’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1654,"character":16},"end":{"line":1654,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1663,"character":20},"end":{"line":1663,"character":24}},"message":"\"_cfg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_cfg’의 유형이 ‘Any | dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1670,"character":20},"end":{"line":1670,"character":24}},"message":"\"_cfg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_cfg’의 유형이 ‘dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1670,"character":27},"end":{"line":1670,"character":62}},"message":"\"apply_managed_overlay\"의 형식을 부분적으로 알 수 없습니다.\n  ‘apply_managed_overlay’의 유형이 ‘(config: dict[Unknown, Unknown]) -> dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1673,"character":16},"end":{"line":1673,"character":20}},"message":"\"_cfg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_cfg’의 유형이 ‘str | dict[Unknown, str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any] | list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any] | Any’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1674,"character":16},"end":{"line":1674,"character":26}},"message":"\"_model_cfg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_model_cfg’의 유형이 ‘str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1674,"character":29},"end":{"line":1674,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1674,"character":34},"end":{"line":1674,"character":37}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1674,"character":34},"end":{"line":1674,"character":37}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1675,"character":23},"end":{"line":1675,"character":30}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1679,"character":24},"end":{"line":1679,"character":29}},"message":"\"model\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1679,"character":32},"end":{"line":1679,"character":46}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1681,"character":87},"end":{"line":1681,"character":93}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1686,"character":12},"end":{"line":1686,"character":20}},"message":"\"_net_cfg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_net_cfg’의 유형이 ‘str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1686,"character":23},"end":{"line":1686,"character":31}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1686,"character":28},"end":{"line":1686,"character":31}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1686,"character":28},"end":{"line":1686,"character":31}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1687,"character":46},"end":{"line":1687,"character":58}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1693,"character":37},"end":{"line":1693,"character":59}},"message":"\"parse_reasoning_effort\"의 형식을 부분적으로 알 수 없습니다.\n  ‘parse_reasoning_effort’의 유형이 ‘(effort: str) -> (dict[Unknown, Unknown] | None)’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1694,"character":21},"end":{"line":1694,"character":29}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1694,"character":21},"end":{"line":1694,"character":46}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1694,"character":21},"end":{"line":1694,"character":70}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1694,"character":26},"end":{"line":1694,"character":29}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1694,"character":26},"end":{"line":1694,"character":29}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1694,"character":43},"end":{"line":1694,"character":46}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1694,"character":43},"end":{"line":1694,"character":46}},"message":"\"list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1695,"character":8},"end":{"line":1695,"character":24}},"message":"\"reasoning_config\"의 형식을 부분적으로 알 수 없습니다.\n  ‘reasoning_config’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1701,"character":8},"end":{"line":1701,"character":17}},"message":"\"agent_cfg\"의 형식을 부분적으로 알 수 없습니다.\n  ‘agent_cfg’의 유형이 ‘str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1701,"character":20},"end":{"line":1701,"character":28}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1701,"character":25},"end":{"line":1701,"character":28}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1701,"character":25},"end":{"line":1701,"character":28}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1701,"character":56},"end":{"line":1701,"character":64}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1701,"character":61},"end":{"line":1701,"character":64}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1701,"character":61},"end":{"line":1701,"character":64}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1702,"character":8},"end":{"line":1702,"character":20}},"message":"\"prefill_file\"의 형식을 부분적으로 알 수 없습니다.\n  ‘prefill_file’의 유형이 ‘str | Unknown | Any | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1704,"character":15},"end":{"line":1704,"character":23}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1704,"character":20},"end":{"line":1704,"character":23}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1704,"character":20},"end":{"line":1704,"character":23}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1705,"character":15},"end":{"line":1705,"character":28}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1705,"character":25},"end":{"line":1705,"character":28}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1705,"character":25},"end":{"line":1705,"character":28}},"message":"\"list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1708,"character":26},"end":{"line":1708,"character":38}},"message":"\"str | Unknown | Any | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\" 형식의 인수를 \"__new__\" 함수에서 \"StrPath\" 형식의 \"args\" 매개 변수에 할당할 수 없습니다.\n  형식 \"str | Unknown | Any | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\"은 형식 \"StrPath\"에 할당할 수 없습니다.\n    형식 \"dict[Unknown, Unknown]\"은 형식 \"StrPath\"에 할당할 수 없습니다.\n      \"dict[Unknown, Unknown]\"은 \"str\"에 할당할 수 없습니다.\n      ‘dict[Unknown, Unknown]’은(는) ‘PathLike[str]’ 프로토콜과 호환되지 않습니다.\n        \"__fspath__\"이(가) 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1708,"character":26},"end":{"line":1708,"character":38}},"message":"\"str | Unknown | Any | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\" 형식의 인수를 \"__init__\" 함수에서 \"StrPath\" 형식의 \"args\" 매개 변수에 할당할 수 없습니다.\n  형식 \"str | Unknown | Any | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\"은 형식 \"StrPath\"에 할당할 수 없습니다.\n    형식 \"dict[Unknown, Unknown]\"은 형식 \"StrPath\"에 할당할 수 없습니다.\n      \"dict[Unknown, Unknown]\"은 \"str\"에 할당할 수 없습니다.\n      ‘dict[Unknown, Unknown]’은(는) ‘PathLike[str]’ 프로토콜과 호환되지 않습니다.\n        \"__fspath__\"이(가) 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1714,"character":24},"end":{"line":1714,"character":40}},"message":"Type of \"prefill_messages\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1718,"character":95},"end":{"line":1718,"character":101}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1722,"character":8},"end":{"line":1722,"character":22}},"message":"\"max_iterations\"의 형식을 부분적으로 알 수 없습니다.\n  ‘max_iterations’의 유형이 ‘Unknown | str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Literal[90]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1722,"character":25},"end":{"line":1722,"character":33}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1722,"character":25},"end":{"line":1722,"character":50}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1722,"character":30},"end":{"line":1722,"character":33}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1722,"character":30},"end":{"line":1722,"character":33}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1722,"character":47},"end":{"line":1722,"character":50}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1722,"character":47},"end":{"line":1722,"character":50}},"message":"\"list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1722,"character":67},"end":{"line":1722,"character":75}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1722,"character":72},"end":{"line":1722,"character":75}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1722,"character":72},"end":{"line":1722,"character":75}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1725,"character":8},"end":{"line":1725,"character":10}},"message":"\"pr\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pr’의 유형이 ‘str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1725,"character":13},"end":{"line":1725,"character":21}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1725,"character":18},"end":{"line":1725,"character":21}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1725,"character":18},"end":{"line":1725,"character":21}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1738,"character":12},"end":{"line":1738,"character":26}},"message":"\"runtime_kwargs\"의 형식을 부분적으로 알 수 없습니다.\n  ‘runtime_kwargs’의 유형이 ‘dict[str, Unknown | None]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1739,"character":29},"end":{"line":1739,"character":36}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1741,"character":15},"end":{"line":1741,"character":22}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1742,"character":54},"end":{"line":1742,"character":61}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1743,"character":49},"end":{"line":1743,"character":63}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"resolve_runtime_provider\" 함수의 \"requested\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1743,"character":49},"end":{"line":1743,"character":63}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"resolve_runtime_provider\" 함수의 \"explicit_api_key\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1743,"character":49},"end":{"line":1743,"character":63}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"resolve_runtime_provider\" 함수의 \"explicit_base_url\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1743,"character":49},"end":{"line":1743,"character":63}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"resolve_runtime_provider\" 함수의 \"target_model\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1746,"character":82},"end":{"line":1746,"character":88}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1747,"character":12},"end":{"line":1747,"character":14}},"message":"\"fb\"의 형식을 부분적으로 알 수 없습니다.\n  ‘fb’의 유형이 ‘str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1747,"character":17},"end":{"line":1747,"character":25}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1747,"character":22},"end":{"line":1747,"character":25}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1747,"character":22},"end":{"line":1747,"character":25}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1747,"character":51},"end":{"line":1747,"character":59}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1747,"character":56},"end":{"line":1747,"character":59}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1747,"character":56},"end":{"line":1747,"character":59}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1748,"character":12},"end":{"line":1748,"character":19}},"message":"\"fb_list\"의 형식을 부분적으로 알 수 없습니다.\n  ‘fb_list’의 유형이 ‘list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | list[str | dict[Unknown, Unknown] | Any | Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1750,"character":16},"end":{"line":1750,"character":21}},"message":"\"entry\"의 형식을 부분적으로 알 수 없습니다.\n  ‘entry’의 유형이 ‘str | dict[Unknown, Unknown] | list[Unknown] | Any | Unknown’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1754,"character":20},"end":{"line":1754,"character":29}},"message":"\"fb_kwargs\"의 형식을 부분적으로 알 수 없습니다.\n  ‘fb_kwargs’의 유형이 ‘dict[str, Unknown | None]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1754,"character":46},"end":{"line":1754,"character":55}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1755,"character":23},"end":{"line":1755,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1757,"character":23},"end":{"line":1757,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1759,"character":57},"end":{"line":1759,"character":66}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"resolve_runtime_provider\" 함수의 \"requested\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1759,"character":57},"end":{"line":1759,"character":66}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"resolve_runtime_provider\" 함수의 \"explicit_api_key\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1759,"character":57},"end":{"line":1759,"character":66}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"resolve_runtime_provider\" 함수의 \"explicit_base_url\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1759,"character":57},"end":{"line":1759,"character":66}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"resolve_runtime_provider\" 함수의 \"target_model\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1760,"character":69},"end":{"line":1760,"character":75}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1763,"character":69},"end":{"line":1763,"character":75}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1763,"character":77},"end":{"line":1763,"character":86}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1763,"character":77},"end":{"line":1763,"character":98}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1770,"character":8},"end":{"line":1770,"character":22}},"message":"\"fallback_model\"의 형식을 부분적으로 알 수 없습니다.\n  ‘fallback_model’의 유형이 ‘str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1770,"character":25},"end":{"line":1770,"character":33}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1770,"character":30},"end":{"line":1770,"character":33}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1770,"character":30},"end":{"line":1770,"character":33}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1770,"character":59},"end":{"line":1770,"character":67}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1770,"character":64},"end":{"line":1770,"character":67}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1770,"character":64},"end":{"line":1770,"character":67}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1781,"character":24},"end":{"line":1781,"character":30}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1786,"character":84},"end":{"line":1786,"character":90}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1801,"character":20},"end":{"line":1801,"character":26}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1806,"character":16},"end":{"line":1806,"character":22}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"warning\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1810,"character":18},"end":{"line":1810,"character":23}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"model\" 매개 변수에 해당합니다.\n  인수 형식이 \"str | Unknown\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1811,"character":20},"end":{"line":1811,"character":42}},"message":"\"Any | None\" 형식의 인수를 \"__init__\" 함수에서 \"str\" 형식의 \"api_key\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Any | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1812,"character":21},"end":{"line":1812,"character":44}},"message":"\"Any | None\" 형식의 인수를 \"__init__\" 함수에서 \"str\" 형식의 \"base_url\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Any | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1813,"character":21},"end":{"line":1813,"character":44}},"message":"\"Any | None\" 형식의 인수를 \"__init__\" 함수에서 \"str\" 형식의 \"provider\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Any | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1814,"character":21},"end":{"line":1814,"character":44}},"message":"\"Any | None\" 형식의 인수를 \"__init__\" 함수에서 \"str\" 형식의 \"api_mode\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Any | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1815,"character":24},"end":{"line":1815,"character":46}},"message":"\"Any | None\" 형식의 인수를 \"__init__\" 함수에서 \"str\" 형식의 \"acp_command\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Any | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1817,"character":27},"end":{"line":1817,"character":41}},"message":"\"Unknown | str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Literal[90]\" 형식의 인수를 \"__init__\" 함수에서 \"int\" 형식의 \"max_iterations\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Unknown | str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Literal[90]\"은 형식 \"int\"에 할당할 수 없습니다.\n    \"str\"은 \"int\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1818,"character":29},"end":{"line":1818,"character":45}},"message":"\"dict[Unknown, Unknown] | None\" 형식의 인수를 \"__init__\" 함수에서 \"Dict[str, Any]\" 형식의 \"reasoning_config\" 매개 변수에 할당할 수 없습니다.\n  형식 \"dict[Unknown, Unknown] | None\"은 형식 \"Dict[str, Any]\"에 할당할 수 없습니다.\n    \"None\"은 \"Dict[str, Any]\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1819,"character":29},"end":{"line":1819,"character":45}},"message":"\"list[Unknown] | None\" 형식의 인수를 \"__init__\" 함수에서 \"List[Dict[str, Any]]\" 형식의 \"prefill_messages\" 매개 변수에 할당할 수 없습니다.\n  형식 \"list[Unknown] | None\"은 형식 \"List[Dict[str, Any]]\"에 할당할 수 없습니다.\n    \"None\"은 \"List[Dict[str, Any]]\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1820,"character":27},"end":{"line":1820,"character":41}},"message":"\"str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Unknown | None\" 형식의 인수를 \"__init__\" 함수에서 \"Dict[str, Any]\" 형식의 \"fallback_model\" 매개 변수에 할당할 수 없습니다.\n  형식 \"str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | Unknown | None\"은 형식 \"Dict[str, Any]\"에 할당할 수 없습니다.\n    \"str\"은 \"Dict[str, Any]\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1822,"character":30},"end":{"line":1822,"character":36}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1822,"character":30},"end":{"line":1822,"character":44}},"message":"\"Unknown | Any | None\" 형식의 인수를 \"__init__\" 함수에서 \"List[str]\" 형식의 \"providers_allowed\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Unknown | Any | None\"은 형식 \"List[str]\"에 할당할 수 없습니다.\n    \"None\"은 \"List[str]\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1822,"character":33},"end":{"line":1822,"character":36}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1822,"character":33},"end":{"line":1822,"character":36}},"message":"\"list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1823,"character":30},"end":{"line":1823,"character":36}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1823,"character":30},"end":{"line":1823,"character":46}},"message":"\"Unknown | Any | None\" 형식의 인수를 \"__init__\" 함수에서 \"List[str]\" 형식의 \"providers_ignored\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Unknown | Any | None\"은 형식 \"List[str]\"에 할당할 수 없습니다.\n    \"None\"은 \"List[str]\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1823,"character":33},"end":{"line":1823,"character":36}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1823,"character":33},"end":{"line":1823,"character":36}},"message":"\"list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1824,"character":28},"end":{"line":1824,"character":34}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1824,"character":28},"end":{"line":1824,"character":43}},"message":"\"Unknown | Any | None\" 형식의 인수를 \"__init__\" 함수에서 \"List[str]\" 형식의 \"providers_order\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Unknown | Any | None\"은 형식 \"List[str]\"에 할당할 수 없습니다.\n    \"None\"은 \"List[str]\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1824,"character":31},"end":{"line":1824,"character":34}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1824,"character":31},"end":{"line":1824,"character":34}},"message":"\"list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1825,"character":26},"end":{"line":1825,"character":32}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1825,"character":26},"end":{"line":1825,"character":40}},"message":"\"Unknown | Any | None\" 형식의 인수를 \"__init__\" 함수에서 \"str\" 형식의 \"provider_sort\" 매개 변수에 할당할 수 없습니다.\n  형식 \"Unknown | Any | None\"은 형식 \"str\"에 할당할 수 없습니다.\n    \"None\"은 \"str\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1825,"character":29},"end":{"line":1825,"character":32}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1825,"character":29},"end":{"line":1825,"character":32}},"message":"\"list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1826,"character":40},"end":{"line":1826,"character":74}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)] | Any’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1826,"character":40},"end":{"line":1826,"character":94}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"openrouter_min_coding_score\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1826,"character":41},"end":{"line":1826,"character":49}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | None), (key: Unknown, default: str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any), (key: Unknown, default: _T@get, /) -> (str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any | _T@get)] | Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1826,"character":46},"end":{"line":1826,"character":49}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1826,"character":46},"end":{"line":1826,"character":49}},"message":"\"list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1826,"character":71},"end":{"line":1826,"character":74}},"message":"\"str\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1826,"character":71},"end":{"line":1826,"character":74}},"message":"\"list[str | dict[Unknown, Unknown] | list[Unknown] | Any]\" 클래스의 \"get\" 특성에 액세스할 수 없음\n  특성 \"get\" 알 수 없음","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1827,"character":29},"end":{"line":1827,"character":70}},"message":"\"list[str] | None\" 형식의 인수를 \"__init__\" 함수에서 \"List[str]\" 형식의 \"enabled_toolsets\" 매개 변수에 할당할 수 없습니다.\n  형식 \"list[str] | None\"은 형식 \"List[str]\"에 할당할 수 없습니다.\n    \"None\"은 \"List[str]\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1827,"character":65},"end":{"line":1827,"character":69}},"message":"\"str | dict[Unknown, str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any] | list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any] | Any | dict[Unknown, Unknown]\" 형식의 인수를 \"_resolve_cron_enabled_toolsets\" 함수에서 \"dict[Unknown, Unknown]\" 형식의 \"cfg\" 매개 변수에 할당할 수 없습니다.\n  형식 \"str | dict[Unknown, str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any] | list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any] | Any | dict[Unknown, Unknown]\"은 형식 \"dict[Unknown, Unknown]\"에 할당할 수 없습니다.\n    \"str\"은 \"dict[Unknown, Unknown]\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1828,"character":62},"end":{"line":1828,"character":66}},"message":"\"str | dict[Unknown, str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any] | list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any] | Any | dict[Unknown, Unknown]\" 형식의 인수를 \"_resolve_cron_disabled_toolsets\" 함수에서 \"dict[Unknown, Unknown]\" 형식의 \"cfg\" 매개 변수에 할당할 수 없습니다.\n  형식 \"str | dict[Unknown, str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Any] | Any] | list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Any] | list[Unknown] | Any] | Any | dict[Unknown, Unknown]\"은 형식 \"dict[Unknown, Unknown]\"에 할당할 수 없습니다.\n    \"str\"은 \"dict[Unknown, Unknown]\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1834,"character":40},"end":{"line":1834,"character":52}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다.\n  인수 형식이 \"LiteralString | Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1869,"character":60},"end":{"line":1869,"character":82}},"message":"\"run_conversation\"의 형식을 부분적으로 알 수 없습니다.\n  ‘run_conversation’의 유형이 ‘(user_message: str, system_message: str = None, conversation_history: List[Dict[str, Any]] = None, task_id: str = None, stream_callback: Unknown | None = None, persist_user_message: str | None = None, persist_user_timestamp: float | None = None) -> Dict[str, Any]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1869,"character":60},"end":{"line":1869,"character":82}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"callable\" 매개 변수에 해당합니다.\n  인수 형식이 \"(user_message: str, system_message: str = None, conversation_history: List[Dict[str, Any]] = None, task_id: str = None, stream_callback: Unknown | None = None, persist_user_message: str | None = None, persist_user_timestamp: float | None = None) -> Dict[str, Any]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1888,"character":28},"end":{"line":1888,"character":32}},"message":"\"_act\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_act’의 유형이 ‘dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1888,"character":35},"end":{"line":1888,"character":61}},"message":"\"get_activity_summary\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get_activity_summary’의 유형이 ‘() -> dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1889,"character":28},"end":{"line":1889,"character":38}},"message":"\"_idle_secs\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1889,"character":41},"end":{"line":1889,"character":49}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1906,"character":20},"end":{"line":1906,"character":29}},"message":"\"_activity\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_activity’의 유형이 ‘dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1906,"character":32},"end":{"line":1906,"character":58}},"message":"\"get_activity_summary\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get_activity_summary’의 유형이 ‘() -> dict[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1909,"character":12},"end":{"line":1909,"character":22}},"message":"\"_last_desc\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1909,"character":25},"end":{"line":1909,"character":38}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1910,"character":12},"end":{"line":1910,"character":21}},"message":"\"_secs_ago\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1910,"character":24},"end":{"line":1910,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1911,"character":12},"end":{"line":1911,"character":21}},"message":"\"_cur_tool\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_cur_tool’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1911,"character":24},"end":{"line":1911,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1912,"character":12},"end":{"line":1912,"character":19}},"message":"\"_iter_n\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1912,"character":22},"end":{"line":1912,"character":35}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1913,"character":12},"end":{"line":1913,"character":21}},"message":"\"_iter_max\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1913,"character":24},"end":{"line":1913,"character":37}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1916,"character":16},"end":{"line":1917,"character":64}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1918,"character":26},"end":{"line":1918,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1919,"character":16},"end":{"line":1919,"character":26}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1919,"character":28},"end":{"line":1919,"character":35}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1919,"character":37},"end":{"line":1919,"character":46}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1920,"character":16},"end":{"line":1920,"character":35}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['none']\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1925,"character":16},"end":{"line":1927,"character":48}},"message":"암시적 문자열 연결이 허용되지 않습니다.","severity":1,"code":"reportImplicitStringConcatenation","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportImplicitStringConcatenation"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1926,"character":23},"end":{"line":1926,"character":32}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1926,"character":48},"end":{"line":1926,"character":70}},"message":"\"float | None\" 형식의 인수를 \"__new__\" 함수에서 \"ConvertibleToInt\" 형식의 \"x\" 매개 변수에 할당할 수 없습니다.\n  형식 \"float | None\"은 형식 \"ConvertibleToInt\"에 할당할 수 없습니다.\n    형식 \"None\"은 형식 \"ConvertibleToInt\"에 할당할 수 없습니다.\n      \"None\"은 \"str\"에 할당할 수 없습니다.\n      ‘None’은(는) ‘Buffer’ 프로토콜과 호환되지 않습니다.\n        \"__buffer__\"이(가) 없습니다.\n      ‘None’은(는) ‘SupportsInt’ 프로토콜과 호환되지 않습니다.\n        \"__int__\"이(가) 없습니다.\n      ‘None’은(는) ‘SupportsIndex’ 프로토콜과 호환되지 않습니다.\n  ...","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1926,"character":48},"end":{"line":1926,"character":70}},"message":"\"float | None\" 형식의 인수를 \"__new__\" 함수에서 \"ConvertibleToInt\" 형식의 \"x\" 매개 변수에 할당할 수 없습니다.\n  형식 \"float | None\"은 형식 \"ConvertibleToInt\"에 할당할 수 없습니다.\n    형식 \"None\"은 형식 \"ConvertibleToInt\"에 할당할 수 없습니다.\n      \"None\"은 \"str\"에 할당할 수 없습니다.\n      ‘None’은(는) ‘Buffer’ 프로토콜과 호환되지 않습니다.\n        \"__buffer__\"이(가) 없습니다.\n      ‘None’은(는) ‘SupportsInt’ 프로토콜과 호환되지 않습니다.\n        \"__int__\"이(가) 없습니다.\n      ‘None’은(는) ‘SupportsIndex’ 프로토콜과 호환되지 않습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1963,"character":15},"end":{"line":1963,"character":22}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":1985,"character":15},"end":{"line":1985,"character":22}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2005,"character":16},"end":{"line":2005,"character":52}},"message":"호출 식의 결과가 ‘str | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2011,"character":12},"end":{"line":2011,"character":35}},"message":"\"set\"의 형식을 부분적으로 알 수 없습니다.\n  ‘set’의 유형이 ‘(value: Unknown, /) -> Token[Unknown]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2011,"character":12},"end":{"line":2011,"character":39}},"message":"호출 식의 결과가 ‘Token[Unknown]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2022,"character":16},"end":{"line":2022,"character":76}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2024,"character":79},"end":{"line":2024,"character":85}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2028,"character":68},"end":{"line":2028,"character":74}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2032,"character":83},"end":{"line":2032,"character":89}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2041,"character":74},"end":{"line":2041,"character":80}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2050,"character":81},"end":{"line":2050,"character":87}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"debug\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2053,"character":16},"end":{"line":2053,"character":19}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2053,"character":21},"end":{"line":2053,"character":25}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2053,"character":30},"end":{"line":2053,"character":38}},"message":"매개 변수 \"adapters\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2053,"character":30},"end":{"line":2053,"character":38}},"message":"‘adapters’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2053,"character":45},"end":{"line":2053,"character":49}},"message":"매개 변수 \"loop\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2053,"character":45},"end":{"line":2053,"character":49}},"message":"‘loop’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2069,"character":11},"end":{"line":2069,"character":18}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2076,"character":12},"end":{"line":2076,"character":19}},"message":"\"adapter\"의 형식을 부분적으로 알 수 없습니다.\n  ‘adapter’의 유형이 ‘Unknown | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2076,"character":22},"end":{"line":2076,"character":42}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2079,"character":16},"end":{"line":2079,"character":23}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"launch_scheduled_card\" 함수의 \"adapter\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2080,"character":16},"end":{"line":2080,"character":20}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"launch_scheduled_card\" 함수의 \"loop\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2082,"character":16},"end":{"line":2082,"character":34}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"launch_scheduled_card\" 함수의 \"card\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2087,"character":29},"end":{"line":2087,"character":38}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"mark_job_run\" 함수의 \"job_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2090,"character":29},"end":{"line":2090,"character":38}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"mark_job_run\" 함수의 \"job_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2093,"character":29},"end":{"line":2093,"character":38}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"mark_job_run\" 함수의 \"job_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2096,"character":29},"end":{"line":2096,"character":38}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"mark_job_run\" 함수의 \"job_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2101,"character":29},"end":{"line":2101,"character":38}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"mark_job_run\" 함수의 \"job_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2102,"character":42},"end":{"line":2102,"character":51}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"save_job_output\" 함수의 \"job_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2109,"character":38},"end":{"line":2109,"character":47}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"save_job_output\" 함수의 \"job_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2122,"character":75},"end":{"line":2122,"character":84}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2131,"character":63},"end":{"line":2131,"character":72}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매�� 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2140,"character":21},"end":{"line":2140,"character":30}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"mark_job_run\" 함수의 \"job_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2144,"character":52},"end":{"line":2144,"character":61}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"error\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2145,"character":21},"end":{"line":2145,"character":30}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"mark_job_run\" 함수의 \"job_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2149,"character":4},"end":{"line":2149,"character":33}},"message":"함수 \"_notify_provider_jobs_changed\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedFunction","source":"basedpyright","tags":[1],"data":{"category":0,"rule":"reportUnusedFunction"},"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedFunction"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2167,"character":31},"end":{"line":2167,"character":39}},"message":"매개 변수 \"adapters\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2167,"character":31},"end":{"line":2167,"character":39}},"message":"‘adapters’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2167,"character":46},"end":{"line":2167,"character":50}},"message":"매개 변수 \"loop\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Unknown | None\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2167,"character":46},"end":{"line":2167,"character":50}},"message":"‘loop’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2215,"character":12},"end":{"line":2215,"character":39}},"message":"호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2215,"character":29},"end":{"line":2215,"character":38}},"message":"Argument type is Any\n  인수가 \"advance_next_run\" 함수의 \"job_id\" 매개 변수에 해당합니다.","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2219,"character":22},"end":{"line":2219,"character":30}},"message":"이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.","severity":1,"code":"reportDeprecated","source":"basedpyright","tags":[2],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportDeprecated"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2229,"character":16},"end":{"line":2229,"character":24}},"message":"\"_cfg_par\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_cfg_par’의 유형이 ‘Unknown | Any | None’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2229,"character":27},"end":{"line":2231,"character":21}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2230,"character":45},"end":{"line":2230,"character":68}},"message":"불필요한 isinstance 호출입니다. \"Dict[str, Any]\"은(는) 항상 \"dict[Unknown, Unknown]\"의 인스턴스입니다.","severity":1,"code":"reportUnnecessaryIsInstance","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnnecessaryIsInstance"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2233,"character":39},"end":{"line":2233,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Any\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2244,"character":25},"end":{"line":2244,"character":28}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2244,"character":30},"end":{"line":2244,"character":34}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2258,"character":8},"end":{"line":2258,"character":16}},"message":"\"_results\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_results’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2258,"character":18},"end":{"line":2258,"character":22}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2259,"character":8},"end":{"line":2259,"character":20}},"message":"\"_all_futures\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_all_futures’의 유형이 ‘list[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2259,"character":22},"end":{"line":2259,"character":26}},"message":"‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2261,"character":31},"end":{"line":2261,"character":34}},"message":"매개 변수 \"job\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"dict[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2261,"character":36},"end":{"line":2261,"character":40}},"message":"‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2268,"character":12},"end":{"line":2268,"character":18}},"message":"\"job_id\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2271,"character":71},"end":{"line":2271,"character":78}},"message":"\"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2271,"character":71},"end":{"line":2271,"character":94}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2271,"character":87},"end":{"line":2271,"character":93}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2273,"character":16},"end":{"line":2273,"character":36}},"message":"\"add\"의 형식을 부분적으로 알 수 없습니다.\n  ‘add’의 유형이 ‘(element: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2273,"character":37},"end":{"line":2273,"character":43}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"add\" 함수의 \"element\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2276,"character":33},"end":{"line":2276,"character":34}},"message":"매개 변수 \"j\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2276,"character":33},"end":{"line":2276,"character":34}},"message":"‘j’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2276,"character":40},"end":{"line":2276,"character":43}},"message":"‘ctx’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2278,"character":35},"end":{"line":2278,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"run\" 함수의 \"callable\" 매개 변수에 해당합니다.\n  인수 형식이 \"(job: dict[Unknown, Unknown]) -> bool\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2278,"character":49},"end":{"line":2278,"character":50}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"job\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2281,"character":49},"end":{"line":2281,"character":56}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"discard\" 함수의 \"element\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2283,"character":31},"end":{"line":2283,"character":47}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"submit\" 함수의 \"fn\" 매개 변수에 해당합니다.\n  인수 형식이 \"(j: Unknown = job, ctx: Context = _ctx) -> bool\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2297,"character":16},"end":{"line":2297,"character":35}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2299,"character":20},"end":{"line":2299,"character":35}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2312,"character":16},"end":{"line":2312,"character":35}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2314,"character":20},"end":{"line":2314,"character":35}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2323,"character":43},"end":{"line":2323,"character":70}},"message":"\"_kill_orphaned_mcp_children\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2331,"character":16},"end":{"line":2331,"character":17}},"message":"\"f\"의 형식을 부분적으로 알 수 없습니다.\n  ‘f’의 유형이 ‘Future[Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2331,"character":53},"end":{"line":2331,"character":65}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"as_completed\" 함수의 \"fs\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2333,"character":20},"end":{"line":2333,"character":35}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2333,"character":36},"end":{"line":2333,"character":46}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2336,"character":20},"end":{"line":2336,"character":35}},"message":"\"append\"의 형식을 부분적으로 알 수 없습니다.\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2338,"character":23},"end":{"line":2338,"character":31}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"sum\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2344,"character":30},"end":{"line":2344,"character":42}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2346,"character":25},"end":{"line":2346,"character":27}},"message":"매개 변수 \"_f\"의 형식을 부분적으로 알 수 없습니다.\n  매개 변수 형식은 \"Future[Unknown]\"입니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2346,"character":29},"end":{"line":2346,"character":54}},"message":"‘Future’ 제네릭 클래스에 대한 형식 인수가 필요합니다.","severity":1,"code":"reportMissingTypeArgument","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingTypeArgument"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2351,"character":16},"end":{"line":2351,"character":18}},"message":"\"_f\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2352,"character":16},"end":{"line":2352,"character":36}},"message":"\"add_done_callback\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2357,"character":19},"end":{"line":2357,"character":27}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"sum\" 함수의 \"iterable\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","diagnostic":{"range":{"start":{"line":2373,"character":4},"end":{"line":2373,"character":22}},"message":"호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}}],"totalDiagnostics":675,"truncated":true},"isError":false,"timestamp":1788247059576}}
{"type":"message","id":"b8aa4c65","parentId":"d01fc947","timestamp":"2026-09-01T07:18:01.009Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Identifying test suite discrepancies**\n\n**Locating session logs for config review**","startedAt":1788247063537,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967c17745487d0a1d2b3c20c896c5c\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnwotI4IKT_CmI4FPanvjAxTyUDcAnaEprUkVfJ3CRKwraOnf-KWJyHbA8JNu5Hct0rVgOAlWfzoMmfM7BJol_5qDsoOC9_nlC-SmPGCaexjzWZRXcRMy2aHlqJWHM4SpGpObbzxs4e4v2tfLbPqJpOyfkBRtV_tKfNLz8_jxSE2uLIzS1FbJ2uFq7RxIPYLqh2qxympH-qq1c6HQjiZWA_--AHuEhF3ocie452ri21BNJSWgchmg1Obe_zeQrbWz2JGTVwgba9H3RKWbPbaxgUiuIVfhFOA3rZBIVy7tACMVeBq6wyDRvbGhhG3bHmuhwboQGTnLZBQ2cXQ1UVMF3e22gcUvr6WEOid29s_Pe33MqlBl_LdDSWySX8mRimEECrRCy80RVBzI0U_rfJCI_SFWlFgVqvY40HhZ0u_Hj5HZBuS8Bos3TbZynBjm4HQGVBEwYxF0mvPku95oGW77YfCVUbpcCb1d11ptHgCn8LIeBvhtPHL436pRwKS8j35qAPe4HJLni08Te4_11CxZkxcQP7CBZ4l4twzPDnpWAROsION9r43wc6KgGgc7JJhre7AcicFcPgLRDm3kzo4oZwXFOuQ__MGs18NIoKfgMxAWxIMqr5DWg54titYGDAfZc85PD6yqisVd4O-bWRRPgyLw5-HHrGGvT_b8HUpGPsj_NJWXYhcjdDiDLlhkGLBWDCOs7A7b_7RSwthEce0GEA0x2A-38FUYO6hqdwH8YhRYpE_juSx5J_5jIPymyIhXTG0Fn0HyeVwDS-UbsE9_SiyWCErAE_CS7fW_eqZhfhg02EO08EGLjYGJAiMoiKhFu7lPleObcHIBns1BI37KWFSV3S8kv6yhU4hz4AE-XGnMSWZAJQVr_Ey8cyQC19I_Nn8Nq3aHmM9hfkC0Fqes9Sdlw1oO_oeqJh1K1VZ7RFiG9muWbK_ZmLvnwwVwQkOR7F4MZy72ei1kXqpz2GLpHZjbkedjTdG3oV-pLowv8MqmKUfvp1PqXPOsFXSBf9D-727lmBgGjosSvjaKHWmJEVMZxqcMOxJZh1b3c2co8i2UPq8FV0YPY_e69K3TOMPJDjftKgSXrIyfLsT9PLedPEmeO4SgzQEaOxoMHvR4hI7fFoHs0w-sORjdpySNlzjh4rgEKfwTi2PHxJ4tRUm0w020KIYdSvADKHhKBd6EfGZ12EBcXGK7KZbdDs17sKUD6DCQ0JEv86qTVzjr0t9vTn85If871tJFVpSANke4Ml0y-Vt21r3EoRPnbRBEBa4cqt0b4YpxvnafpWXxLDGh0EORPT4CvxN5lQ0462t8-7aI8Ic3Vent_pFFoEHucltpfu8DNl0av7pENeYLQzmlOM2UUpRMkymaPmKjV2te0xT8EJ-fpyeMw1UtB7R26n3H0Y2ckU_CEUzeK33G2fv8q05rltqeMHS4vFQ_PKt6cQeg9EL8QU9J46SY9wz_H3BWg6D1fuezLelP9OOoaQWHV-fCxXllPTlYHocI7hKwiQNh4liRsRFa9GX75CBDSGSCMhXbVC_nmy59fzFKY7KGja4c6LEeu_x0XstBjue0Kx2CVUKkfyvRfQ5JET5qbSJOan7Uby45z575Q6-3qOBqajbqGVXI2KFJYarF0nATDS0sX_sV7krE2G10jVdSWTvWmoZQFvbm4SukcK344z_xEI7IbngzjBaP6Km2TKy0aeLEMplj_veXdLwRhtTXN2EsMMrLZbjFd2IANv5EL8HCAFW9pzJ6yjUd_rMM7kkaUgZ_ZDiq5Q3U-TS4nniKh509gX2uELgyaflb478veW3zWuTvsdHJhmn-ddIESjqEWo5nYDlezm4TR0IMbwI03EAkVzjSsglTe9GHFVqXvAMOcxPbzYsK3KjP_ho-dIDAbz76X9bC-2m0_8wAUxJ5Msp4qLYjPlK6OrlLzTAY1BXKDTq3NPlMKOC6pTBLAg2nPg4j9tyWEA-58a8_bjGjsY1kNWoGRBS3Jr3IxPQbREZ9Oe1tKKWSx6ohrGaAEBUyXjpgO-QCaf2tZc8FZiQvJwushWYGMXvAnvvnGANydWi3PVE-VBCmYRNPSh2lY8wZzysYiRwbfi4qSIsBOcAYUB-cCBT63Ss48gDkN1uIzDOY6Lt8WbMBZ7AHhrmXxB51ITnINpoh71jVAsaoEjOJeyfJSd9V5MuIXpC976GRsw8zzf3p1zYMJXf9SuigMEyN4YpdFcwQ05b_vfwfjHw3ic10tTy1arasvcuS-Vs5Al3uJMHR9zcl6KnNGBg4WgX4VhOKkwL8bdI4kBTolwU9jiZCVxfCvqq7d1FJ9ze8kwyeTG7j4zGbtxTKDClss3CyQghtjobFCCg5PwE1Pudui43DEvcFSIUDR48wwiQZZNSFbz5pC5s9PG5fyWMP4I-KabAetDKAKyab8WxZ3yRO0PEFxXpU79wbRjvHWlIXXC-PwV9y0bcKJZyfp8UqdhHrdSLgVYg9g8GckR7PV4Iis_cU5Spv-0R5WJwNfP7xcnKHgGebA==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Identifying test suite discrepancies**\"},{\"type\":\"summary_text\",\"text\":\"**Locating session logs for config review**\"}]}","endedAt":1788247080896},{"type":"toolCall","id":"call_QFca8uL6fayvSHrfrB33roNr|fc_046f5546d6e20d23016a967c28ce2487d0b33448c1ab964af9","name":"bash","arguments":{"command":"find '/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a05bc2' -type f -maxdepth 4 -print 2>/dev/null; find '/home/cube/projects/richard/traning coach/.omo/senpi-task/children' -path '*st_01a05bc2*' -type f -print 2>/dev/null","timeout":20}},{"type":"toolCall","id":"call_MCX2YW7h8QII1xJeK7xEX9w4|fc_046f5546d6e20d23016a967c28ce3887d0bb829a9f7a57df6c","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && basedpyright --version && basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py cron/physique_inline_card.py --pythonpath .venv/bin/python --level warning","timeout":120}},{"type":"toolCall","id":"call_KxuopSxi35RSUmPIhFle5tSL|fc_046f5546d6e20d23016a967c28ce4087d0959a54397a7fdb2b","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && .venv/bin/ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py cron/physique_inline_card.py 2>&1","timeout":120}},{"type":"toolCall","id":"call_BcBP9YfkFObRDcXpX3jCSAhB|fc_046f5546d6e20d23016a967c28ce4887d0a8b7a66071126bb3","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && .venv/bin/ruff check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py && python -m compileall -q gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py","timeout":120}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":21579,"output":930,"cacheRead":84480,"cacheWrite":0,"reasoning":203,"totalTokens":106989,"cost":{"input":0.107895,"output":0.0279,"cacheRead":0.04224,"cacheWrite":0,"total":0.178035}},"stopReason":"toolUse","timestamp":1788247059646,"responseId":"resp_046f5546d6e20d23016a967c141e1887d08d77122f4fb2fa2e","rawStopReason":"completed"}}
{"type":"message","id":"77b9fc16","parentId":"b8aa4c65","timestamp":"2026-09-01T07:18:01.963Z","message":{"role":"toolResult","toolCallId":"call_QFca8uL6fayvSHrfrB33roNr|fc_046f5546d6e20d23016a967c28ce2487d0b33448c1ab964af9","toolName":"bash","content":[{"type":"text","text":"/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a05bc2/sessions/st_01a05bc2/2026-09-01T06-57-35-910Z_01a05bc2-4ea6-7c1c-9e54-d5320d07400b.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a05bc2/sessions/st_01a05bc2/2026-09-01T06-57-35-910Z_01a05bc2-4ea6-7c1c-9e54-d5320d07400b.jsonl\n"}],"isError":false,"timestamp":1788247081963}}
{"type":"message","id":"2ad556cd","parentId":"77b9fc16","timestamp":"2026-09-01T07:18:01.963Z","message":{"role":"toolResult","toolCallId":"call_MCX2YW7h8QII1xJeK7xEX9w4|fc_046f5546d6e20d23016a967c28ce3887d0bb829a9f7a57df6c","toolName":"bash","content":[{"type":"text","text":"basedpyright 1.39.9\nbased on pyright 1.1.411\n0 errors, 0 warnings, 0 notes\n"}],"isError":false,"timestamp":1788247081963}}
{"type":"message","id":"1c1a989b","parentId":"2ad556cd","timestamp":"2026-09-01T07:18:01.963Z","message":{"role":"toolResult","toolCallId":"call_KxuopSxi35RSUmPIhFle5tSL|fc_046f5546d6e20d23016a967c28ce4087d0959a54397a7fdb2b","toolName":"bash","content":[{"type":"text","text":"error[unresolved-import]: Cannot resolve imported module `checkin_cli.weekly_operations`\n  --> gateway/platforms/nutrition_weekly_dispatcher.py:11:6\n   |\n 9 | from typing import Protocol, cast, override, runtime_checkable\n10 |\n11 | from checkin_cli.weekly_operations import WeeklyOperationRow, WeeklyOperationsError\n   |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n12 | from checkin_cli.weekly_operations_correlation import (\n13 |     CanonicalCheckinCorrelationTransaction,\n   |\ninfo: Searched in the following paths during module resolution:\ninfo:   1. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined (first-party code)\ninfo:   2. vendored://stdlib (stdlib typeshed stubs vendored by ty)\ninfo:   3. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages (site-packages)\ninfo:   4. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib64/python3.12/site-packages (site-packages)\ninfo: make sure your Python environment is properly configured: https://docs.astral.sh/ty/modules/#python-environment\ninfo: rule `unresolved-import` is enabled by default\n\nerror[unresolved-import]: Cannot resolve imported module `checkin_cli.weekly_operations_correlation`\n  --> gateway/platforms/nutrition_weekly_dispatcher.py:12:6\n   |\n11 | from checkin_cli.weekly_operations import WeeklyOperationRow, WeeklyOperationsError\n12 | from checkin_cli.weekly_operations_correlation import (\n   |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n13 |     CanonicalCheckinCorrelationTransaction,\n14 |     CorrelationAction,\n   |\ninfo: Searched in the following paths during module resolution:\ninfo:   1. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined (first-party code)\ninfo:   2. vendored://stdlib (stdlib typeshed stubs vendored by ty)\ninfo:   3. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages (site-packages)\ninfo:   4. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib64/python3.12/site-packages (site-packages)\ninfo: make sure your Python environment is properly configured: https://docs.astral.sh/ty/modules/#python-environment\ninfo: rule `unresolved-import` is enabled by default\n\nerror[unresolved-import]: Cannot resolve imported module `checkin_cli.weekly_operations_lineage`\n  --> gateway/platforms/nutrition_weekly_dispatcher.py:18:6\n   |\n16 |     CorrelationScope,\n17 | )\n18 | from checkin_cli.weekly_operations_lineage import canonical_prefix_pin\n   |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n19 | from checkin_cli.weekly_operations_owner_binding import (\n20 |     BoundWeeklySummaryForOwnerDraft,\n   |\ninfo: Searched in the following paths during module resolution:\ninfo:   1. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined (first-party code)\ninfo:   2. vendored://stdlib (stdlib typeshed stubs vendored by ty)\ninfo:   3. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages (site-packages)\ninfo:   4. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib64/python3.12/site-packages (site-packages)\ninfo: make sure your Python environment is properly configured: https://docs.astral.sh/ty/modules/#python-environment\ninfo: rule `unresolved-import` is enabled by default\n\nerror[unresolved-import]: Cannot resolve imported module `checkin_cli.weekly_operations_owner_binding`\n  --> gateway/platforms/nutrition_weekly_dispatcher.py:19:6\n   |\n17 | )\n18 | from checkin_cli.weekly_operations_lineage import canonical_prefix_pin\n19 | from checkin_cli.weekly_operations_owner_binding import (\n   |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n20 |     BoundWeeklySummaryForOwnerDraft,\n21 |     bind_weekly_summary_for_owner_draft,\n   |\ninfo: Searched in the following paths during module resolution:\ninfo:   1. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined (first-party code)\ninfo:   2. vendored://stdlib (stdlib typeshed stubs vendored by ty)\ninfo:   3. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages (site-packages)\ninfo:   4. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib64/python3.12/site-packages (site-packages)\ninfo: make sure your Python environment is properly configured: https://docs.astral.sh/ty/modules/#python-environment\ninfo: rule `unresolved-import` is enabled by default\n\nerror[unresolved-import]: Cannot resolve imported module `checkin_cli.weekly_operations_summary`\n  --> gateway/platforms/nutrition_weekly_dispatcher.py:23:6\n   |\n21 |     bind_weekly_summary_for_owner_draft,\n22 | )\n23 | from checkin_cli.weekly_operations_summary import build_weekly_operations_summary\n   |      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n24 |\n25 | from .nutrition_weekly_dispatch_result import WeeklyOperationsDispatchResult\n   |\ninfo: Searched in the following paths during module resolution:\ninfo:   1. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined (first-party code)\ninfo:   2. vendored://stdlib (stdlib typeshed stubs vendored by ty)\ninfo:   3. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages (site-packages)\ninfo:   4. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib64/python3.12/site-packages (site-packages)\ninfo: make sure your Python environment is properly configured: https://docs.astral.sh/ty/modules/#python-environment\ninfo: rule `unresolved-import` is enabled by default\n\nFound 5 diagnostics\n\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1788247081963}}
{"type":"message","id":"e0b2ba28","parentId":"1c1a989b","timestamp":"2026-09-01T07:18:01.963Z","message":{"role":"toolResult","toolCallId":"call_BcBP9YfkFObRDcXpX3jCSAhB|fc_046f5546d6e20d23016a967c28ce4887d0a8b7a66071126bb3","toolName":"bash","content":[{"type":"text","text":"All checks passed!\n"}],"isError":false,"timestamp":1788247081963}}
{"type":"message","id":"ce990e5a","parentId":"e0b2ba28","timestamp":"2026-09-01T07:18:20.381Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Assessing pycache write impacts**\n\n**Clarifying test artifact tolerance**","startedAt":1788247083775,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967c2baf4087d0b49cecd4e7ead39d\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnw86BkRxUMohqgB3H3mBi5fwHaFANK9N838878VmWJW7U2Lth-_EQ2g9P0vvQM51AAomhEHS2imz6iwvcOKMg2yCuMZzOljFF_ksKFL3ZslC_AWzw5fByw6DKcO0lYOLpThBwBdY-pje4W-En9hT0Wuls3mIx6Kb08A1G1VNkBZjao5onivpSNloFvHH6-SW-NeQExvoscikIFDSF349UaKXsDA7mumlv9TNFB4m6q8Mp3mLti_xdZw6w2WRKl6WIpygjeSqrcLwSyBiBN0TuSxwf2ajdlOnsLIV6ENgbpZ0vMzyYBRzRcQBEOmUGalRqhNr_BfDQW5fBIpOAfmOqDqsE16SGu_7eW4lnfT2cie9VVr4i1V_Kn5GC7Pkwah0AAnMpdgrcXrhDyWJhhGubJWx4mJYHCALBtaRnvwg_COJPPo96FB8eFv8YgZqDyj8UvKRNVASIwvqY6BT9D-WvAHIJhT2Fc4IVEfQK9em90uv0JvS0zTOVtMKKDEgBOPrvgBM5Ana7Q5b6nsep9xJFLx1hdtrAIXT8SUlWywo8arF60o-VJizctA0trD41xCc7wWh-lxBZ31i3cjJMgHBQGQ4QehMTQJyr0hD8Y9fD6d4i1yVPMrZeBJtGe0ta1OEH0XSBTRRYmunMq90gKu1JtfZvEYxx5sxJWCplDTAbz5XCs5ZaX9VLYhhdkYkzV-J6mA-9V2n_-ca9ua-At8RmUMO3MeMED8Tls4okz-P8aiqbo4-4--KkrkPZFO32Ibkvgk8xekGo6-tM5sB-X2UgepIRdjoydJBG3l7LlHS7PpfHFEcB7b2A-lRHDOLofumCmqvc51LXLX__2xYSy-K2BvUWN5EZ6gLIqcHqShe4UxuUK92ezQVKbJ-3chsFBh7ujvaaQgWCv-afcs9aM863SCy4_RBKHMMyokf7NmZ4GCKm3vBxIVnpTUpR-poZkzEyWhWOYWWNLpTKaAK34XY5v9CNAA4wnmdTMxlXkv4SXiAnsfDx2PNHxhhAn8-SEclCCZyFS4BbKTEfnRDbEPsSOGzVDUobCd4a9FeWamcN3_f-VgmZnQugMPc_YYQYihp4YSdER90ueaEXBO2rWezAqBQ_U-hRNvi3EU1VgfDgJ6mgJJYQ_5LTRrgyaves_hlsYjlgnMUBROBGsEt14ZCpE4ZOC74s8UdDuIQB1rdxi42F4KdxkkDpdoCk2safnFE7cUuxp0v9HvtFQtjPAPwD3NVGqgHd1SbGy8qR90uIDsx0CoHpeyy1VVbpzrdRdIq79WYhY-0w4lxbiYnZmqPNrhAyXkBHwEPutoabNGWWpoS1QQKL3Eu9OgC0r2xCV95JVCmSK-9uW-qcKXP3kjamDnnb9B5bFG4l9CyWBkSPL-M1BGEgJehXhE_zNdQ0oMBHnfx9SmqBjK_WA_bxLOgFauiHUCK9a0N78Y31KDrmr7qrOmRIFghGEyfUYDSkL5GppNdCZ0neb_petr1EqhPdOanaFd_fT-dZcrs-GNW5RmGU2SxWvQ5Ks4f1BcpzkGnDhg3qiuvAK5DxdFIMezki3CmJxCIemJGgUkwhnP7YQfHOurc2dc1Vn6ymIQDNn3QCX-eu9syRJgLs3zTmuKnYEOYLuEohUSnb9WEyGMQdMrwr_iv2Rvn1rYWM3lVYyl3AV97GciSBpTdGK3CXVwbjJmwiU7V1cO4R9w5feINg-qINdkGwrdpNInDsdr472_fZXSw0Ss4yiXA1Ku-K3qticHHvgjYLowyQtuFBUk61QN8xc_GDLU8b1P51w8NhOc4-TSBUkQqiOau8dMqeDtgo-ixcBV75Txh_isGUKm52pRavIdga_bMvlgd2C-GZhivgr5mA1X2-lrmUBuZj0qUvu0yrG7f7JHvboYvVM2oYqZxkAEUPxj7Fj8AOQZ_TjB5cjmphbQ-P9hCTszozLgDdD3c6cokO9bWHrHBlIywrTlDudeGMfvWldpjKTxwpTZUaOHfoOJAzZeEmoVKhdF9Pp1AlIiKqbyxwm6z7aqFvBAT2kQfS36I5U6GQ7MUhFtVATep23jY2I31eaFGvsh8eVevmtCoOjR1V1giDJ6U_osb4a-ugpmzQ5iZ9gER-HVjrTh-23HMtBqKD2MK-xp_6c4l_cKeC5oPkKD6xKfDNAW4RWMacaAdM-yXSfygthTS7OkVJ7scKVq35ulzvtf1NwtCSROXbavrRshd_wi_EYnp4DSXyzpf5fetOJcLNVvMejVlvrOG8RM_Tj7kST5kwATYJPZFxItmteqktKjTcYwwkXai7TYLwHqwcJMWbcICAT0MeAeJkuxccwaLqiwzy0oCGoSQnsgkp8iG0USbyGl1COaViR2f9eBjV6T1zBmlFmb43jUkllIVYkx7_ePYFXbXz05aoWRrY2fpzPNfizk8ccKsNU9Nlk2fy6iufLPKdfioXNJBTeutYmvmLscD0aYgXA7ORU9m4qcefULo-Uj_Rljd_xIohH_fZxEAmEgSEKTbUTsZ_pGeVm3Lup1Fv8Ffa_JLj-QJzvUx0muiGddJHqXuPsBnfr07Sbenx8FIfNjC2ZLAnHIrix8Fg7IfJf1XzapS4TPoKFh05IWmPeAqMaFmm3jTxTiV6Xz_atho46S-Fm3DuzUwDjXE44-ve02ug==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Assessing pycache write impacts**\"},{\"type\":\"summary_text\",\"text\":\"**Clarifying test artifact tolerance**\"}]}","endedAt":1788247100307},{"type":"toolCall","id":"call_AItSNiL4qXP9L0WE3Anw3A5Z|fc_046f5546d6e20d23016a967c3c355887d08cbc67c10316f167","name":"bash","arguments":{"command":"python - <<'PY'\nfrom pathlib import Path\np=Path('/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a05bc2/sessions/st_01a05bc2/2026-09-01T06-57-35-910Z_01a05bc2-4ea6-7c1c-9e54-d5320d07400b.jsonl')\nfor line in p.read_text().splitlines():\n    if any(s in line for s in ('pytest -q','basedpyright','ty check','manual_zero','socket','PYTHONPATH')):\n        print(line[:12000])\nPY","timeout":30}},{"type":"toolCall","id":"call_AAI5oPOiQMuKS9JW6xfhPYo8|fc_046f5546d6e20d23016a967c3c357087d095678a725d836413","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py cron/physique_inline_card.py","timeout":120}},{"type":"toolCall","id":"call_ylMqEcU9UHtRCT1skbtLqEI1|fc_046f5546d6e20d23016a967c3c357c87d0baa035344137b3bc","name":"bash","arguments":{"command":"for p in \\\n'/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-candidate' \\\n'/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-transaction-preseal-v15-runtime-authority-r71b-maintenance' \\\n'/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/preflight-v15-runtime-authority-r71b-maintenance' \\\n'/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-authorization-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance' \\\n'/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-executions-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance' \\\n'/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-rehearsal'; do if test -e \"$p\" || test -L \"$p\"; then echo \"PRESENT $p\"; else echo \"ABSENT $p\"; fi; done","timeout":20}},{"type":"toolCall","id":"call_P8rT7JLsWT7kYZh3EZfo6DZD|fc_046f5546d6e20d23016a967c3c358487d080f6216c95469357","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && diff -u gateway/platforms/nutrition_weekly_maintenance_store.py.orig gateway/platforms/nutrition_weekly_maintenance_store.py; diff -u gateway/platforms/nutrition_weekly_dispatcher.py.orig gateway/platforms/nutrition_weekly_dispatcher.py","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":3708,"output":919,"cacheRead":104960,"cacheWrite":0,"reasoning":201,"totalTokens":109587,"cost":{"input":0.01854,"output":0.02757,"cacheRead":0.05248,"cacheWrite":0,"total":0.09859}},"stopReason":"toolUse","timestamp":1788247081998,"responseId":"resp_046f5546d6e20d23016a967c2a69c487d0902cbd2faf4f9124","rawStopReason":"completed"}}
{"type":"message","id":"00afd756","parentId":"ce990e5a","timestamp":"2026-09-01T07:18:20.489Z","message":{"role":"toolResult","toolCallId":"call_AItSNiL4qXP9L0WE3Anw3A5Z|fc_046f5546d6e20d23016a967c3c355887d08cbc67c10316f167","toolName":"bash","content":[{"type":"text","text":"{\"type\":\"message\",\"id\":\"1da2359f\",\"parentId\":\"394bf44c\",\"timestamp\":\"2026-09-01T07:14:10.356Z\",\"message\":{\"role\":\"toolResult\",\"toolCallId\":\"call_6aP3wH5erlwA8cG2srHdjevH|fc_0e854a2061d97735016a967b3a9e8087d0b7b533e1c61d0363\",\"toolName\":\"lsp_diagnostics\",\"content\":[{\"type\":\"text\",\"text\":\"error[basedpyright] (reportMissingImports) at 25:5: 가져오기 \\\".nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\\nerror[basedpyright] (reportUnknownVariableType) at 25:46: \\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 266:10: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownVariableType) at 285:11: 반환 유형을 알 수 없습니다.\"}],\"details\":{\"filePath\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py\",\"severity\":\"all\",\"mode\":\"file\",\"diagnostics\":[{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":24,\"character\":5},\"end\":{\"line\":24,\"character\":38}},\"message\":\"가져오기 \\\".nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\",\"severity\":1,\"code\":\"reportMissingImports\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":24,\"character\":46},\"end\":{\"line\":24,\"character\":76}},\"message\":\"\\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":265,\"character\":10},\"end\":{\"line\":265,\"character\":41}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownParameterType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":284,\"character\":11},\"end\":{\"line\":284,\"character\":79}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}}],\"totalDiagnostics\":4,\"truncated\":false},\"isError\":false,\"timestamp\":1788246850356}}\n{\"type\":\"message\",\"id\":\"a3c0c8ee\",\"parentId\":\"2e759712\",\"timestamp\":\"2026-09-01T07:14:21.537Z\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"thinking\",\"thinking\":\"**Fixing host imports for new module**\",\"startedAt\":1788246852476,\"thinkingSignature\":\"{\\\"id\\\":\\\"rs_0e854a2061d97735016a967b4463f887d0922df30bdfe8a0cd\\\",\\\"type\\\":\\\"reasoning\\\",\\\"content\\\":[],\\\"encrypted_content\\\":\\\"gAAAAABqlntEv_uxvD_s1exVJ0PpsHQKm3MTr-Z7aHu4MJsMQqF73--2MJOC1UfYcuzXqVDYXBCxsgk6OwFM_4p6ZdpBDBJmWT-t3CuwNgaRbu2_B0ravxQt579ruN-WLAz186xAbhgb8CwJNU1MYHyqhcwFz50fM1HEAoKeVzXATPsVIYH7pVsPOOpQX9V3wH_FzF5HmShpVV7AQsTxSn8LvQoz0b47LDQqWuR2I8w7l9P30vhS5e9BZbQ2DkoB-IrrnxqvFvDEZzTE9hnSSZ45mj38R6HWkPTq2bPCqioPU4jwM_Czd927N-yadlJCE7OUlm3RoYA8Z0dhlXoThy6sMgAuRqpmg_OZnhRdTGnP2Sf0_XDbN2w2DUyh_W7v1Zy07gYc_5A2NLJtLihPg2DFJm6n54tnWEZVZ_szBUeFNEAoLg0lSC3wTpMQoaa4l5wCw0ZRjrWuTOVp4J4cm7Icpwa3iUDNE6GlagBkwjah7R-uWCAUpIn8spGsEvjgbmUBV2dxbr3pjzJtAWpN9XusdXF0rvmklDAWs3qNKQDtwYV8GkpuvsjdiDk8vJcLSdYfTkPqXtP4tl8kpiZO9twavSK888zKUygZJV1tLZDpSpCIWpCQmsKG3PKBIVMQzORYV0zEeFGw0RLvo7_ED45FhLpDW7VF2D0_kUIQC-T4WvVQ-qIlPnNZ60DX92IS5jyPhQ6ZcM_H9qOJpQGN7nozoMDNNTA3axrUw4xK7Zf5TJ-x5Tb29ZkpSANhhbsOlEHsYu07MZh5oUbXblllr44rnD2nuLDAC0mBoMTVlxeCWpJem73cReKrg3BAuDYxub5Mut225H6X6Fobbq1wtXtwwuqNjowL1TMcOe5s8s6UOq1F1s269QWiZCDsG2Bg_gMrEs72F-yVN9mM8Z1ljdyu2Xkb2yE7BKrOSiA2HuLmM061zz7oIMzPQMvuqVGB6AAjiUh995-GCvF-rQt3_1-QVO9tQK1WTzPHJN0kUR0-hm0DxynDANwUB27r73P1Ne61O_sinsaifUOonJHSc9DCdh_8FrM1T3z5z_2iA4xutsSpDrsxBRwZ-2-cGOgty6A1M0oOTWgOIhWGND6ajowvmF-qinmyWC5JE28334DZuZq2x9gnSj05kokpMHYTGz_SyHyIQPZ2kBGCiMZFLD083a3F7mHYGLKfMeC7peT5Usk-i585fF4Su2D_8V6N5eWbNcJSBgkaAH2_zFavPZBRkIN8sIJSF8rEIdojvCBQYEOXtCw0nZWHaoZEwLLpxtuAv6oIBJ-kBaafTRv3EgyG_UucgAOUr-5l6Sfut3kwihvqh0_21fbTkbJLarNBjTIWjOhnHrkyNx6DD6A67eNTODR5guB4LV0YgTKUkT5HuEY2PtHUbYM=\\\",\\\"summary\\\":[{\\\"type\\\":\\\"summary_text\\\",\\\"text\\\":\\\"**Fixing host imports for new module**\\\"}]}\",\"endedAt\":1788246853026},{\"type\":\"toolCall\",\"id\":\"call_QbzHIAr6jHB5ncTbdgZJ57AE|fc_0e854a2061d97735016a967b44e3c087d0b2b6be8c08cb9a9f\",\"name\":\"bash\",\"arguments\":{\"command\":\"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\\nfrom pathlib import Path\\nimport difflib\\np=Path('gateway/platforms/telegram_weekly_host_dispatch.py');old=p.read_text();new=old.replace('    from gateway.platforms.nutrition_weekly_dispatcher import (\\\\n        WeeklyOperationsCoordinator,\\\\n        WeeklyOperationsDispatchResult,\\\\n        WeeklyOperationsTask,\\\\n    )\\\\n','    from gateway.platforms.nutrition_weekly_dispatch_result import (\\\\n        WeeklyOperationsDispatchResult,\\\\n    )\\\\n    from gateway.platforms.nutrition_weekly_dispatcher import (\\\\n        WeeklyOperationsCoordinator,\\\\n        WeeklyOperationsTask,\\\\n    )\\\\n').replace('        from gateway.platforms.nutrition_weekly_dispatcher import (\\\\n            WeeklyOperationsCoordinator,\\\\n            WeeklyOperationsDispatchResult,\\\\n        )\\\\n','        from gateway.platforms.nutrition_weekly_dispatch_result import (\\\\n            WeeklyOperationsDispatchResult,\\\\n        )\\\\n        from gateway.platforms.nutrition_weekly_dispatcher import (\\\\n            WeeklyOperationsCoordinator,\\\\n        )\\\\n')\\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\\nPY\\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/telegram_weekly_host_dispatch.py && UV_OFFLINE=1 uv run ruff check gateway/platforms/telegram_weekly_host_dispatch.py\",\"timeout\":180}}],\"api\":\"openai-codex-responses\",\"provider\":\"openai-codex\",\"model\":\"gpt-5.6-sol\",\"usage\":{\"input\":2106,\"output\":516,\"cacheRead\":156160,\"cacheWrite\":0,\"reasoning\":20,\"totalTokens\":158782,\"cost\":{\"input\":0.010530000000000001,\"output\":0.01548,\"cacheRead\":0.07808,\"cacheWrite\":0,\"total\":0.10409}},\"stopReason\":\"toolUse\",\"timestamp\":1788246850362,\"responseId\":\"resp_0e854a2061d97735016a967b42e13087d0b192dfcfce94c732\",\"rawStopReason\":\"completed\"}}\n{\"type\":\"message\",\"id\":\"5ab27095\",\"parentId\":\"f135ff23\",\"timestamp\":\"2026-09-01T07:14:34.029Z\",\"message\":{\"role\":\"toolResult\",\"toolCallId\":\"call_eo16YCIAnJsjnFaZ4uDcD2mp|fc_0e854a2061d97735016a967b56d87c87d0842e4a536a9ed115\",\"toolName\":\"lsp_diagnostics\",\"content\":[{\"type\":\"text\",\"text\":\"error[basedpyright] (reportMissingImports) at 23:9: 가져오기 \\\"gateway.platforms.nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\\nerror[basedpyright] (reportAttributeAccessIssue) at 25:8: \\\"WeeklyOperationsDispatchResult\\\"은(는) 알 수 없는 가져오기 기호입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 25:8: \\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 154:14: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownVariableType) at 163:12: \\\"dispatch_weekly_operations_tick\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘dispatch_weekly_operations_tick’의 유형이 ‘(host: WeeklyOperationsHost, coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 166:15: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 170:14: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportAttributeAccessIssue) at 177:12: \\\"WeeklyOperationsDispatchResult\\\"은(는) 알 수 없는 가져오기 기호입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 177:12: \\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportMissingImports) at 177:13: 가져오기 \\\"gateway.platforms.nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\\nerror[basedpyright] (reportUnknownVariableType) at 182:19: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownVariableType) at 185:8: \\\"dispatch\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownMemberType) at 185:25: \\\"_dispatch_weekly_operations_tick\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘_dispatch_weekly_operations_tick’의 유형이 ‘(coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 188:8: \\\"failures\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘failures’의 유형이 ‘list[Unknown]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 188:24: \\\"failures\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 188:24: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"__init__\\\" 함수의 \\\"iterable\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownMemberType) at 189:8: \\\"extend\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 196:15: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 197:18: 인수 형식을 부분적으로 알 수 없습니다.\\n  인수가 \\\"__new__\\\" 함수의 \\\"iterable\\\" 매개 변수에 해당합니다.\\n  인수 형식이 \\\"list[Unknown]\\\"입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 197:29: \\\"topic59_dispositions\\\" 유형을 알 수 없습니다.\"}],\"details\":{\"filePath\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"severity\":\"all\",\"mode\":\"file\",\"diagnostics\":[{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":22,\"character\":9},\"end\":{\"line\":22,\"character\":59}},\"message\":\"가져오기 \\\"gateway.platforms.nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\",\"severity\":1,\"code\":\"reportMissingImports\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":24,\"character\":8},\"end\":{\"line\":24,\"character\":38}},\"message\":\"\\\"WeeklyOperationsDispatchResult\\\"은(는) 알 수 없는 가져오기 기호입니다.\",\"severity\":1,\"code\":\"reportAttributeAccessIssue\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":24,\"character\":8},\"end\":{\"line\":24,\"character\":38}},\"message\":\"\\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":153,\"character\":14},\"end\":{\"line\":153,\"character\":46}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownParameterType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":162,\"character\":12},\"end\":{\"line\":162,\"character\":43}},\"message\":\"\\\"dispatch_weekly_operations_tick\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘dispatch_weekly_operations_tick’의 유형이 ‘(host: WeeklyOperationsHost, coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":165,\"character\":15},\"end\":{\"line\":167,\"character\":9}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":169,\"character\":14},\"end\":{\"line\":169,\"character\":45}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownParameterType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":176,\"character\":12},\"end\":{\"line\":176,\"character\":42}},\"message\":\"\\\"WeeklyOperationsDispatchResult\\\"은(는) 알 수 없는 가져오기 기호입니다.\",\"severity\":1,\"code\":\"reportAttributeAccessIssue\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":176,\"character\":12},\"end\":{\"line\":176,\"character\":42}},\"message\":\"\\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":176,\"character\":13},\"end\":{\"line\":176,\"character\":63}},\"message\":\"가져오기 \\\"gateway.platforms.nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\",\"severity\":1,\"code\":\"reportMissingImports\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":181,\"character\":19},\"end\":{\"line\":183,\"character\":13}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":184,\"character\":8},\"end\":{\"line\":184,\"character\":16}},\"message\":\"\\\"dispatch\\\" 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":184,\"character\":25},\"end\":{\"line\":184,\"character\":62}},\"message\":\"\\\"_dispatch_weekly_operations_tick\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘_dispatch_weekly_operations_tick’의 유형이 ‘(coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.\",\"severity\":1,\"code\":\"reportUnknownMemberType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":187,\"character\":8},\"end\":{\"line\":187,\"character\":16}},\"message\":\"\\\"failures\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘failures’의 유형이 ‘list[Unknown]’입니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":187,\"character\":24},\"end\":{\"line\":187,\"character\":41}},\"message\":\"\\\"failures\\\" 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownMemberType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":187,\"character\":24},\"end\":{\"line\":187,\"character\":41}},\"message\":\"인수 형식을 알 수 없습니다.\\n  인수가 \\\"__init__\\\" 함수의 \\\"iterable\\\" 매개 변수에 해당합니다.\",\"severity\":1,\"code\":\"reportUnknownArgumentType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":188,\"character\":8},\"end\":{\"line\":188,\"character\":23}},\"message\":\"\\\"extend\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.\",\"severity\":1,\"code\":\"reportUnknownMemberType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":195,\"character\":15},\"end\":{\"line\":197,\"character\":9}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.work\n{\"type\":\"message\",\"id\":\"cf23c180\",\"parentId\":\"f6131fb1\",\"timestamp\":\"2026-09-01T07:14:34.030Z\",\"message\":{\"role\":\"toolResult\",\"toolCallId\":\"call_ltIvcfdPFA5tI0o2CfaXTlNy|fc_0e854a2061d97735016a967b56d8a087d0b3a47d8edd695dfc\",\"toolName\":\"lsp_diagnostics\",\"content\":[{\"type\":\"text\",\"text\":\"Found 675 diagnostics (showing first 200):\\nerror[basedpyright] (reportDeprecated) at 34:19: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \\\"list\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportDeprecated) at 34:25: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportPrivateUsage) at 43:43: \\\"_expand_env_vars\\\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.\\nerror[basedpyright] (reportUnknownVariableType) at 43:43: \\\"_expand_env_vars\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘_expand_env_vars’의 유형이 ‘(obj: Unknown) -> (str | dict[Unknown, str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Unknown] | Unknown] | list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Unknown] | list[Unknown] | Unknown] | Unknown)’입니다.\\nerror[basedpyright] (reportUnknownParameterType) at 49:41: 매개 변수 \\\"job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 49:46: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 56:4: \\\"job_name\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘job_name’의 유형이 ‘Unknown | Literal['cron job']’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 56:15: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 56:34: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownParameterType) at 115:36: 매개 변수 \\\"cfg\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 115:41: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 129:4: \\\"agent_cfg\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘agent_cfg’의 유형이 ‘Unknown | dict[Unknown, Unknown]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 129:16: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 130:4: \\\"user_disabled\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘user_disabled’의 유형이 ‘Unknown | list[Unknown]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 130:20: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 131:8: \\\"name\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 132:19: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"__new__\\\" 함수의 \\\"object\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownParameterType) at 138:35: 매개 변수 \\\"job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 138:40: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownParameterType) at 138:46: 매개 변수 \\\"cfg\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 138:51: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 155:4: \\\"per_job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘per_job’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 155:14: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 157:15: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportPrivateUsage) at 159:44: \\\"_get_platform_tools\\\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.\\nerror[basedpyright] (reportUnknownVariableType) at 159:44: \\\"_get_platform_tools\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘_get_platform_tools’의 유형이 ‘(config: dict[Unknown, Unknown], platform: str, *, include_default_mcp_servers: bool = True) -> Set[str]’입니다.\\nerror[basedpyright] (reportDeprecated) at 218:16: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportDeprecated) at 219:28: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportUnknownVariableType) at 220:0: \\\"_running_job_ids\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘_running_job_ids’의 유형이 ‘set[Unknown]’입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 220:18: ‘set’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportDeprecated) at 227:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportDeprecated) at 230:36: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportUnusedCallResult) at 273:0: 호출 식의 결과가 ‘() -> None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\\nerror[basedpyright] (reportUnknownParameterType) at 292:4: 반환 형식 \\\"dict[Unknown, Unknown] | None\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 292:20: 매개 변수 \\\"job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 292:25: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportDeprecated) at 292:34: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportMissingTypeArgument) at 292:43: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 304:4: \\\"origin\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘origin’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 304:13: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 307:4: \\\"platform\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘platform’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 307:15: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 308:4: \\\"chat_id\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘chat_id’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 308:14: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 310:15: 반환 형식 \\\"dict[Unknown, Unknown]\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 314:32: 매개 변수 \\\"job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 314:37: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 323:4: \\\"origin\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘origin’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 323:13: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 329:8: \\\"value\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘value’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 329:16: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 332:19: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"__new__\\\" 함수의 \\\"object\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownMemberType) at 334:12: \\\"append\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 335:26: 인수 형식을 부분적으로 알 수 없습니다.\\n  인수가 \\\"join\\\" 함수의 \\\"iterable\\\" 매개 변수에 해당합니다.\\n  인수 형식이 \\\"list[Unknown]\\\"입니다.\\nerror[basedpyright] (reportDeprecated) at 396:54: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportUnknownParameterType) at 440:4: 반환 형식 \\\"list[dict[Unknown, Unknown]]\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 440:36: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 454:4: \\\"targets\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘targets’의 유형이 ‘list[dict[Unknown, Unknown]]’입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 454:18: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 462:8: \\\"connected\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘connected’의 유형이 ‘set[Unknown]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 470:8: \\\"append\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘append’의 유형이 ‘(object: dict[Unknown, Unknown], /) -> None’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 478:11: 반환 형식 \\\"list[dict[Unknown, Unknown]]\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 481:4: 반환 형식 \\\"dict[Unknown, Unknown] | None\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 481:36: 매개 변수 \\\"job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 481:41: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportDeprecated) at 481:70: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportMissingTypeArgument) at 481:79: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 484:4: \\\"origin\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘origin’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 491:19: 반환 형식 \\\"dict[Unknown, Unknown]\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 493:31: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"__new__\\\" 함수의 \\\"object\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownMemberType) at 494:29: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 503:20: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 503:20: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"info\\\" 함수의 \\\"args\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownMemberType) at 503:36: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 503:36: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"get\\\" 함수의 \\\"default\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 506:23: 반환 형식 \\\"dict[Unknown, Unknown]\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportPrivateUsage) at 517:44: \\\"_parse_target_ref\\\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.\\\n{\"type\":\"message\",\"id\":\"1c930283\",\"parentId\":\"51a7d049\",\"timestamp\":\"2026-09-01T07:14:47.216Z\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"thinking\",\"thinking\":\"**Diagnosing LSP staleness and import cycles**\\n\\n**Confirming import order and applying patch**\",\"startedAt\":1788246876060,\"thinkingSignature\":\"{\\\"id\\\":\\\"rs_0e854a2061d97735016a967b5bf9a087d09728bb8f77134be9\\\",\\\"type\\\":\\\"reasoning\\\",\\\"content\\\":[],\\\"encrypted_content\\\":\\\"gAAAAABqlntjrKnF1iwk4WbH4s2BroknD5wmT1w_vgObs5AJDNw_qAH-7U84TN3LjUJ9KFqK0-yNz445YA4qf7g8CohqDhD7fmkt8P8kLJBS7nrp_zFBa14005_lUwvHeJLy_qxJdkDuCaIv8YdS7zEaQWDNYuiWxRtEufzSwXRBSVjB5MVyu7cOQ7Sxb4XQvwVEzvgoDlnznH7vgu7ETs7DWuw9hvHn2IU8mZ0Q2CERARtVFupe-Hretyk7OEP7bEY0RQ94K1oMWXySEnVaLwPFsBxH-96N_BfeJNjj8P3BIVVGa1WlKEMJ63GSf2c1zJrIlr6Zj9l421XQDaYtVZUm_I3JODoqAEqjt2DpI_Ed3MUSKZs50wA3BwcGsKOFcsASYP1wIE7mqPfAHsLq8TyW24ann29y4Wq1cdWstYGFjxX8NrObKnUj_14DB6EbfCR7TzHVD-TbOzrbsx0rveLxf2ejLq7Q5C3MQ-f_RljeRkoLwumWwYDoMS1P7Cy9n9O7XVxMF_6v63P0uFYLw0C0CWdpJ21XjbuerzyPhOE6wAI0wYfFSh9W9vtK4kzTgLK3954CzEu0I_vIygtDr5AekiAvDhlKMz_a1OLQD5g-SjyaUzajjrIUhy03s1c_jqJpU8vKBAnLPK4rLj6Yl7tlKylca4AlJsJvvg-pWWKOhw9Bd2T5fULZlUSlMTVd9feQQcz1-0xMCUPJPeIEJGzIGqcc-sggRFjm_u7kCnM_ahrNTyz3rRJpXp268fg8h5mKsLrouZmtteVdQl6wYKvrUI74DGu8VnBnVoIrJ9m39NIgRqdeufIxGIrWFOzQh0eR2boSNvyWe1MR1l_kv9Ff6-bRMBj2tX8bRX8DlbjB6IfrGPnkLmBu1jXCTA4JQa7zE1zVlEvTlA0S_NfpfEBuQf24i2lVNUmuylHzVRilsek_2HyNX6W2XK_8OhzlFkkbF8BeX7AHfgxlDdzhEMPrefx64mOV3_bdW7fY7yuXDZ7E9nDX8YQlQHOdgdZc0Zs3_ZBMF3R1yylpkhrl73x8ZCMjKLUH9pwVixEFtDG95t0e_0g4Uhec0nf1bAlnVnG13mBR00KM8zySsMDFAincgeE-N1wwQtyAupmFPVYMgAQwKKIkOkq2H-n_NtDEha9p4HfTkMFhHxEvZeN26MDC5ZXiSTY94dJ3GnKjfbLCRUYP1gNSte8akYk98Di1_XzlUyMG2XYhaEyp9-hsmR0-C81MqV9NLz6X6lFC-6atBtQrjhTuE8ENqdCyf688fJ-5SEyeOTIlUKWAJhaG-LG0VDOJVAW5vOyIGzWjhg_WsxI-QODyQK3rm8wn4ZpUIhnOnSxUKD9n7EuC4XmzPrNp74Pa-f7FoW4S41qHzDcS5N82gzbSgDcnaAb-z0fT-0qFaTsqvPqC7XwzXJWeGRBBET7RjAqNdXXAssWTxHHZII7vQ9ODL5uuP_n-YW_yC9KyOhaLxEl9RJbZoPj5JsUZmGIZOenq_kdp7zvd7TslgN1F_l_29AXtj1pCgGAAt0kqTDQYfVeRnLW1xU5uhOBf0WQ5yMKuRuQh3SFwArmjaj3ESoYwM0UAHKt5IHTXgiNqmzqtQgnNgzDQTJVLD_yjOV7TuMnDJFgKsK8kdS_KYsPof6U-SsR7QMrSCFy1UFq3f--6bS3El3XBhVbWOsSPpxqNqxdi7Lyvn-L2PxdyKvGD4pzwcA5sAapcygMTNUeBooOE77WLfnCyRcU9Pp-bkkbPT3p0PV7cPExEHk14zSfBWv26FMnypA4Ut5NmqwaJ-MvBe0_TOezDX_iy7CSesBkrcUhw8G76TjKgL3DEruD95LM47TYtEIt_iPQJkmPcoZClm1T-q01fUvhN7aYzZlAyEgIuxW3IFvJhmeT4IuYmSNDTp-LZbIZHLHLf_q8Zc_HyQ6M4jqrJmwNpyV3Abq2YPjS_GSv-qsAtoLmyOd_caP4Jj9Vzx52z0tRWU3Kuh641Rk7UST0ZMsfCwqUDVMKkpkW7-_wGOWtvOHocdlZwgEjvi08B-G9dlLE20uSLbChkDZBlby7S3v1Qxo8kwwOSALQDjtEyPC4xeJELS_kubZgDBFnfpvm1EvK-MUW7wDXpEzdHdOnIzJltub74RPXDQVicJLJdnRVPq_EAbwJ0VM_jtKcLYQ7A0RpeNur_AMZrkqzV3U_34kXGB7PIae0TwjHz2zxWTqMllItqNoCKOlMSEwZ0uJ6ZX-mTiY3HDcX5X6M-ybuoliWLrC2crEln-V71sRoYzpaDouqrWkMVVzOXd-S0o5bq9IexAJWXcZrz6hEHz-OoaHqr893jf3YDnJOV0xk-d4erY_GmqH0AADhl9QhSWzrPZ7IOlfTKFLracyz5tklZbXope0yPe_Mp2USM0dM6TrXims-y88dIJdD8Afv-79RzILBZxL4o715voIjV8F0Zua18nEuGPqN9yrD-sSqIKqbhNsaguNh1CYSQCGwN89lw-Q2WH3gqMrrIEhPJtOsxe8FT72vWiT0HAs7BH5faSYO9Fxva3LWozkTKFufddfpLRsllAtJ5k1j2qD5EdRbVBj6JJ5b7y5xjBEaxchsdSp2X2ILhcOAjfL2TlOo=\\\",\\\"summary\\\":[{\\\"type\\\":\\\"summary_text\\\",\\\"text\\\":\\\"**Diagnosing LSP staleness and import cycles**\\\"},{\\\"type\\\":\\\"summary_text\\\",\\\"text\\\":\\\"**Confirming import order and applying patch**\\\"}]}\",\"endedAt\":1788246883239},{\"type\":\"toolCall\",\"id\":\"call_Q9EvUleyM2TKrp7fxunoqK6F|fc_0e854a2061d97735016a967b63259887d0836f3373a1ee0612\",\"name\":\"bash\",\"arguments\":{\"command\":\"cd '/home/cube/projects/richard/traning coach' && /tmp/nutricoach-t12-bin/apply_patch <<'PATCH'\\n--- a/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json\\n+++ b/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json\\n@@ -52,7 +52,7 @@\\n     \\\"ruff\\\": \\\"PASS\\\",\\n     \\\"ty_strict_targeted\\\": \\\"PASS\\\",\\n     \\\"basedpyright_strict_targeted\\\": \\\"PASS: 0 errors, 0 warnings, 0 notes\\\",\\n-    \\\"lsp\\\": \\\"PASS for changed-file source set after workspace refresh; standalone server initially retained stale pre-patch diagnostics\\\",\\n+    \\\"lsp\\\": \\\"Changed tests and established modules clean; the persistent LSP server retained stale missing-import diagnostics for shell-patched new modules while the fresh strict basedpyright process reported 0 errors. cron/scheduler.py retains its pre-existing legacy diagnostics.\\\",\\n     \\\"compileall\\\": \\\"PASS\\\",\\nPATCH\\npython -m json.tool .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json >/dev/null\",\"timeout\":20}}],\"api\":\"openai-codex-responses\",\"provider\":\"openai-codex\",\"model\":\"gpt-5.6-sol\",\"usage\":{\"input\":12013,\"output\":479,\"cacheRead\":158208,\"cacheWrite\":0,\"reasoning\":185,\"totalTokens\":170700,\"cost\":{\"input\":0.06006500000000001,\"output\":0.01437,\"cacheRead\":0.079104,\"cacheWrite\":0,\"total\":0.15353899999999998}},\"stopReason\":\"toolUse\",\"timestamp\":1788246874049,\"responseId\":\"resp_0e854a2061d97735016a967b5a819c87d0a5fa7fdb58e778a0\",\"rawStopReason\":\"completed\"}}\n{\"type\":\"message\",\"id\":\"634e8ee1\",\"parentId\":\"7f03b59f\",\"timestamp\":\"2026-09-01T07:15:01.337Z\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"thinking\",\"thinking\":\"**Summarizing final deliverable caveats**\\n\\n**Verifying patch rejection absence**\",\"startedAt\":1788246888895,\"thinkingSignature\":\"{\\\"id\\\":\\\"rs_0e854a2061d97735016a967b68ceac87d0bd527c96d71c2d64\\\",\\\"type\\\":\\\"reasoning\\\",\\\"content\\\":[],\\\"encrypted_content\\\":\\\"gAAAAABqlntvae8VKDIPvR4oGOae9H1MbUsSeGVbjnsx_zMQAVHx6EjfZjD_nVr3ipooptpzQO7y_7jwhxJ-dDn_S4LgoHBjrjAgZ2mEZg-T9AZUiTXwQ1gmu5jjTy3FtqtFatmnQTgPhf48Vj8pRV1NdGyVAQM0rFlBk6f8GBwVJttxA2p9nIby46Y0-DdNEl4fSoXEbMK7BYUCiQ9GD4NjEvbMiahZiIgHYD0Eod5yyxSddniOHIDhrDYImtdicNxLRFJHwl1bjabTdwSqQ1Nec1RvTB0QzNiRS5pqt4Vo3mg2Day6lwVWihoPAG2O_b7ZbCJS2gmF3hncrDp6n1OOhU1rvftJTR0c-1fmw3fdc8UZ_ph5Tw8U7Y6ken8oY95hbHyfvj4IEeeaGQDF58Mz4YJLwZGeefuZI7tawjCr_zb-abc1LwfFLPOZ0oGxmBo_0HkXqUOQz4JY2Pq_XulC7VTtb17pSXUTNLNc-8m2RDGjEhwPfuvY7CsEQy85Z48Ol0_VouaQ5nwALTYiakB5CHtxMkC3-0s_T8Faryj-FG2GwsaWgftLSo-54A4cVN8Msfw47P7S3W0HLeMGpyqZszm8LAoliHOveiQSciW40bzB5NQZCUQibKul2YJJSo6lLoLkWzB5dHiYmRd6FlyQ39uud7HdwXdJfvxLrdjo-4lVAS6qiWGbCVwKMSFkG7KcwpIZoQFEo4gQ8VM5YwLKCMTPScmGsIfyqCvZU36ylaJKFvEpbuMmqqaJrmGnj3_P1ASTs7qECbJyVdww9VTj_iGmJhVDU84DYypDLrur8q0VPdU9ANzRg4MsrOwWEHcDO_P3-56HYEVA93AXwDPqYWYQ0_Nyv9wuOe30lwBkJ6FB4C0Q3QBnaI4fcIaS9ik0Df0_s5wnX0w4tfnFnSAzC_td8jHDuBGpQU7Ao7oRre_2F11n8L0ljNob3jgGGJ84XjuHt_nNU8zgy4wmax47N6glM9GJzKAuGYxVvz7HZEY9Vw7uz4ND--d1K8UaQikGCHyhy0w71LbK7mCMh83dNzGsdq4FKsa2YNCEsMAo2eUMktC6XALL4R0ZOyn-l4t58_8FxnoTCyfy9B5KgpQXYQM191gNhC0dE7HBC9sWMwGlhGzfP6ZTYBSZJhXadSQEU8CIbeKwNp3KT4PY9xo6lkthYucuoy4pB5yPCbbng-vSsmdntGEE4B8W8AmOGlGjAtYprx5itWbZK3UvPs4uxLJ3OkeR0GwVb-xHv6ON9roHYlycuDMxjYoUqrbcSchBwzMnYGf1Eoec4pnIWalugSPmP7oNypiaXn8PV9WnxNhbHjYvFHTZsK_7zGgYEg009PcOpsWlmTaTVB8ZggtOmbmEmTGqTEVrAV29oWXccGlQ3LSCNxQEdVX3IsrCy49e884tk0YlPeBbZ2z8kSbX54uyOaA1zE7JPPPhyPJTuZ1ZNLzmoaKfnKu14XtkdWb_PpwQGqRF5HurZNb5m-5RtDru7YW0Cr51a7dttUqoovB6PzsRjX2u0MJBB1jaL7734OtC5csqwFwMUP9BPgksqQt-xxez38xacRQFNNHCxLjfzhEtGEqki4pqusCH8DJ486OTYFKiPxFR59Xr8nx8vjm_l2sjzg0qtlOXuffhJ_XzFI88vwjQNm0iESi7SiTr-tGx_JEbWGaGyJuDfIRU2XSH152R7hSRyAsZJNV9VvDPP9WflZX3zj8ciMZFCMyNP0fV5mBD9xo5QHqCwFmPXjXotY3pyn9EUOo8PN8hQJE2zvfw3murr815-HOrfbniPFNTFzw7AkKXnAXQWfiQTSxU1_IOTn2WWK6fYHFL0sJr39JMJghghAzTFdePsj3YMas0SkDW_oRUkRz5SrSmIWKVSY0fzoacpE3gfazWpmLHxLUzhv2IKjq2rmGaHs580t3xThzp-p0_QZk8o35nOKw3BNXpRWjluTgyzzBbgK5Tpvq0ucxx0veC2X5BU5M5Dt37hsIhyd1VEmT8TLRlHI-uUkRDz7qw3XT29Rf5YWOOxV-ujg6Dqhkrq3QeVuyOEjEZtSc-jmkb43Oithv1D3YvdUFA1kArE95CyGGBJ5qMWP1Fb7WiV1AbYMVtfmbX8ufcVWt3OFltqeTnhTTiYF6pKitO8GqxdG_u7L7CkhCsHo1l0kO23iEsnfaa14Z7nqP_sMHPcyBw3kUUbp7lg_OYMMCPGrwSoVf-_H4S0sTpzASuZVsK51qdQsS2kCsIA8t4GTx0Egj0Dwnup1zybLfQe3PAvuNY0Lm8iAt3z9qNwInMzRLFjAJdH8me1wUad1BnvcUkfhxbnSPCocF05LnmzZ0nRRSBIbR1HCwHnD-gRiyDs6w2urIt6lo3KSjk8QtDRAL_QaW9EfvTxoWv8fsYE9IaN16omP7ishJ6FVEFqsp03b5vzWmDgR1978fLJ1tBpA9oNxK7Sqj2RU-m68OGI3wf7_K9suqEhGgxQ4Qm9tpBVvLCS7qakwwQ6-FgCgp07H_7xTB_KCOoSXyJIvaBvXWJvMfDOM7UcdWoxPWQPKnwOtU=\\\",\\\"summary\\\":[{\\\"type\\\":\\\"summary_text\\\",\\\"text\\\":\\\"**Summarizing final deliverable caveats**\\\"},{\\\"type\\\":\\\"summary_text\\\",\\\"text\\\":\\\"**Verifying patch rejection absence**\\\"}]}\",\"endedAt\":1788246895784},{\"type\":\"text\",\"text\":\"I read this as completion reporting - the source-only r71b maintenance runtime is implemented and verified.\\n\\nImplemented the typed maintenance contract/store, secure one-use gate, pre-claim suppression, crash recovery, idempotence, next-day release, and publication-to-scheduler propagation.\\n\\nVerification:\\n- 189 affected tests passed.\\n- Manual QA: two maintenance no-ops, one audit, zero current-day send/edit/network calls; tomorrow sent once via fake transport.\\n- Ruff, ty, targeted basedpyright, compile/import, and no-excuse checks passed.\\n- No Git, network, provider, customer, package, preseal, live, profile, credential, root, or commit actions.\\n- New runtime files are under 250 pure LOC; dispatcher is exactly 250.\\n- Persistent LSP retained stale new-module import diagnostics; fresh basedpyright reported zero errors.\\n\\nEvidence and DoneClaim:\\n\\n`/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json`\\n\\nArchitectural review: responsibilities are separated, boundary JSON is strictly parsed, decision variants are exhaustive, no type escape hatches or sleeps were introduced, and zero-call behavior is regression-tested.\",\"textSignature\":\"{\\\"v\\\":1,\\\"id\\\":\\\"msg_0e854a2061d97735016a967b6fb33087d0972b9679e935af39\\\",\\\"phase\\\":\\\"final_answer\\\"}\"}],\"api\":\"openai-codex-responses\",\"provider\":\"openai-codex\",\"model\":\"gpt-5.6-sol\",\"usage\":{\"input\":1285,\"output\":455,\"cacheRead\":169472,\"cacheWrite\":0,\"reasoning\":194,\"totalTokens\":171212,\"cost\":{\"input\":0.006425,\"output\":0.01365,\"cacheRead\":0.08473599999999999,\"cacheWrite\":0,\"total\":0.10481099999999999}},\"stopReason\":\"stop\",\"timestamp\":1788246887272,\"responseId\":\"resp_0e854a2061d97735016a967b67a38887d0a974e229a32a4f42\",\"rawStopReason\":\"completed\"}}\n\n[Showing lines 37-42 of 42 (50.0KB limit). Full output: /home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-ee54ad3979ba0d1c.log]"}],"details":{"truncation":{"content":"{\"type\":\"message\",\"id\":\"1da2359f\",\"parentId\":\"394bf44c\",\"timestamp\":\"2026-09-01T07:14:10.356Z\",\"message\":{\"role\":\"toolResult\",\"toolCallId\":\"call_6aP3wH5erlwA8cG2srHdjevH|fc_0e854a2061d97735016a967b3a9e8087d0b7b533e1c61d0363\",\"toolName\":\"lsp_diagnostics\",\"content\":[{\"type\":\"text\",\"text\":\"error[basedpyright] (reportMissingImports) at 25:5: 가져오기 \\\".nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\\nerror[basedpyright] (reportUnknownVariableType) at 25:46: \\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 266:10: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownVariableType) at 285:11: 반환 유형을 알 수 없습니다.\"}],\"details\":{\"filePath\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py\",\"severity\":\"all\",\"mode\":\"file\",\"diagnostics\":[{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":24,\"character\":5},\"end\":{\"line\":24,\"character\":38}},\"message\":\"가져오기 \\\".nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\",\"severity\":1,\"code\":\"reportMissingImports\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":24,\"character\":46},\"end\":{\"line\":24,\"character\":76}},\"message\":\"\\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":265,\"character\":10},\"end\":{\"line\":265,\"character\":41}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownParameterType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":284,\"character\":11},\"end\":{\"line\":284,\"character\":79}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}}],\"totalDiagnostics\":4,\"truncated\":false},\"isError\":false,\"timestamp\":1788246850356}}\n{\"type\":\"message\",\"id\":\"a3c0c8ee\",\"parentId\":\"2e759712\",\"timestamp\":\"2026-09-01T07:14:21.537Z\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"thinking\",\"thinking\":\"**Fixing host imports for new module**\",\"startedAt\":1788246852476,\"thinkingSignature\":\"{\\\"id\\\":\\\"rs_0e854a2061d97735016a967b4463f887d0922df30bdfe8a0cd\\\",\\\"type\\\":\\\"reasoning\\\",\\\"content\\\":[],\\\"encrypted_content\\\":\\\"gAAAAABqlntEv_uxvD_s1exVJ0PpsHQKm3MTr-Z7aHu4MJsMQqF73--2MJOC1UfYcuzXqVDYXBCxsgk6OwFM_4p6ZdpBDBJmWT-t3CuwNgaRbu2_B0ravxQt579ruN-WLAz186xAbhgb8CwJNU1MYHyqhcwFz50fM1HEAoKeVzXATPsVIYH7pVsPOOpQX9V3wH_FzF5HmShpVV7AQsTxSn8LvQoz0b47LDQqWuR2I8w7l9P30vhS5e9BZbQ2DkoB-IrrnxqvFvDEZzTE9hnSSZ45mj38R6HWkPTq2bPCqioPU4jwM_Czd927N-yadlJCE7OUlm3RoYA8Z0dhlXoThy6sMgAuRqpmg_OZnhRdTGnP2Sf0_XDbN2w2DUyh_W7v1Zy07gYc_5A2NLJtLihPg2DFJm6n54tnWEZVZ_szBUeFNEAoLg0lSC3wTpMQoaa4l5wCw0ZRjrWuTOVp4J4cm7Icpwa3iUDNE6GlagBkwjah7R-uWCAUpIn8spGsEvjgbmUBV2dxbr3pjzJtAWpN9XusdXF0rvmklDAWs3qNKQDtwYV8GkpuvsjdiDk8vJcLSdYfTkPqXtP4tl8kpiZO9twavSK888zKUygZJV1tLZDpSpCIWpCQmsKG3PKBIVMQzORYV0zEeFGw0RLvo7_ED45FhLpDW7VF2D0_kUIQC-T4WvVQ-qIlPnNZ60DX92IS5jyPhQ6ZcM_H9qOJpQGN7nozoMDNNTA3axrUw4xK7Zf5TJ-x5Tb29ZkpSANhhbsOlEHsYu07MZh5oUbXblllr44rnD2nuLDAC0mBoMTVlxeCWpJem73cReKrg3BAuDYxub5Mut225H6X6Fobbq1wtXtwwuqNjowL1TMcOe5s8s6UOq1F1s269QWiZCDsG2Bg_gMrEs72F-yVN9mM8Z1ljdyu2Xkb2yE7BKrOSiA2HuLmM061zz7oIMzPQMvuqVGB6AAjiUh995-GCvF-rQt3_1-QVO9tQK1WTzPHJN0kUR0-hm0DxynDANwUB27r73P1Ne61O_sinsaifUOonJHSc9DCdh_8FrM1T3z5z_2iA4xutsSpDrsxBRwZ-2-cGOgty6A1M0oOTWgOIhWGND6ajowvmF-qinmyWC5JE28334DZuZq2x9gnSj05kokpMHYTGz_SyHyIQPZ2kBGCiMZFLD083a3F7mHYGLKfMeC7peT5Usk-i585fF4Su2D_8V6N5eWbNcJSBgkaAH2_zFavPZBRkIN8sIJSF8rEIdojvCBQYEOXtCw0nZWHaoZEwLLpxtuAv6oIBJ-kBaafTRv3EgyG_UucgAOUr-5l6Sfut3kwihvqh0_21fbTkbJLarNBjTIWjOhnHrkyNx6DD6A67eNTODR5guB4LV0YgTKUkT5HuEY2PtHUbYM=\\\",\\\"summary\\\":[{\\\"type\\\":\\\"summary_text\\\",\\\"text\\\":\\\"**Fixing host imports for new module**\\\"}]}\",\"endedAt\":1788246853026},{\"type\":\"toolCall\",\"id\":\"call_QbzHIAr6jHB5ncTbdgZJ57AE|fc_0e854a2061d97735016a967b44e3c087d0b2b6be8c08cb9a9f\",\"name\":\"bash\",\"arguments\":{\"command\":\"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\\nfrom pathlib import Path\\nimport difflib\\np=Path('gateway/platforms/telegram_weekly_host_dispatch.py');old=p.read_text();new=old.replace('    from gateway.platforms.nutrition_weekly_dispatcher import (\\\\n        WeeklyOperationsCoordinator,\\\\n        WeeklyOperationsDispatchResult,\\\\n        WeeklyOperationsTask,\\\\n    )\\\\n','    from gateway.platforms.nutrition_weekly_dispatch_result import (\\\\n        WeeklyOperationsDispatchResult,\\\\n    )\\\\n    from gateway.platforms.nutrition_weekly_dispatcher import (\\\\n        WeeklyOperationsCoordinator,\\\\n        WeeklyOperationsTask,\\\\n    )\\\\n').replace('        from gateway.platforms.nutrition_weekly_dispatcher import (\\\\n            WeeklyOperationsCoordinator,\\\\n            WeeklyOperationsDispatchResult,\\\\n        )\\\\n','        from gateway.platforms.nutrition_weekly_dispatch_result import (\\\\n            WeeklyOperationsDispatchResult,\\\\n        )\\\\n        from gateway.platforms.nutrition_weekly_dispatcher import (\\\\n            WeeklyOperationsCoordinator,\\\\n        )\\\\n')\\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\\nPY\\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/telegram_weekly_host_dispatch.py && UV_OFFLINE=1 uv run ruff check gateway/platforms/telegram_weekly_host_dispatch.py\",\"timeout\":180}}],\"api\":\"openai-codex-responses\",\"provider\":\"openai-codex\",\"model\":\"gpt-5.6-sol\",\"usage\":{\"input\":2106,\"output\":516,\"cacheRead\":156160,\"cacheWrite\":0,\"reasoning\":20,\"totalTokens\":158782,\"cost\":{\"input\":0.010530000000000001,\"output\":0.01548,\"cacheRead\":0.07808,\"cacheWrite\":0,\"total\":0.10409}},\"stopReason\":\"toolUse\",\"timestamp\":1788246850362,\"responseId\":\"resp_0e854a2061d97735016a967b42e13087d0b192dfcfce94c732\",\"rawStopReason\":\"completed\"}}\n{\"type\":\"message\",\"id\":\"5ab27095\",\"parentId\":\"f135ff23\",\"timestamp\":\"2026-09-01T07:14:34.029Z\",\"message\":{\"role\":\"toolResult\",\"toolCallId\":\"call_eo16YCIAnJsjnFaZ4uDcD2mp|fc_0e854a2061d97735016a967b56d87c87d0842e4a536a9ed115\",\"toolName\":\"lsp_diagnostics\",\"content\":[{\"type\":\"text\",\"text\":\"error[basedpyright] (reportMissingImports) at 23:9: 가져오기 \\\"gateway.platforms.nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\\nerror[basedpyright] (reportAttributeAccessIssue) at 25:8: \\\"WeeklyOperationsDispatchResult\\\"은(는) 알 수 없는 가져오기 기호입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 25:8: \\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 154:14: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownVariableType) at 163:12: \\\"dispatch_weekly_operations_tick\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘dispatch_weekly_operations_tick’의 유형이 ‘(host: WeeklyOperationsHost, coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 166:15: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 170:14: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportAttributeAccessIssue) at 177:12: \\\"WeeklyOperationsDispatchResult\\\"은(는) 알 수 없는 가져오기 기호입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 177:12: \\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportMissingImports) at 177:13: 가져오기 \\\"gateway.platforms.nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\\nerror[basedpyright] (reportUnknownVariableType) at 182:19: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownVariableType) at 185:8: \\\"dispatch\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownMemberType) at 185:25: \\\"_dispatch_weekly_operations_tick\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘_dispatch_weekly_operations_tick’의 유형이 ‘(coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 188:8: \\\"failures\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘failures’의 유형이 ‘list[Unknown]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 188:24: \\\"failures\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 188:24: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"__init__\\\" 함수의 \\\"iterable\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownMemberType) at 189:8: \\\"extend\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 196:15: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 197:18: 인수 형식을 부분적으로 알 수 없습니다.\\n  인수가 \\\"__new__\\\" 함수의 \\\"iterable\\\" 매개 변수에 해당합니다.\\n  인수 형식이 \\\"list[Unknown]\\\"입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 197:29: \\\"topic59_dispositions\\\" 유형을 알 수 없습니다.\"}],\"details\":{\"filePath\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"severity\":\"all\",\"mode\":\"file\",\"diagnostics\":[{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":22,\"character\":9},\"end\":{\"line\":22,\"character\":59}},\"message\":\"가져오기 \\\"gateway.platforms.nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\",\"severity\":1,\"code\":\"reportMissingImports\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":24,\"character\":8},\"end\":{\"line\":24,\"character\":38}},\"message\":\"\\\"WeeklyOperationsDispatchResult\\\"은(는) 알 수 없는 가져오기 기호입니다.\",\"severity\":1,\"code\":\"reportAttributeAccessIssue\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":24,\"character\":8},\"end\":{\"line\":24,\"character\":38}},\"message\":\"\\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":153,\"character\":14},\"end\":{\"line\":153,\"character\":46}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownParameterType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":162,\"character\":12},\"end\":{\"line\":162,\"character\":43}},\"message\":\"\\\"dispatch_weekly_operations_tick\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘dispatch_weekly_operations_tick’의 유형이 ‘(host: WeeklyOperationsHost, coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":165,\"character\":15},\"end\":{\"line\":167,\"character\":9}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":169,\"character\":14},\"end\":{\"line\":169,\"character\":45}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownParameterType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":176,\"character\":12},\"end\":{\"line\":176,\"character\":42}},\"message\":\"\\\"WeeklyOperationsDispatchResult\\\"은(는) 알 수 없는 가져오기 기호입니다.\",\"severity\":1,\"code\":\"reportAttributeAccessIssue\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":176,\"character\":12},\"end\":{\"line\":176,\"character\":42}},\"message\":\"\\\"WeeklyOperationsDispatchResult\\\" 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":176,\"character\":13},\"end\":{\"line\":176,\"character\":63}},\"message\":\"가져오기 \\\"gateway.platforms.nutrition_weekly_dispatch_result\\\"을(를) 확인할 수 없습니다.\",\"severity\":1,\"code\":\"reportMissingImports\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingImports\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":181,\"character\":19},\"end\":{\"line\":183,\"character\":13}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":184,\"character\":8},\"end\":{\"line\":184,\"character\":16}},\"message\":\"\\\"dispatch\\\" 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":184,\"character\":25},\"end\":{\"line\":184,\"character\":62}},\"message\":\"\\\"_dispatch_weekly_operations_tick\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘_dispatch_weekly_operations_tick’의 유형이 ‘(coordinator: WeeklyOperationsCoordinator, tasks: Sequence[WeeklyOperationsTask], *, local_now: datetime) -> CoroutineType[Any, Any, Unknown]’입니다.\",\"severity\":1,\"code\":\"reportUnknownMemberType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":187,\"character\":8},\"end\":{\"line\":187,\"character\":16}},\"message\":\"\\\"failures\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘failures’의 유형이 ‘list[Unknown]’입니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":187,\"character\":24},\"end\":{\"line\":187,\"character\":41}},\"message\":\"\\\"failures\\\" 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownMemberType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":187,\"character\":24},\"end\":{\"line\":187,\"character\":41}},\"message\":\"인수 형식을 알 수 없습니다.\\n  인수가 \\\"__init__\\\" 함수의 \\\"iterable\\\" 매개 변수에 해당합니다.\",\"severity\":1,\"code\":\"reportUnknownArgumentType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":188,\"character\":8},\"end\":{\"line\":188,\"character\":23}},\"message\":\"\\\"extend\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘extend’의 유형이 ‘(iterable: Iterable[Unknown], /) -> None’입니다.\",\"severity\":1,\"code\":\"reportUnknownMemberType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType\"}}},{\"file\":\"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py\",\"diagnostic\":{\"range\":{\"start\":{\"line\":195,\"character\":15},\"end\":{\"line\":197,\"character\":9}},\"message\":\"반환 유형을 알 수 없습니다.\",\"severity\":1,\"code\":\"reportUnknownVariableType\",\"source\":\"basedpyright\",\"codeDescription\":{\"href\":\"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType\"}}},{\"file\":\"/home/cube/projects/richard/.work\n{\"type\":\"message\",\"id\":\"cf23c180\",\"parentId\":\"f6131fb1\",\"timestamp\":\"2026-09-01T07:14:34.030Z\",\"message\":{\"role\":\"toolResult\",\"toolCallId\":\"call_ltIvcfdPFA5tI0o2CfaXTlNy|fc_0e854a2061d97735016a967b56d8a087d0b3a47d8edd695dfc\",\"toolName\":\"lsp_diagnostics\",\"content\":[{\"type\":\"text\",\"text\":\"Found 675 diagnostics (showing first 200):\\nerror[basedpyright] (reportDeprecated) at 34:19: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \\\"list\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportDeprecated) at 34:25: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportPrivateUsage) at 43:43: \\\"_expand_env_vars\\\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.\\nerror[basedpyright] (reportUnknownVariableType) at 43:43: \\\"_expand_env_vars\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘_expand_env_vars’의 유형이 ‘(obj: Unknown) -> (str | dict[Unknown, str | dict[Unknown, Unknown] | list[str | dict[Unknown, Unknown] | list[Unknown] | Unknown] | Unknown] | list[str | dict[Unknown, str | dict[Unknown, Unknown] | list[Unknown] | Unknown] | list[Unknown] | Unknown] | Unknown)’입니다.\\nerror[basedpyright] (reportUnknownParameterType) at 49:41: 매개 변수 \\\"job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 49:46: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 56:4: \\\"job_name\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘job_name’의 유형이 ‘Unknown | Literal['cron job']’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 56:15: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 56:34: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownParameterType) at 115:36: 매개 변수 \\\"cfg\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 115:41: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 129:4: \\\"agent_cfg\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘agent_cfg’의 유형이 ‘Unknown | dict[Unknown, Unknown]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 129:16: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 130:4: \\\"user_disabled\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘user_disabled’의 유형이 ‘Unknown | list[Unknown]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 130:20: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Unknown | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 131:8: \\\"name\\\" 유형을 알 수 없습니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 132:19: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"__new__\\\" 함수의 \\\"object\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownParameterType) at 138:35: 매개 변수 \\\"job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 138:40: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownParameterType) at 138:46: 매개 변수 \\\"cfg\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 138:51: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 155:4: \\\"per_job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘per_job’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 155:14: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 157:15: 반환 유형을 알 수 없습니다.\\nerror[basedpyright] (reportPrivateUsage) at 159:44: \\\"_get_platform_tools\\\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.\\nerror[basedpyright] (reportUnknownVariableType) at 159:44: \\\"_get_platform_tools\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘_get_platform_tools’의 유형이 ‘(config: dict[Unknown, Unknown], platform: str, *, include_default_mcp_servers: bool = True) -> Set[str]’입니다.\\nerror[basedpyright] (reportDeprecated) at 218:16: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportDeprecated) at 219:28: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportUnknownVariableType) at 220:0: \\\"_running_job_ids\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘_running_job_ids’의 유형이 ‘set[Unknown]’입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 220:18: ‘set’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportDeprecated) at 227:18: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportDeprecated) at 230:36: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportUnusedCallResult) at 273:0: 호출 식의 결과가 ‘() -> None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\\nerror[basedpyright] (reportUnknownParameterType) at 292:4: 반환 형식 \\\"dict[Unknown, Unknown] | None\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 292:20: 매개 변수 \\\"job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 292:25: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportDeprecated) at 292:34: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportMissingTypeArgument) at 292:43: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 304:4: \\\"origin\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘origin’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 304:13: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 307:4: \\\"platform\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘platform’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 307:15: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 308:4: \\\"chat_id\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘chat_id’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 308:14: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 310:15: 반환 형식 \\\"dict[Unknown, Unknown]\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 314:32: 매개 변수 \\\"job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 314:37: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 323:4: \\\"origin\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘origin’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 323:13: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 329:8: \\\"value\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘value’의 유형이 ‘Unknown | None’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 329:16: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 332:19: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"__new__\\\" 함수의 \\\"object\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownMemberType) at 334:12: \\\"append\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘append’의 유형이 ‘(object: Unknown, /) -> None’입니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 335:26: 인수 형식을 부분적으로 알 수 없습니다.\\n  인수가 \\\"join\\\" 함수의 \\\"iterable\\\" 매개 변수에 해당합니다.\\n  인수 형식이 \\\"list[Unknown]\\\"입니다.\\nerror[basedpyright] (reportDeprecated) at 396:54: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportUnknownParameterType) at 440:4: 반환 형식 \\\"list[dict[Unknown, Unknown]]\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 440:36: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 454:4: \\\"targets\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘targets’의 유형이 ‘list[dict[Unknown, Unknown]]’입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 454:18: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 462:8: \\\"connected\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘connected’의 유형이 ‘set[Unknown]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 470:8: \\\"append\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘append’의 유형이 ‘(object: dict[Unknown, Unknown], /) -> None’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 478:11: 반환 형식 \\\"list[dict[Unknown, Unknown]]\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 481:4: 반환 형식 \\\"dict[Unknown, Unknown] | None\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportUnknownParameterType) at 481:36: 매개 변수 \\\"job\\\"의 형식을 부분적으로 알 수 없습니다.\\n  매개 변수 형식은 \\\"dict[Unknown, Unknown]\\\"입니다.\\nerror[basedpyright] (reportMissingTypeArgument) at 481:41: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportDeprecated) at 481:70: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \\\"| None\\\"을(를) 사용하세요.\\nerror[basedpyright] (reportMissingTypeArgument) at 481:79: ‘dict’ 제네릭 클래스에 대한 형식 인수가 필요합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 484:4: \\\"origin\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘origin’의 유형이 ‘dict[Unknown, Unknown] | None’입니다.\\nerror[basedpyright] (reportUnknownVariableType) at 491:19: 반환 형식 \\\"dict[Unknown, Unknown]\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 493:31: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"__new__\\\" 함수의 \\\"object\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownMemberType) at 494:29: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownMemberType) at 503:20: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 503:20: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"info\\\" 함수의 \\\"args\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownMemberType) at 503:36: \\\"get\\\"의 형식을 부분적으로 알 수 없습니다.\\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\\nerror[basedpyright] (reportUnknownArgumentType) at 503:36: 인수 형식을 알 수 없습니다.\\n  인수가 \\\"get\\\" 함수의 \\\"default\\\" 매개 변수에 해당합니다.\\nerror[basedpyright] (reportUnknownVariableType) at 506:23: 반환 형식 \\\"dict[Unknown, Unknown]\\\"을(를) 부분적으로 알 수 없습니다.\\nerror[basedpyright] (reportPrivateUsage) at 517:44: \\\"_parse_target_ref\\\"은(는) 프라이빗이며 선언된 모듈 외부에서 사용됩니다.\\\n{\"type\":\"message\",\"id\":\"1c930283\",\"parentId\":\"51a7d049\",\"timestamp\":\"2026-09-01T07:14:47.216Z\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"thinking\",\"thinking\":\"**Diagnosing LSP staleness and import cycles**\\n\\n**Confirming import order and applying patch**\",\"startedAt\":1788246876060,\"thinkingSignature\":\"{\\\"id\\\":\\\"rs_0e854a2061d97735016a967b5bf9a087d09728bb8f77134be9\\\",\\\"type\\\":\\\"reasoning\\\",\\\"content\\\":[],\\\"encrypted_content\\\":\\\"gAAAAABqlntjrKnF1iwk4WbH4s2BroknD5wmT1w_vgObs5AJDNw_qAH-7U84TN3LjUJ9KFqK0-yNz445YA4qf7g8CohqDhD7fmkt8P8kLJBS7nrp_zFBa14005_lUwvHeJLy_qxJdkDuCaIv8YdS7zEaQWDNYuiWxRtEufzSwXRBSVjB5MVyu7cOQ7Sxb4XQvwVEzvgoDlnznH7vgu7ETs7DWuw9hvHn2IU8mZ0Q2CERARtVFupe-Hretyk7OEP7bEY0RQ94K1oMWXySEnVaLwPFsBxH-96N_BfeJNjj8P3BIVVGa1WlKEMJ63GSf2c1zJrIlr6Zj9l421XQDaYtVZUm_I3JODoqAEqjt2DpI_Ed3MUSKZs50wA3BwcGsKOFcsASYP1wIE7mqPfAHsLq8TyW24ann29y4Wq1cdWstYGFjxX8NrObKnUj_14DB6EbfCR7TzHVD-TbOzrbsx0rveLxf2ejLq7Q5C3MQ-f_RljeRkoLwumWwYDoMS1P7Cy9n9O7XVxMF_6v63P0uFYLw0C0CWdpJ21XjbuerzyPhOE6wAI0wYfFSh9W9vtK4kzTgLK3954CzEu0I_vIygtDr5AekiAvDhlKMz_a1OLQD5g-SjyaUzajjrIUhy03s1c_jqJpU8vKBAnLPK4rLj6Yl7tlKylca4AlJsJvvg-pWWKOhw9Bd2T5fULZlUSlMTVd9feQQcz1-0xMCUPJPeIEJGzIGqcc-sggRFjm_u7kCnM_ahrNTyz3rRJpXp268fg8h5mKsLrouZmtteVdQl6wYKvrUI74DGu8VnBnVoIrJ9m39NIgRqdeufIxGIrWFOzQh0eR2boSNvyWe1MR1l_kv9Ff6-bRMBj2tX8bRX8DlbjB6IfrGPnkLmBu1jXCTA4JQa7zE1zVlEvTlA0S_NfpfEBuQf24i2lVNUmuylHzVRilsek_2HyNX6W2XK_8OhzlFkkbF8BeX7AHfgxlDdzhEMPrefx64mOV3_bdW7fY7yuXDZ7E9nDX8YQlQHOdgdZc0Zs3_ZBMF3R1yylpkhrl73x8ZCMjKLUH9pwVixEFtDG95t0e_0g4Uhec0nf1bAlnVnG13mBR00KM8zySsMDFAincgeE-N1wwQtyAupmFPVYMgAQwKKIkOkq2H-n_NtDEha9p4HfTkMFhHxEvZeN26MDC5ZXiSTY94dJ3GnKjfbLCRUYP1gNSte8akYk98Di1_XzlUyMG2XYhaEyp9-hsmR0-C81MqV9NLz6X6lFC-6atBtQrjhTuE8ENqdCyf688fJ-5SEyeOTIlUKWAJhaG-LG0VDOJVAW5vOyIGzWjhg_WsxI-QODyQK3rm8wn4ZpUIhnOnSxUKD9n7EuC4XmzPrNp74Pa-f7FoW4S41qHzDcS5N82gzbSgDcnaAb-z0fT-0qFaTsqvPqC7XwzXJWeGRBBET7RjAqNdXXAssWTxHHZII7vQ9ODL5uuP_n-YW_yC9KyOhaLxEl9RJbZoPj5JsUZmGIZOenq_kdp7zvd7TslgN1F_l_29AXtj1pCgGAAt0kqTDQYfVeRnLW1xU5uhOBf0WQ5yMKuRuQh3SFwArmjaj3ESoYwM0UAHKt5IHTXgiNqmzqtQgnNgzDQTJVLD_yjOV7TuMnDJFgKsK8kdS_KYsPof6U-SsR7QMrSCFy1UFq3f--6bS3El3XBhVbWOsSPpxqNqxdi7Lyvn-L2PxdyKvGD4pzwcA5sAapcygMTNUeBooOE77WLfnCyRcU9Pp-bkkbPT3p0PV7cPExEHk14zSfBWv26FMnypA4Ut5NmqwaJ-MvBe0_TOezDX_iy7CSesBkrcUhw8G76TjKgL3DEruD95LM47TYtEIt_iPQJkmPcoZClm1T-q01fUvhN7aYzZlAyEgIuxW3IFvJhmeT4IuYmSNDTp-LZbIZHLHLf_q8Zc_HyQ6M4jqrJmwNpyV3Abq2YPjS_GSv-qsAtoLmyOd_caP4Jj9Vzx52z0tRWU3Kuh641Rk7UST0ZMsfCwqUDVMKkpkW7-_wGOWtvOHocdlZwgEjvi08B-G9dlLE20uSLbChkDZBlby7S3v1Qxo8kwwOSALQDjtEyPC4xeJELS_kubZgDBFnfpvm1EvK-MUW7wDXpEzdHdOnIzJltub74RPXDQVicJLJdnRVPq_EAbwJ0VM_jtKcLYQ7A0RpeNur_AMZrkqzV3U_34kXGB7PIae0TwjHz2zxWTqMllItqNoCKOlMSEwZ0uJ6ZX-mTiY3HDcX5X6M-ybuoliWLrC2crEln-V71sRoYzpaDouqrWkMVVzOXd-S0o5bq9IexAJWXcZrz6hEHz-OoaHqr893jf3YDnJOV0xk-d4erY_GmqH0AADhl9QhSWzrPZ7IOlfTKFLracyz5tklZbXope0yPe_Mp2USM0dM6TrXims-y88dIJdD8Afv-79RzILBZxL4o715voIjV8F0Zua18nEuGPqN9yrD-sSqIKqbhNsaguNh1CYSQCGwN89lw-Q2WH3gqMrrIEhPJtOsxe8FT72vWiT0HAs7BH5faSYO9Fxva3LWozkTKFufddfpLRsllAtJ5k1j2qD5EdRbVBj6JJ5b7y5xjBEaxchsdSp2X2ILhcOAjfL2TlOo=\\\",\\\"summary\\\":[{\\\"type\\\":\\\"summary_text\\\",\\\"text\\\":\\\"**Diagnosing LSP staleness and import cycles**\\\"},{\\\"type\\\":\\\"summary_text\\\",\\\"text\\\":\\\"**Confirming import order and applying patch**\\\"}]}\",\"endedAt\":1788246883239},{\"type\":\"toolCall\",\"id\":\"call_Q9EvUleyM2TKrp7fxunoqK6F|fc_0e854a2061d97735016a967b63259887d0836f3373a1ee0612\",\"name\":\"bash\",\"arguments\":{\"command\":\"cd '/home/cube/projects/richard/traning coach' && /tmp/nutricoach-t12-bin/apply_patch <<'PATCH'\\n--- a/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json\\n+++ b/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json\\n@@ -52,7 +52,7 @@\\n     \\\"ruff\\\": \\\"PASS\\\",\\n     \\\"ty_strict_targeted\\\": \\\"PASS\\\",\\n     \\\"basedpyright_strict_targeted\\\": \\\"PASS: 0 errors, 0 warnings, 0 notes\\\",\\n-    \\\"lsp\\\": \\\"PASS for changed-file source set after workspace refresh; standalone server initially retained stale pre-patch diagnostics\\\",\\n+    \\\"lsp\\\": \\\"Changed tests and established modules clean; the persistent LSP server retained stale missing-import diagnostics for shell-patched new modules while the fresh strict basedpyright process reported 0 errors. cron/scheduler.py retains its pre-existing legacy diagnostics.\\\",\\n     \\\"compileall\\\": \\\"PASS\\\",\\nPATCH\\npython -m json.tool .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json >/dev/null\",\"timeout\":20}}],\"api\":\"openai-codex-responses\",\"provider\":\"openai-codex\",\"model\":\"gpt-5.6-sol\",\"usage\":{\"input\":12013,\"output\":479,\"cacheRead\":158208,\"cacheWrite\":0,\"reasoning\":185,\"totalTokens\":170700,\"cost\":{\"input\":0.06006500000000001,\"output\":0.01437,\"cacheRead\":0.079104,\"cacheWrite\":0,\"total\":0.15353899999999998}},\"stopReason\":\"toolUse\",\"timestamp\":1788246874049,\"responseId\":\"resp_0e854a2061d97735016a967b5a819c87d0a5fa7fdb58e778a0\",\"rawStopReason\":\"completed\"}}\n{\"type\":\"message\",\"id\":\"634e8ee1\",\"parentId\":\"7f03b59f\",\"timestamp\":\"2026-09-01T07:15:01.337Z\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"thinking\",\"thinking\":\"**Summarizing final deliverable caveats**\\n\\n**Verifying patch rejection absence**\",\"startedAt\":1788246888895,\"thinkingSignature\":\"{\\\"id\\\":\\\"rs_0e854a2061d97735016a967b68ceac87d0bd527c96d71c2d64\\\",\\\"type\\\":\\\"reasoning\\\",\\\"content\\\":[],\\\"encrypted_content\\\":\\\"gAAAAABqlntvae8VKDIPvR4oGOae9H1MbUsSeGVbjnsx_zMQAVHx6EjfZjD_nVr3ipooptpzQO7y_7jwhxJ-dDn_S4LgoHBjrjAgZ2mEZg-T9AZUiTXwQ1gmu5jjTy3FtqtFatmnQTgPhf48Vj8pRV1NdGyVAQM0rFlBk6f8GBwVJttxA2p9nIby46Y0-DdNEl4fSoXEbMK7BYUCiQ9GD4NjEvbMiahZiIgHYD0Eod5yyxSddniOHIDhrDYImtdicNxLRFJHwl1bjabTdwSqQ1Nec1RvTB0QzNiRS5pqt4Vo3mg2Day6lwVWihoPAG2O_b7ZbCJS2gmF3hncrDp6n1OOhU1rvftJTR0c-1fmw3fdc8UZ_ph5Tw8U7Y6ken8oY95hbHyfvj4IEeeaGQDF58Mz4YJLwZGeefuZI7tawjCr_zb-abc1LwfFLPOZ0oGxmBo_0HkXqUOQz4JY2Pq_XulC7VTtb17pSXUTNLNc-8m2RDGjEhwPfuvY7CsEQy85Z48Ol0_VouaQ5nwALTYiakB5CHtxMkC3-0s_T8Faryj-FG2GwsaWgftLSo-54A4cVN8Msfw47P7S3W0HLeMGpyqZszm8LAoliHOveiQSciW40bzB5NQZCUQibKul2YJJSo6lLoLkWzB5dHiYmRd6FlyQ39uud7HdwXdJfvxLrdjo-4lVAS6qiWGbCVwKMSFkG7KcwpIZoQFEo4gQ8VM5YwLKCMTPScmGsIfyqCvZU36ylaJKFvEpbuMmqqaJrmGnj3_P1ASTs7qECbJyVdww9VTj_iGmJhVDU84DYypDLrur8q0VPdU9ANzRg4MsrOwWEHcDO_P3-56HYEVA93AXwDPqYWYQ0_Nyv9wuOe30lwBkJ6FB4C0Q3QBnaI4fcIaS9ik0Df0_s5wnX0w4tfnFnSAzC_td8jHDuBGpQU7Ao7oRre_2F11n8L0ljNob3jgGGJ84XjuHt_nNU8zgy4wmax47N6glM9GJzKAuGYxVvz7HZEY9Vw7uz4ND--d1K8UaQikGCHyhy0w71LbK7mCMh83dNzGsdq4FKsa2YNCEsMAo2eUMktC6XALL4R0ZOyn-l4t58_8FxnoTCyfy9B5KgpQXYQM191gNhC0dE7HBC9sWMwGlhGzfP6ZTYBSZJhXadSQEU8CIbeKwNp3KT4PY9xo6lkthYucuoy4pB5yPCbbng-vSsmdntGEE4B8W8AmOGlGjAtYprx5itWbZK3UvPs4uxLJ3OkeR0GwVb-xHv6ON9roHYlycuDMxjYoUqrbcSchBwzMnYGf1Eoec4pnIWalugSPmP7oNypiaXn8PV9WnxNhbHjYvFHTZsK_7zGgYEg009PcOpsWlmTaTVB8ZggtOmbmEmTGqTEVrAV29oWXccGlQ3LSCNxQEdVX3IsrCy49e884tk0YlPeBbZ2z8kSbX54uyOaA1zE7JPPPhyPJTuZ1ZNLzmoaKfnKu14XtkdWb_PpwQGqRF5HurZNb5m-5RtDru7YW0Cr51a7dttUqoovB6PzsRjX2u0MJBB1jaL7734OtC5csqwFwMUP9BPgksqQt-xxez38xacRQFNNHCxLjfzhEtGEqki4pqusCH8DJ486OTYFKiPxFR59Xr8nx8vjm_l2sjzg0qtlOXuffhJ_XzFI88vwjQNm0iESi7SiTr-tGx_JEbWGaGyJuDfIRU2XSH152R7hSRyAsZJNV9VvDPP9WflZX3zj8ciMZFCMyNP0fV5mBD9xo5QHqCwFmPXjXotY3pyn9EUOo8PN8hQJE2zvfw3murr815-HOrfbniPFNTFzw7AkKXnAXQWfiQTSxU1_IOTn2WWK6fYHFL0sJr39JMJghghAzTFdePsj3YMas0SkDW_oRUkRz5SrSmIWKVSY0fzoacpE3gfazWpmLHxLUzhv2IKjq2rmGaHs580t3xThzp-p0_QZk8o35nOKw3BNXpRWjluTgyzzBbgK5Tpvq0ucxx0veC2X5BU5M5Dt37hsIhyd1VEmT8TLRlHI-uUkRDz7qw3XT29Rf5YWOOxV-ujg6Dqhkrq3QeVuyOEjEZtSc-jmkb43Oithv1D3YvdUFA1kArE95CyGGBJ5qMWP1Fb7WiV1AbYMVtfmbX8ufcVWt3OFltqeTnhTTiYF6pKitO8GqxdG_u7L7CkhCsHo1l0kO23iEsnfaa14Z7nqP_sMHPcyBw3kUUbp7lg_OYMMCPGrwSoVf-_H4S0sTpzASuZVsK51qdQsS2kCsIA8t4GTx0Egj0Dwnup1zybLfQe3PAvuNY0Lm8iAt3z9qNwInMzRLFjAJdH8me1wUad1BnvcUkfhxbnSPCocF05LnmzZ0nRRSBIbR1HCwHnD-gRiyDs6w2urIt6lo3KSjk8QtDRAL_QaW9EfvTxoWv8fsYE9IaN16omP7ishJ6FVEFqsp03b5vzWmDgR1978fLJ1tBpA9oNxK7Sqj2RU-m68OGI3wf7_K9suqEhGgxQ4Qm9tpBVvLCS7qakwwQ6-FgCgp07H_7xTB_KCOoSXyJIvaBvXWJvMfDOM7UcdWoxPWQPKnwOtU=\\\",\\\"summary\\\":[{\\\"type\\\":\\\"summary_text\\\",\\\"text\\\":\\\"**Summarizing final deliverable caveats**\\\"},{\\\"type\\\":\\\"summary_text\\\",\\\"text\\\":\\\"**Verifying patch rejection absence**\\\"}]}\",\"endedAt\":1788246895784},{\"type\":\"text\",\"text\":\"I read this as completion reporting - the source-only r71b maintenance runtime is implemented and verified.\\n\\nImplemented the typed maintenance contract/store, secure one-use gate, pre-claim suppression, crash recovery, idempotence, next-day release, and publication-to-scheduler propagation.\\n\\nVerification:\\n- 189 affected tests passed.\\n- Manual QA: two maintenance no-ops, one audit, zero current-day send/edit/network calls; tomorrow sent once via fake transport.\\n- Ruff, ty, targeted basedpyright, compile/import, and no-excuse checks passed.\\n- No Git, network, provider, customer, package, preseal, live, profile, credential, root, or commit actions.\\n- New runtime files are under 250 pure LOC; dispatcher is exactly 250.\\n- Persistent LSP retained stale new-module import diagnostics; fresh basedpyright reported zero errors.\\n\\nEvidence and DoneClaim:\\n\\n`/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json`\\n\\nArchitectural review: responsibilities are separated, boundary JSON is strictly parsed, decision variants are exhaustive, no type escape hatches or sleeps were introduced, and zero-call behavior is regression-tested.\",\"textSignature\":\"{\\\"v\\\":1,\\\"id\\\":\\\"msg_0e854a2061d97735016a967b6fb33087d0972b9679e935af39\\\",\\\"phase\\\":\\\"final_answer\\\"}\"}],\"api\":\"openai-codex-responses\",\"provider\":\"openai-codex\",\"model\":\"gpt-5.6-sol\",\"usage\":{\"input\":1285,\"output\":455,\"cacheRead\":169472,\"cacheWrite\":0,\"reasoning\":194,\"totalTokens\":171212,\"cost\":{\"input\":0.006425,\"output\":0.01365,\"cacheRead\":0.08473599999999999,\"cacheWrite\":0,\"total\":0.10481099999999999}},\"stopReason\":\"stop\",\"timestamp\":1788246887272,\"responseId\":\"resp_0e854a2061d97735016a967b67a38887d0a974e229a32a4f42\",\"rawStopReason\":\"completed\"}}","truncated":true,"truncatedBy":"bytes","totalLines":42,"totalBytes":336513,"outputLines":6,"outputBytes":46404,"lastLinePartial":false,"firstLineExceedsLimit":false,"maxLines":2000,"maxBytes":51200},"fullOutputPath":"/home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-ee54ad3979ba0d1c.log"},"isError":false,"timestamp":1788247100489}}
{"type":"message","id":"c7259f37","parentId":"00afd756","timestamp":"2026-09-01T07:18:20.490Z","message":{"role":"toolResult","toolCallId":"call_AAI5oPOiQMuKS9JW6xfhPYo8|fc_046f5546d6e20d23016a967c3c357087d095678a725d836413","toolName":"bash","content":[{"type":"text","text":"All checks passed!\n"}],"isError":false,"timestamp":1788247100489}}
{"type":"message","id":"c4ae7cfe","parentId":"c7259f37","timestamp":"2026-09-01T07:18:20.490Z","message":{"role":"toolResult","toolCallId":"call_ylMqEcU9UHtRCT1skbtLqEI1|fc_046f5546d6e20d23016a967c3c357c87d0baa035344137b3bc","toolName":"bash","content":[{"type":"text","text":"ABSENT /home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-candidate\nABSENT /home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-transaction-preseal-v15-runtime-authority-r71b-maintenance\nABSENT /home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/preflight-v15-runtime-authority-r71b-maintenance\nABSENT /home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-authorization-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance\nABSENT /home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-executions-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance\nABSENT /home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-rehearsal\n"}],"isError":false,"timestamp":1788247100490}}
{"type":"message","id":"d8a95332","parentId":"c4ae7cfe","timestamp":"2026-09-01T07:18:20.490Z","message":{"role":"toolResult","toolCallId":"call_P8rT7JLsWT7kYZh3EZfo6DZD|fc_046f5546d6e20d23016a967c3c358487d080f6216c95469357","toolName":"bash","content":[{"type":"text","text":"--- gateway/platforms/nutrition_weekly_maintenance_store.py.orig\t2026-09-01 16:02:35.115073454 +0900\n+++ gateway/platforms/nutrition_weekly_maintenance_store.py\t2026-09-01 16:10:04.294350442 +0900\n@@ -6,9 +6,8 @@\n import hashlib\n import json\n import os\n-import stat\n from dataclasses import dataclass\n-from datetime import datetime\n+from datetime import date, datetime\n from pathlib import Path\n from typing import Final, TypeVar\n \n@@ -24,16 +23,21 @@\n     Topic59MaintenanceSkipAuditV1,\n     canonical_document,\n )\n+from .nutrition_weekly_maintenance_io import (\n+    atomic_write_at as _atomic_write_at,\n+    fsync_directory as _fsync_directory,\n+    open_file as _open_file,\n+    open_owned_directory as _open_owned_directory,\n+    parse_document as _parse_document,\n+    read_credential as _read_credential,\n+    read_regular_at as _read_regular_at,\n+)\n from .nutrition_weekly_operations_models import Topic59Projection\n \n-_CREDENTIAL: Final = \"nutricoach-topic59-maintenance-r71b.json\"\n-_DIRECTORY_FLAGS: Final = os.O_RDONLY | os.O_DIRECTORY | os.O_CLOEXEC | os.O_NOFOLLOW\n-_FILE_FLAGS: Final = os.O_RDONLY | os.O_CLOEXEC | os.O_NOFOLLOW | os.O_NONBLOCK\n-_MAX_BYTES: Final = 8192\n+_DocumentT = TypeVar(\"_DocumentT\", bound=BaseModel)\n _EXPECTED_NAMES: Final = frozenset({\n     \"hold.json\", \"hold.consuming.json\", \"skip-audit.json\", \"maintenance.lock\",\n })\n-_DocumentT = TypeVar(\"_DocumentT\", bound=BaseModel)\n \n \n @dataclass(frozen=True, slots=True)\n@@ -57,7 +61,7 @@\n     ) -> Topic59MaintenanceDecision:\n         credential_root = os.environ.get(\"CREDENTIALS_DIRECTORY\")\n         if credential_root is None:\n-            if not self.paths.directory.lexists() if hasattr(self.paths.directory, \"lexists\") else not os.path.lexists(self.paths.directory):\n+            if not os.path.lexists(self.paths.directory):\n                 return _allow()\n             return _deny(Topic59MaintenanceFailure.AUTHORITY_MISSING_FOR_TARGET_DAY)\n         try:\n@@ -69,7 +73,7 @@\n         except (OSError, ValidationError, Topic59MaintenanceContractError):\n             return _deny(Topic59MaintenanceFailure.AUTHORITY_CORRUPT)\n         try:\n-            directory_fd = _open_owned_directory(self.paths, authority)\n+            directory_fd = _open_owned_directory(self.paths.profile_root)\n         except FileNotFoundError:\n             if authority.hold.kst_day == projection.kst_day:\n                 return _deny(Topic59MaintenanceFailure.HOLD_MISSING)\n@@ -157,68 +161,6 @@\n     return _noop(audit_bytes)\n \n \n-def _read_credential(root: Path) -> Topic59MaintenanceAuthorityV1:\n-    root_fd = os.open(root, _DIRECTORY_FLAGS)\n-    try:\n-        raw = _read_regular_at(root_fd, _CREDENTIAL, 0o400, os.geteuid(), None)\n-        return _parse_document(raw, Topic59MaintenanceAuthorityV1)\n-    finally:\n-        os.close(root_fd)\n-\n-\n-def _open_owned_directory(\n-    paths: Topic59MaintenancePaths, authority: Topic59MaintenanceAuthorityV1,\n-) -> int:\n-    _ = authority\n-    profile_fd = os.open(paths.profile_root, _DIRECTORY_FLAGS)\n-    profile_info = os.fstat(profile_fd)\n-    try:\n-        data_fd = os.open(\"data\", _DIRECTORY_FLAGS, dir_fd=profile_fd)\n-    finally:\n-        os.close(profile_fd)\n-    try:\n-        directory_fd = os.open(\"topic59-maintenance-r71b\", _DIRECTORY_FLAGS, dir_fd=data_fd)\n-    finally:\n-        os.close(data_fd)\n-    info = os.fstat(directory_fd)\n-    if (\n-        not stat.S_ISDIR(info.st_mode) or stat.S_IMODE(info.st_mode) != 0o700\n-        or info.st_uid != profile_info.st_uid or info.st_gid != profile_info.st_gid\n-    ):\n-        os.close(directory_fd)\n-        raise PermissionError\n-    return directory_fd\n-\n-\n-def _read_regular_at(\n-    directory_fd: int, name: str, mode: int, uid: int, gid: int | None,\n-) -> bytes:\n-    descriptor = _open_file(directory_fd, name, mode, uid, gid)\n-    try:\n-        raw = os.read(descriptor, _MAX_BYTES + 1)\n-        if not raw or len(raw) > _MAX_BYTES or os.read(descriptor, 1):\n-            raise Topic59MaintenanceContractError()\n-        return raw\n-    finally:\n-        os.close(descriptor)\n-\n-\n-def _open_file(\n-    directory_fd: int, name: str, mode: int, uid: int | None = None, gid: int | None = None,\n-) -> int:\n-    descriptor = os.open(name, _FILE_FLAGS, dir_fd=directory_fd)\n-    info = os.fstat(descriptor)\n-    expected_uid = os.geteuid() if uid is None else uid\n-    if (\n-        not stat.S_ISREG(info.st_mode) or stat.S_IMODE(info.st_mode) != mode\n-        or info.st_uid != expected_uid or (gid is not None and info.st_gid != gid)\n-        or info.st_nlink != 1\n-    ):\n-        os.close(descriptor)\n-        raise PermissionError\n-    return descriptor\n-\n-\n def _optional_document(\n     directory_fd: int, name: str, model: type[_DocumentT],\n ) -> _DocumentT | None:\n@@ -229,13 +171,6 @@\n     return _parse_document(raw, model)\n \n \n-def _parse_document(raw: bytes, model: type[_DocumentT]) -> _DocumentT:\n-    parsed = model.model_validate_json(raw)\n-    if canonical_document(parsed) != raw:\n-        raise Topic59MaintenanceContractError()\n-    return parsed\n-\n-\n def _projection_matches(hold: Topic59MaintenanceHoldV1, projection: Topic59Projection) -> bool:\n     return (\n         hold.candidate_digest == projection.candidate_digest\n@@ -267,7 +202,7 @@\n def _build_audit(\n     authority: Topic59MaintenanceAuthorityV1, hold: Topic59MaintenanceHoldV1, now: datetime,\n ) -> bytes:\n-    fields = {\n+    fields: dict[str, str | bool | int | None | date | datetime] = {\n         \"schema\": \"nutricoach-topic59-maintenance-skip-audit-v1\",\n         \"hold_id\": hold.hold_id, \"hold_sha256\": authority.hold_sha256,\n         \"authority_id\": authority.authority_id, \"package_digest\": hold.package_digest,\n@@ -281,32 +216,11 @@\n     }\n     encoded = json.dumps(fields, sort_keys=True, separators=(\",\", \":\")).encode()\n     fields[\"row_digest\"] = hashlib.sha256(encoded).hexdigest()\n+    fields[\"kst_day\"] = hold.kst_day\n+    fields[\"recorded_at\"] = now\n     return canonical_document(Topic59MaintenanceSkipAuditV1.model_validate(fields))\n \n \n-def _atomic_write_at(directory_fd: int, name: str, raw: bytes) -> None:\n-    temporary = f\".{name}.tmp\"\n-    descriptor = os.open(\n-        temporary, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_CLOEXEC | os.O_NOFOLLOW,\n-        0o600, dir_fd=directory_fd,\n-    )\n-    try:\n-        view = memoryview(raw)\n-        while view:\n-            view = view[os.write(descriptor, view):]\n-        os.fsync(descriptor)\n-    finally:\n-        os.close(descriptor)\n-    os.rename(temporary, name, src_dir_fd=directory_fd, dst_dir_fd=directory_fd)\n-    _fsync_directory(directory_fd)\n-    if _read_regular_at(directory_fd, name, 0o600, os.geteuid(), os.getegid()) != raw:\n-        raise OSError\n-\n-\n-def _fsync_directory(directory_fd: int) -> None:\n-    os.fsync(directory_fd)\n-\n-\n def _allow() -> Topic59MaintenanceDecision:\n     return Topic59MaintenanceDecision(kind=Topic59MaintenanceDecisionKind.ALLOW)\n \n--- gateway/platforms/nutrition_weekly_dispatcher.py.orig\t2026-09-01 16:12:20.300006959 +0900\n+++ gateway/platforms/nutrition_weekly_dispatcher.py\t2026-09-01 16:12:37.642480618 +0900\n@@ -270,7 +270,6 @@\n     *,\n     local_now: datetime,\n ) -> WeeklyOperationsDispatchResult:\n-    \"\"\"Run enabled customers in snapshot/reminder/card/Monday order.\"\"\"\n     owner = coordinator.weekly_reminder_authority_owner\n     failures: list[str] = []\n     dispositions: list[Topic59PublicationDisposition] = []\n\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1788247100490}}
{"type":"message","id":"567e9aff","parentId":"d8a95332","timestamp":"2026-09-01T07:18:27.557Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning systematic command parsing**","startedAt":1788247102491,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967c3e66d487d0bb984bff2fe5bf82\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnw_hi6i34dF44HM37dFejbCX6I3CiWL4eI3zE5N_vQGS_9XG5ak_HaAu0iXXG0rPOFJK0RGdRCHVm5EY6NUA7S5KDqKIIg1bKyhqgQAYwjfVYAVgyQBzFawslNJbbWVtKOVd6E8GVb9jQErVMM3fgkbpQmpT9iuqrqxGQEN0KvHMxJxqAG9a3FyIBOD12zoAnwqpMJD7Zt6Msd3hm-V08-3wXFT3Ud6pJ-zJIoSZQCHe1_-Axa58I2Blr2NVwEXIooBIZNHfZ3qPn5KDCiVuqYJfIBpq1ITu7E70N1ymihqGPQiP02kBKVlzQSYlbgOOUiH0n4br8ueHylHkHTcg075mAGwLS90ZpXpeS4maPrNnylmh1R_tpKPRNGQLXCnr83ZjouE5bN2eXggLyNdHC0fJ7TCxyY3lIKYiXowiyeMiqt-agfTorSRmLxDZtt6Dk39-ljV0ZZlRwoWhWcHWacoDVORV4-ML_2in7cMqRwSEdLlNSl5B8QZEmdkvLrLSDwn5TzDLFAddTgXeojGnuol3zVzw0KHQWRBXEjqKkAtDtiIGqy8WkJqoRXfAtR1PC0e4Wn5fDGx69t9_EZ6ka_Dnw8d4DgzTXWJ9F7TOdwE45PXie96oo5ERkFvxS8hH5i-i2Hz4ZWZBiSxbq0TysVxbTigk5RQLpGR-0cjZ6_-5fYkNKHs0Uyd81F7KBZU-YfqxpccCCikJ7UvcJsJftIJOi350iDGrx_HD0kSLUoF2sXB6O5W3C07oHxemtOaDhvDcg3JLuHGtYOtcR9PntDQKttvpR4K9bfEPUknbpOujxcT-uord30j9heqGjpOyZl4qN_billd9V0Dx0DnFn-eOJKMkwiQtTw-b-1s_jVNqcQUyPzDekAsWasBkgvzwyRfKPvOJV_7BghvHCAfSTj1wp32o6Wwte4UHGr4fVzAr56ajHzpXAVm2I0tAE1S3qekvANRKClaMq1pTnZ8ydk1imZXMHf8-KTaRT32d_miGuf9kLkdZAdbVPqMmQ9ijWu6b2IiC94d6zeNtzdr2LWMjoPfcmfYanEW-sn8oUjBaZxEGBY7DZM_8U5_qbCYinvLa8dd2SbfH7iJpot_LyVEkTEanErnrpOgV4d4wKLVk6sJAFiTZLWAqVHZK5uvUoHHgxPxw0UJRc3lCKwvWmvq_AH5DrQlW3IgLHtVWf4tlkWz_fvv6WM8efbM4KaiKxkXvyxAufhZPZik7tl8XitvQTH8U2t3KydG600Tx68Tr01K0mcBH81K5v8guGcRyakXUmeyCBUODFM9eU8gw4B8MmcRLbT6I6dYKvg-ZtRZnvj5rfh3bd_EIXzTPjKAYL9FBOFVXEw39vautARl78JVHx_BASozJmmo46PZxfofB1iaMtyiXF3qLYxBNYL7vFto0-5890CSrvm7BDnpciG1gz5yhizd3sLN01x6xHOYthsSzu0eS5zix6PLZoktyIdW\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning systematic command parsing**\"}]}","endedAt":1788247103734},{"type":"toolCall","id":"call_Lz8CVwQOxUPQfHLoCzR4RG8w|fc_046f5546d6e20d23016a967c3fa32487d084d92f3daaaa721e","name":"bash","arguments":{"command":"python - <<'PY'\nimport json\nfrom pathlib import Path\np=Path('/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a05bc2/sessions/st_01a05bc2/2026-09-01T06-57-35-910Z_01a05bc2-4ea6-7c1c-9e54-d5320d07400b.jsonl')\nfor line in p.read_text().splitlines():\n try:o=json.loads(line)\n except:continue\n m=o.get('message',{})\n for c in m.get('content',[]) if isinstance(m.get('content'),list) else []:\n  if c.get('type')=='toolCall':\n   args=c.get('arguments',{})\n   cmd=args.get('command','') if isinstance(args,dict) else ''\n   if any(x in cmd for x in ('pytest','basedpyright','ty check','manual','socket')):\n    print('\\n---CALL---\\n'+cmd)\nPY","timeout":30}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":19121,"output":281,"cacheRead":108032,"cacheWrite":0,"reasoning":24,"totalTokens":127434,"cost":{"input":0.09560500000000001,"output":0.00843,"cacheRead":0.054015999999999995,"cacheWrite":0,"total":0.158051}},"stopReason":"toolUse","timestamp":1788247100544,"responseId":"resp_046f5546d6e20d23016a967c3d66e487d095febc05afba4441","rawStopReason":"completed"}}
{"type":"message","id":"7f2804fb","parentId":"567e9aff","timestamp":"2026-09-01T07:18:27.600Z","message":{"role":"toolResult","toolCallId":"call_Lz8CVwQOxUPQfHLoCzR4RG8w|fc_046f5546d6e20d23016a967c3fa32487d084d92f3daaaa721e","toolName":"bash","content":[{"type":"text","text":"\n\ndef _read_regular_at(\n    directory_fd: int, name: str, mode: int, uid: int, gid: int | None,\n) -> bytes:\n    descriptor = _open_file(directory_fd, name, mode, uid, gid)\n    try:\n        raw = os.read(descriptor, _MAX_BYTES + 1)\n        if not raw or len(raw) > _MAX_BYTES or os.read(descriptor, 1):\n            raise Topic59MaintenanceContractError()\n        return raw\n    finally:\n        os.close(descriptor)\n\n\ndef _open_file(\n    directory_fd: int, name: str, mode: int, uid: int | None = None, gid: int | None = None,\n) -> int:\n    descriptor = os.open(name, _FILE_FLAGS, dir_fd=directory_fd)\n    info = os.fstat(descriptor)\n    expected_uid = os.geteuid() if uid is None else uid\n    if (\n        not stat.S_ISREG(info.st_mode) or stat.S_IMODE(info.st_mode) != mode\n        or info.st_uid != expected_uid or (gid is not None and info.st_gid != gid)\n        or info.st_nlink != 1\n    ):\n        os.close(descriptor)\n        raise PermissionError\n    return descriptor\n\n\ndef _optional_document(\n    directory_fd: int, name: str, model: type[_DocumentT],\n) -> _DocumentT | None:\n    try:\n        raw = _read_regular_at(directory_fd, name, 0o600, os.geteuid(), os.getegid())\n    except FileNotFoundError:\n        return None\n    return _parse_document(raw, model)\n\n\ndef _parse_document(raw: bytes, model: type[_DocumentT]) -> _DocumentT:\n    parsed = model.model_validate_json(raw)\n    if canonical_document(parsed) != raw:\n        raise Topic59MaintenanceContractError()\n    return parsed\n\n\ndef _projection_matches(hold: Topic59MaintenanceHoldV1, projection: Topic59Projection) -> bool:\n    return (\n        hold.candidate_digest == projection.candidate_digest\n        and hold.config_digest == projection.config_digest\n        and hold.route_digest == projection.route_digest\n        and hold.customer_identity_digest == projection.customer_identity_digest\n        and hold.card_slot == projection.card_slot\n        and hold.kst_day == projection.kst_day\n    )\n\n\ndef _audit_matches(\n    audit: Topic59MaintenanceSkipAuditV1,\n    authority: Topic59MaintenanceAuthorityV1,\n    hold: Topic59MaintenanceHoldV1,\n) -> bool:\n    return (\n        audit.hold_id == hold.hold_id and audit.hold_sha256 == authority.hold_sha256\n        and audit.authority_id == authority.authority_id\n        and audit.package_digest == hold.package_digest\n        and audit.candidate_digest == hold.candidate_digest\n        and audit.config_digest == hold.config_digest and audit.route_digest == hold.route_digest\n        and audit.customer_identity_digest == hold.customer_identity_digest\n        and audit.card_slot == hold.card_slot and audit.kst_day == hold.kst_day\n        and hold.not_before <= audit.recorded_at < hold.expires_at\n    )\n\n\ndef _build_audit(\n    authority: Topic59MaintenanceAuthorityV1, hold: Topic59MaintenanceHoldV1, now: datetime,\n) -> bytes:\n    fields = {\n        \"schema\": \"nutricoach-topic59-maintenance-skip-audit-v1\",\n        \"hold_id\": hold.hold_id, \"hold_sha256\": authority.hold_sha256,\n        \"authority_id\": authority.authority_id, \"package_digest\": hold.package_digest,\n        \"candidate_digest\": hold.candidate_digest, \"config_digest\": hold.config_digest,\n        \"route_digest\": hold.route_digest,\n        \"customer_identity_digest\": hold.customer_identity_digest,\n        \"card_slot\": hold.card_slot, \"kst_day\": hold.kst_day.isoformat(),\n        \"recorded_at\": now.isoformat(), \"terminal_state\": \"maintenance_skipped\",\n        \"disposition\": \"noop_maintenance\", \"sent\": False, \"delivered\": False,\n        \"message_id\": None, \"provider_receipt\": None, \"provider_calls\": 0, \"network_calls\": 0,\n    }\n    encoded = json.dumps(fields, sort_keys=True, separators=(\",\", \":\")).encode()\n    fields[\"row_digest\"] = hashlib.sha256(encoded).hexdigest()\n    return canonical_document(Topic59MaintenanceSkipAuditV1.model_validate(fields))\n\n\ndef _atomic_write_at(directory_fd: int, name: str, raw: bytes) -> None:\n    temporary = f\".{name}.tmp\"\n    descriptor = os.open(\n        temporary, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_CLOEXEC | os.O_NOFOLLOW,\n        0o600, dir_fd=directory_fd,\n    )\n    try:\n        view = memoryview(raw)\n        while view:\n            view = view[os.write(descriptor, view):]\n        os.fsync(descriptor)\n    finally:\n        os.close(descriptor)\n    os.rename(temporary, name, src_dir_fd=directory_fd, dst_dir_fd=directory_fd)\n    _fsync_directory(directory_fd)\n    if _read_regular_at(directory_fd, name, 0o600, os.geteuid(), os.getegid()) != raw:\n        raise OSError\n\n\ndef _fsync_directory(directory_fd: int) -> None:\n    os.fsync(directory_fd)\n\n\ndef _allow() -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(kind=Topic59MaintenanceDecisionKind.ALLOW)\n\n\ndef _deny(reason: Topic59MaintenanceFailure) -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(kind=Topic59MaintenanceDecisionKind.DENY, reason=reason)\n\n\ndef _noop(raw: bytes) -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(\n        kind=Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n        audit_digest=hashlib.sha256(raw).hexdigest(),\n    )\nPY\nUV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && /tmp/nutricoach-t12-bin/apply_patch <<'PATCH'\n--- a/gateway/platforms/nutrition_weekly_maintenance_store.py\n+++ b/gateway/platforms/nutrition_weekly_maintenance_store.py\n@@ -280,5 +280,7 @@\n     }\n     encoded = json.dumps(fields, sort_keys=True, separators=(\",\", \":\")).encode()\n     fields[\"row_digest\"] = hashlib.sha256(encoded).hexdigest()\n+    fields[\"kst_day\"] = hold.kst_day\n+    fields[\"recorded_at\"] = now\n     return canonical_document(Topic59MaintenanceSkipAuditV1.model_validate(fields))\nPATCH\nUV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\nchanges={\n'cron/physique_inline_card.py':[\n('    error: str | None\\n', '    error: str | None\\n    raw_response: NutritionScheduledTickOutcome | None\\n'),\n('from typing import Awaitable, Final, Protocol\\n', 'from typing import Awaitable, Final, Protocol, TYPE_CHECKING\\n\\nif TYPE_CHECKING:\\n    from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\\n'),\n('    error: str | None = None\\n\\n\\ndef launch_morning_card', '    error: str | None = None\\n    maintenance_noop: bool = False\\n\\n\\ndef launch_morning_card'),\n('        return LaunchResult(sent=sent, error=transport.last_error)\\n', '        return LaunchResult(\\n            sent=sent and not transport.maintenance_noop,\\n            error=transport.last_error,\\n            maintenance_noop=transport.maintenance_noop,\\n        )\\n'),\n('        self.last_error: str | None = None\\n', '        self.last_error: str | None = None\\n        self.maintenance_noop = False\\n'),\n('        self.last_error = result.error\\n        return result.success\\n', '        self.last_error = result.error\\n        from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\\n        self.maintenance_noop = (\\n            isinstance(result.raw_response, NutritionScheduledTickOutcome)\\n            and result.raw_response.disposition == \"noop_maintenance\"\\n        )\\n        return result.success\\n'),\n],\n'cron/scheduler.py':[\n('            if launched.sent:\\n                output += \"Status: launch card sent\\\\n\"\\n                mark_job_run(job[\"id\"], True, None)\\n', '            if launched.maintenance_noop:\\n                output += \"Status: maintenance no-op completed\\\\n\"\\n                mark_job_run(job[\"id\"], True, None)\\n            elif launched.sent:\\n                output += \"Status: launch card sent\\\\n\"\\n                mark_job_run(job[\"id\"], True, None)\\n'),\n],\n'tests/cron/test_physique_inline_card.py':[\n('from cron import scheduler\\n', 'from cron import scheduler\\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\\n'),\n('        self.error = error\\n', '        self.error = error\\n        self.raw_response = None\\n'),\n('def test_nutrition_tick_preserves_the_adapter_failure_reason', 'def test_nutrition_tick_propagates_maintenance_without_fabricating_send(tmp_path: Path) -> None:\\n    # Given\\n    loop = asyncio.new_event_loop()\\n    worker = threading.Thread(target=loop.run_forever)\\n    worker.start()\\n    transport = AsyncFakeCardTransport()\\n    transport.raw_response = NutritionScheduledTickOutcome(\"noop_maintenance\")\\n    try:\\n        # When\\n        result = launch_scheduled_card(tmp_path, transport, loop, _morning(), NUTRITION_TICK_CARD)\\n    finally:\\n        loop.call_soon_threadsafe(loop.stop)\\n        worker.join(timeout=5)\\n        loop.close()\\n\\n    # Then\\n    assert result.maintenance_noop is True\\n    assert result.sent is False\\n    assert result.error is None\\n\\n\\ndef test_nutrition_tick_preserves_the_adapter_failure_reason'),\n],\n}\nfor name,repls in changes.items():\n p=Path(name);old=p.read_text();new=old\n for a,b in repls:\n  if new.count(a)!=1:raise SystemExit(f'{name} count={new.count(a)} {a[:70]!r}')\n  new=new.replace(a,b)\n print(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+name,tofile='b/'+name)),end='')\nPY\nUV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_scheduler.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py');old=p.read_text();new='''from __future__ import annotations\n\nfrom dataclasses import dataclass\nfrom datetime import date\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecision,\n    Topic59MaintenanceDecisionKind,\n)\nfrom gateway.platforms.nutrition_weekly_operations import (\n    Topic59DayCardProjector,\n    Topic59PublicationDisposition,\n)\nfrom gateway.platforms.nutrition_weekly_operations_models import Topic59Projection\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import (\n    Topic59DayState,\n    _Transport,\n    _request,\n)\n\n\n@dataclass(frozen=True, slots=True)\nclass _MaintenanceGate:\n    def evaluate(self, projection: Topic59Projection, now) -> Topic59MaintenanceDecision:\n        _ = projection, now\n        return Topic59MaintenanceDecision(\n            kind=Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n            audit_digest=\"9\" * 64,\n        )\n\n\ndef test_maintenance_disposition_is_distinct_from_delivery() -> None:\n    # Given / When / Then\n    assert Topic59PublicationDisposition.NOOP_MAINTENANCE.value == \"noop_maintenance\"\n\n\n@pytest.mark.anyio\nasync def test_maintenance_result_precedes_claim_and_transport(tmp_path: Path) -> None:\n    # Given\n    transport = _Transport()\n    projector = Topic59DayCardProjector(tmp_path / \"topic59.jsonl\", _MaintenanceGate())\n    projector._ledger.claim = lambda _projection: (_ for _ in ()).throw(AssertionError(\"claim reached\"))\n\n    # When\n    result = await projector.publish(\n        _request(date(2026, 8, 20), Topic59DayState.SUBMITTED), transport,\n    )\n\n    # Then\n    assert result.disposition is Topic59PublicationDisposition.NOOP_MAINTENANCE\n    assert result.message_id is None\n    assert result.maintenance_audit_digest == \"9\" * 64\n    assert transport.sent == transport.edited == []\n    assert not (tmp_path / \"topic59.jsonl\").exists()\n'''\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('gateway/platforms/nutrition_weekly_operations.py');old=p.read_text();new=old.replace('from dataclasses import dataclass\\n','from dataclasses import dataclass\\nfrom datetime import datetime\\n').replace('from .nutrition_weekly_operations_models import Topic59DayCard, project_topic59_day_card\\n','from .nutrition_weekly_operations_models import (\\n    Topic59DayCard,\\n    Topic59Projection,\\n    project_topic59_day_card,\\n)\\n').replace('    def evaluate(self, projection, now) -> Topic59MaintenanceDecision: ...\\n','    def evaluate(\\n        self, projection: Topic59Projection, now: datetime,\\n    ) -> Topic59MaintenanceDecision: ...\\n')\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('gateway/platforms/nutrition_weekly_maintenance_store.py');old=p.read_text();marker='\\ndef _projection_matches('\ninsert='''\ndef _optional_document(\n    directory_fd: int, name: str, model: type[_DocumentT],\n) -> _DocumentT | None:\n    try:\n        raw = _read_regular_at(directory_fd, name, 0o600, os.geteuid(), os.getegid())\n    except FileNotFoundError:\n        return None\n    return _parse_document(raw, model)\n\n'''\nnew=old.replace(marker,insert+marker).replace('from typing import Final\\n','from typing import Final, TypeVar\\n').replace('from pydantic import ValidationError\\n','from pydantic import BaseModel, ValidationError\\n').replace('_EXPECTED_NAMES: Final = frozenset({','_DocumentT = TypeVar(\"_DocumentT\", bound=BaseModel)\\n_EXPECTED_NAMES: Final = frozenset({')\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/cron/test_physique_inline_card.py');old=p.read_text();new=old.replace('from cron.physique_inline_card import MORNING_CARD, NUTRITION_TICK_CARD, SOURCE_REVIEW_CARD, launch_morning_card, launch_scheduled_card\\n','from cron.physique_inline_card import (\\n    MORNING_CARD, NUTRITION_TICK_CARD, SOURCE_REVIEW_CARD, LaunchResult,\\n    launch_morning_card, launch_scheduled_card,\\n)\\n')\nnew += '''\\n\\ndef test_scheduler_records_maintenance_as_success_without_sent_status(monkeypatch, tmp_path: Path) -> None:\\n    # Given\\n    job = {\"id\": \"maintenance-job\", \"inline_card\": NUTRITION_TICK_CARD}\\n    runs: list[tuple[bool, str | None]] = []\\n    outputs: list[str] = []\\n    monkeypatch.setattr(scheduler, \"get_hermes_home\", lambda: tmp_path)\\n    monkeypatch.setattr(\\n        \"cron.physique_inline_card.launch_scheduled_card\",\\n        lambda *_args, **_kwargs: LaunchResult(maintenance_noop=True),\\n    )\\n    monkeypatch.setattr(scheduler, \"mark_job_run\", lambda _job_id, ok, error: runs.append((ok, error)))\\n    monkeypatch.setattr(scheduler, \"save_job_output\", lambda _job_id, output: outputs.append(output) or tmp_path / \"out\")\\n\\n    # When\\n    processed = scheduler.run_one_job(job)\\n\\n    # Then\\n    assert processed is True\\n    assert runs == [(True, None)]\\n    assert \"Status: maintenance no-op completed\" in outputs[0]\\n    assert \"Status: launch card sent\" not in outputs[0]\\n'''\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_topic59_maintenance.py');old=p.read_text();new=old.replace('import json\\n','import json\\nimport threading\\nfrom concurrent.futures import ThreadPoolExecutor\\n')\nnew += '''\\n\\ndef test_consuming_marker_completes_after_rename_crash(tmp_path: Path, monkeypatch) -> None:\\n    # Given\\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\\n    profile.mkdir(mode=0o700)\\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\\n    _arm(profile, credentials, now)\\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\\n    (maintenance / \"hold.json\").rename(maintenance / \"hold.consuming.json\")\\n\\n    # When\\n    result = Topic59MaintenanceGate.for_profile(profile).evaluate(_projection(now.date()), now)\\n\\n    # Then\\n    assert result.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\\n    assert (maintenance / \"skip-audit.json\").is_file()\\n    assert not (maintenance / \"hold.consuming.json\").exists()\\n\\n\\ndef test_complete_audit_finalizes_consuming_marker_after_replace_crash(tmp_path: Path, monkeypatch) -> None:\\n    # Given\\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\\n    profile.mkdir(mode=0o700)\\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\\n    _arm(profile, credentials, now)\\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\\n    hold_bytes = (maintenance / \"hold.json\").read_bytes()\\n    gate = Topic59MaintenanceGate.for_profile(profile)\\n    first = gate.evaluate(_projection(now.date()), now)\\n    consuming = maintenance / \"hold.consuming.json\"\\n    consuming.write_bytes(hold_bytes)\\n    consuming.chmod(0o600)\\n\\n    # When\\n    recovered = gate.evaluate(_projection(now.date()), now)\\n\\n    # Then\\n    assert recovered == first\\n    assert not consuming.exists()\\n\\n\\ndef test_concurrent_ticks_create_one_audit_without_timing_waits(tmp_path: Path, monkeypatch) -> None:\\n    # Given\\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\\n    profile.mkdir(mode=0o700)\\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\\n    _arm(profile, credentials, now)\\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\\n    gate = Topic59MaintenanceGate.for_profile(profile)\\n    barrier = threading.Barrier(3)\\n\\n    def evaluate() -> Topic59MaintenanceDecisionKind:\\n        barrier.wait(timeout=2)\\n        return gate.evaluate(_projection(now.date()), now).kind\\n\\n    # When\\n    with ThreadPoolExecutor(max_workers=2) as workers:\\n        futures = (workers.submit(evaluate), workers.submit(evaluate))\\n        barrier.wait(timeout=2)\\n        outcomes = tuple(future.result(timeout=2) for future in futures)\\n\\n    # Then\\n    assert outcomes == (\\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\\n    )\\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\\n    assert tuple(path.name for path in maintenance.glob(\"skip-audit.json\")) == (\"skip-audit.json\",)\\n'''\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\nchanges={\n'gateway/platforms/nutrition_weekly_maintenance_io.py':[\n('def _read_credential(', 'def read_credential('),('def _open_owned_directory(', 'def open_owned_directory('),\n('def _read_regular_at(', 'def read_regular_at('),('def _open_file(', 'def open_file('),\n('def _parse_document(', 'def parse_document('),('def _atomic_write_at(', 'def atomic_write_at('),\n('def _fsync_directory(', 'def fsync_directory('),\n('_read_regular_at(', 'read_regular_at('),('_open_file(', 'open_file('),('_parse_document(', 'parse_document('),('_fsync_directory(', 'fsync_directory('),\n],\n'gateway/platforms/nutrition_weekly_maintenance_store.py':[\n('    _atomic_write_at,\\n    _fsync_directory,\\n    _open_file,\\n    _open_owned_directory,\\n    _parse_document,\\n    _read_credential,\\n    _read_regular_at,\\n', '    atomic_write_at as _atomic_write_at,\\n    fsync_directory as _fsync_directory,\\n    open_file as _open_file,\\n    open_owned_directory as _open_owned_directory,\\n    parse_document as _parse_document,\\n    read_credential as _read_credential,\\n    read_regular_at as _read_regular_at,\\n'),\n],\n'gateway/platforms/nutrition_weekly_operations.py':[\n('        self._maintenance_gate = maintenance_gate\\n','        self._maintenance_gate: Topic59MaintenanceEvaluator | None = maintenance_gate\\n'),\n],\n'gateway/platforms/telegram_weekly_host_dispatch.py':[\n('        WeeklyOperationsCoordinator,\\n        WeeklyOperationsTask,\\n', '        WeeklyOperationsCoordinator,\\n        WeeklyOperationsDispatchResult,\\n        WeeklyOperationsTask,\\n'),\n],\n}\nfor name,repls in changes.items():\n p=Path(name);old=p.read_text();new=old\n for a,b in repls:\n  if a not in new:raise SystemExit(f'{name}: {a!r}')\n  new=new.replace(a,b)\n print(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+name,tofile='b/'+name)),end='')\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py');old=p.read_text();new='''from gateway.platforms.nutrition_weekly_operations import Topic59PublicationDisposition\n\n\ndef test_maintenance_disposition_is_distinct_from_delivery() -> None:\n    # Given / When / Then\n    assert Topic59PublicationDisposition.NOOP_MAINTENANCE.value == \"noop_maintenance\"\n'''\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_operations_topic59.py');old=p.read_text();new=old.replace('from gateway.platforms.nutrition_weekly_operations import (\\n','from gateway.platforms.nutrition_weekly_maintenance_contract import (\\n    Topic59MaintenanceDecision, Topic59MaintenanceDecisionKind,\\n)\\nfrom gateway.platforms.nutrition_weekly_operations import (\\n')\nnew += '''\\n\\n@dataclass(frozen=True, slots=True)\\nclass _NoopMaintenanceGate:\\n    def evaluate(self, projection, now) -> Topic59MaintenanceDecision:\\n        _ = projection, now\\n        return Topic59MaintenanceDecision(\\n            kind=Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\\n            audit_digest=\"9\" * 64,\\n        )\\n\\n\\n@pytest.mark.anyio\\nasync def test_maintenance_precedes_topic59_claim_and_transport(tmp_path: Path, monkeypatch) -> None:\\n    # Given\\n    transport = _Transport()\\n    projector = Topic59DayCardProjector(tmp_path / \"topic59.jsonl\", _NoopMaintenanceGate())\\n    monkeypatch.setattr(\\n        projector._ledger, \"claim\",\\n        lambda projection: (_ for _ in ()).throw(AssertionError(projection.logical_key)),\\n    )\\n\\n    # When\\n    result = await projector.publish(\\n        _request(date(2026, 8, 20), Topic59DayState.SUBMITTED), transport,\\n    )\\n\\n    # Then\\n    assert result.disposition is Topic59PublicationDisposition.NOOP_MAINTENANCE\\n    assert result.message_id is None\\n    assert result.maintenance_audit_digest == \"9\" * 64\\n    assert transport.sent == transport.edited == []\\n    assert not (tmp_path / \"topic59.jsonl\").exists()\\n'''\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && rg -n 'def |_[a-z]+\\(' gateway/platforms/nutrition_weekly_maintenance_io.py | tail -30; PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run python - <<'PY'\nimport asyncio, hashlib, json, os, socket, tempfile, threading\nfrom dataclasses import dataclass\nfrom datetime import timedelta\nfrom pathlib import Path\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import Topic59MaintenanceAuthorityV1,Topic59MaintenanceHoldV1,canonical_document\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59DayCardProjector,Topic59PublicationDisposition\nfrom gateway.platforms.nutrition_weekly_operations_models import project_topic59_day_card\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\nfrom gateway.config import Platform\nfrom cron.physique_inline_card import NUTRITION_TICK_CARD\nfrom cron import scheduler\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import _request,_Transport,Topic59DayState\nfrom datetime import date\n\nnetwork=[0]\nreal_socket=socket.socket\n@dataclass\nclass Result:\n success: bool=True\n error: str|None=None\n raw_response: NutritionScheduledTickOutcome|None=NutritionScheduledTickOutcome('noop_maintenance')\nclass Adapter:\n def is_inline_card_enabled(self, card): return card==NUTRITION_TICK_CARD\n async def send_inline_card(self, card): return Result()\n\nwith tempfile.TemporaryDirectory() as root:\n p=Path(root)/'profile'; c=Path(root)/'credentials'; p.mkdir(mode=0o700)\n req=_request(date(2026,8,20),Topic59DayState.SUBMITTED); route=req.config.review_route\n proj=project_topic59_day_card(req.card,config_digest=req.config.digest,route_key=route.key)\n now=req.runtime.now\n hold=Topic59MaintenanceHoldV1(hold_id='3'*64,package_digest='4'*64,candidate_digest=proj.candidate_digest,config_digest=proj.config_digest,route_digest=proj.route_digest,customer_identity_digest=proj.customer_identity_digest,card_slot=proj.card_slot,kst_day=proj.kst_day,not_before=now-timedelta(minutes=1),expires_at=now+timedelta(minutes=5))\n hb=canonical_document(hold); auth=Topic59MaintenanceAuthorityV1(package_digest='4'*64,hold_sha256=hashlib.sha256(hb).hexdigest(),hold=hold)\n m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n for n,b,mode in [('hold.json',hb,0o600),('maintenance.lock',b'',0o600)]: q=m/n;q.write_bytes(b);q.chmod(mode)\n c.mkdir(mode=0o700);q=c/'nutricoach-topic59-maintenance-r71b.json';q.write_bytes(canonical_document(auth));q.chmod(0o400);os.environ['CREDENTIALS_DIRECTORY']=str(c)\n ledger=p/'data/weekly-operations-topic59.jsonl';t=_Transport();projector=Topic59DayCardProjector(ledger,Topic59MaintenanceGate.for_profile(p))\n first=asyncio.run(projector.publish(req,t)); second=asyncio.run(projector.publish(req,t)); audit_count=len(list(m.glob('skip-audit.json')))\n tomorrow=req.__class__(req.card.__class__(**{**{f:getattr(req.card,f) for f in req.card.__dataclass_fields__},'kst_day':date(2026,8,21)}),req.config,req.receipt,req.runtime)\n normal=asyncio.run(projector.publish(tomorrow,t))\n loop=asyncio.new_event_loop();thread=threading.Thread(target=loop.run_forever);thread.start();runs=[];outputs=[]\n old_mark,old_save,old_home=scheduler.mark_job_run,scheduler.save_job_output,scheduler.get_hermes_home\n scheduler.mark_job_run=lambda _id,ok,error:runs.append((ok,error));scheduler.save_job_output=lambda _id,out:outputs.append(out) or p/'out';scheduler.get_hermes_home=lambda:p\n socket.socket=lambda *_a,**_k: (_ for _ in ()).throw(AssertionError('network'))\n try: scheduler.run_one_job({'id':'qa','inline_card':NUTRITION_TICK_CARD},adapters={Platform.TELEGRAM:Adapter()},loop=loop)\n finally:\n  socket.socket=real_socket;scheduler.mark_job_run, scheduler.save_job_output, scheduler.get_hermes_home=old_mark,old_save,old_home;loop.call_soon_threadsafe(loop.stop);thread.join(timeout=2);loop.close()\n print(json.dumps({'ticks':[first.disposition,second.disposition],'audit_count':audit_count,'ledger_rows':len(ledger.read_text().splitlines()),'transport_send':len(t.sent),'transport_edit':len(t.edited),'network_calls':network[0],'tomorrow':normal.disposition,'scheduler_ok':runs,'scheduler_status':outputs[0].split('Status: ',1)[1].strip()},default=str,sort_keys=True))\nPY\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run python - <<'PY'\nimport asyncio, hashlib, json, os, socket, tempfile, threading\nfrom dataclasses import dataclass, replace\nfrom datetime import timedelta,date\nfrom pathlib import Path\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import Topic59MaintenanceAuthorityV1,Topic59MaintenanceHoldV1,canonical_document\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59DayCardProjector\nfrom gateway.platforms.nutrition_weekly_operations_models import project_topic59_day_card\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\nfrom gateway.config import Platform\nfrom cron.physique_inline_card import NUTRITION_TICK_CARD\nfrom cron import scheduler\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import _request,_Transport,Topic59DayState\n@dataclass\nclass Result: success:bool=True;error:str|None=None;raw_response:NutritionScheduledTickOutcome|None=NutritionScheduledTickOutcome('noop_maintenance')\nclass Adapter:\n def is_inline_card_enabled(self,card):return card==NUTRITION_TICK_CARD\n async def send_inline_card(self,card):return Result()\nwith tempfile.TemporaryDirectory() as root:\n p=Path(root)/'profile';c=Path(root)/'credentials';p.mkdir(mode=0o700);req=_request(date(2026,8,20),Topic59DayState.SUBMITTED);route=req.config.review_route;proj=project_topic59_day_card(req.card,config_digest=req.config.digest,route_key=route.key);now=req.runtime.now\n hold=Topic59MaintenanceHoldV1(hold_id='3'*64,package_digest='4'*64,candidate_digest=proj.candidate_digest,config_digest=proj.config_digest,route_digest=proj.route_digest,customer_identity_digest=proj.customer_identity_digest,card_slot=proj.card_slot,kst_day=proj.kst_day,not_before=now,expires_at=now+timedelta(minutes=5));hb=canonical_document(hold);auth=Topic59MaintenanceAuthorityV1(package_digest='4'*64,hold_sha256=hashlib.sha256(hb).hexdigest(),hold=hold)\n m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n for n,b,mode in [('hold.json',hb,0o600),('maintenance.lock',b'',0o600)]:q=m/n;q.write_bytes(b);q.chmod(mode)\n c.mkdir(mode=0o700);q=c/'nutricoach-topic59-maintenance-r71b.json';q.write_bytes(canonical_document(auth));q.chmod(0o400);os.environ['CREDENTIALS_DIRECTORY']=str(c)\n ledger=p/'data/weekly-operations-topic59.jsonl';t=_Transport();projector=Topic59DayCardProjector(ledger,Topic59MaintenanceGate.for_profile(p));first=asyncio.run(projector.publish(req,t));second=asyncio.run(projector.publish(req,t));audit_count=len(list(m.glob('skip-audit.json')))\n tomorrow=req.__class__(replace(req.card,kst_day=date(2026,8,21)),req.config,req.receipt,req.runtime);normal=asyncio.run(projector.publish(tomorrow,t))\n loop=asyncio.new_event_loop();thread=threading.Thread(target=loop.run_forever);thread.start();runs=[];outputs=[];old=(scheduler.mark_job_run,scheduler.save_job_output,scheduler.get_hermes_home);scheduler.mark_job_run=lambda _id,ok,error:runs.append((ok,error));scheduler.save_job_output=lambda _id,out:outputs.append(out) or p/'out';scheduler.get_hermes_home=lambda:p;real_socket=socket.socket;network=[0]\n def blocked(*_a,**_k):network[0]+=1;raise AssertionError('network')\n socket.socket=blocked\n try:scheduler.run_one_job({'id':'qa','inline_card':NUTRITION_TICK_CARD},adapters={Platform.TELEGRAM:Adapter()},loop=loop)\n finally:socket.socket=real_socket;scheduler.mark_job_run,scheduler.save_job_output,scheduler.get_hermes_home=old;loop.call_soon_threadsafe(loop.stop);thread.join(timeout=2);loop.close()\n print(json.dumps({'ticks':[first.disposition,second.disposition],'audit_count':audit_count,'ledger_rows':len(ledger.read_text().splitlines()),'transport_send':len(t.sent),'transport_edit':len(t.edited),'network_calls':network[0],'tomorrow':normal.disposition,'scheduler_ok':runs,'scheduler_status':outputs[0].split('Status: ',1)[1].strip()},default=str,sort_keys=True))\nPY\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && add_patch() { p=\"$1\"; c=$(cat); n=$(printf '%s\\n' \"$c\" | wc -l); { printf '%s\\n' '--- /dev/null' \"+++ b/$p\" \"@@ -0,0 +1,$n @@\"; printf '%s\\n' \"$c\" | sed 's/^/+/' ; } | /tmp/nutricoach-t12-bin/apply_patch; }\nadd_patch gateway/platforms/nutrition_weekly_dispatch_result.py <<'PY'\n\"\"\"Typed aggregate result for one weekly operations dispatch tick.\"\"\"\n\nfrom dataclasses import dataclass\n\nfrom .nutrition_weekly_operations import Topic59PublicationDisposition\n\n\n@dataclass(frozen=True, slots=True)\nclass WeeklyOperationsDispatchResult:\n    failures: tuple[str, ...]\n    topic59_dispositions: tuple[Topic59PublicationDisposition, ...]\n\n    @property\n    def maintenance_noop(self) -> bool:\n        return (\n            not self.failures\n            and Topic59PublicationDisposition.NOOP_MAINTENANCE\n            in self.topic59_dispositions\n        )\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('gateway/platforms/nutrition_weekly_dispatcher.py');old=p.read_text();block='''@dataclass(frozen=True, slots=True)\nclass WeeklyOperationsDispatchResult:\n    failures: tuple[str, ...]\n    topic59_dispositions: tuple[Topic59PublicationDisposition, ...]\n\n    @property\n    def maintenance_noop(self) -> bool:\n        return not self.failures and Topic59PublicationDisposition.NOOP_MAINTENANCE in self.topic59_dispositions\n\n\n''';new=old.replace('from .nutrition_weekly_maintenance_store import Topic59MaintenanceGate\\n','from .nutrition_weekly_dispatch_result import WeeklyOperationsDispatchResult\\nfrom .nutrition_weekly_maintenance_store import Topic59MaintenanceGate\\n').replace(block,'')\nif new==old:raise SystemExit('no replacement')\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nawk '!/^[[:space:]]*$/ && !/^[[:space:]]*#/' gateway/platforms/nutrition_weekly_dispatcher.py | wc -l\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n\n---CALL---\ncd '/home/cube/projects/richard/traning coach' && test ! -e .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json && add_patch() { p=\"$1\"; c=$(cat); n=$(printf '%s\\n' \"$c\" | wc -l); { printf '%s\\n' '--- /dev/null' \"+++ b/$p\" \"@@ -0,0 +1,$n @@\"; printf '%s\\n' \"$c\" | sed 's/^/+/' ; } | /tmp/nutricoach-t12-bin/apply_patch; }\nadd_patch .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json <<'JSON'\n{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-v1\",\n  \"task_id\": \"st_01a05bc2\",\n  \"status\": \"DONE_SOURCE_ONLY\",\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"scope_guards\": {\n    \"git_or_github_actions\": 0,\n    \"network_or_provider_actions\": 0,\n    \"customer_actions\": 0,\n    \"package_preseal_live_profile_credential_root_creations\": 0,\n    \"commits\": 0\n  },\n  \"red_green\": {\n    \"red\": \"pytest collection failed with ModuleNotFoundError for nutrition_weekly_maintenance_contract before runtime modules existed\",\n    \"green\": {\n      \"affected_tests\": 189,\n      \"failed\": 0,\n      \"duration_seconds\": 6.56,\n      \"suites\": [\n        \"new maintenance authority/store/propagation tests\",\n        \"Topic59 projection/publication/failure/r2/Telegram suites\",\n        \"weekly dispatcher epoch2 and host matrix\",\n        \"cron inline-card and scheduler suites\"\n      ]\n    }\n  },\n  \"manual_zero_call_qa\": {\n    \"surface\": \"isolated actual Topic59DayCardProjector -> typed maintenance result -> actual launch_scheduled_card -> run_one_job scheduler bridge\",\n    \"current_day_ticks\": [\"noop_maintenance\", \"noop_maintenance\"],\n    \"current_day_audit_count\": 1,\n    \"current_day_delivery_ledger_rows_before_tomorrow\": 0,\n    \"send_calls_current_day\": 0,\n    \"edit_calls_current_day\": 0,\n    \"network_calls\": 0,\n    \"tomorrow_disposition\": \"sent\",\n    \"tomorrow_fake_transport_send_calls\": 1,\n    \"scheduler_mark_job_run\": [true, null],\n    \"scheduler_status_token\": \"maintenance no-op completed\",\n    \"privacy_oracle\": {\n      \"audit_has_card_text\": false,\n      \"audit_has_raw_customer_or_telegram_identity\": false,\n      \"sent\": false,\n      \"delivered\": false,\n      \"message_id\": null,\n      \"provider_receipt\": null,\n      \"provider_calls\": 0,\n      \"network_calls\": 0\n    }\n  },\n  \"verification\": {\n    \"ruff\": \"PASS\",\n    \"ty_strict_targeted\": \"PASS\",\n    \"basedpyright_strict_targeted\": \"PASS: 0 errors, 0 warnings, 0 notes\",\n    \"lsp\": \"PASS for changed-file source set after workspace refresh; standalone server initially retained stale pre-patch diagnostics\",\n    \"compileall\": \"PASS\",\n    \"import_smoke\": \"PASS\",\n    \"no_excuse_rules_new_runtime_modules\": \"PASS: no violations in 3 files\",\n    \"fixed_sleeps_or_polling_added\": 0\n  },\n  \"source_hashes\": {\n    \"before_anchors\": {\n      \"gateway/platforms/nutrition_weekly_operations.py\": \"52020ac1bd42d8812f7b69d5b74be6322885f6746159298df81a750a1e39d930\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"616b8b4da48d9c2c89336d9e791339c7401c354d67f38831af0f5d155a492cc8\",\n      \"cron/physique_inline_card.py\": \"bdb1a34d16763c9e3cbe687a3617215e32b6c6919c9b49405d42e1ee5831ba5d\",\n      \"cron/scheduler.py\": \"bfe56dcc74a08278671e3e373b0eb8ce624a093b6ed0ad365464e87b1de89709\"\n    },\n    \"after\": {\n      \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n      \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d\",\n      \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542\",\n      \"gateway/platforms/nutrition_weekly_operations.py\": \"b0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e\",\n      \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n      \"cron/physique_inline_card.py\": \"9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2\",\n      \"cron/scheduler.py\": \"09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95\"\n    }\n  },\n  \"loc_review\": {\n    \"nutrition_weekly_maintenance_contract.py\": 137,\n    \"nutrition_weekly_maintenance_io.py\": 99,\n    \"nutrition_weekly_maintenance_store.py\": 208,\n    \"nutrition_weekly_dispatch_result.py\": 14,\n    \"nutrition_weekly_operations.py\": 146,\n    \"nutrition_weekly_dispatcher.py\": 250,\n    \"note\": \"Large inherited telegram.py and scheduler.py received only narrow propagation branches; no adjacent refactor was performed.\"\n  },\n  \"done_claim\": {\n    \"claim\": \"The source-only r71b maintenance runtime increment is implemented and qualified without package, preseal, live, profile, credential, root, provider, customer, network, Git, or commit effects.\",\n    \"single_responsibility\": \"PASS: contract, secure I/O, gate state machine, dispatch result, and bridge propagation are separated by responsibility.\",\n    \"boundary_purity\": \"PASS: strict frozen Pydantic documents parse canonical external JSON once; internal decisions are typed.\",\n    \"variant_discrimination\": \"PASS: maintenance decisions use an exhaustive typed match at the publication boundary.\",\n    \"escape_hatches\": \"PASS: no Any, cast, ignore, noqa, broad catch, or sleep was introduced in the maintenance runtime.\",\n    \"defensive_layer\": \"PASS: checks are limited to credential/filesystem/JSON trust boundaries.\",\n    \"one_off_helpers\": \"PASS: storage helpers encode repeated secure openat and atomic-write contracts.\",\n    \"tests\": \"PASS: reverting the pre-claim gate or typed scheduler branch fails focused behavior tests.\",\n    \"parameter_bloat\": \"PASS: no new function exceeds three independent domain parameters.\",\n    \"redundant_verification\": \"PASS: readback exists only because the explicit durable filesystem contract requires it.\",\n    \"negative_naming\": \"PASS\",\n    \"logging\": \"NOT_TOUCHED\"\n  }\n}\nJSON\npython -m json.tool .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json >/dev/null\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && UV_OFFLINE=1 uv run ruff check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('gateway/platforms/telegram_weekly_host_dispatch.py');old=p.read_text();new=old.replace('    from gateway.platforms.nutrition_weekly_dispatcher import (\\n        WeeklyOperationsCoordinator,\\n        WeeklyOperationsDispatchResult,\\n        WeeklyOperationsTask,\\n    )\\n','    from gateway.platforms.nutrition_weekly_dispatch_result import (\\n        WeeklyOperationsDispatchResult,\\n    )\\n    from gateway.platforms.nutrition_weekly_dispatcher import (\\n        WeeklyOperationsCoordinator,\\n        WeeklyOperationsTask,\\n    )\\n').replace('        from gateway.platforms.nutrition_weekly_dispatcher import (\\n            WeeklyOperationsCoordinator,\\n            WeeklyOperationsDispatchResult,\\n        )\\n','        from gateway.platforms.nutrition_weekly_dispatch_result import (\\n            WeeklyOperationsDispatchResult,\\n        )\\n        from gateway.platforms.nutrition_weekly_dispatcher import (\\n            WeeklyOperationsCoordinator,\\n        )\\n')\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/telegram_weekly_host_dispatch.py && UV_OFFLINE=1 uv run ruff check gateway/platforms/telegram_weekly_host_dispatch.py\n\n---CALL---\ncd '/home/cube/projects/richard/traning coach' && /tmp/nutricoach-t12-bin/apply_patch <<'PATCH'\n--- a/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json\n+++ b/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json\n@@ -52,7 +52,7 @@\n     \"ruff\": \"PASS\",\n     \"ty_strict_targeted\": \"PASS\",\n     \"basedpyright_strict_targeted\": \"PASS: 0 errors, 0 warnings, 0 notes\",\n-    \"lsp\": \"PASS for changed-file source set after workspace refresh; standalone server initially retained stale pre-patch diagnostics\",\n+    \"lsp\": \"Changed tests and established modules clean; the persistent LSP server retained stale missing-import diagnostics for shell-patched new modules while the fresh strict basedpyright process reported 0 errors. cron/scheduler.py retains its pre-existing legacy diagnostics.\",\n     \"compileall\": \"PASS\",\nPATCH\npython -m json.tool .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json >/dev/null\n\n[Showing lines 657-1288 of 1288 (50.0KB limit). Full output: /home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-3c11d0f57a1fcb3e.log]"}],"details":{"truncation":{"content":"\n\ndef _read_regular_at(\n    directory_fd: int, name: str, mode: int, uid: int, gid: int | None,\n) -> bytes:\n    descriptor = _open_file(directory_fd, name, mode, uid, gid)\n    try:\n        raw = os.read(descriptor, _MAX_BYTES + 1)\n        if not raw or len(raw) > _MAX_BYTES or os.read(descriptor, 1):\n            raise Topic59MaintenanceContractError()\n        return raw\n    finally:\n        os.close(descriptor)\n\n\ndef _open_file(\n    directory_fd: int, name: str, mode: int, uid: int | None = None, gid: int | None = None,\n) -> int:\n    descriptor = os.open(name, _FILE_FLAGS, dir_fd=directory_fd)\n    info = os.fstat(descriptor)\n    expected_uid = os.geteuid() if uid is None else uid\n    if (\n        not stat.S_ISREG(info.st_mode) or stat.S_IMODE(info.st_mode) != mode\n        or info.st_uid != expected_uid or (gid is not None and info.st_gid != gid)\n        or info.st_nlink != 1\n    ):\n        os.close(descriptor)\n        raise PermissionError\n    return descriptor\n\n\ndef _optional_document(\n    directory_fd: int, name: str, model: type[_DocumentT],\n) -> _DocumentT | None:\n    try:\n        raw = _read_regular_at(directory_fd, name, 0o600, os.geteuid(), os.getegid())\n    except FileNotFoundError:\n        return None\n    return _parse_document(raw, model)\n\n\ndef _parse_document(raw: bytes, model: type[_DocumentT]) -> _DocumentT:\n    parsed = model.model_validate_json(raw)\n    if canonical_document(parsed) != raw:\n        raise Topic59MaintenanceContractError()\n    return parsed\n\n\ndef _projection_matches(hold: Topic59MaintenanceHoldV1, projection: Topic59Projection) -> bool:\n    return (\n        hold.candidate_digest == projection.candidate_digest\n        and hold.config_digest == projection.config_digest\n        and hold.route_digest == projection.route_digest\n        and hold.customer_identity_digest == projection.customer_identity_digest\n        and hold.card_slot == projection.card_slot\n        and hold.kst_day == projection.kst_day\n    )\n\n\ndef _audit_matches(\n    audit: Topic59MaintenanceSkipAuditV1,\n    authority: Topic59MaintenanceAuthorityV1,\n    hold: Topic59MaintenanceHoldV1,\n) -> bool:\n    return (\n        audit.hold_id == hold.hold_id and audit.hold_sha256 == authority.hold_sha256\n        and audit.authority_id == authority.authority_id\n        and audit.package_digest == hold.package_digest\n        and audit.candidate_digest == hold.candidate_digest\n        and audit.config_digest == hold.config_digest and audit.route_digest == hold.route_digest\n        and audit.customer_identity_digest == hold.customer_identity_digest\n        and audit.card_slot == hold.card_slot and audit.kst_day == hold.kst_day\n        and hold.not_before <= audit.recorded_at < hold.expires_at\n    )\n\n\ndef _build_audit(\n    authority: Topic59MaintenanceAuthorityV1, hold: Topic59MaintenanceHoldV1, now: datetime,\n) -> bytes:\n    fields = {\n        \"schema\": \"nutricoach-topic59-maintenance-skip-audit-v1\",\n        \"hold_id\": hold.hold_id, \"hold_sha256\": authority.hold_sha256,\n        \"authority_id\": authority.authority_id, \"package_digest\": hold.package_digest,\n        \"candidate_digest\": hold.candidate_digest, \"config_digest\": hold.config_digest,\n        \"route_digest\": hold.route_digest,\n        \"customer_identity_digest\": hold.customer_identity_digest,\n        \"card_slot\": hold.card_slot, \"kst_day\": hold.kst_day.isoformat(),\n        \"recorded_at\": now.isoformat(), \"terminal_state\": \"maintenance_skipped\",\n        \"disposition\": \"noop_maintenance\", \"sent\": False, \"delivered\": False,\n        \"message_id\": None, \"provider_receipt\": None, \"provider_calls\": 0, \"network_calls\": 0,\n    }\n    encoded = json.dumps(fields, sort_keys=True, separators=(\",\", \":\")).encode()\n    fields[\"row_digest\"] = hashlib.sha256(encoded).hexdigest()\n    return canonical_document(Topic59MaintenanceSkipAuditV1.model_validate(fields))\n\n\ndef _atomic_write_at(directory_fd: int, name: str, raw: bytes) -> None:\n    temporary = f\".{name}.tmp\"\n    descriptor = os.open(\n        temporary, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_CLOEXEC | os.O_NOFOLLOW,\n        0o600, dir_fd=directory_fd,\n    )\n    try:\n        view = memoryview(raw)\n        while view:\n            view = view[os.write(descriptor, view):]\n        os.fsync(descriptor)\n    finally:\n        os.close(descriptor)\n    os.rename(temporary, name, src_dir_fd=directory_fd, dst_dir_fd=directory_fd)\n    _fsync_directory(directory_fd)\n    if _read_regular_at(directory_fd, name, 0o600, os.geteuid(), os.getegid()) != raw:\n        raise OSError\n\n\ndef _fsync_directory(directory_fd: int) -> None:\n    os.fsync(directory_fd)\n\n\ndef _allow() -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(kind=Topic59MaintenanceDecisionKind.ALLOW)\n\n\ndef _deny(reason: Topic59MaintenanceFailure) -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(kind=Topic59MaintenanceDecisionKind.DENY, reason=reason)\n\n\ndef _noop(raw: bytes) -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(\n        kind=Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n        audit_digest=hashlib.sha256(raw).hexdigest(),\n    )\nPY\nUV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && /tmp/nutricoach-t12-bin/apply_patch <<'PATCH'\n--- a/gateway/platforms/nutrition_weekly_maintenance_store.py\n+++ b/gateway/platforms/nutrition_weekly_maintenance_store.py\n@@ -280,5 +280,7 @@\n     }\n     encoded = json.dumps(fields, sort_keys=True, separators=(\",\", \":\")).encode()\n     fields[\"row_digest\"] = hashlib.sha256(encoded).hexdigest()\n+    fields[\"kst_day\"] = hold.kst_day\n+    fields[\"recorded_at\"] = now\n     return canonical_document(Topic59MaintenanceSkipAuditV1.model_validate(fields))\nPATCH\nUV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\nchanges={\n'cron/physique_inline_card.py':[\n('    error: str | None\\n', '    error: str | None\\n    raw_response: NutritionScheduledTickOutcome | None\\n'),\n('from typing import Awaitable, Final, Protocol\\n', 'from typing import Awaitable, Final, Protocol, TYPE_CHECKING\\n\\nif TYPE_CHECKING:\\n    from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\\n'),\n('    error: str | None = None\\n\\n\\ndef launch_morning_card', '    error: str | None = None\\n    maintenance_noop: bool = False\\n\\n\\ndef launch_morning_card'),\n('        return LaunchResult(sent=sent, error=transport.last_error)\\n', '        return LaunchResult(\\n            sent=sent and not transport.maintenance_noop,\\n            error=transport.last_error,\\n            maintenance_noop=transport.maintenance_noop,\\n        )\\n'),\n('        self.last_error: str | None = None\\n', '        self.last_error: str | None = None\\n        self.maintenance_noop = False\\n'),\n('        self.last_error = result.error\\n        return result.success\\n', '        self.last_error = result.error\\n        from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\\n        self.maintenance_noop = (\\n            isinstance(result.raw_response, NutritionScheduledTickOutcome)\\n            and result.raw_response.disposition == \"noop_maintenance\"\\n        )\\n        return result.success\\n'),\n],\n'cron/scheduler.py':[\n('            if launched.sent:\\n                output += \"Status: launch card sent\\\\n\"\\n                mark_job_run(job[\"id\"], True, None)\\n', '            if launched.maintenance_noop:\\n                output += \"Status: maintenance no-op completed\\\\n\"\\n                mark_job_run(job[\"id\"], True, None)\\n            elif launched.sent:\\n                output += \"Status: launch card sent\\\\n\"\\n                mark_job_run(job[\"id\"], True, None)\\n'),\n],\n'tests/cron/test_physique_inline_card.py':[\n('from cron import scheduler\\n', 'from cron import scheduler\\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\\n'),\n('        self.error = error\\n', '        self.error = error\\n        self.raw_response = None\\n'),\n('def test_nutrition_tick_preserves_the_adapter_failure_reason', 'def test_nutrition_tick_propagates_maintenance_without_fabricating_send(tmp_path: Path) -> None:\\n    # Given\\n    loop = asyncio.new_event_loop()\\n    worker = threading.Thread(target=loop.run_forever)\\n    worker.start()\\n    transport = AsyncFakeCardTransport()\\n    transport.raw_response = NutritionScheduledTickOutcome(\"noop_maintenance\")\\n    try:\\n        # When\\n        result = launch_scheduled_card(tmp_path, transport, loop, _morning(), NUTRITION_TICK_CARD)\\n    finally:\\n        loop.call_soon_threadsafe(loop.stop)\\n        worker.join(timeout=5)\\n        loop.close()\\n\\n    # Then\\n    assert result.maintenance_noop is True\\n    assert result.sent is False\\n    assert result.error is None\\n\\n\\ndef test_nutrition_tick_preserves_the_adapter_failure_reason'),\n],\n}\nfor name,repls in changes.items():\n p=Path(name);old=p.read_text();new=old\n for a,b in repls:\n  if new.count(a)!=1:raise SystemExit(f'{name} count={new.count(a)} {a[:70]!r}')\n  new=new.replace(a,b)\n print(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+name,tofile='b/'+name)),end='')\nPY\nUV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_scheduler.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py');old=p.read_text();new='''from __future__ import annotations\n\nfrom dataclasses import dataclass\nfrom datetime import date\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecision,\n    Topic59MaintenanceDecisionKind,\n)\nfrom gateway.platforms.nutrition_weekly_operations import (\n    Topic59DayCardProjector,\n    Topic59PublicationDisposition,\n)\nfrom gateway.platforms.nutrition_weekly_operations_models import Topic59Projection\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import (\n    Topic59DayState,\n    _Transport,\n    _request,\n)\n\n\n@dataclass(frozen=True, slots=True)\nclass _MaintenanceGate:\n    def evaluate(self, projection: Topic59Projection, now) -> Topic59MaintenanceDecision:\n        _ = projection, now\n        return Topic59MaintenanceDecision(\n            kind=Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n            audit_digest=\"9\" * 64,\n        )\n\n\ndef test_maintenance_disposition_is_distinct_from_delivery() -> None:\n    # Given / When / Then\n    assert Topic59PublicationDisposition.NOOP_MAINTENANCE.value == \"noop_maintenance\"\n\n\n@pytest.mark.anyio\nasync def test_maintenance_result_precedes_claim_and_transport(tmp_path: Path) -> None:\n    # Given\n    transport = _Transport()\n    projector = Topic59DayCardProjector(tmp_path / \"topic59.jsonl\", _MaintenanceGate())\n    projector._ledger.claim = lambda _projection: (_ for _ in ()).throw(AssertionError(\"claim reached\"))\n\n    # When\n    result = await projector.publish(\n        _request(date(2026, 8, 20), Topic59DayState.SUBMITTED), transport,\n    )\n\n    # Then\n    assert result.disposition is Topic59PublicationDisposition.NOOP_MAINTENANCE\n    assert result.message_id is None\n    assert result.maintenance_audit_digest == \"9\" * 64\n    assert transport.sent == transport.edited == []\n    assert not (tmp_path / \"topic59.jsonl\").exists()\n'''\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('gateway/platforms/nutrition_weekly_operations.py');old=p.read_text();new=old.replace('from dataclasses import dataclass\\n','from dataclasses import dataclass\\nfrom datetime import datetime\\n').replace('from .nutrition_weekly_operations_models import Topic59DayCard, project_topic59_day_card\\n','from .nutrition_weekly_operations_models import (\\n    Topic59DayCard,\\n    Topic59Projection,\\n    project_topic59_day_card,\\n)\\n').replace('    def evaluate(self, projection, now) -> Topic59MaintenanceDecision: ...\\n','    def evaluate(\\n        self, projection: Topic59Projection, now: datetime,\\n    ) -> Topic59MaintenanceDecision: ...\\n')\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('gateway/platforms/nutrition_weekly_maintenance_store.py');old=p.read_text();marker='\\ndef _projection_matches('\ninsert='''\ndef _optional_document(\n    directory_fd: int, name: str, model: type[_DocumentT],\n) -> _DocumentT | None:\n    try:\n        raw = _read_regular_at(directory_fd, name, 0o600, os.geteuid(), os.getegid())\n    except FileNotFoundError:\n        return None\n    return _parse_document(raw, model)\n\n'''\nnew=old.replace(marker,insert+marker).replace('from typing import Final\\n','from typing import Final, TypeVar\\n').replace('from pydantic import ValidationError\\n','from pydantic import BaseModel, ValidationError\\n').replace('_EXPECTED_NAMES: Final = frozenset({','_DocumentT = TypeVar(\"_DocumentT\", bound=BaseModel)\\n_EXPECTED_NAMES: Final = frozenset({')\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/cron/test_physique_inline_card.py');old=p.read_text();new=old.replace('from cron.physique_inline_card import MORNING_CARD, NUTRITION_TICK_CARD, SOURCE_REVIEW_CARD, launch_morning_card, launch_scheduled_card\\n','from cron.physique_inline_card import (\\n    MORNING_CARD, NUTRITION_TICK_CARD, SOURCE_REVIEW_CARD, LaunchResult,\\n    launch_morning_card, launch_scheduled_card,\\n)\\n')\nnew += '''\\n\\ndef test_scheduler_records_maintenance_as_success_without_sent_status(monkeypatch, tmp_path: Path) -> None:\\n    # Given\\n    job = {\"id\": \"maintenance-job\", \"inline_card\": NUTRITION_TICK_CARD}\\n    runs: list[tuple[bool, str | None]] = []\\n    outputs: list[str] = []\\n    monkeypatch.setattr(scheduler, \"get_hermes_home\", lambda: tmp_path)\\n    monkeypatch.setattr(\\n        \"cron.physique_inline_card.launch_scheduled_card\",\\n        lambda *_args, **_kwargs: LaunchResult(maintenance_noop=True),\\n    )\\n    monkeypatch.setattr(scheduler, \"mark_job_run\", lambda _job_id, ok, error: runs.append((ok, error)))\\n    monkeypatch.setattr(scheduler, \"save_job_output\", lambda _job_id, output: outputs.append(output) or tmp_path / \"out\")\\n\\n    # When\\n    processed = scheduler.run_one_job(job)\\n\\n    # Then\\n    assert processed is True\\n    assert runs == [(True, None)]\\n    assert \"Status: maintenance no-op completed\" in outputs[0]\\n    assert \"Status: launch card sent\" not in outputs[0]\\n'''\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_topic59_maintenance.py');old=p.read_text();new=old.replace('import json\\n','import json\\nimport threading\\nfrom concurrent.futures import ThreadPoolExecutor\\n')\nnew += '''\\n\\ndef test_consuming_marker_completes_after_rename_crash(tmp_path: Path, monkeypatch) -> None:\\n    # Given\\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\\n    profile.mkdir(mode=0o700)\\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\\n    _arm(profile, credentials, now)\\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\\n    (maintenance / \"hold.json\").rename(maintenance / \"hold.consuming.json\")\\n\\n    # When\\n    result = Topic59MaintenanceGate.for_profile(profile).evaluate(_projection(now.date()), now)\\n\\n    # Then\\n    assert result.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\\n    assert (maintenance / \"skip-audit.json\").is_file()\\n    assert not (maintenance / \"hold.consuming.json\").exists()\\n\\n\\ndef test_complete_audit_finalizes_consuming_marker_after_replace_crash(tmp_path: Path, monkeypatch) -> None:\\n    # Given\\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\\n    profile.mkdir(mode=0o700)\\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\\n    _arm(profile, credentials, now)\\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\\n    hold_bytes = (maintenance / \"hold.json\").read_bytes()\\n    gate = Topic59MaintenanceGate.for_profile(profile)\\n    first = gate.evaluate(_projection(now.date()), now)\\n    consuming = maintenance / \"hold.consuming.json\"\\n    consuming.write_bytes(hold_bytes)\\n    consuming.chmod(0o600)\\n\\n    # When\\n    recovered = gate.evaluate(_projection(now.date()), now)\\n\\n    # Then\\n    assert recovered == first\\n    assert not consuming.exists()\\n\\n\\ndef test_concurrent_ticks_create_one_audit_without_timing_waits(tmp_path: Path, monkeypatch) -> None:\\n    # Given\\n    profile, credentials = tmp_path / \"profile\", tmp_path / \"credentials\"\\n    profile.mkdir(mode=0o700)\\n    now = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\\n    _arm(profile, credentials, now)\\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\\n    gate = Topic59MaintenanceGate.for_profile(profile)\\n    barrier = threading.Barrier(3)\\n\\n    def evaluate() -> Topic59MaintenanceDecisionKind:\\n        barrier.wait(timeout=2)\\n        return gate.evaluate(_projection(now.date()), now).kind\\n\\n    # When\\n    with ThreadPoolExecutor(max_workers=2) as workers:\\n        futures = (workers.submit(evaluate), workers.submit(evaluate))\\n        barrier.wait(timeout=2)\\n        outcomes = tuple(future.result(timeout=2) for future in futures)\\n\\n    # Then\\n    assert outcomes == (\\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\\n    )\\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\\n    assert tuple(path.name for path in maintenance.glob(\"skip-audit.json\")) == (\"skip-audit.json\",)\\n'''\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\nchanges={\n'gateway/platforms/nutrition_weekly_maintenance_io.py':[\n('def _read_credential(', 'def read_credential('),('def _open_owned_directory(', 'def open_owned_directory('),\n('def _read_regular_at(', 'def read_regular_at('),('def _open_file(', 'def open_file('),\n('def _parse_document(', 'def parse_document('),('def _atomic_write_at(', 'def atomic_write_at('),\n('def _fsync_directory(', 'def fsync_directory('),\n('_read_regular_at(', 'read_regular_at('),('_open_file(', 'open_file('),('_parse_document(', 'parse_document('),('_fsync_directory(', 'fsync_directory('),\n],\n'gateway/platforms/nutrition_weekly_maintenance_store.py':[\n('    _atomic_write_at,\\n    _fsync_directory,\\n    _open_file,\\n    _open_owned_directory,\\n    _parse_document,\\n    _read_credential,\\n    _read_regular_at,\\n', '    atomic_write_at as _atomic_write_at,\\n    fsync_directory as _fsync_directory,\\n    open_file as _open_file,\\n    open_owned_directory as _open_owned_directory,\\n    parse_document as _parse_document,\\n    read_credential as _read_credential,\\n    read_regular_at as _read_regular_at,\\n'),\n],\n'gateway/platforms/nutrition_weekly_operations.py':[\n('        self._maintenance_gate = maintenance_gate\\n','        self._maintenance_gate: Topic59MaintenanceEvaluator | None = maintenance_gate\\n'),\n],\n'gateway/platforms/telegram_weekly_host_dispatch.py':[\n('        WeeklyOperationsCoordinator,\\n        WeeklyOperationsTask,\\n', '        WeeklyOperationsCoordinator,\\n        WeeklyOperationsDispatchResult,\\n        WeeklyOperationsTask,\\n'),\n],\n}\nfor name,repls in changes.items():\n p=Path(name);old=p.read_text();new=old\n for a,b in repls:\n  if a not in new:raise SystemExit(f'{name}: {a!r}')\n  new=new.replace(a,b)\n print(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+name,tofile='b/'+name)),end='')\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py');old=p.read_text();new='''from gateway.platforms.nutrition_weekly_operations import Topic59PublicationDisposition\n\n\ndef test_maintenance_disposition_is_distinct_from_delivery() -> None:\n    # Given / When / Then\n    assert Topic59PublicationDisposition.NOOP_MAINTENANCE.value == \"noop_maintenance\"\n'''\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_operations_topic59.py');old=p.read_text();new=old.replace('from gateway.platforms.nutrition_weekly_operations import (\\n','from gateway.platforms.nutrition_weekly_maintenance_contract import (\\n    Topic59MaintenanceDecision, Topic59MaintenanceDecisionKind,\\n)\\nfrom gateway.platforms.nutrition_weekly_operations import (\\n')\nnew += '''\\n\\n@dataclass(frozen=True, slots=True)\\nclass _NoopMaintenanceGate:\\n    def evaluate(self, projection, now) -> Topic59MaintenanceDecision:\\n        _ = projection, now\\n        return Topic59MaintenanceDecision(\\n            kind=Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\\n            audit_digest=\"9\" * 64,\\n        )\\n\\n\\n@pytest.mark.anyio\\nasync def test_maintenance_precedes_topic59_claim_and_transport(tmp_path: Path, monkeypatch) -> None:\\n    # Given\\n    transport = _Transport()\\n    projector = Topic59DayCardProjector(tmp_path / \"topic59.jsonl\", _NoopMaintenanceGate())\\n    monkeypatch.setattr(\\n        projector._ledger, \"claim\",\\n        lambda projection: (_ for _ in ()).throw(AssertionError(projection.logical_key)),\\n    )\\n\\n    # When\\n    result = await projector.publish(\\n        _request(date(2026, 8, 20), Topic59DayState.SUBMITTED), transport,\\n    )\\n\\n    # Then\\n    assert result.disposition is Topic59PublicationDisposition.NOOP_MAINTENANCE\\n    assert result.message_id is None\\n    assert result.maintenance_audit_digest == \"9\" * 64\\n    assert transport.sent == transport.edited == []\\n    assert not (tmp_path / \"topic59.jsonl\").exists()\\n'''\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && rg -n 'def |_[a-z]+\\(' gateway/platforms/nutrition_weekly_maintenance_io.py | tail -30; PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run python - <<'PY'\nimport asyncio, hashlib, json, os, socket, tempfile, threading\nfrom dataclasses import dataclass\nfrom datetime import timedelta\nfrom pathlib import Path\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import Topic59MaintenanceAuthorityV1,Topic59MaintenanceHoldV1,canonical_document\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59DayCardProjector,Topic59PublicationDisposition\nfrom gateway.platforms.nutrition_weekly_operations_models import project_topic59_day_card\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\nfrom gateway.config import Platform\nfrom cron.physique_inline_card import NUTRITION_TICK_CARD\nfrom cron import scheduler\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import _request,_Transport,Topic59DayState\nfrom datetime import date\n\nnetwork=[0]\nreal_socket=socket.socket\n@dataclass\nclass Result:\n success: bool=True\n error: str|None=None\n raw_response: NutritionScheduledTickOutcome|None=NutritionScheduledTickOutcome('noop_maintenance')\nclass Adapter:\n def is_inline_card_enabled(self, card): return card==NUTRITION_TICK_CARD\n async def send_inline_card(self, card): return Result()\n\nwith tempfile.TemporaryDirectory() as root:\n p=Path(root)/'profile'; c=Path(root)/'credentials'; p.mkdir(mode=0o700)\n req=_request(date(2026,8,20),Topic59DayState.SUBMITTED); route=req.config.review_route\n proj=project_topic59_day_card(req.card,config_digest=req.config.digest,route_key=route.key)\n now=req.runtime.now\n hold=Topic59MaintenanceHoldV1(hold_id='3'*64,package_digest='4'*64,candidate_digest=proj.candidate_digest,config_digest=proj.config_digest,route_digest=proj.route_digest,customer_identity_digest=proj.customer_identity_digest,card_slot=proj.card_slot,kst_day=proj.kst_day,not_before=now-timedelta(minutes=1),expires_at=now+timedelta(minutes=5))\n hb=canonical_document(hold); auth=Topic59MaintenanceAuthorityV1(package_digest='4'*64,hold_sha256=hashlib.sha256(hb).hexdigest(),hold=hold)\n m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n for n,b,mode in [('hold.json',hb,0o600),('maintenance.lock',b'',0o600)]: q=m/n;q.write_bytes(b);q.chmod(mode)\n c.mkdir(mode=0o700);q=c/'nutricoach-topic59-maintenance-r71b.json';q.write_bytes(canonical_document(auth));q.chmod(0o400);os.environ['CREDENTIALS_DIRECTORY']=str(c)\n ledger=p/'data/weekly-operations-topic59.jsonl';t=_Transport();projector=Topic59DayCardProjector(ledger,Topic59MaintenanceGate.for_profile(p))\n first=asyncio.run(projector.publish(req,t)); second=asyncio.run(projector.publish(req,t)); audit_count=len(list(m.glob('skip-audit.json')))\n tomorrow=req.__class__(req.card.__class__(**{**{f:getattr(req.card,f) for f in req.card.__dataclass_fields__},'kst_day':date(2026,8,21)}),req.config,req.receipt,req.runtime)\n normal=asyncio.run(projector.publish(tomorrow,t))\n loop=asyncio.new_event_loop();thread=threading.Thread(target=loop.run_forever);thread.start();runs=[];outputs=[]\n old_mark,old_save,old_home=scheduler.mark_job_run,scheduler.save_job_output,scheduler.get_hermes_home\n scheduler.mark_job_run=lambda _id,ok,error:runs.append((ok,error));scheduler.save_job_output=lambda _id,out:outputs.append(out) or p/'out';scheduler.get_hermes_home=lambda:p\n socket.socket=lambda *_a,**_k: (_ for _ in ()).throw(AssertionError('network'))\n try: scheduler.run_one_job({'id':'qa','inline_card':NUTRITION_TICK_CARD},adapters={Platform.TELEGRAM:Adapter()},loop=loop)\n finally:\n  socket.socket=real_socket;scheduler.mark_job_run, scheduler.save_job_output, scheduler.get_hermes_home=old_mark,old_save,old_home;loop.call_soon_threadsafe(loop.stop);thread.join(timeout=2);loop.close()\n print(json.dumps({'ticks':[first.disposition,second.disposition],'audit_count':audit_count,'ledger_rows':len(ledger.read_text().splitlines()),'transport_send':len(t.sent),'transport_edit':len(t.edited),'network_calls':network[0],'tomorrow':normal.disposition,'scheduler_ok':runs,'scheduler_status':outputs[0].split('Status: ',1)[1].strip()},default=str,sort_keys=True))\nPY\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run python - <<'PY'\nimport asyncio, hashlib, json, os, socket, tempfile, threading\nfrom dataclasses import dataclass, replace\nfrom datetime import timedelta,date\nfrom pathlib import Path\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import Topic59MaintenanceAuthorityV1,Topic59MaintenanceHoldV1,canonical_document\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59DayCardProjector\nfrom gateway.platforms.nutrition_weekly_operations_models import project_topic59_day_card\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\nfrom gateway.config import Platform\nfrom cron.physique_inline_card import NUTRITION_TICK_CARD\nfrom cron import scheduler\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import _request,_Transport,Topic59DayState\n@dataclass\nclass Result: success:bool=True;error:str|None=None;raw_response:NutritionScheduledTickOutcome|None=NutritionScheduledTickOutcome('noop_maintenance')\nclass Adapter:\n def is_inline_card_enabled(self,card):return card==NUTRITION_TICK_CARD\n async def send_inline_card(self,card):return Result()\nwith tempfile.TemporaryDirectory() as root:\n p=Path(root)/'profile';c=Path(root)/'credentials';p.mkdir(mode=0o700);req=_request(date(2026,8,20),Topic59DayState.SUBMITTED);route=req.config.review_route;proj=project_topic59_day_card(req.card,config_digest=req.config.digest,route_key=route.key);now=req.runtime.now\n hold=Topic59MaintenanceHoldV1(hold_id='3'*64,package_digest='4'*64,candidate_digest=proj.candidate_digest,config_digest=proj.config_digest,route_digest=proj.route_digest,customer_identity_digest=proj.customer_identity_digest,card_slot=proj.card_slot,kst_day=proj.kst_day,not_before=now,expires_at=now+timedelta(minutes=5));hb=canonical_document(hold);auth=Topic59MaintenanceAuthorityV1(package_digest='4'*64,hold_sha256=hashlib.sha256(hb).hexdigest(),hold=hold)\n m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n for n,b,mode in [('hold.json',hb,0o600),('maintenance.lock',b'',0o600)]:q=m/n;q.write_bytes(b);q.chmod(mode)\n c.mkdir(mode=0o700);q=c/'nutricoach-topic59-maintenance-r71b.json';q.write_bytes(canonical_document(auth));q.chmod(0o400);os.environ['CREDENTIALS_DIRECTORY']=str(c)\n ledger=p/'data/weekly-operations-topic59.jsonl';t=_Transport();projector=Topic59DayCardProjector(ledger,Topic59MaintenanceGate.for_profile(p));first=asyncio.run(projector.publish(req,t));second=asyncio.run(projector.publish(req,t));audit_count=len(list(m.glob('skip-audit.json')))\n tomorrow=req.__class__(replace(req.card,kst_day=date(2026,8,21)),req.config,req.receipt,req.runtime);normal=asyncio.run(projector.publish(tomorrow,t))\n loop=asyncio.new_event_loop();thread=threading.Thread(target=loop.run_forever);thread.start();runs=[];outputs=[];old=(scheduler.mark_job_run,scheduler.save_job_output,scheduler.get_hermes_home);scheduler.mark_job_run=lambda _id,ok,error:runs.append((ok,error));scheduler.save_job_output=lambda _id,out:outputs.append(out) or p/'out';scheduler.get_hermes_home=lambda:p;real_socket=socket.socket;network=[0]\n def blocked(*_a,**_k):network[0]+=1;raise AssertionError('network')\n socket.socket=blocked\n try:scheduler.run_one_job({'id':'qa','inline_card':NUTRITION_TICK_CARD},adapters={Platform.TELEGRAM:Adapter()},loop=loop)\n finally:socket.socket=real_socket;scheduler.mark_job_run,scheduler.save_job_output,scheduler.get_hermes_home=old;loop.call_soon_threadsafe(loop.stop);thread.join(timeout=2);loop.close()\n print(json.dumps({'ticks':[first.disposition,second.disposition],'audit_count':audit_count,'ledger_rows':len(ledger.read_text().splitlines()),'transport_send':len(t.sent),'transport_edit':len(t.edited),'network_calls':network[0],'tomorrow':normal.disposition,'scheduler_ok':runs,'scheduler_status':outputs[0].split('Status: ',1)[1].strip()},default=str,sort_keys=True))\nPY\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && add_patch() { p=\"$1\"; c=$(cat); n=$(printf '%s\\n' \"$c\" | wc -l); { printf '%s\\n' '--- /dev/null' \"+++ b/$p\" \"@@ -0,0 +1,$n @@\"; printf '%s\\n' \"$c\" | sed 's/^/+/' ; } | /tmp/nutricoach-t12-bin/apply_patch; }\nadd_patch gateway/platforms/nutrition_weekly_dispatch_result.py <<'PY'\n\"\"\"Typed aggregate result for one weekly operations dispatch tick.\"\"\"\n\nfrom dataclasses import dataclass\n\nfrom .nutrition_weekly_operations import Topic59PublicationDisposition\n\n\n@dataclass(frozen=True, slots=True)\nclass WeeklyOperationsDispatchResult:\n    failures: tuple[str, ...]\n    topic59_dispositions: tuple[Topic59PublicationDisposition, ...]\n\n    @property\n    def maintenance_noop(self) -> bool:\n        return (\n            not self.failures\n            and Topic59PublicationDisposition.NOOP_MAINTENANCE\n            in self.topic59_dispositions\n        )\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('gateway/platforms/nutrition_weekly_dispatcher.py');old=p.read_text();block='''@dataclass(frozen=True, slots=True)\nclass WeeklyOperationsDispatchResult:\n    failures: tuple[str, ...]\n    topic59_dispositions: tuple[Topic59PublicationDisposition, ...]\n\n    @property\n    def maintenance_noop(self) -> bool:\n        return not self.failures and Topic59PublicationDisposition.NOOP_MAINTENANCE in self.topic59_dispositions\n\n\n''';new=old.replace('from .nutrition_weekly_maintenance_store import Topic59MaintenanceGate\\n','from .nutrition_weekly_dispatch_result import WeeklyOperationsDispatchResult\\nfrom .nutrition_weekly_maintenance_store import Topic59MaintenanceGate\\n').replace(block,'')\nif new==old:raise SystemExit('no replacement')\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nawk '!/^[[:space:]]*$/ && !/^[[:space:]]*#/' gateway/platforms/nutrition_weekly_dispatcher.py | wc -l\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n\n---CALL---\ncd '/home/cube/projects/richard/traning coach' && test ! -e .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json && add_patch() { p=\"$1\"; c=$(cat); n=$(printf '%s\\n' \"$c\" | wc -l); { printf '%s\\n' '--- /dev/null' \"+++ b/$p\" \"@@ -0,0 +1,$n @@\"; printf '%s\\n' \"$c\" | sed 's/^/+/' ; } | /tmp/nutricoach-t12-bin/apply_patch; }\nadd_patch .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json <<'JSON'\n{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-v1\",\n  \"task_id\": \"st_01a05bc2\",\n  \"status\": \"DONE_SOURCE_ONLY\",\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"scope_guards\": {\n    \"git_or_github_actions\": 0,\n    \"network_or_provider_actions\": 0,\n    \"customer_actions\": 0,\n    \"package_preseal_live_profile_credential_root_creations\": 0,\n    \"commits\": 0\n  },\n  \"red_green\": {\n    \"red\": \"pytest collection failed with ModuleNotFoundError for nutrition_weekly_maintenance_contract before runtime modules existed\",\n    \"green\": {\n      \"affected_tests\": 189,\n      \"failed\": 0,\n      \"duration_seconds\": 6.56,\n      \"suites\": [\n        \"new maintenance authority/store/propagation tests\",\n        \"Topic59 projection/publication/failure/r2/Telegram suites\",\n        \"weekly dispatcher epoch2 and host matrix\",\n        \"cron inline-card and scheduler suites\"\n      ]\n    }\n  },\n  \"manual_zero_call_qa\": {\n    \"surface\": \"isolated actual Topic59DayCardProjector -> typed maintenance result -> actual launch_scheduled_card -> run_one_job scheduler bridge\",\n    \"current_day_ticks\": [\"noop_maintenance\", \"noop_maintenance\"],\n    \"current_day_audit_count\": 1,\n    \"current_day_delivery_ledger_rows_before_tomorrow\": 0,\n    \"send_calls_current_day\": 0,\n    \"edit_calls_current_day\": 0,\n    \"network_calls\": 0,\n    \"tomorrow_disposition\": \"sent\",\n    \"tomorrow_fake_transport_send_calls\": 1,\n    \"scheduler_mark_job_run\": [true, null],\n    \"scheduler_status_token\": \"maintenance no-op completed\",\n    \"privacy_oracle\": {\n      \"audit_has_card_text\": false,\n      \"audit_has_raw_customer_or_telegram_identity\": false,\n      \"sent\": false,\n      \"delivered\": false,\n      \"message_id\": null,\n      \"provider_receipt\": null,\n      \"provider_calls\": 0,\n      \"network_calls\": 0\n    }\n  },\n  \"verification\": {\n    \"ruff\": \"PASS\",\n    \"ty_strict_targeted\": \"PASS\",\n    \"basedpyright_strict_targeted\": \"PASS: 0 errors, 0 warnings, 0 notes\",\n    \"lsp\": \"PASS for changed-file source set after workspace refresh; standalone server initially retained stale pre-patch diagnostics\",\n    \"compileall\": \"PASS\",\n    \"import_smoke\": \"PASS\",\n    \"no_excuse_rules_new_runtime_modules\": \"PASS: no violations in 3 files\",\n    \"fixed_sleeps_or_polling_added\": 0\n  },\n  \"source_hashes\": {\n    \"before_anchors\": {\n      \"gateway/platforms/nutrition_weekly_operations.py\": \"52020ac1bd42d8812f7b69d5b74be6322885f6746159298df81a750a1e39d930\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"616b8b4da48d9c2c89336d9e791339c7401c354d67f38831af0f5d155a492cc8\",\n      \"cron/physique_inline_card.py\": \"bdb1a34d16763c9e3cbe687a3617215e32b6c6919c9b49405d42e1ee5831ba5d\",\n      \"cron/scheduler.py\": \"bfe56dcc74a08278671e3e373b0eb8ce624a093b6ed0ad365464e87b1de89709\"\n    },\n    \"after\": {\n      \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n      \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d\",\n      \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542\",\n      \"gateway/platforms/nutrition_weekly_operations.py\": \"b0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e\",\n      \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n      \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n      \"cron/physique_inline_card.py\": \"9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2\",\n      \"cron/scheduler.py\": \"09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95\"\n    }\n  },\n  \"loc_review\": {\n    \"nutrition_weekly_maintenance_contract.py\": 137,\n    \"nutrition_weekly_maintenance_io.py\": 99,\n    \"nutrition_weekly_maintenance_store.py\": 208,\n    \"nutrition_weekly_dispatch_result.py\": 14,\n    \"nutrition_weekly_operations.py\": 146,\n    \"nutrition_weekly_dispatcher.py\": 250,\n    \"note\": \"Large inherited telegram.py and scheduler.py received only narrow propagation branches; no adjacent refactor was performed.\"\n  },\n  \"done_claim\": {\n    \"claim\": \"The source-only r71b maintenance runtime increment is implemented and qualified without package, preseal, live, profile, credential, root, provider, customer, network, Git, or commit effects.\",\n    \"single_responsibility\": \"PASS: contract, secure I/O, gate state machine, dispatch result, and bridge propagation are separated by responsibility.\",\n    \"boundary_purity\": \"PASS: strict frozen Pydantic documents parse canonical external JSON once; internal decisions are typed.\",\n    \"variant_discrimination\": \"PASS: maintenance decisions use an exhaustive typed match at the publication boundary.\",\n    \"escape_hatches\": \"PASS: no Any, cast, ignore, noqa, broad catch, or sleep was introduced in the maintenance runtime.\",\n    \"defensive_layer\": \"PASS: checks are limited to credential/filesystem/JSON trust boundaries.\",\n    \"one_off_helpers\": \"PASS: storage helpers encode repeated secure openat and atomic-write contracts.\",\n    \"tests\": \"PASS: reverting the pre-claim gate or typed scheduler branch fails focused behavior tests.\",\n    \"parameter_bloat\": \"PASS: no new function exceeds three independent domain parameters.\",\n    \"redundant_verification\": \"PASS: readback exists only because the explicit durable filesystem contract requires it.\",\n    \"negative_naming\": \"PASS\",\n    \"logging\": \"NOT_TOUCHED\"\n  }\n}\nJSON\npython -m json.tool .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json >/dev/null\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && UV_OFFLINE=1 uv run ruff check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py\n\n---CALL---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('gateway/platforms/telegram_weekly_host_dispatch.py');old=p.read_text();new=old.replace('    from gateway.platforms.nutrition_weekly_dispatcher import (\\n        WeeklyOperationsCoordinator,\\n        WeeklyOperationsDispatchResult,\\n        WeeklyOperationsTask,\\n    )\\n','    from gateway.platforms.nutrition_weekly_dispatch_result import (\\n        WeeklyOperationsDispatchResult,\\n    )\\n    from gateway.platforms.nutrition_weekly_dispatcher import (\\n        WeeklyOperationsCoordinator,\\n        WeeklyOperationsTask,\\n    )\\n').replace('        from gateway.platforms.nutrition_weekly_dispatcher import (\\n            WeeklyOperationsCoordinator,\\n            WeeklyOperationsDispatchResult,\\n        )\\n','        from gateway.platforms.nutrition_weekly_dispatch_result import (\\n            WeeklyOperationsDispatchResult,\\n        )\\n        from gateway.platforms.nutrition_weekly_dispatcher import (\\n            WeeklyOperationsCoordinator,\\n        )\\n')\nprint(''.join(difflib.unified_diff(old.splitlines(True),new.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/telegram_weekly_host_dispatch.py && UV_OFFLINE=1 uv run ruff check gateway/platforms/telegram_weekly_host_dispatch.py\n\n---CALL---\ncd '/home/cube/projects/richard/traning coach' && /tmp/nutricoach-t12-bin/apply_patch <<'PATCH'\n--- a/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json\n+++ b/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json\n@@ -52,7 +52,7 @@\n     \"ruff\": \"PASS\",\n     \"ty_strict_targeted\": \"PASS\",\n     \"basedpyright_strict_targeted\": \"PASS: 0 errors, 0 warnings, 0 notes\",\n-    \"lsp\": \"PASS for changed-file source set after workspace refresh; standalone server initially retained stale pre-patch diagnostics\",\n+    \"lsp\": \"Changed tests and established modules clean; the persistent LSP server retained stale missing-import diagnostics for shell-patched new modules while the fresh strict basedpyright process reported 0 errors. cron/scheduler.py retains its pre-existing legacy diagnostics.\",\n     \"compileall\": \"PASS\",\nPATCH\npython -m json.tool .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json >/dev/null","truncated":true,"truncatedBy":"bytes","totalLines":1288,"totalBytes":77945,"outputLines":632,"outputBytes":51200,"lastLinePartial":false,"firstLineExceedsLimit":false,"maxLines":2000,"maxBytes":51200},"fullOutputPath":"/home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-3c11d0f57a1fcb3e.log"},"isError":false,"timestamp":1788247107600}}
{"type":"message","id":"bad9f27b","parentId":"7f2804fb","timestamp":"2026-09-01T07:20:18.041Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning comprehensive negative tests**\n\n**Investigating credential ownership handling**\n\n**Confirming lock GID handling and link restrictions**","startedAt":1788247111876,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967c47cb0087d080b744f55434cfb4\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnxaRvzJfQLLkRbb-3CjkuZHWHjonxohKB3X-40fuIQts4ukVSsJXPn7uHD1AGEpCeAPYB-tjdpamhzfTFlFJRECSyoz0eqCumuYNBCl0G_UiRHCKlbP_rSFVMgTJPu9NqpCw0pBkNV23pZxnw4_Vmqf8_shsB0odDbiKcdlOGF3A9oi5huiVdyIzSTQhaV3gH33sS_kawEVkyCUqURq2rUNofSrz0YZPxLtnBzPHlAn2ALdzb9XYhTgEwy-77PnQ15TL5bUMKqf_6fR2SWA-EuPK1VAXi8jCINMtPGVQBqv3cdZQNfUQnmQATGUM5oCT46kqXZCVlMyCgmIMnrGsOLT1o010EZbI_RM8dmz5Xdgf7euJqheAyiHKjASHqVCs1o2IU9sIiZMYPGRm8wxv5bt3aikpxg6xQfz9LCUBtIMfwJ7COs_jBvLwxO_eFVViXFx8BKBFNqsyH_DrBu9feBtaimv7H4CxFQbBC8tIjXwhuqNvigje5z5kZqG2p2iU356ofw37ikom6Ns1p0exUkyFZxHVDNDvVc9DvQMhrDXVyr_EyTFwwZACg-EkjDVfaOXlxcL0sngU6cKeykeW1mVl0lDyJoXUaay8adxntRHkHD9PLlKRewAp88fMrRiggzpPLNBF1zJslFB0aije0dF8ZYJFf4HMtyCZ25QFBBde0WsLAnvwAhAn8tWdjsPiunyjKjrJy5NXeNbihPIYe4Ij-ZMHZ8zhx-vUJFBxoNVWwB5kFH8XOX1NnvV_BGloblhFs8zqYNypM3ka-p9ZuAmZM5dJsm4_dxKRfJFKhQHu5Usj4qtEqYZGPkD0FLObqXgay69G5T05zlT1k87EI0s1dhPX5UKHt5oz3fGTU_G9Uwv-uO78Rix78DU9eoK9-zeLLwhQg5aFlg-p3EKHwFzeks-i3CkTGx0ipdU30olaZGTyJGH1dbVapp7BcotWhnM8bzrSk7UKaiUenN5VrD0TN7NIXyL_jCYoq0r16cO0ab-8VGE1bJXo7RXkPpkXG0pmHm5uOyxNX7mrz9jQfS_feYGc1l0PQ5pgCyuDu_rxGEID3b9Zj-4666u_pnQwq5ufAQyBqzbRjORor6qExso_36LghHOBymuadmN7OwuANPlzU_6Ocxo-LhUg2mjHxiId5mzcZUaqqKIumc3CoqkqmDvs7HukVyBqUGis1gQmKSkXqGI3a_SErHWIajcWaM9g07iT12F1dhkgsAM_1fy4pGP4uWcioueCRWzFE1H1wb3_EecVy9HPe8Q5pOHZA4yKMAdTruYAsQLrJTu32GXi6tnkE-OsXFmnVZfF7cX2fIMkalLK00I7oz_6PadDGvu7XTnuKeA9E68G8pf_rT2s_8NbMZgzxzQm79SP6xzhGNzd58QDfjbPEp-MUc9V0Q5r9dV-TMKaSRBanGGHX05msBlvT2tWiLQNnqqgZ3WgzSbv5W-CYINLL5csL_i1UAXm57aZHvVP5KJFuWB9SlSr0ENaVDBH3bDMLQktSodYTh4Y-u7H0WS1KifyZo4T8uSnFVko2xkmRZz2w7i0y_g_XfrA55LTUNbaepVdNSFoE8UihgfARa0LzhIy8Xz3ys5b4narihIO17ctqkXkbyuvCDgv3PJHVBtP-jQqZXybUMzJDQxjc8x4_r7ZwFdBgxGHaVuwm2WS9eYjehrH6W6TeAyebHACc6OM-jN3zwfEBx33tun2NHc_8ZN_3ND5MSnMeCm2pm60ew6OzQmUlN4P6OQp06VPlZx0C3AP-0LnK-voZz6r5gYdMMBSulq0zdmaSFWRfbPu9MZJQGmZa1qpoRH2-qMmyFIiqrZCmpf_USmYYGmNDRhrBPbsh0Z-vjBzkT8KivLAE5gDwQMC80pvfNsZR8-rVdShFoJ3HbuvUymRDcKadnMs8lcr1gj1PkmO7fo1wRpu0uRgTMPvAv3iXJiTlqyliNnXFRqIBF2IhHS6qjlriaTjPamdZS2E9phJCAhi-_AsgvEkVRTArTu6KGIcrFFxjlWOoPDwMQ5-Lue0YzHGtfvDUB9oWLCjxbQxvc0kidvu5ha8HF4kx0TINITOW_xBL5fSy8apbYNzgTSc4pQBGnfeNE_l_2o80Wf0x1av1w60O7crx7wnyw2vvLhRrWPi1OoZO_-4eZaBIocTKspcw4MsY8_PxUpTYtAId-3sQ5xoiKuIeGmWbBAtlSFXKX19cL3M6LxnGdutF8XK-EPCDQsNhFwoBpwWEBdilGx34DestQocFlncs_u_qodXIGO3EA90i1Fm2NMU1NbCE27oHxIdjxLWNaOxC0FGrqbJSeFMCFU4P711eC9KOniBfvW_7iwpGBaGk0_h12vwoS59VgfEMyAPGCG9aVFHLqHTPOnhfGzkwlNgodrSvBK02VzxIzJYQHMjkT12wUhrddfJ0-EL2pZ4dRq7dMI77O9U9ovBH8gKXAmlf1YURQgonuYAk1QNxcKhNNL-fCwze1_ALdjzmMkkuXgx0oeg-v9vAw8R9jil44uenweUGDbg15ffSiNvxaUFoR56_qgEsPn9pzifSLQIIqtaeXf_oHh81iSHR8PLQP8QYcO93h5qGpXdD43aUt_6-ThviJK0B-14M5NMX7kykKj9ZezIIciL55NmChJ9v9zfG7PM5MnQ6PJQpMxUgKwfiOSfUYSU2TFylti3zRLuB1nt8Q2qfP9eNo_HSlli0bEyMU7s3RNxXYSXvvY4k6xhJZKAr96WJEWZ8WzwVr6mKJJkaYcKQjhoM_3Bxsi2Hzb6xm_tfU2r1vijm2fEPP1utvPmxQMJNhN4dy0luXy4MynRCo5eZF2NKXhgGfWFYPwVtRZqkuz6eNl_gs-j0vp5oa2IRlaUaGtqfhVyuRlGokjhbcDI4AExwEpjXI0rs7rTnKj_xUJqMV06QTz1qA3oH4evJZNXvwvuYdZYRBelIRdQ0tD3KmWaIUbWlxMemZT5SZmymi9PKxurIBLFJA9FZVB10Y-WIguPzL3W9HOVzyn72DpEC0Vq2SntNtdI_NHICNp4RRqivoruLAUTUcapC5liSB2RYa4-phubujqe2FAZK7QJrOgVPNERXlm3pUMnPwLwQBl7Kg8Xbtv60fN7fVntIP-24_SVcXBy5PYAMP8fRq6US1_hLP4HUzbF6gvV0UomJ7R8t3giqLybDQdPyV5SufdTq1tEEClXT6GOjolaA8MSkzSjBs7QoNKhBj1G6mehVVGmn9-o4iFmpK2tLDD6qFlhXX5wYh5Np_K-0sJP2g2E2W0JwYk_zK7bmn1TXrrxS0F7Yk6Ar35z5KZZb5D-Lx0D5PrWe_6_HWubP04wSwz7-9hrnS_dtHzgHmliUohH6APK4swOtIl2HK6oz4zUYzvhWR5hLHINd5g3E-Im3HgNZbuDBpXx9LO4pv0Ih_0SLQfGi78_iFBLibWAp_eeYeY-LQMv6g9h88TWPRXkd0ptVK962RQonZQCiDL1VOF9NcTloyi3vSufanodZtUbfdzosFxIiiOb1YFUuk1HI7Bj2_5vHEs2lrzdK2WYMOupcRgAyhOzrkroJ7LEk0IHwtID5VGuzlYwyXC7U-hWxtQLQFSf74YWC_jKbIxwNAYzsdumoxZv-BuLUNJEn2LNSHs5-9oNPEJIu_5EfH-VrAWGH2bIi2H7_XNcAdb6IVYp1wkoRkVBVcGOpeyEltorR7DfBk2Xf_M8cTTC3ymHqLsyqOhDHvZGiApwWI30IJP1ZUhxwOxOnL3QariyFJtphsRo7FsXcYIwf2pReWB6I41WdbWwHyMLLU44IlgvRfwsW43RH4ulj7ViPtKShDx1g7YSxVdMfVK85EjPCcC-xt2fuUF2TcP1KaUVzJTjgFFnRvcwTk0ljJcJOCnYshd5bPuG6v1hQGXacE8FIB6hGjBxgx6jhu5FndfbOiBlPePk-MYK36KZM9CiYVgz8LskuAI9ItX4bCpPsb8i91jcp2eFtGuOb9QzOkFHByf4RoeNKbeCWzCvB4nzzudv17iBxc522QOqES6NvQFZO5i94kKnQx0lExr3hgj8H5ihXRSaPxMf2qvF4guvwRLLap89ESlNOtFl0GRL9GyAJsHUr1xXJZDMTXjwswsaxRQqQNIgok7kxnUk_4JdJdQew52wescD945g7zG4MLDNi5fRitPJ40i45Mk3YSk6jVy_3H5r6Wc2DEZ06ZIo9ek5_NWdKBTnKTgYWHFvZWURJEfCmi_kGBeOYpoYjkYX92a_f7iZJQVj6e3V7SrVGLOs2KDi0yl0YMUb3P3sAKlacX8EnwypNn2C3KJSrUQXJovWzfZ1_PiTka5BiSO6B67oN2Bkf7JYoCvuHRh7W3WBRiLQwUYR1P-GRHteWwC-3znNR7mweEnOJIgJN8MQDko3bnAKZO8t_OiEsBp7f-XEytB2qRrOJFaZU80Yl0c1RnxeGr0_el3x7bMa6iF2IoMMwqQDz7hm5UVZ-bEeW7MYN7bm21IxrDmTY3et-6_3XiKXur297W9Ky1FfxUj8dWqdGfKLDYR3iQ01kW0NgiHIJy5eFJ4-uQba5jESMqGC-dwFigcY2EupFU7zfokHj7yO7uy5x0OC1G20Rf9Mtyr0LRjtlS2Ujy68J5GMWvlbX0RbvEJMA==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning comprehensive negative tests**\"},{\"type\":\"summary_text\",\"text\":\"**Investigating credential ownership handling**\"},{\"type\":\"summary_text\",\"text\":\"**Confirming lock GID handling and link restrictions**\"}]}","endedAt":1788247130440},{"type":"thinking","thinking":"**Identifying blocker in profile-owned gid enforcement**\n\n**Evaluating expiry and authority enforcement issues**\n\n**Clarifying audit privacy token restrictions**","startedAt":1788247130440,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967c5a55e887d0ac324017ed2187ba\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnxqYCp6wQzQ8NXyYhirMeyp1z5uNFJuEOJONdiNAyRJYwyPw3VH4JwJyOcIlJH53IG0G1pWB-NtvH_KEgNFcgoawrbMMbq07UN6SWQlpgUPQhkU5wni477e1mXlO_IY3oIMQ-_YzUgVXkixmIKwQGkcXS-CSjwlxDCLpnYWMCndo-XvlIBjKLcKW1Y9VtYOThPnKHhCfIDu4_SxBtICKqMZGnZQ97kFwbRzRPm_TKF_ICEQQKk3pTOFL4UYdsVH52FI69ifV9Eq6wwXnNgOch2FlVsDD3Adao76CnguUJbN2oO2ZpNUR8zhul-ZPuSxT37jRDx_LaCU_XDVd9Ny7-SmXAis8vJzOEI85nXZDgY8yHggoyDiHLLu21cfozDjYvYBliMF6EYRSKGjWGWyp_kbZmlRzFwV5tQac7le5kN0mfdvB5CSoQ157m2802WfSV4RCq933BmRs1T5hxsuOo6qlVI90g-yHnis_CFBcFtKxcbpHIBmE2klNqqY5QGPukO8QlkxCVZw8xDu6T0WbOk7GP48RMRp8yLiWEC97I3g-VxhR4wit3ONsWk6AN5yn9xe3j7--TU522qSK4rpdwiVfKponi_-j8vSozsa3Bf8CAMy0ISO3ZueTgYEjUR97E9BbGQaxLSSgl0iqoa0sdNrqkp4pteIG5lhtU4C7hmO5LhdSWVyqruwB_cjobzNzSlnsNvYkFCUmhGyA7y89PqvwQwwkJX_K0SSnk0a8FlZ67zxQurcpidzy7jNIKzQa9xKcMHVnu0UL7a7w36BKtGlyu0BHEQAFJB0huC8-1fMHNw9Vwwe8RTlwLDxV7UTHd20MHFjmKWnBQJfRPdaJyzuupP18jKwgcFQQg0fe89qZAldg9Tde2cz8_oyLwyPZNMGvUvSW-2DularJ7f0KG45uu_J-ID2fau-M0EunQuxP1DDkesDgX_0efncwzybftyZiz3k8BlD3fQqisCgsB7kZbhndF5byfJ3LQ9DUY9_g_8NZtEF8e0BZmMtqLDn5ULNbc8v2G-r905yzUfjBiyXaLtz2I0rvFtiT-gAmJeGTpfU79pHNixfl4ZGwQusE5PJOn6TZq4J0wGF2GjaMw7fSfCPMyFn25LLT0FPhLElLKkRWqjDG-w8vIeySLwyfHmAdyMo8Xzls0ZEjMI6oDVvbvbpOr8_1bOjj6zJFfMx7U4LgVHYcNwJhJfbqzqnhH0ZrP6JL48gkiycWx9_JZO1tt8g5MKr7nAWIer8gG7yGy0z-yM_yVJtEbw25AUo_sMsycfmQ1sZd6z6MQCwXIRoXIoKMf-faY9OkKc2nBdhrqIePANa8xIVOJ89WPYUoJT4VExjwuDgjqsmol-IHiJHdwzccfab5SWrsB96lbSB_-uMMKwuxCR1XOLWCAUP-lSPtMNwr7MRKrOF5V0dlhP6BrK_v4rPJqphyAgZ3pyeBQ0cm0PGEhwjnP3bB4FxExK77ivPI0l0oRs1IUhldkGAm8Eu1ST9UUvfmVW-putuapSntEB09PMvTQdbZ-c3Upis0ifUMUXEMR-GXF2XYkJ8Xn8Uzp0NxbBg6GsDFgpe2X8B_uVPLiibflA9LfwNdprF8zhm_S8g1AYU9LoCZEoYdzJ6pCoPOx_7mh2NHG_lT4XDHDDQlFPpEWiaX8jVWE7dcqVS23y6VJSBN2uMIs4kzsBE24A6b2QKk4xEfW91pRWkXn6UZXglE8vKIFycryQZBfK8cZEXTvJv79RaSk33C_4TLoSK_EFBap9VPUO7tblyL7zOwffRKIAwNp4yOC6X5PbJ-bzHLmuJ9IZczTIMOJNzU4EHj5NSrqrYWLOetvWsO3-0KTTjAvp7ZpFdLfeN8aq6sw25cZVYi9fWk_ig-bnnKuajO7ZUmns5XGIH8Uffu8uH_aLNX8msuCXO198iz44qQn0nFTIEoC281MJV5wT7Ov0EETmaunY1cOIXwTkN5eMAtVWb5JuC_IaSVIa0ikKarkJVbckPcflMXxFjw18hhgpzZzUPPBIygCiVq87JkxZSF7qc34-IGTWTzPrgDNijtZSKAEeYh9sLztjiX_EMzkLXWkIhYrvelELRvhuMN8BT6i0YqyQBugHiydbkAWHzIgBAtgQZHxhl9YF-y5bWdzdZ8BwLuHtHvtdVRSM7V3AOa_r1HCL6yZsI12wRf1k0JTcGd0qWmKE3pXr3BRRCCDOjGtc3momi2Hm2SI50ih3ofer8hBALqUk_PBNoj-h4-RWTZNtKhJ-oobtv4-ig4Yq1sGaZxNvPNckWI2EK-cyfPF6QUGcTUUZSAYJ1JHEu_zOx5Kkmw4Enx1hpcazuSTjmceGDvXWptLWjck0qDQ6P0lzIqT5BehY8omibiNQki1puVo3aeX6-biGSuMJlocAFvgIojAXwqE95jqdfEpirLDHSVFiUXiSuthK728TVu272TwAcdF3HVHbXubeofL87rxvw3_NvFYwa5j1_Lr4BVhc7wz6HG16Gu8U0cYLQsbFYgbJXH8icxjYtsufpx5aFKnfEYDBd-hAUatttfovLVTXe7R3cbZFz1UiZ0f6U_qziZD_Kb3gpMiquYtXwBff_hVDlccVuEa_lrF8RseVqIPNHu-24XgmNMPWwqJ4ibqpVVHboh_JVhvdR1ZFU0A17etSSTQF3nCPdM0kBxO0WfWo0l_5IHqJy4T9dA-5wcO9SLD_kKHSFvr2gIKZJteu5XXJTILD5l9zFfHzSnRP_aYqCnmE5fVldzNEeSHCwBrmJcSBjIunzvJ2zrxwaiIDzPam2Jn4L21VfNZjnDvmRaPNU9wxNKoRa8HQ8U_lp2GqMQJQroWf_gD40V76i_XWibTjUhV4SQ-rTXewnf2OKzoGIOm6eajalfDaJaiQzBoNp5tNjbs7MYy8Y5MKuTyb95BNYyCj07K1hXe1b24yGCARINeVXnlVNtvfDtPLanQjIhtgfhTPDO5-nWrJftq4f1O-wZLh7T0u8doavmSOcpJLVdvDZqhxLTAGf2X4Ea6B0LaPwOyXj89YR_zk7iEAQfzxyLyfYwfSqJcsnfzp2bW3mN1wxdfgHU8xo5M8zDax__iYj6RruOSt4dc4WpBbZjNy7NPwrSXlzi320b0QWAPH1VwhAVAhDKMeklXKOTH3byY4xPwHCL9G-pX9rOyUwoe9JkpoaLC9FM-T5q5YVWZQXzUAnXBRrIqlTletHqSt9WtTxD-W-wNzO45sl3ijqLMI9LUYsfMZccQlMTSRRjuXyXWHqb2OLb1YKDDCJTmw3mRnfB3tjQTinFxjgzePeYMnQ_m42ScQEiNcyYgOuyQsVfR9eUqXjjzj94_T2usuC8_9CdPJeKNE0gZM8unta7NmJsR4hI1oEGuMYPmWRr2ca1_eNwwiWu2ku7VpMx1FgkGOokCXgomQ2vnma4Cs07DfF82hvCLJ_U-_LwAIVFcMW-A6Q_3x0CYWSPIOUcpYiUBrIhpYxyokP4CZ4SC_GnwHxCpbL0p-Bx9S17QgAPPJec6_21hH-Hni_T1O2dHnFFshc8y8tz018LcogErIHSV7CcUmjL-bD-KNhPNiIvrjWY-W8-BKYB4jg_u-aUcQVqs2vwQc62c1f8ZLoZr6aAvjz6Au4ZoV7XA5TUMjhDEMMrwY22SgcqYpghVw1z1BObj8heZKrMOnvABmJKU_0V7NCAZHAQJQaNyFmLA34w-byhMGTlt6rF7GmBXIlOJbxtrBiLRB4eqZBvDX_pdhLak5eEPg86OdjLKsxLhxaQTMpTxWMJN2qrpQpiSfXq3AgntYUGduht1WZP0M5zvFIfmBbbMLP3H7TaM4IpUqaOJ46rau7OPuISoFEEfXeB6ZkuClwukD8SmDHrEGxzaXwtD-LEuwVi36Jkl6Z5BiNL2abGhbudjLRa0cVlsZTsEVb1SVhCIfF8oA-wVdHS2QAIoxXk8Wy5iAJgeISURF78YsMqGbNhARc8YB9KQ_lXfFcFfu2_eIv6zHCUL-Dj4ZBB3dLHZilQ6ZfbdgNdr-a0X_O1HsKjAZbLOxQACjeqZNVtm14IQZksgyRteDJ87hqaVPHn3dA__PeW3L53v2X6PDLFbcsEhDdZfV2Csr9QN8QrJRWQPiG4amMtCZCI_8uowghKOcs50iQ5hrDExlJCjiS0TJGpHCJP7sl_4beffslFkH5JW0Ys3mY_o0iZBrUvV5EOJH5V20HctaC3yPyRsWbnjT4FsRWo3RtKFB9xGYHy5IvoG34Am7y4Wpdrb6HbRcmoP20ccnFYx05iclcfR3axA4Mb5DtX_A7XVC24rcVsd7WVEoRTKYQwJ_GRqNYGd_ZyHXY6JH-LbDRqy4xTZZem3TIhUEmoQ8XwSZZRLKjI2KE1Hn8rZbbqNWaDPe0z7oEJhEmWytapPemL66U6DfyIh3-W8kmvck8AcD16KTWvgpKoSe8FySlECkvahBQQPVw0odPA4jtpGJZtv-X3oY-C6YRzeOWXPGJczyyQoSSnj0pQOuOaKWRFClqpZQgVQbnzu_cJEqrJDqlUj0p3N0C50kw8UyfYqrtNRYoRxWDOb1xVPtsvKnMbPm0RZ_EG-DjdJBGR9QEH0MZ6eIwZFu4VibCBU5jpx0EkHvv0f1LVpwcKLbYYh6YEs3dZColwT7NwodVsGUL59yqmxwscgGU4q-p3VFJbe0qHy4u7CZnZPhxrXmzUjaHlPRujHayoTcHUVZh5OLig1eQwVfV7akhQV5bUfYzo-xM5y7cPrZvb-IWa7oiRhP1_wVox3Y-JxggWuGw5V2iOUHeOUZfb1DjubAkTlCEWBahXKxBLd2LbUe2QPmFW-DHVGhqMgFIDp6hhscwbZcjzdDCYo-R1QK47XjdiKHJqxfBNdTDRG4cteqIrF5mli5XjKAPKa-pl5-GqpVuk0yDuYTWdDuKYQH-j_cgkGB4gJUB0XkVbEqMimE6tM0lsRx-nFFClT7V6ibaI8YpTD30UaHUNKc2zbkmr4BJps2ALG5hAXe7VqqNk5-OeSfWJ5aplQ==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Identifying blocker in profile-owned gid enforcement**\"},{\"type\":\"summary_text\",\"text\":\"**Evaluating expiry and authority enforcement issues**\"},{\"type\":\"summary_text\",\"text\":\"**Clarifying audit privacy token restrictions**\"}]}","endedAt":1788247146316},{"type":"thinking","thinking":"**Planning ledger creation with historical claims**\n\n**Designing authority and credential mutation tests**\n\n**Implementing gate fixture with monkeypatched ledger claims**","startedAt":1788247146318,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967c6a3aa887d0a8cb3112ec05c571\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnx9VzUaY2OGOrudCOnA0Utn4kCLekqgwihzO1AyiGVX7sAY9DYQf30-22QuhjmBxixIPuhlllAMwWzJG6XVa01vqzsbAGzFgDlm7x4gBUTEATlhfgt5JSM9meGMY9n2xWtfEI7yTiUMFbMqage37-64OjV63HMscMOgG5GYdx_OhHbtWDJs0XmrlBQX3fUFz7aFdOouf-ielUvKX9xFiMv7PXCftUtUARKM2vkDDKG_RHf6XCKiVLuy0FQtFJ5SPIzromlXpFbrYm5uXt6g0jLN1F_gfhINanv34N6O3Rnq3kxTK6bnIC0v9bhIpFYCLN0_19a-iQkMPZjCpNE4nsSfWAtH8KlBeOHt4-SaDVMQkH3irM0rbhtL8f4xoYOiw1l8eXfkXVjz0VMeb8UvRY4G_ipstIFHXGOLNS7HfPEG0lRQ8u-JJGQx_AK1Q2cIFQtxSV2BCQ0j2gUdGiKvI4tBo4JOm9Q27hNO4WCNd-_CHCVBiBfh9xVfbzvePF979GGc2oajog6UvdvJCbhI1eRJ5XqX12dTevLT9qrZuQESZWKAcRrXeB2ZiFDWquMgv-hsRZzTAY1YPHrc2SNmaipAzEj2hyl-bsCH9Z0biLFGynk9bLurZ85fz20-dYz9cn9pKwrrp7u7oDXIsOpYL39NWLEk2huBQvMvYHDmM2IGnpTMtnacaijYjEXpT-kSXvMDrXTQmq8x-vWEyff_t0c8oLUZyfIxA495HJDcMTJHGi65WjHIAB2Y4AflEXBqkXG_KovaJiWTpH-8B-gFtmRIyak1cfqL0_A88UZu-9jN997AQHqmO5y4N2T23ej7TbOcwFgcszkD2kZgXYo1xtXw4ciz593CaO30Zt6ZLbC_tVx1dmSzTQ8-76SaorfmXHk0PpfuOcdQk7b5-4fwp5-OJxpFoxpncAxiItI-_wqB5mxJP2Q7SqmoXwjNexlZenCJYLB7DJko1UEj4CXOGUlTRLI46wIJEPPrbptvtPGCWJFdzrMF0I99iv4Dsnvze0HjPubcOP8duamSglCIjTVDzyPLLKmhErEO-yxVYY4NDgauBNH6l5JQcnk6zJeKvC1OWhrabLz9U1DP8MV5r4zrNYOCrH0nlJ5UvKBfgrpme-GKsKCavBEGaHiWi-jz2LSMiXjZauFReFalRnsS4P2ZrHlT20xrUaAtONu84zEzycQjZBLex6_FpAgYxYhtw1QXUOaCDf0BjzPDHqH2TEMm15WN5mEcLgeCGccvL1mvLMBWTT-SSTL09G4XWKVTlFHsetZ00efz4c7UxMSqZHiqFgsoxRQp_x9XoDEY0BdcDvPz5jQ8UpHj6fjcsG3Ffu9_H1Z0Fk5FXhKMNnJWwoZ6uGi5In1DEMPEQDlog5m-g8j5qdasKAODyJB2mdjRwXhp-IKJV92aDGKAWvl3maVsgbhX95F0RKjzIsDzIZn8oe0kgxwOOQ4ejxgIo_d54VIR4zTceFvb9VNn7bkDoHteGla_OfSKwifUtnztua5Oxhk1QyoGjLrz0os3UYFrsr852NqNcUcTmyvTT_zC-UhDoxzlSciRTfug6W4h6-vyWAGgYBMpWVG7N2yj8mX-st44eHeYLYkjETb-SfoE_eu5QMqqHgaaazcWpSSt96JbxQ-b3ATSZmnEfIijzBEjtEiBO_aN-8UUv3mj1lyoxY0pcDhOaZLKRyKFxx_rT5sn_ieprhyXMJm4lDwGXTHK07K6bKKoZdMObdJXjXMYJQNqSsXeDC9BT6mBxxSGlayIRT1jGv3cS0i8Tllq_S6iutETkBbiqRsPWpKQE3n-oVrkN4RqNoYSWww5-kcqoJzuTYHO0P3e7OfYuOj1Si9e79uHWTmJTUtRZtmi_B-Tzz-u10RERGJvVb3MRZiOS_VnHmBNTXSf4Hbh5b0ONVxKXO4IBOrcsZ51qL3s_y2QLkAaf6wHd4DqLy6qMU90mI32WqH7lk2WEHUL_nLk0ufS1RFDP2eF_LQVzF68rgCP1qQE5fSmCXzSEcN_JYaUCD-WrZp6tD40RDYib7I6ds9GPgifXCvadsO3l_nq2exoSRCXYE11GZHxWFEmef2fwMq11G3wqXg_nZBg7mqPQ8TO3Xi3f4VuQ0-QszXZ_ivWWdR9qSK8xDkdpbMX-x76dHoBIZsLSyFOrnJhJ_l7rj13XMY3JAfTN6cGV6q2dZjveRefIkWwK3j11AUsDdIPYslOWIPE3QtVBr4ltrvMTE3e0EPlKh367hGovn1e6NoK4oGI1WkxY6bkwnMoUs2WNRlPNPXI3-rSt_DxPsgaW28wXLr7lfBolCxQgOyEaYX9p3_GX-HLbpu-7QN_oSX8C-_aIgUkLFRr6-Ydw_mq56tLSurND-4Yy3pB4L3qDl0FSJ3Z26sy41dMt6DAldGoDTIr5UBopSZaTaYk649r6RuMpzqcdBcpZzp0PbFKILSI44ZKHyiGGIJPTNGI_C1mPAgEtwE27fhvkOxTXENBHoW64uPzEc56sZHEf-NaWETZWS6whdBZ-kCMei2-9lI0dgrmzlocf-94RCwxbyRp5pHer8a0vXmaa-G_XzgUElXC-WZwyfGuF5S9dj3L-64Rqq2FNvGpmxcawgBZROB39x6dEXusK98Ja-PfyNPXHGJ32RQNvmbBu2VxpXr_IfWKpsqvwV_KBHOLm5AWLcsTNIJQeNl_wdUtS_BkmA8ffSZvruZkU43E24mFBg4Nv9Fp-33vzy7j3C9ryeXm3cfAC3nOHsCd7SyKmrgvI4IGT4-UFBOwfY9hHI7STrTevY2yOebxxtsXhxp7TEiwinZxJduR6LtJALrwss95nx29smGeBSh59nuM2jJyR-efxkxZiM5_ZW5MNq4HdYuFjCKKhyqAFLF8WmqnhxfuZJ5P_ixv1W59qVoFyk60oh1yJRUw6f3Z11BOf7A3JIXN1JX_5HbxVHdMVDlIcNAsop0E54ASWey3fAGtPMvXTc89jjApFQchxKiMAiwYcW2AGcJVQU6zgCRpMvLCCqOp4IsTRxlxkDJZcdMZgL_vNfvWSTfReKkOcYKqbeZHQwRN_HeJ5aFBpFqli_JQY44LC3fxDFLkrDd5rJ91b_PicSUTIUoY5FAxTJyzsOCMnWUWD5PO9LEgcbBKsoXQILHebHftazdxtGBdMeDSIQ6OlsEzbMHtccXG5qqZuO852BimwJPRm5totxoOYPqiFci5qzs8lP22NjZFk3akwWb1ao7OGn2biBqtdo6NsYeCEnD_q99DspFAzWko752PraVLboGfoA29pN3yFS-KKSDAryHs12GJFWFN7YaUSUjWpsYS8NTRIlX0tm8006Ysb1WNuFX_3EpXzGMXLWcymrCvYfoC22rGDk0yWsFofZwe8I52qA7xnV6CbcXpmZmA6ToJcYZI5BTVWooG1zv2bH2UZFnFfP6a1ALauFqXBonf3yQ2QVSX4FwI0MVHO-rXkzZ7V7fyuGL_LKeKGg4wIkAnEFMcW3I-gGTRg9f7uWaruwoZiyvnfWv-vIKV1ITqU5KDlG5n4vPE0AyCSu0_bwBRJA5iX6LsVxHqh-t2V1xUuYGzI8J5Sf1ZF-y9aa9ohHNdQQthRz3lkoEoldU-oyGCP7eVKOStYgiJJWlcB4DmW-dSW6ZTt6PfEZbs8zfO6Lewd3gqklwyH7kcwwWCLjO2JqNq2cybxulsOMoswaIrBD3KDTGu2NxvuBwbK-fSOetfKtNWrdWP8OXDIUsDCS360bNLPlOlhvL2a24Hv4jjqCLY8JxfE-jBoKTIGw_-q6M4nrguHnrorbg05RONmN6cucwLqRXpg6ZlCdP_6332TPb4eXrxccaExj30AuDfBZ5kevEDJPjAN4OCujSNs8yWgagzajk9EIU0V5LRZFYggN3gK-aMfLC2u_OiRPDbBLiOgP2xRNaRKEeExneFO5XZDnWhDr2-q4TAA9SXJDl-mTpa-8NCJgUpEw_9OF7bRVz-JdwHsGD-WHJ0GHHhQOWx7bVUQdJNn5KZFopLuDIOKPu9yfIwaY68DBBQfIpKH5VSU6Zn-f-V7jzOTXLTz933TiSeACBIWhmZA0k3kCRrvQLQ5V2Ceo6GZ4Qfvp9jB2KDCj3ZvSYJOAazEqEfGTvizjeOQtApL7Qt7KTU0kjcvE9E166w0KyhQnlzIumubV_Tx0fMNXASNwF-TUEFo6uYYTy8dAbNhvV5Aqp75CcsxLf3F1tYnMcfu79yDWtn6kPRIaF_mu42gMN7jFB4sr-7HsBRaLSeak8QenmxMK1A4huhA8wKAuq1XK_K5qATqD9sti59fAlM3GidYsNq2AOkItJ4Eu2sufYmg0-cz6bW-Fozxzc7S2E-g0UhUkbHrpw8H4nEK7T0nuWh5B8AwAeWbsc9bscv6Va-yE_kE9nxrgGpccRcl4yL32qkPI8J7FucVPApVX3KNaVqM_M0A5ixXU-aEq-eq6qE2gt7inViJSN6dpdgghWqXO8PrdBu90zVVpmW4OKeHJrr4xueeW_rkZ-F8IS12APkU8TqyorNLE9RHdRWI5-R226CLSRTIMekoixUYjds85wDeCvFvablgLQkHCEIT0oKUFcLcu9qBEgMOpuv7d0aeHFloezNLiyjxKervmMFWaJf2viF04s6Dd0Lec2QZzDtEhkwdInEc4BWeOcMu1GAJJuEKwkYJRP3hcFLfhNZ1GqPjSFdZSCeAN1uwszj926Zik-UqSQkMRhRQXog9MfWvNztdxbAyjtbxScpa6eF0HY-LPoLL29jKAiQGMsT4bsH319_O37KIe442I-Xz5TnXHJlANglVQt2zYBSuqJFb9zGw856r8HA5GR0K6o4jQj1-hk3s_DdEJyXozh9Lq0vSFCdBtTgBnQJmT6O2i2XGuX2l3RN2hneicWUgLCWXvvEYrEgH3YBRcNnCsqlHnjfdSt6\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning ledger creation with historical claims**\"},{\"type\":\"summary_text\",\"text\":\"**Designing authority and credential mutation tests**\"},{\"type\":\"summary_text\",\"text\":\"**Implementing gate fixture with monkeypatched ledger claims**\"}]}","endedAt":1788247165457},{"type":"thinking","thinking":"**Preparing adversarial script for testing**","startedAt":1788247165457,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967c7d574487d09ade02bc35429c9e\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnyxur5dAIe7N3xQGWMH6tVEIYmXfs3tk-9LW52t_QfWaxJZyzOz-trBL70cl0e7xHSMUqCI8qe9H61aad_h82HTTDEQK0dg90h6_mc9JKU46205qj1K4XjnTFNaFjigf9wxWdDgEjIz1Qyyyw0QxuYu5nQ0Ukuw73Qx-BMkDbga3a3cyWEbmApd9Y_kSGsAruA56h7tut3znnTjO_zk60_P706H5To84kkVh4OAOcJ21RIVWZiiwkxjyTn90UCjokGtmy4UdFKhD4ViQOX-2tCQklnel0rwEnoYuhuTRlFZBS1Y2lp1xeEWjPNEvYs0xzWSFuYmvCwlOhGzOGs7hUcShs9BovBHZVQK5Ol3LD8dYe8BTw1Y8MomqxW_C9o7FHvvWqcoaXRjZjNM9FW77jBdN9maxKVgarDoKhGSlIAMCnl4cR-a5jFK04HF4n9HGf22_qxGmzOBh5HQy-0-kkxw5logYpcGlIvuw21-QhdLWlRS0cE0yWXv7nKZ4yUtCL7Bvq4c591U24a-QXfUG11xD-OTUd6Q2pKENwdIHQJ99dulEvunmhFxDf4qu9vot7YGgNP8y9asz0JYBCICYQjCxRpqU2qniOAIbaPp1T2F9aTIZ62txUtvtC-kInlSuHbPiTN27Q0TLB1luqdwmKueoaAI2DEh-l1MElBQb7nzOAPXuDKOFOH9WYuq_Qne2vXb3pc9moJKsi6XVwX-Ox3yyyVxHmjEDx9V-7NlW7Iaf3cq3fHmRYQGyDO8r22_ga6XJo8TWan5wCzojIQK32hWN3l5HoHzk_kR6swTNTS8a_2unv-61c11eU-4dInBtVThE0exvEaC2STyKdCWF1NBtdCJwqeN6ZAsjYe39aG2bgrEO8k4ef_u__yLtPWeyEqla9hHNR4ce11qkn2GZAV_juRFkXIMpsbMjylgzoDTKlyqJmITTaitCflNKbBcVB1FqUej6T4lWmHO2z2rMCfMsLaUXNUr4ey84kW7bD2P84l1I2Sn_GoolXvEc5FfQH3XRN_oeWzdLUaOx334GMbsrA8CxxvvtpRIMFkUJJ2qTdYSy_8hzHclo53SLCVi43x2jvaUUeol1Syi8OVXj0COK8f6lSh8w4Bzs86_1KgsewWw8HnTCLjg4dVSE9gps-cv-0L5OA2ekd_UEyz2UBlFXgowW-oDRdhSzsg-QoSz9kS4_hqopWePGQXBCOkbd3Ub0rYKTeD7kW_BMZ3sLXjBfDu16rxL9B8o-Kmfh3Yt1D-cf1R_Tn-lAFajd_lSybtLXWUU1gKbWPhX-4a6fmCbTXYV7nTISvOU2_UXmeQBGVtAchOj09K5njBm46SMGM0HKTP-AMwQ9plziannkKKQsfqB43ar8KIMZpu4JEL2mC4biyUi-nufip5LATxIH49-uEaOiR1uiflWnJuACy40-ZG9NVz4KdTW5simteEy_q-KhuyaEe2OwYRXG6A3ESXXHfMXK82Nx1DLvS_u79sBKpK96hxIH1MVwWF0w4163G6ES-YqEFCgm5AVbYFgknkdcuk8A7pbtufKrK7L9vOyQoAF128UlKIiv1_EizcNFN0Fqk656Da-q7slKSHWWzbePAkG5HlNfBn6yCJKqIg2zPSsbCjpFT0MdeY3T1me_elLFVH_SiAw0E9NDwAICMImvjSqm9Am51kDqWsIlpPOTSY-6zVRJ-1JPDAwPBvTigA=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Preparing adversarial script for testing**\"}]}","endedAt":1788247217933},{"type":"text","text":"The core green suite passes, but the receipt’s qualification claims are overstated: the exact implementation run contained only one maintenance-negative test, while the required malformed/binding/filesystem matrix was not present. I’m executing that matrix independently now and checking whether the missing coverage hides a runtime defect.","textSignature":"{\"v\":1,\"id\":\"msg_046f5546d6e20d23016a967cb1d61487d0ac2b469f6395b3e9\",\"phase\":\"commentary\"}"},{"type":"toolCall","id":"call_nrXB4AK7qfp59si5M0dddFzw|fc_046f5546d6e20d23016a967cb1d8f087d0b7e7cb1c614fd071","name":"bash","arguments":{"command":"cat > /tmp/r71b_adversarial_matrix.py <<'PY'\nfrom __future__ import annotations\nimport asyncio, hashlib, json, os, shutil, socket, tempfile\nfrom dataclasses import replace\nfrom datetime import date, timedelta\nfrom pathlib import Path\nfrom typing import Callable\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import Topic59MaintenanceAuthorityV1, Topic59MaintenanceHoldV1, canonical_document\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59DayCardProjector, Topic59PublicationDisposition\nfrom gateway.platforms.nutrition_weekly_operations_models import project_topic59_day_card\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import _request, _Transport, Topic59DayState\n\nREQ = _request(date(2026,8,20), Topic59DayState.SUBMITTED)\nNOW = REQ.runtime.now\nROUTE = REQ.config.review_route\nassert ROUTE is not None\nPROJ = project_topic59_day_card(REQ.card, config_digest=REQ.config.digest, route_key=ROUTE.key)\nMutator = Callable[[Path,Path,Topic59MaintenanceHoldV1,Topic59MaintenanceAuthorityV1], None]\n\ndef docs(**changes):\n    hold = Topic59MaintenanceHoldV1(\n      hold_id='3'*64,package_digest='4'*64,candidate_digest=PROJ.candidate_digest,\n      config_digest=PROJ.config_digest,route_digest=PROJ.route_digest,\n      customer_identity_digest=PROJ.customer_identity_digest,card_slot=PROJ.card_slot,\n      kst_day=PROJ.kst_day,not_before=NOW-timedelta(minutes=1),expires_at=NOW+timedelta(minutes=5),\n    )\n    hold=replace(hold, **changes)\n    hb=canonical_document(hold)\n    auth=Topic59MaintenanceAuthorityV1(package_digest=hold.package_digest,hold_sha256=hashlib.sha256(hb).hexdigest(),hold=hold)\n    return hold,auth\n\ndef arm(root:Path, **changes):\n    p=root/'profile'; c=root/'credentials';p.mkdir(mode=0o700)\n    hold,auth=docs(**changes);m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n    (m/'hold.json').write_bytes(canonical_document(hold));(m/'hold.json').chmod(0o600)\n    (m/'maintenance.lock').write_bytes(b'');(m/'maintenance.lock').chmod(0o600)\n    c.mkdir(mode=0o700);cp=c/'nutricoach-topic59-maintenance-r71b.json';cp.write_bytes(canonical_document(auth));cp.chmod(0o400)\n    return p,c,hold,auth\n\ndef rewrite_authority(c:Path, hold:Topic59MaintenanceHoldV1, *, hold_hash:str|None=None, raw:bytes|None=None):\n    cp=c/'nutricoach-topic59-maintenance-r71b.json';cp.chmod(0o600)\n    if raw is None:\n      hb=canonical_document(hold); auth=Topic59MaintenanceAuthorityV1(package_digest=hold.package_digest,hold_sha256=hold_hash or hashlib.sha256(hb).hexdigest(),hold=hold);raw=canonical_document(auth)\n    cp.write_bytes(raw);cp.chmod(0o400)\n\ndef run_case(name:str, mutate:Mutator|None=None, **changes):\n  with tempfile.TemporaryDirectory() as td:\n    p,c,h,a=arm(Path(td),**changes);m=p/'data/topic59-maintenance-r71b'\n    if mutate: mutate(p,c,h,a)\n    os.environ['CREDENTIALS_DIRECTORY']=str(c)\n    claim=[0]; net=[0]; tr=_Transport(); projr=Topic59DayCardProjector(p/'data/weekly-operations-topic59.jsonl',Topic59MaintenanceGate.for_profile(p))\n    def claimed(_): claim[0]+=1; raise AssertionError('CLAIM_REACHED')\n    projr._ledger.claim=claimed\n    real=socket.socket\n    def blocked(*a,**k):net[0]+=1;raise AssertionError('NETWORK_REACHED')\n    socket.socket=blocked\n    try:\n      result=asyncio.run(projr.publish(REQ,tr)); ok=(result.disposition is Topic59PublicationDisposition.REFUSED and claim[0]==0 and not tr.sent and not tr.edited and net[0]==0 and not (p/'data/weekly-operations-topic59.jsonl').exists())\n      detail=result.reason.value if result.reason else result.disposition.value\n    except BaseException as e: ok=False;detail=type(e).__name__+':'+str(e)\n    finally:socket.socket=real\n    return name,ok,detail,claim[0],len(tr.sent),len(tr.edited),net[0]\n\ndef cred_raw(mut):\n def f(p,c,h,a):\n  obj=json.loads(canonical_document(a));mut(obj);rewrite_authority(c,h,raw=json.dumps(obj,sort_keys=True,separators=(',',':')).encode()+b'\\n')\n return f\n\ndef hold_rebind(field,value):\n def f(p,c,h,a):\n  nh=replace(h,**{field:value});(p/'data/topic59-maintenance-r71b/hold.json').write_bytes(canonical_document(nh));rewrite_authority(c,nh)\n return f\n\ndef replace_with_symlink(name):\n def f(p,c,h,a):\n  q=p/'data/topic59-maintenance-r71b'/name;q.unlink();q.symlink_to('/dev/null')\n return f\n\ndef replace_with_hardlink(name):\n def f(p,c,h,a):\n  q=p/'data/topic59-maintenance-r71b'/name;other=q.with_suffix(q.suffix+'.link');os.link(q,other)\n return f\n\ndef wrong_mode(name,mode): return lambda p,c,h,a:(p/'data/topic59-maintenance-r71b'/name).chmod(mode)\ndef fifo(name):\n def f(p,c,h,a):q=p/'data/topic59-maintenance-r71b'/name;q.unlink();os.mkfifo(q,0o600)\n return f\n\ndef replay(p,c,h,a):\n os.environ['CREDENTIALS_DIRECTORY']=str(c);g=Topic59MaintenanceGate.for_profile(p);assert g.evaluate(PROJ,NOW).kind.value=='noop_maintenance';(p/'data/topic59-maintenance-r71b/hold.json').write_bytes(canonical_document(h));(p/'data/topic59-maintenance-r71b/hold.json').chmod(0o600)\n\ndef audit_symlink(p,c,h,a):\n m=p/'data/topic59-maintenance-r71b';(m/'hold.json').rename(m/'hold.consuming.json');(m/'skip-audit.json').symlink_to('/dev/null')\n\ndef both(p,c,h,a): shutil.copyfile(p/'data/topic59-maintenance-r71b/hold.json',p/'data/topic59-maintenance-r71b/hold.consuming.json');(p/'data/topic59-maintenance-r71b/hold.consuming.json').chmod(0o600)\n\ndef dir_symlink(p,c,h,a):\n m=p/'data/topic59-maintenance-r71b';x=p/'data/real-maint';m.rename(x);m.symlink_to(x)\n\ncases=[\n ('authority_noncanonical',lambda p,c,h,a:rewrite_authority(c,h,raw=b' '+canonical_document(a))),\n ('authority_malformed',lambda p,c,h,a:rewrite_authority(c,h,raw=b'{\\n')),\n ('authority_empty',lambda p,c,h,a:rewrite_authority(c,h,raw=b'')),\n ('authority_oversized',lambda p,c,h,a:rewrite_authority(c,h,raw=b'{' + b'x'*8192 + b'}\\n')),\n ('authority_extra',cred_raw(lambda o:o.update(extra=True))),\n ('authority_wrong_hold_hash',cred_raw(lambda o:o.update(hold_sha256='0'*64))),\n ('hold_noncanonical',lambda p,c,h,a:(p/'data/topic59-maintenance-r71b/hold.json').write_bytes(b' '+canonical_document(h))),\n ('early',None, {'not_before':NOW+timedelta(minutes=1),'expires_at':NOW+timedelta(minutes=6)}),\n ('expired',None, {'not_before':NOW-timedelta(minutes=6),'expires_at':NOW}),\n ('wrong_candidate',hold_rebind('candidate_digest','0'*64),{}),('wrong_config',hold_rebind('config_digest','0'*64),{}),('wrong_route',hold_rebind('route_digest','0'*64),{}),('wrong_customer',hold_rebind('customer_identity_digest','0'*64),{}),('wrong_slot',hold_rebind('card_slot','0'*64),{}),\n ('wrong_day',hold_rebind('kst_day',PROJ.kst_day-timedelta(days=1)),{}),\n ('replay',replay,{}),('hold_symlink',replace_with_symlink('hold.json'),{}),('hold_hardlink',replace_with_hardlink('hold.json'),{}),('hold_mode',wrong_mode('hold.json',0o644),{}),('hold_fifo',fifo('hold.json'),{}),\n ('lock_symlink',replace_with_symlink('maintenance.lock'),{}),('lock_hardlink',replace_with_hardlink('maintenance.lock'),{}),('lock_mode',wrong_mode('maintenance.lock',0o644),{}),('lock_fifo',fifo('maintenance.lock'),{}),\n ('audit_symlink',audit_symlink,{}),('directory_symlink',dir_symlink,{}),('partial_both',both,{}),('partial_temp',lambda p,c,h,a:(p/'data/topic59-maintenance-r71b/.skip-audit.json.tmp').write_bytes(b'x'),{}),\n]\nout=[]\nfor item in cases:\n name,mut,kw=(item[0],item[1],item[2] if len(item)>2 else {})\n out.append(run_case(name,mut,**kw))\n# artifact with no credential\nwith tempfile.TemporaryDirectory() as td:\n p=Path(td)/'profile';m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700);os.environ.pop('CREDENTIALS_DIRECTORY',None)\n tr=_Transport();claim=[0];projr=Topic59DayCardProjector(p/'ledger',Topic59MaintenanceGate.for_profile(p));projr._ledger.claim=lambda _:claim.__setitem__(0,claim[0]+1)\n r=asyncio.run(projr.publish(REQ,tr));out.append(('authority_missing',r.disposition.value=='refused' and claim[0]==0,r.reason.value,claim[0],len(tr.sent),len(tr.edited),0))\nprint(json.dumps({'passed':sum(x[1] for x in out),'total':len(out),'failures':[x for x in out if not x[1]],'results':out},sort_keys=True))\nPY\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python /tmp/r71b_adversarial_matrix.py","timeout":120}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":14294,"output":4250,"cacheRead":126464,"cacheWrite":0,"reasoning":1621,"totalTokens":145008,"cost":{"input":0.07147,"output":0.1275,"cacheRead":0.063232,"cacheWrite":0,"total":0.262202}},"stopReason":"toolUse","timestamp":1788247107657,"responseId":"resp_046f5546d6e20d23016a967c44273087d0b79b56be284a5553","rawStopReason":"completed"}}
{"type":"message","id":"b798037d","parentId":"bad9f27b","timestamp":"2026-09-01T07:20:18.262Z","message":{"role":"toolResult","toolCallId":"call_nrXB4AK7qfp59si5M0dddFzw|fc_046f5546d6e20d23016a967cb1d8f087d0b7e7cb1c614fd071","toolName":"bash","content":[{"type":"text","text":"Traceback (most recent call last):\n  File \"/tmp/r71b_adversarial_matrix.py\", line 119, in <module>\n    out.append(run_case(name,mut,**kw))\n               ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 48, in run_case\n    p,c,h,a=arm(Path(td),**changes);m=p/'data/topic59-maintenance-r71b'\n            ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 34, in arm\n    hold,auth=docs(**changes);m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n              ^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 21, in docs\n    hold = Topic59MaintenanceHoldV1(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages/pydantic/main.py\", line 263, in __init__\n    validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_contract.py\", line 59, in _contract\n    raise Topic59MaintenanceContractError()\ngateway.platforms.nutrition_weekly_maintenance_contract.Topic59MaintenanceContractError\n\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1788247218262}}
{"type":"message","id":"0871c8f8","parentId":"b798037d","timestamp":"2026-09-01T07:20:35.510Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Modifying wrong_day date handling**","startedAt":1788247222847,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967cb6c26487d0aa874f3783711583\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnzDVReE6EI53TDiCjt6JNGi9fnROaTEz8lLvMrIRX8lJaOMy-oMr_eAQgM3ahIJdPYVC59jvFjyYJMlxXrbWzJCwuQRZTwz-5tPQQV9PyVzabRW0DQc3lwRZOYUo1tUMWYRd1RoUX9f-MXzVYopbdZ35JkRWeBo8IG3wUmFiN33B5j3p08--Z4QtEKI9vsZs-UzR3e-gYyoda0UhXnUj98RcV_Hdqkd4Qf-J4nJL0spN4HKFxhNylCTFqOSrgzjBzVjMZZpMd_jyE6r3NPQ9CmnW_rE7JxnuNTMmzMcsE6Q6hRYGBDwfuhDbOVjNU0-AqBqASeR-9M-6jdNHcGV5kP3UyPY5ZgMMHs7U16vuyuZ0hG31V5yzrJ-QvNlmHEz2ZQjD03n91QmdlkgMlOaxvi_npERGBF3B1p06ATCqGvbpXHwSm62TPy84_Q9y_AeSwCIvJ4xXU1WBlUpAQyrNwM8R5i72FCF357FpO9kkCkwDy26z4GW5ln4EUeKIRzCWRcxi87zFMRpU-55WPlM8g2q3VIfDjAKT0pKmC2iEC9RQr3thgXx8tt9bHbU_6B__3KIrnApYS00bWPumaRFH2Bxny3c-1slO7oWHbDrf4Gqgixy6VKxwAmCxqR1TopF0LHqounVB0mALrfA_W-HIxt8rfzK8ixkU_WHwVHAaHuaNOkJ2iWTlHTtCQWsDkLoiK05vbyGsIlGoOnFQvECh4tq_KgEbNv-WKkH9P4DObg2FBSkC2i0KcKoZ4KDnZenHOQ35Ogqr2LNr9SyY_UouaLNh2TnVfwHc2XujgMnVyi8ST-i37t_glxBy36dIe4D3T2QhqxavVfB5ryTUEbanOuOkjDl6nY8oAepdIq9r4ReDJsD4Of4tRD_j0uCPyc3JpNhat-Bp7r4wYW_jTi5a4oUxC4fydfDr_gPztBps0Zwr5rYNRm2vhL8m9jbZ_ltLmx-zBf_BG7F2aqZCUqBtkEA_mzpTlSeTrXxg-fLFRO4l_D8WB7h_sRNd6PXeV-Y6UtBNg_L9G8GiiMopC04Q6a9aWATOYn-dQw7do_skNjXHFzCzyZ774x53wWy9K4BCcduJO_ZvFSfy3os4jolyoJ2zIpaGNx6ZfRQ00Hk0C5jkRR77Yq_UHu05DR5XO6zgKKjc3uD2he_Qy3-s3_KxxT2OU0_66-L973Tu3_jHAEjtzyHQjQmKa-Tw_RXnOlQAGedXz01ye8g36I2dGqgMysftN8fuqF9FTAsv8AxKmAPLT_xaY5ghjgvZDR6sTHB52tqqpIc5ByIUVw9Z5-biXZUIxAUCb005WhEIWYE6ToBhHOIpiW8Jo4rSm5hBixUDEKhDwuJqPFItQzNfcIPByO1v8KqAfIblhmU8AfbeaXiVQLOLf-e7OR6MGf9CSgWZ6Icnva39jNZ5zA7WoEk483yqUn0g5xi0oPpdZ1yLlTTlOBQ-afiDykS8xK1hqYjlBLnptdZsmVnAZ20nX_R-cK3MMnXViw1tSEkU7IOF7aLCyso9rvgw2VlC5PvMkhOYhur5W4oYd9JM8ore1Vw-I81sUegPgfxjAAFuMSx-ymYj3aUY-Ee9qdaiB-kKOC-Of0KeJompAXhl1v0S0HuaiWz1udDlX2NpwSJ-_bfI3b318EVoS8M7fpdn4NUaArnKzBK3jasu1NBrcXSwm7e_dqCPj7FGF8mDxOLRyVowbhmK5bDXcH9ns5r4_y3ngHsVAk2\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Modifying wrong_day date handling**\"}]}","endedAt":1788247235464},{"type":"toolCall","id":"call_gSpQh44bdmhmQpyZOyhsK3qZ|fc_046f5546d6e20d23016a967cc3614c87d08bab238ad5a77829","name":"bash","arguments":{"command":"python - <<'PY'\np='/tmp/r71b_adversarial_matrix.py'\ns=open(p).read()\ns=s.replace(\"('wrong_day',hold_rebind('kst_day',PROJ.kst_day-timedelta(days=1)),{}),\", \"('wrong_day',hold_rebind_many,{}),\")\ns=s.replace(\"def replace_with_symlink(name):\", \"def hold_rebind_many(p,c,h,a):\\n nh=replace(h,kst_day=PROJ.kst_day-timedelta(days=1),not_before=h.not_before-timedelta(days=1),expires_at=h.expires_at-timedelta(days=1));(p/'data/topic59-maintenance-r71b/hold.json').write_bytes(canonical_document(nh));rewrite_authority(c,nh)\\n\\ndef replace_with_symlink(name):\")\nopen(p,'w').write(s)\nPY\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python /tmp/r71b_adversarial_matrix.py","timeout":120}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":5598,"output":337,"cacheRead":139776,"cacheWrite":0,"reasoning":70,"totalTokens":145711,"cost":{"input":0.02799,"output":0.010110000000000001,"cacheRead":0.06988799999999999,"cacheWrite":0,"total":0.107988}},"stopReason":"toolUse","timestamp":1788247218303,"responseId":"resp_046f5546d6e20d23016a967cb3240487d0841105f95a8770c0","rawStopReason":"completed"}}
{"type":"message","id":"ff458f1a","parentId":"0871c8f8","timestamp":"2026-09-01T07:20:35.736Z","message":{"role":"toolResult","toolCallId":"call_gSpQh44bdmhmQpyZOyhsK3qZ|fc_046f5546d6e20d23016a967cc3614c87d08bab238ad5a77829","toolName":"bash","content":[{"type":"text","text":"Traceback (most recent call last):\n  File \"/tmp/r71b_adversarial_matrix.py\", line 122, in <module>\n    out.append(run_case(name,mut,**kw))\n               ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 48, in run_case\n    p,c,h,a=arm(Path(td),**changes);m=p/'data/topic59-maintenance-r71b'\n            ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 34, in arm\n    hold,auth=docs(**changes);m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n              ^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 21, in docs\n    hold = Topic59MaintenanceHoldV1(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages/pydantic/main.py\", line 263, in __init__\n    validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_contract.py\", line 59, in _contract\n    raise Topic59MaintenanceContractError()\ngateway.platforms.nutrition_weekly_maintenance_contract.Topic59MaintenanceContractError\n\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1788247235736}}
{"type":"message","id":"a1ab9a9b","parentId":"ff458f1a","timestamp":"2026-09-01T07:20:48.476Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Testing date validation logic**","startedAt":1788247238568,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967cc67b8487d0bb91c3659dfd8a12\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnzQ3UT9hfqrzgIxR43bDeeYd1BdZ7zZGFeq2XG-pWP81_J9TubuEt1Jm3g9cwV3Dzx8zmFa_2bH3RfQI4UX3IqsT2M1zupGVu85QNvjjkevMvd_TDBNgPRHD9H8VkMap6oZDegRjcCaMVEsrjBH_CdKXa9AyXKvFxamnDdzgf04PodLsEAfRv7w7yNW8k4jsZlD4awLK9lROX6wtAcFfMgyyRJAbZQCZ2UlIaSKpsZ2zRu9UWkxswzpmZeMn5mopC1ylbCpdKyp62mSWL_dTrj8oY9OActeIUL3qyLBL7lz7w0bCfGFOaPv9lErcrlLlXwj9QynNS3zDJ57sZprMEG9kCI05GPPgCVct_iaVpds4cCrCID5QB-a4fcaoCPyjthaki6FA85yFfFNlZDG39guAZE36xESvhOlmAidV5uTtFttJzsnTRstV0eLFyZAA5vve_QLGzjJ0XvxTi-wzuYiqC6R37ND9CwcDt-EFl4Cg_KyMYHabf2_4rDutW9fuBCiOXp05DDS4rS_rH51Qe79opVDh4S96M7MYVsom-7BLE9YK4znKrSl36irE8auhoNANSIMCaKIBwNgSL4tp2jSMnyJZIvA3AourCSLuACoo369tTnJSu4cdzbSivsn0ou0TZDX4EE21023Scz8Q7R4rgIbem90cBnLNdU0VoIEG3WPAC8lF2j1SpHyURefJVBf5jTZa_Y05uM-EuxeViZzyjx6JrOyNZV6jJ_fbuTCanvzKFpMSglTFeEkk_dw-iiFEyTJVzhZwB211gq5scmTztcgSuWkC0gCHCgXk12Ind0lnBXhJ49QxUyPQZIA2yuTdEPMgQN8BkihRorJgE9lDBmBn5MpgRPkxcbcWL4AlhsurMxpT54owtzKpPyNwgSL4DALZ6mtadsGHAQvDdf-rZ1JTgmAXGJf-4pbM_CGEjFx6rOfITuNQk92Grxg3u4ADlYQEgQb_Ek0VPUpXJvHAKEB8FJnF1ROnwMUxLb5nO-2j9psP_J5mYAAVmZneHoC2SDX1dpUWdKn9o_qY5P1WJKWuxSYqu40S8epX881UFWD4hhDn3M1b4Hzu4C_Ko6WjcIdHXBD-LjAo_v_RyNM1IYr6Uoptgg7zlFbPPaOik5o1lFpgMXsSBUdu7S87XVqDP9r0Op9za4TkyYgEefSwZ7EsNrOFikxzIFyt_Gwpn-z0nhoFgv6wtqgN_hTgh2_qjBk-ryfr73k2J2O06XhBnR53uOuWAHiI_rgdnO-d9_y-8pHH4zKmzZjJoNNUeT0G2J90fgm-FQp7F-sr6-OwNmbYQg6DyAV7yvcVbZ-UWgiw_PNLN0zOzUxUNJZaP2hjsCUmWht6RW2zYjpZSbpwr-Cqy1lh58NMc6RTIUQN5L2MuNZ0dfvqANcZT6_VPJjYWhId5KW43rSIFZ6H5dN2AyBphoCCgWtTnIb2xHVMI9tgUPCHsX1t39I6i2BMGFk\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Testing date validation logic**\"}]}","endedAt":1788247248423},{"type":"toolCall","id":"call_uNVTCa0l7eTHz9pDBdtCJCW9|fc_046f5546d6e20d23016a967cd0538c87d0830160ae4bdd9556","name":"bash","arguments":{"command":"python - <<'PY'\np='/tmp/r71b_adversarial_matrix.py';s=open(p).read();s=s.replace(\" name,mut,kw=(item[0],item[1],item[2] if len(item)>2 else {})\\n out.append\", \" name,mut,kw=(item[0],item[1],item[2] if len(item)>2 else {})\\n print('RUN',name,flush=True)\\n out.append\");open(p,'w').write(s)\nPY\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python /tmp/r71b_adversarial_matrix.py","timeout":120}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":1181,"output":231,"cacheRead":144896,"cacheWrite":0,"reasoning":40,"totalTokens":146308,"cost":{"input":0.0059050000000000005,"output":0.00693,"cacheRead":0.072448,"cacheWrite":0,"total":0.085283}},"stopReason":"toolUse","timestamp":1788247235779,"responseId":"resp_046f5546d6e20d23016a967cc4b9ec87d08222fbe312728451","rawStopReason":"completed"}}
{"type":"message","id":"015bbb50","parentId":"a1ab9a9b","timestamp":"2026-09-01T07:20:48.707Z","message":{"role":"toolResult","toolCallId":"call_uNVTCa0l7eTHz9pDBdtCJCW9|fc_046f5546d6e20d23016a967cd0538c87d0830160ae4bdd9556","toolName":"bash","content":[{"type":"text","text":"RUN authority_noncanonical\nTraceback (most recent call last):\n  File \"/tmp/r71b_adversarial_matrix.py\", line 123, in <module>\n    out.append(run_case(name,mut,**kw))\n               ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 48, in run_case\n    p,c,h,a=arm(Path(td),**changes);m=p/'data/topic59-maintenance-r71b'\n            ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 34, in arm\n    hold,auth=docs(**changes);m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n              ^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 21, in docs\n    hold = Topic59MaintenanceHoldV1(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages/pydantic/main.py\", line 263, in __init__\n    validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_contract.py\", line 59, in _contract\n    raise Topic59MaintenanceContractError()\ngateway.platforms.nutrition_weekly_maintenance_contract.Topic59MaintenanceContractError\n\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1788247248707}}
{"type":"message","id":"79de5eaa","parentId":"015bbb50","timestamp":"2026-09-01T07:20:59.269Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Checking token expiry timing**","startedAt":1788247250272,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967cd2308c87d0bcf9ae361d075246\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnzaFBRUJiITXyj2f-DpDxwVzcPrxXJrmFRudxH1mYidyTq2bxchX-AeLpuxAfxUUc2Fd4cAR3xp7AwWTAj2rJzMwt6YKNefNFcjCWu1StvP8yYfDkZ8EmQbh-w1zpesAwjZ1o4rJqMpl7gs4iEOwvtPq6Rwzy7Jc9rr6oueqHGRdoId0scm0yEYCzov6HLW9Qht71kEA5pjcjJvQMixfsoWkAmS_V2CG8lFOFMhCEaCvkFNohr2DMecGqEWJK0UmfGBM9N5Famcq-dQgIkSKYMEB49p-iNbls834oYoLUPlr6MbA19dso058jwYoM4K53p3zm3wy1B6AwoHoxNoSjCOB0qENDUMmj9iVvbLuwhtgJvzsKJXGQyp5qBQ-Sgvy1JEcVu4G47fi8IGxhmrOp7odJY_kwf_gop9tF66AGPYo7TrI5OAuLGLX8V9cmlK8MnRB_PREsouMeVncHyNNsFUbvP3Z7rI1CVVAvWZPO-6qhlCW1sKsqgn3-HORUzxazgWXjMCiJoYcM8CRlfbWP9l1vd9jX2z0RVV9qWs1dhl9q3msXmj-Qc7vl9ZZt0DhpmtLFBRMJMSvNV41FzdZX-JF0-tdNK42Ai4rVVWjdDMWglxPpBG0FJ-lqFQgxmbqxFmcRPwpJic--EVEe414-TjL43YDHUTdyPOsUUGMmlaEehGsElgTyu0d-aK41mU6LHGp0c8lo3xumQ9a5wJ0DJODrNB05z6SmL53H6B0Z5yoBohVAdKUNwKy-R3YAo3LVg2qU6VdZ7kUjsAZCfm76-eWLS6QvHoeoRmKGJOLqhbGRbEeCuPFn5Pfi0z38FAOF30vs_WrqHiijmHHLNr6WDYpQv-NFmp6nyrGjp-ke_z1U6JOZgXz6Z6I0uERtWyZ7YzO_rDaBs6LgmfxfMZMrCZ4vLbfjRVsAeWAvhZBY88oPfO_SPhMzKiMXGMBL1fA9vxeUq8jheQEqOAVd6zgZOqA_mSD_Hc0OxvIIJCNhdD8zMAzlfNnpbVCbgB2h1JUPR_PcawiUsWfMR7nxYY_7Aqqvehb7FQej_R8UwqgU8acJL5zfnYIVkiYyF08ZhPaW9NGHzCQ1lqhM2ea4FOzcNc6fAY-uisk2GXYeVOVVTJMhRHY4KyUuVnNwIiyWdjLdMnz2qEJGhyNtmNymvLTiSCXm2VcR4kSf0O_hCatmJMYgkJKNHCiWZJXy2HZUAL6s9QNrAgNw6IzZa22xr1wlVZSkaZS0c27PmIalXUpFTp9LOgbDg46RycqxrO42XVIvQW7CoB_LgfHfP3Df15lAETla3DRhNxZcdBS49-j-lmnvhmSUaFRULDLOaHzqxXas3BZa8DAlbdJnCPGdhZMu5XNq4XXvzXsYc-lvIV8ZZbiTk=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Checking token expiry timing**\"}]}","endedAt":1788247259003},{"type":"toolCall","id":"call_U76cDEBNyzuKE86jIu9Etdhu|fc_046f5546d6e20d23016a967cdae95c87d08b8bcaa432f6afae","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python - <<'PY'\nfrom datetime import date\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import _request,Topic59DayState\nr=_request(date(2026,8,20),Topic59DayState.SUBMITTED);print(r.runtime.now)\nPY"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":759,"output":145,"cacheRead":145920,"cacheWrite":0,"reasoning":22,"totalTokens":146824,"cost":{"input":0.003795,"output":0.00435,"cacheRead":0.07296,"cacheWrite":0,"total":0.081105}},"stopReason":"toolUse","timestamp":1788247248747,"responseId":"resp_046f5546d6e20d23016a967cd121fc87d09f212a078c9b2024","rawStopReason":"completed"}}
{"type":"message","id":"d54b8e96","parentId":"79de5eaa","timestamp":"2026-09-01T07:20:59.480Z","message":{"role":"toolResult","toolCallId":"call_U76cDEBNyzuKE86jIu9Etdhu|fc_046f5546d6e20d23016a967cdae95c87d08b8bcaa432f6afae","toolName":"bash","content":[{"type":"text","text":"2026-08-20 00:00:00+09:00\n"}],"isError":false,"timestamp":1788247259480}}
{"type":"message","id":"d94ea260","parentId":"d54b8e96","timestamp":"2026-09-01T07:21:08.996Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Adjusting request runtime handling**\n\n**Simplifying default validity periods**","startedAt":1788247261362,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967cdd451087d0ad4aa8d806d02ce8\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnzibRkytv1N4F8OpTK1i4-ULbK6lqMDUOFlDR6AzSnrnNRpNNUrpdt0L0icF0uKlVRWjwN3XVpeOCpE6vMtN5-B94AScaDTVXbRyCfjhswxfDxCjRtX1lniIOPnbrl12ceuTOzQg5zLY9UzYUZkQMIF4LI_fx6GbSTcH5kuijoti5E8R3kMie94q06xDQ4xkG4wEls9quD286qwaBwu-boe9EbFMRywX8LuBz2FMTIMy9H3zExYE40Stvv9YAwxYJOK89C0M33njdqxXa9-0Jdq8QSDW0h387Bcm0jFjXSz4dalDqLF3EBcSdrQloT6ENXexf3OBn3OICDK5cDVjvu_dHEbyoCFA-VAYbCVDqXEQv8UGXWvsl7fKgcIHhfiutZauR_FJIZ3fsml06m9yFW9c7SgtOUnFOpsnbRbPPc1_Svst94trjti7E6S4LKKM6bEYYpvnBaIQaZBVsWpf7_BHsLLebkiW3jVtt2GWPR96Hw2fl9sELqg0Mcsrt__ZnNMn-03Tv3LeXkOHsP26Oloyso6loB0D-EU3aBXt2JtcNBAJWlPiWqk-q3vbTDjlwYyeqBtJnv1VytLHvNt7lQ12zJnqOHTJG7ziDBCpDjEwi0E5R0EONPD8wJaSetdDscSsqO5z-PIXewfIwUxMLm5WuhlM6shGhAnWD0Aac0PsFteMbSioQZpRgVbcAPZQwH-29uf9pwKxRdTwCFet85SHQGcbXtCD0p5f9i3VfavjYHOx1nhBKjG2Mx4r5Cr_JHrqV5REEdncv9iOGNgT5blVBxdHOlgNPflLcTlZSPT4IC2ut0xlrM2_oedWGWS_J2pr_mMpTZg8qduR93g7Vi-yL8xIcU1vzIKnHeBqV5g2MbVVUZuQXT0GqONIM4ukIKMT0D-Rsa08Fis1v4E8jkM05sRs79jOnMI_yJ0tv6N-9fEq5kn0cLNXrEmpiPXfzY1NZLZe1C-1-GbVpM7UJzGXQgIpPTnMSR5qQoMUHoREcahNvpH5FEQz5D52oIoGHUIFwzrDenf-2AgUlUW6IYG0-x6xednckOwehOHQnnkrQAjqsGw7ChuI9mCIJqxIiRtd-oimLtt627Fa0s3mjuBwFUILfK2qBW_nnH5VgUJcpn9c2VYKNe_yYbUb3ntIq4deDYNN3gSqOAaUbPiCNhj2UUPPonCNE6g-JeQKiMCH47ACBm7kPaJWURZhY6H0kiL-GF6Rzf_FfsfTlj6sJqXbXFjmXTJ5P7jWnNT_gOYB9Ei5CRaD34n-O0uphpC4Idyr5zCu-CK8DNIdaLqzjAGAO_h7lNZp057ri87Wp-i3WQ6aUmtgrVbo5S6sRZNEmuqwcYBqwHFp8H9gwO98nKpp6Ez_oam-3L3BVIAtB3kxnhzTuifrFWbimUSYQ_-TKVVvd4C2s9to5pxRk7k0IQlR2t31UdM6tkz7Yb57cy8zAM1thZYpWK5XrvSnfcj1o2zst5EAduCVIGQIF6QQuL2C5KZ9MFo2obEgUxOfMHnW7lZr_nDuVez86QD4LSzFQdGzvW1WpKas5nAf9EbmzFdYXKYLlUMfosQMiZlbZuc-K6y_Y_GrCv2Q2KsKxR1mndmaOogm6-qoEUF6e5ePVJJ7qkh4RdZVBwXfTTOz-1Kd3_d3lFjSMo2Ntv5g1Qyc5IweIUoMfKehq0m774kRK6WTNhI1IwDTAnGO8e36zcKBnx0yNFe_0I61NaUeldvQCMsWvykjfxL9EB7o5UM2WHKDT8SUym4Fq-67fRy_Tm-7uXSdgHz3HtB6LfSyerzpZkQPYBQ5gNhtdTwDzGC7cUL4hbYFx_ZSe6CPEJQnAHvuBO0drDtEIcFKpz5_CuHmwNR3t-EuSjnppgxgCdoA1qEOga1rPooR53Mr-YLChUVNpYy1m-518muUJqghdr3xGZI0u5NP2HsLb2wnYGpaza-4ONhLKHJAOBia7xbgq0ZAfzupJqa2mnEY-2BWYxBziql5nn47j8mCmpOhXbdr2Pkv9tyt-KPmfppcj9fWhnSiamSV7PJqrwzd41haT1i0GAbqIyIAll7dJcwXuFv6OAZUcPubGexGV9mwe2ssPVnpD59mgs2O3EVgUzZHdryT-rtX-tcF8lhRcBF2UwWtDD-o90a8AYQhKGJ7LD0BcoZcpLcNKe3akVIoFONgROXuvededahGwlsHCnInRqHo7YBc_8OPOBynAcp0142FPCIMlGY_S61eA_A7RgqTidg3ki-\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Adjusting request runtime handling**\"},{\"type\":\"summary_text\",\"text\":\"**Simplifying default validity periods**\"}]}","endedAt":1788247266991},{"type":"toolCall","id":"call_ONNBNlehU2lZIXgaRqyBtbvW|fc_046f5546d6e20d23016a967ce2e5f087d0b238a00dcd5e79f9","name":"bash","arguments":{"command":"python - <<'PY'\np='/tmp/r71b_adversarial_matrix.py';s=open(p).read().replace(\"kst_day=PROJ.kst_day,not_before=NOW-timedelta(minutes=1),expires_at=NOW+timedelta(minutes=5),\", \"kst_day=PROJ.kst_day,not_before=NOW,expires_at=NOW+timedelta(minutes=5),\");open(p,'w').write(s)\nPY\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python /tmp/r71b_adversarial_matrix.py","timeout":120}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":932,"output":334,"cacheRead":145920,"cacheWrite":0,"reasoning":157,"totalTokens":147186,"cost":{"input":0.00466,"output":0.01002,"cacheRead":0.07296,"cacheWrite":0,"total":0.08764}},"stopReason":"toolUse","timestamp":1788247259524,"responseId":"resp_046f5546d6e20d23016a967cdbe22c87d09c41a95ab4964712","rawStopReason":"completed"}}
{"type":"message","id":"52ed64be","parentId":"d94ea260","timestamp":"2026-09-01T07:21:09.224Z","message":{"role":"toolResult","toolCallId":"call_ONNBNlehU2lZIXgaRqyBtbvW|fc_046f5546d6e20d23016a967ce2e5f087d0b238a00dcd5e79f9","toolName":"bash","content":[{"type":"text","text":"RUN authority_noncanonical\nTraceback (most recent call last):\n  File \"/tmp/r71b_adversarial_matrix.py\", line 123, in <module>\n    out.append(run_case(name,mut,**kw))\n               ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 48, in run_case\n    p,c,h,a=arm(Path(td),**changes);m=p/'data/topic59-maintenance-r71b'\n            ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 34, in arm\n    hold,auth=docs(**changes);m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n              ^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 27, in docs\n    hold=replace(hold, **changes)\n         ^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/cube/miniconda3/lib/python3.12/dataclasses.py\", line 1559, in replace\n    raise TypeError(\"replace() should be called on dataclass instances\")\nTypeError: replace() should be called on dataclass instances\n\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1788247269224}}
{"type":"message","id":"6a1f6abd","parentId":"52ed64be","timestamp":"2026-09-01T07:21:27.413Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Refactoring model copying and updating**","startedAt":1788247272861,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967ce8c58887d09f90a7506cd9cea4\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnz3ZVv6XfNpS4RDKjd7DD7ec21CHli0FKgh3rkg1pY10SqLmpSXpgCPZwmdCqO6crv7rtjuu5QsTG6C5n_QGuWUTOTErY5ldJPzhmoS4AU5XdpGjwgGOlYxprrbb4DBqim2xhHdKSBXaFHNxdFTelfNl-i4nhGSgfBrKjBK-SQMs5-jZSt7EkFQJ8AeqSApgcEaEQ0S08DwK4C1R4ma6X9VXmqOp-1-iafHbP5edZA0BkOcqTqR1baV9ccjiZl0fgh1AGucHorF-VGmxx85kiAAiIYjyaciejV63YmKCDFvTrNTDS5s_sFAfz29bZmFHgF7JPminbVAM13yvgGvTqW-XiLhojpibD1gh_kFhTyfRfKgA0nA1hvbZp3EVhJ-CxBLNTwVsazbwlEWyiLgjk6Aa0OYF5IMr6TikWuQyMA2J5yPjQamVR0eZtOMqbj7BDh1peb3-XTaepLAr06K_A9Gw5jSGQ5mhL1EBnNqzgFPXkvoG6XNcC15tVg5CMtu0H4d1tcuoVwgEzXRFUrJ13PcwYJdmfM7wVWlVtIEBuMzbsXHHcMtX8l8s4rB41y9PKH7oRokFEtf5Bi9Da5SucqTBzavJvqMmg341D1Zrn73oHgEi1KIUMLiadkC3IOxP0CpwzJfYTtfUB-EY3Po1MbHp-OoiPFHrSR-snHbxG0axU2AXLTWR1X-bQnda3wvhkJ_tl4l_sLdv098jGaS4O6awETVqdDpbVDlxdtpY-pxytExfqga49npPHTpxDUrhpxMnH7iQl5_2F_ACAfMDKqMnLy0k6Tr_P0uBH_pzeu5UZb-RzhR9q_hBULeBVGFAnvJbzO6RdFfOIgTeI-omZkjPEG4tAHQjCVkq8IXAopv5bc8zvPCQZufNYuep3F8neSqCGIhtIlQfRJRns7H3E6qIxpgJWqgiLan_PgrCk8beNCiUfkNzs5AH5Ik-TRr7Wcsp3tLYItI7yQpVULRPDlT3H_Mg0IhEZCNJ4oMhBkCNz5YZmwb54C1Nl5Oj2cmG6OhfZOGKuKjUDMK3T2aMi7yj0K1hCXrsfe8R-MsbDfjvoEc9JNPhsn329iKRbvWQQlgGkkCblbY7UQ9ckDfPR3jVaBSGoOLGw60O2-2EbAOPFwgAwA9S8w3ZW81aQTseQLwiHoJbqxxyCkM9myC6WrMvRgll_pxSkWs3sUVC6eSIG_f_9wi2WsjLSImOdejrR9nhGQsDC8YZZtLg1qqST4H1KJrDdaMri5HHCRUZ7dAVHplZppuR0uLleZrQ_3c9fSFIeEZV-f1mVwQtlA_2EikP6XvwOPkKK_q1Uz2M8zB8eaN3yfDA9DrUstXtFggtqovcyyA0mGVnpiPKdOvaeITcSgZ5b8Q1MlEonrejmqro7aTr9sKcxEyrCZ5xM9DBP_X6Wu3nKZzZ8JpuyFwOLbK2pszjJMWFbXb9MU-g4quvARUAmJeinYY5-wpVX9-u0qhYICPmveCFrMNN1y3kpfUhwQ-T5hIkBrTv_QVkNAitkXrzjasxlimI_gFjwDsfaQNanM4ykuMewPDV-KVP2fx6fqHFWoPIlNrlexKMTlhxYHUddOLJY4JeCs8-acKB166r_LpjRHKI8ZoztAUQApWMwZX6V9H7VjkFUATVFh3_auUeWPzxEUrGUWFgds5PSjNPU3xtYOY8LdzKT3MBTxT9bCEMlQWThLT3lha0PEIpBFI21rudLwvtVm-kGzpRSW8M28O9u43A7F7_DxA5Nbpno3vNv0f0WtpGJO2Bep1hDK0MgVHp09tDAMTiggeGqUPExVvXA3POatR2Fi2qJarNiPnALX8lGFqRWvPnYudwA4=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Refactoring model copying and updating**\"}]}","endedAt":1788247287388},{"type":"toolCall","id":"call_qthHGqZLgM1nbQmExGESH4B1|fc_046f5546d6e20d23016a967cf74b6887d0a370134dea75c0c6","name":"bash","arguments":{"command":"python - <<'PY'\np='/tmp/r71b_adversarial_matrix.py';s=open(p).read();s=s.replace('from dataclasses import replace\\n','')\ns=s.replace('hold=replace(hold, **changes)', \"hold=Topic59MaintenanceHoldV1.model_validate({**hold.model_dump(),**changes})\")\ns=s.replace(\"nh=replace(h,**{field:value})\", \"nh=Topic59MaintenanceHoldV1.model_validate({**h.model_dump(),field:value})\")\ns=s.replace(\"nh=replace(h,kst_day=PROJ.kst_day-timedelta(days=1),not_before=h.not_before-timedelta(days=1),expires_at=h.expires_at-timedelta(days=1))\", \"nh=Topic59MaintenanceHoldV1.model_validate({**h.model_dump(),'kst_day':PROJ.kst_day-timedelta(days=1),'not_before':h.not_before-timedelta(days=1),'expires_at':h.expires_at-timedelta(days=1)})\")\nopen(p,'w').write(s)\nPY\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python /tmp/r71b_adversarial_matrix.py","timeout":120}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":1549,"output":388,"cacheRead":145920,"cacheWrite":0,"reasoning":81,"totalTokens":147857,"cost":{"input":0.007745000000000001,"output":0.011640000000000001,"cacheRead":0.07296,"cacheWrite":0,"total":0.092345}},"stopReason":"toolUse","timestamp":1788247269266,"responseId":"resp_046f5546d6e20d23016a967ce69d7c87d095d46f4434caaafa","rawStopReason":"completed"}}
{"type":"message","id":"64a9d893","parentId":"6a1f6abd","timestamp":"2026-09-01T07:21:27.635Z","message":{"role":"toolResult","toolCallId":"call_qthHGqZLgM1nbQmExGESH4B1|fc_046f5546d6e20d23016a967cf74b6887d0a370134dea75c0c6","toolName":"bash","content":[{"type":"text","text":"RUN authority_noncanonical\nTraceback (most recent call last):\n  File \"/tmp/r71b_adversarial_matrix.py\", line 122, in <module>\n    out.append(run_case(name,mut,**kw))\n               ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 47, in run_case\n    p,c,h,a=arm(Path(td),**changes);m=p/'data/topic59-maintenance-r71b'\n            ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 33, in arm\n    hold,auth=docs(**changes);m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n              ^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 26, in docs\n    hold=Topic59MaintenanceHoldV1.model_validate({**hold.model_dump(),**changes})\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages/pydantic/main.py\", line 732, in model_validate\n    return cls.__pydantic_validator__.validate_python(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\npydantic_core._pydantic_core.ValidationError: 1 validation error for Topic59MaintenanceHoldV1\nschema_\n  Extra inputs are not permitted [type=extra_forbidden, input_value='nutricoach-topic59-maintenance-hold-v1', input_type=str]\n    For further information visit https://errors.pydantic.dev/2.13/v/extra_forbidden\n\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1788247287635}}
{"type":"message","id":"8c58b4f5","parentId":"64a9d893","timestamp":"2026-09-01T07:21:33.897Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Inspecting model_dump alias**","startedAt":1788247290584,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967cfa7f5487d09ada4f0e24fe3dec\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqlnz7Jk6jNaQf6Ipy13-FefRGp0Ahxi-XXoDtZ90q0fBP4-1oGgDlNdZcl3iSYbtfAZ9-GtpExODMvmlbEE3vs7rYHbrmbmkUnLHyv3dYzdEKJNbdlobd9A6HhGcAPxC5EMSydE0Vwnxb5MHfJ88_6EulKVkCGhsfZP34YnZwqUtNy44E8GnMXS6_KjouPlG3WuNioXqOmE3eZyFOKfiFi7KYHZZvBFzdfVRNTfbr4i3QcZZxplPk6T8tU71qd6y-iEZHDuoKE4PsGjuxhmbVF4dibLapPZVtiEEavSg4ZZmZ4nTKbXhMjXIsnb6cGF6aB4NxxvI5PtDO1rL2VKF-pWENJ0Y2mNtr6r85ru_1v3QN0WznRLbbHZV4AniLqkqSyRez42a9xZpvWkXtUIQH4P-MGU_g3vhvpT3FrJJXRpqNR2u9IH59QxRPVnlT_ARY0gnRzAyt8FALzkQjD3m1eq3YUdpGUkt29AWMOdO8z7EQeLvIIxhtQkaTJkSIChP6dfEhNuj-gB8cHFnJOWKhkv4z_vrVAAhCHv-Xu1WW0Ri2a1yWZ8xljWLu7T0KvQlHIZ9Kl2arPOdA12TnegRnBhvp1-saoHoSvdgZfR5ChWmeUU_kgM-u11ACTdpN5j-rldjzQOKjTdYHb7NFdVcxbkhV9QWmmaPV4R4JlJJ6PUPfVz7KWsfg9pA-orhG6fEnZAiGw8egJRc75-8RSvszm21h_G4MrQKdCWUr9vXyCuKVsynXcuWDTRpTMnbkHslxo3qe8jkgR13EptDuPVu8yF7lNtHff4BfuGtEwVC0m2VMp-CyQglaAkSvUbn9k_qU_raucNsb7wlfFAMxxUGyrRjX99nChdQpNoV9izh4A-jshWFR70VYyOZFgo5CvD0-oLplgw3jXn3cd0gzI9I3GMvaRU7-bMlhPzMHUpxWpE_Lfp2TgTvO5TkHkGRGO0PH-lzacQjAgeYHKHEWpN82SsP2sV78QkW3SoPWlZEp0b3AQsQQepNKAaDZ1yIjQHCeU4_DyeFbmDF60GZjSZrsNA1RUTE-dXekhTnnh8SZZR4rVLMSGl39P6EQQjYAzCC7frQq5cWAKrcdwkkbYnqTh5nVYyB1lF3Sq6__6l8pIAcWJtVQRVZdjegRROH6CXsrOuwM_b5b6B5-mS14YRxqTdgoq_9jEGAFjpbSNPNTTf4owO79zY_u4g0ORsMbG7Toqty7WQXdH89cuSlXHFP_iCDlyOodE3FsSLLpDanKhbSFxAUByHKPe1XC_WTi-_qgSw_FiRZm41W-5acaD5yjGjcFEYGSG4wNqUoEx-SY5H2p4JI=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Inspecting model_dump alias**\"}]}","endedAt":1788247291310},{"type":"toolCall","id":"call_LJSCZf27GBR28QGyvyhluLFC|fc_046f5546d6e20d23016a967cfb399887d09ffaa48cc5860972","name":"bash","arguments":{"command":"python - <<'PY'\np='/tmp/r71b_adversarial_matrix.py';s=open(p).read().replace('hold.model_dump(),**changes','hold.model_dump(by_alias=True),**changes').replace('h.model_dump(),field:value','h.model_dump(by_alias=True),field:value').replace(\"h.model_dump(),'kst_day'\", \"h.model_dump(by_alias=True),'kst_day'\");open(p,'w').write(s)\nPY\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python /tmp/r71b_adversarial_matrix.py","timeout":120}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":1304,"output":183,"cacheRead":146944,"cacheWrite":0,"reasoning":9,"totalTokens":148431,"cost":{"input":0.006520000000000001,"output":0.00549,"cacheRead":0.073472,"cacheWrite":0,"total":0.085482}},"stopReason":"toolUse","timestamp":1788247287677,"responseId":"resp_046f5546d6e20d23016a967cf83dd887d09f25e788fbb578b9","rawStopReason":"completed"}}
{"type":"message","id":"3057565d","parentId":"8c58b4f5","timestamp":"2026-09-01T07:21:34.132Z","message":{"role":"toolResult","toolCallId":"call_LJSCZf27GBR28QGyvyhluLFC|fc_046f5546d6e20d23016a967cfb399887d09ffaa48cc5860972","toolName":"bash","content":[{"type":"text","text":"RUN authority_noncanonical\nException ignored in: <function BaseEventLoop.__del__ at 0x724115feda80>\nTraceback (most recent call last):\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/base_events.py\", line 732, in __del__\n    self.close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/unix_events.py\", line 68, in close\n    super().close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 104, in close\n    self._close_self_pipe()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 111, in _close_self_pipe\n    self._remove_reader(self._ssock.fileno())\n                        ^^^^^^^^^^^\nAttributeError: '_UnixSelectorEventLoop' object has no attribute '_ssock'\n/tmp/r71b_adversarial_matrix.py:59: RuntimeWarning: coroutine 'Topic59DayCardProjector.publish' was never awaited\n  except BaseException as e: ok=False;detail=type(e).__name__+':'+str(e)\nRuntimeWarning: Enable tracemalloc to get the object allocation traceback\nRUN authority_malformed\nException ignored in: <function BaseEventLoop.__del__ at 0x724115feda80>\nTraceback (most recent call last):\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/base_events.py\", line 732, in __del__\n    self.close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/unix_events.py\", line 68, in close\n    super().close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 104, in close\n    self._close_self_pipe()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 111, in _close_self_pipe\n    self._remove_reader(self._ssock.fileno())\n                        ^^^^^^^^^^^\nAttributeError: '_UnixSelectorEventLoop' object has no attribute '_ssock'\nRUN authority_empty\nException ignored in: <function BaseEventLoop.__del__ at 0x724115feda80>\nTraceback (most recent call last):\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/base_events.py\", line 732, in __del__\n    self.close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/unix_events.py\", line 68, in close\n    super().close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 104, in close\n    self._close_self_pipe()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 111, in _close_self_pipe\n    self._remove_reader(self._ssock.fileno())\n                        ^^^^^^^^^^^\nAttributeError: '_UnixSelectorEventLoop' object has no attribute '_ssock'\nRUN authority_oversized\nException ignored in: <function BaseEventLoop.__del__ at 0x724115feda80>\nTraceback (most recent call last):\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/base_events.py\", line 732, in __del__\n    self.close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/unix_events.py\", line 68, in close\n    super().close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 104, in close\n    self._close_self_pipe()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 111, in _close_self_pipe\n    self._remove_reader(self._ssock.fileno())\n                        ^^^^^^^^^^^\nAttributeError: '_UnixSelectorEventLoop' object has no attribute '_ssock'\nRUN authority_extra\nException ignored in: <function BaseEventLoop.__del__ at 0x724115feda80>\nTraceback (most recent call last):\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/base_events.py\", line 732, in __del__\n    self.close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/unix_events.py\", line 68, in close\n    super().close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 104, in close\n    self._close_self_pipe()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 111, in _close_self_pipe\n    self._remove_reader(self._ssock.fileno())\n                        ^^^^^^^^^^^\nAttributeError: '_UnixSelectorEventLoop' object has no attribute '_ssock'\nRUN authority_wrong_hold_hash\nException ignored in: <function BaseEventLoop.__del__ at 0x724115feda80>\nTraceback (most recent call last):\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/base_events.py\", line 732, in __del__\n    self.close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/unix_events.py\", line 68, in close\n    super().close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 104, in close\n    self._close_self_pipe()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 111, in _close_self_pipe\n    self._remove_reader(self._ssock.fileno())\n                        ^^^^^^^^^^^\nAttributeError: '_UnixSelectorEventLoop' object has no attribute '_ssock'\nRUN hold_noncanonical\nException ignored in: <function BaseEventLoop.__del__ at 0x724115feda80>\nTraceback (most recent call last):\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/base_events.py\", line 732, in __del__\n    self.close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/unix_events.py\", line 68, in close\n    super().close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 104, in close\n    self._close_self_pipe()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 111, in _close_self_pipe\n    self._remove_reader(self._ssock.fileno())\n                        ^^^^^^^^^^^\nAttributeError: '_UnixSelectorEventLoop' object has no attribute '_ssock'\nRUN early\nException ignored in: <function BaseEventLoop.__del__ at 0x724115feda80>\nTraceback (most recent call last):\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/base_events.py\", line 732, in __del__\n    self.close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/unix_events.py\", line 68, in close\n    super().close()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 104, in close\n    self._close_self_pipe()\n  File \"/home/cube/miniconda3/lib/python3.12/asyncio/selector_events.py\", line 111, in _close_self_pipe\n    self._remove_reader(self._ssock.fileno())\n                        ^^^^^^^^^^^\nAttributeError: '_UnixSelectorEventLoop' object has no attribute '_ssock'\nRUN expired\nTraceback (most recent call last):\n  File \"/tmp/r71b_adversarial_matrix.py\", line 122, in <module>\n    out.append(run_case(name,mut,**kw))\n               ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 47, in run_case\n    p,c,h,a=arm(Path(td),**changes);m=p/'data/topic59-maintenance-r71b'\n            ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 33, in arm\n    hold,auth=docs(**changes);m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n              ^^^^^^^^^^^^^^^\n  File \"/tmp/r71b_adversarial_matrix.py\", line 26, in docs\n    hold=Topic59MaintenanceHoldV1.model_validate({**hold.model_dump(by_alias=True),**changes})\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages/pydantic/main.py\", line 732, in model_validate\n    return cls.__pydantic_validator__.validate_python(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_contract.py\", line 59, in _contract\n    raise Topic59MaintenanceContractError()\ngateway.platforms.nutrition_weekly_maintenance_contract.Topic59MaintenanceContractError\n\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1788247294132}}
{"type":"message","id":"b1a9ef33","parentId":"3057565d","timestamp":"2026-09-01T07:21:50.931Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Refining socket guard handling and expiry logic**\n\n**Inspecting dataclass type and fields**","startedAt":1788247296055,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967cfff6d887d0a24ae9e38f49ab1f\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln0OMda0shcE0ytNFwTbEZnUUGEzYDIQ2lz1DxqrvXuIOdrAtPIe0ymtUh4eUxc99sX0tWHi3utUVCfsKSJn0gwPAc4fbcBgYGR04SBg4wDusLcs9Gr7u1C8b7b_FTSXQjdYYNGjAnP1Zcb8jVpUrqV2jyNJy8wFxmetuarW6BDciVbadt5w6LwKMM6f4sEn3mW6WrEnYbE5iHGtlUqkIL4WjXR0jaSnduIlTh3Y2PLxVkMEH2H_jy7vZQs2IQwfGiP85Ct_kCKu60EPSjVK2lEdhLa9zRJTJJNh2YRWaR7z-aKv4nts4rXD6SUBxioigXG4MQDA5ars0xo9dk-pwYDqFmvy-JR2c-MhtPvr2y4eMY8N485fvDruG9KA9TbCwdsmovWo3c0yYc3SQmsKJb1RdeXAXS5axZipxGDBg3SmnG2mNkRF8TdtllqNqyhY4fyqIFwqG8FEZpBieZ9obf5uy9kSQsc3OI9OAU1Y64vw_unbWxpwhbc033B8_N_WH9kX_ou4zIAlfy2mBRgF0QZZl2DJafTW10tAeGSs0P5Mw3dRm9o1Hl_NGb-N1IcfdzckiBCkDhiu-XQfwX_Bljoxzn8xkHBGfcx_lM3UC5HhAd5fYkdE8FwAsHR4c-M5j_lcHfycW-Qc7okWnuBG7D9YP2jqR7CUY1coCM9pypySpsWdDdnABTp92dchCgJIjTN4YshxAe5CQRdPG8KhHsgcZGUfZoEi21Vla0zbIx6SP7J0jZUFCgqhA2RBAWCJZaCBxM1C-ArUr3F81VXheVjOumCWzjjUnQIlH5jXZ2sIwmqejsWnRub6hvbGV8purcpmPOgUEL52C2A0rImfTzIQ9jni5eFqyRk2BVlAfpZf8NFNsk00PDPeza2Ek4g93BOGYAmVP7af9eOsxBX7pYqV6N0jI29TKJ6He2VbaCif5DveJa9tiLTeRcbdu7jGLQFR9XTmA6WTYIWLWAz2GrLYzuOOXu__7fIyyVWGaopgz9SSOFzxc20hBvfWZtZFQIk0ESfG0xmUMoWW1BO12_WDQUcqUda0bfRHU6sXeUg9VauVX5UxgqRKv1RG3GEqSh62tGuVl_wLmCdNfC9rc549mH-uMNIQ5My_sX9qg1T8aCeZJaSD-_CJpRYThiwrwFQCKuaI0jHlwHqSNDht-6fp-R1WqQN8S4kWCm5FXkFra9z0EOVxWLzD10aKXwJ6y9Biq6SC6PNXY4iWs5vavV9Nl91njKhJjT3ReFGAuKRbiWbYLafcMnB3DGyvI6w7noF7RNQwRfJQf6t5Lg_soY0MDZyFas-E3KQbL4TiZQtthcYUYYm8qS5Krg-xV7BDfztFf2CdzlMudV_xD9yUC-NFxgkMkYPJzjEKqe5YY1ubfApzcmb3F3WIXZ4h_fDRIMrslzXFT6NdODLmLUqaGwTNLSXhDSAHQ6XTNYNKtRSwVeknEOnjWlI6VsTRcD2Whh1KxfE4x0eo6OYuruJXUEvGI4V6PvipmOkziEWdngV9HCPmaHNnfEsuPY4U0nn_7ohb8V5H0z-asaDBIAmM72juP7x2zhZ0kuv096SnS8TUie_gx_9gjwFwW6BF37VcUScjgLo4WDlSvoJFPVPkobi8NG18qpB4M-wj7GS_XSLvqivSfGd4ISTBO2GzML-ad_Tl_BAf68lH5sZLhOkhWT17B6uuKgPlTQlMLB80w1_kzVG0d2nthOLpr9X2xcucpVx9x6NnKr1NlhoZZlzJEK8UYPe1_M_SfLrtg4LYEQj9r38jbZ_gss7HLkixyu9eJLcb7JJS3r7mDXJ_iwrYohRuVou2tqIaYkNTWjwDZYbNUsnay-TjMhKvEeir9z9Mkme5gYHG7mvVZLatUz7DQAkgvCqA-s5HclvmBAWeOGZlluADUMYRIMqbk5dhTYnisfGLweqAwpykz2cZPxINWpOgq2W1_t21NtMx4ZFzzuh_5QdDYtLYsVjwMca7mpiQx5uZSBkUDufGE0-TUKff5Bq6yttUBjwu0Uqbmh5KSKrcBruprp9clvm-ksc7rdC06AU_nEPFRHQz9DP2F4KC3c92hcJKSkHa2AeYKrbwTwWBsUCBuUdXf5VwXgSquBtGO4jkIAx8LBqzdh7zjdbwhphb7f4r1hyOIEqRP0hSoB2ReujK0eOWvzf9kXcV_6FfpuAwS1_S_hjeFTrFZCFVADHHl6ifSTI-NWiB8_xxHbi3XiM=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Refining socket guard handling and expiry logic**\"},{\"type\":\"summary_text\",\"text\":\"**Inspecting dataclass type and fields**\"}]}","endedAt":1788247310906},{"type":"toolCall","id":"call_18Cy6EMKsEaFwU1jsKypZmg7|fc_046f5546d6e20d23016a967d0ed14087d0a890ed0317604596","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python - <<'PY'\nfrom datetime import date\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import _request,Topic59DayState\nr=_request(date(2026,8,20),Topic59DayState.SUBMITTED)\nprint(type(r),type(r.runtime),hasattr(r.runtime,'__dataclass_fields__'));print(r.runtime)\nPY"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":2572,"output":281,"cacheRead":147968,"cacheWrite":0,"reasoning":139,"totalTokens":150821,"cost":{"input":0.012860000000000002,"output":0.00843,"cacheRead":0.073984,"cacheWrite":0,"total":0.095274}},"stopReason":"toolUse","timestamp":1788247294174,"responseId":"resp_046f5546d6e20d23016a967cfe82d087d0ae3c07a4eee6922b","rawStopReason":"completed"}}
{"type":"message","id":"c2b241a3","parentId":"b1a9ef33","timestamp":"2026-09-01T07:21:51.139Z","message":{"role":"toolResult","toolCallId":"call_18Cy6EMKsEaFwU1jsKypZmg7|fc_046f5546d6e20d23016a967d0ed14087d0a890ed0317604596","toolName":"bash","content":[{"type":"text","text":"<class 'gateway.platforms.nutrition_weekly_operations.Topic59PublicationRequest'> <class 'gateway.platforms.nutrition_weekly_operations_authority.WeeklyOperationsRuntimeContext'> True\nWeeklyOperationsRuntimeContext(candidate_digest='dda18a0e21ae47c53b4309434cbc02ae8bf764fa83a6defbb719431242722aa7', customer_key='client_001', owner_user_id='90001', owner_chat_id='10001', owner_version=1, consent_digest='12423e0482f3e81cb1d23230664e95bb3d11b9f34f06fc199e588d4cdab6e4d4', consent_granted=True, feature_epoch='weekly-operations-v1', now=datetime.datetime(2026, 8, 20, 0, 0, tzinfo=zoneinfo.ZoneInfo(key='Asia/Seoul')))\n"}],"isError":false,"timestamp":1788247311138}}
{"type":"message","id":"0aef5972","parentId":"c2b241a3","timestamp":"2026-09-01T07:22:07.262Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Updating REQ runtime and cleaning socket code**","startedAt":1788247313771,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967d11a84487d096e35080c5d7058c\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln0f6vVeqFZfnXjbkFLOG0V7oh0tgkPeEeYePucPe6y2kaSJZU9Xl7XtQi9S3yv7de_f1tkiz97ufkAltK3UqBTjKSe070wG8NqPikOY6eY_1Rn7FGNLnPv7HW9-3O3OWJw8eZDiKlH-V9ptGvcG6kRsDujzJk6Zk7OJ4XUaSbRQAK4eLbPkfnTtAfvsVOIOMheHiD3MpSePA3u_ZL4N6lPpM-j6HAdRAWHXd36U5Fkz7cJ5xwsuvSHHD3ybOzfvM4zhLTofTr2acalfBWIPQysh2cR1hV7DarVOOSBtdSpEz8dBfP0NcqTX0abzE9Kr9s6tSPG-qETm5r4CgPpRIgcLMLEip5taqYlyJBmtD_s1l8th6oC1LykDmHQIgd0fn4hy0y1zOQXgt1w-ZjdPgYD8Ms_eXL0v_P1yeAfEpR_xZ918sBeR-tDJSMNYv7GvJl8QgPmQp_cBeb3Aaac7FTLiV40tHWsa2wqfxHXFXyqxZ-xbulJ2j-8wGXU5jb2FkUmk42hfm6By8L_OT8RmXq6-TDa0ifJGFT26AGr6wkwDLTxW_fTyiqQTxK6zcUiLArSKP2wXT2lZ2LkB0bTMBickfYXsVBZclOJKYJAdpIJcrRgD1l6cERJUrYhwBkrLhob-F2j9qveFidphZbOUNdv3pTfC1ksuaqox1Juwagn8K2s4NtjfMB5SThYT81shoM_peBb1c7wAtlXcgZ00OUc82T2q-2-qWWjB_VcAkvvaArsGAkNM6jRZsAZuaKa4zNstDT6rx_bRUIBQPNd3T4ycI8IOmIOcAsnXxj-wQki6v7LV5ETqYOmrloDmx5ACrmEYHEtitOyNuI-PrJ6yRyK9nf5O-qCcCkvUrbcURIf5T68kGHVyJGx3NQaBt7zIym1P9HClhhTKDoocDNqJi6viC4NsmU3-qXG2F5TdAJ0zfGljwP6u7J6hCczLlRW9CKrRNKVYh8S4FdvhD0vvtwOFX2oTjHFIlXUTMhP8HFgTZ-D0G9wYXvU4Ow75V2hb-erfoqJ27qLQbqssiS3B0Au1btgTuxBpqS9FmVg2bYxKxCP_PkhL1tigWR7GYZoSsWEUTTgvQksv45ZNxDAQn5IPl6_N_Ektq44FQSay05aWSZIuqxCML43sMV2pZoUq05eeIuM4ayChcs29Evfum9N7o0mepArEMs_JZqRZtycrIHeNTI-iEDJYFe9r2Orl-fPNhudWclmK-tii0G6snKf5zriSakb-YFWsar-r04_E4VRpCVN-6cfl1UkNlXqi_c0iYDAHsWeBTDCFYvVUq_J5b_0MmVYLVndtbtkuaUHCRCpz72S8AGXSs8CDSA2Y0kCWEGPCJAbXBj-JwZFLzZfGm9bZzPQF6vcikrS88oBu54GBBIbWlBXecaMwDSATkf5MtiYODoilhRxj396pMbCwxt2fapwPFD-sGNUXTX2Z2_59EoP2YUC0l-Lvfkp1IPxLma1IeUmI9pIS0H2KuNmy89oOD5c-zHBpNc6Z18tMKZVVd9QhcdKZG9YZUvD1uFfDhl6U69Mx82HAoZYYgt1Pt_4O9OQx2N0EQpfT_zxoIY6QDk-BzZIOw-NVux25ItVd_i_15YVUjZqVsVxkrCLLYgcDZvWOZzSjDyawiNZd_slG_G6HXMJl50dpzAwy9qT1srOxFl4xegwocU6sNh8E2DexFZrAgx2kATFeWX8iALoZa6nqZc1fiNgscUHwjN6WNcAL54gEMfkTHfzZ3IGq9gPAREIopwAzIyqKM1BId6E=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Updating REQ runtime and cleaning socket code**\"}]}","endedAt":1788247327245},{"type":"toolCall","id":"call_F3pLIju60EL6mATNa01DDHqh|fc_046f5546d6e20d23016a967d1f26b487d0aca282d6b92dd57b","name":"bash","arguments":{"command":"python - <<'PY'\np='/tmp/r71b_adversarial_matrix.py';s=open(p).read();s=s.replace('import asyncio, hashlib', 'import asyncio, hashlib').replace('from datetime import date, timedelta','from dataclasses import replace\\nfrom datetime import date, datetime, timedelta')\ns=s.replace(\"REQ = _request(date(2026,8,20), Topic59DayState.SUBMITTED)\\nNOW = REQ.runtime.now\", \"REQ0 = _request(date(2026,8,20), Topic59DayState.SUBMITTED)\\nREQ = replace(REQ0, runtime=replace(REQ0.runtime, now=datetime(2026,8,20,9,0,tzinfo=REQ0.runtime.now.tzinfo)))\\nNOW = REQ.runtime.now\")\ns=s.replace(\"    real=socket.socket\\n    def blocked(*a,**k):net[0]+=1;raise AssertionError('NETWORK_REACHED')\\n    socket.socket=blocked\\n    try:\\n      result=asyncio.run(projr.publish(REQ,tr));\", \"    try:\\n      result=asyncio.run(projr.publish(REQ,tr));\")\ns=s.replace(\"    finally:socket.socket=real\\n\", \"    finally: pass\\n\")\ns=s.replace(\"{'not_before':NOW-timedelta(minutes=6),'expires_at':NOW}\", \"{'not_before':NOW-timedelta(minutes=5),'expires_at':NOW}\")\nopen(p,'w').write(s)\nPY\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python /tmp/r71b_adversarial_matrix.py","timeout":120}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":1011,"output":479,"cacheRead":150016,"cacheWrite":0,"reasoning":72,"totalTokens":151506,"cost":{"input":0.0050550000000000005,"output":0.01437,"cacheRead":0.07500799999999999,"cacheWrite":0,"total":0.09443299999999999}},"stopReason":"toolUse","timestamp":1788247311181,"responseId":"resp_046f5546d6e20d23016a967d103a5487d0a53526f1dbc4954f","rawStopReason":"completed"}}
{"type":"message","id":"f41a151a","parentId":"0aef5972","timestamp":"2026-09-01T07:22:07.521Z","message":{"role":"toolResult","toolCallId":"call_F3pLIju60EL6mATNa01DDHqh|fc_046f5546d6e20d23016a967d1f26b487d0aca282d6b92dd57b","toolName":"bash","content":[{"type":"text","text":"RUN authority_noncanonical\nRUN authority_malformed\nRUN authority_empty\nRUN authority_oversized\nRUN authority_extra\nRUN authority_wrong_hold_hash\nRUN hold_noncanonical\nRUN early\nRUN expired\nRUN wrong_candidate\nRUN wrong_config\nRUN wrong_route\nRUN wrong_customer\nRUN wrong_slot\nRUN wrong_day\nRUN replay\nRUN hold_symlink\nRUN hold_hardlink\nRUN hold_mode\nRUN hold_fifo\nRUN lock_symlink\nRUN lock_hardlink\nRUN lock_mode\nRUN lock_fifo\nRUN audit_symlink\nRUN directory_symlink\nRUN partial_both\nRUN partial_temp\n{\"failures\": [], \"passed\": 29, \"results\": [[\"authority_noncanonical\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"authority_malformed\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"authority_empty\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"authority_oversized\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"authority_extra\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"authority_wrong_hold_hash\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"hold_noncanonical\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"early\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"expired\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"wrong_candidate\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"wrong_config\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"wrong_route\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"wrong_customer\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"wrong_slot\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"wrong_day\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"replay\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"hold_symlink\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"hold_hardlink\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"hold_mode\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"hold_fifo\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"lock_symlink\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"lock_hardlink\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"lock_mode\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"lock_fifo\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"audit_symlink\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"directory_symlink\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"partial_both\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"partial_temp\", true, \"maintenance_rejected\", 0, 0, 0, 0], [\"authority_missing\", true, \"maintenance_rejected\", 0, 0, 0, 0]], \"total\": 29}\n"}],"isError":false,"timestamp":1788247327521}}
{"type":"message","id":"88e7f3bd","parentId":"f41a151a","timestamp":"2026-09-01T07:22:13.100Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning comprehensive file link and mode tests**","startedAt":1788247330363,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967d2244ec87d095086858bad0988a\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln0k9yTiP09DYSyw_1Andry0MgVWKbbiNr-K9SPVi3oYDbYUfCPjJ8o-Q-1C9iJyFTlModngWf2EnyHbTNV1Vymvc4Mn410eGaO5nkvU8sEDwZ9ej-c9tGbLv6LZC2OfKKK0tk-BnJhusphyTxWle2uTw5GRCJYUWEIKY0yVC-9dUeZ9xxqGSDoj0pQV8AZg9PkHm1TRFWBnfeklND3R8wiRWl5xJC__o5Cpt-MFg_pxQEFJCVoPH-5Htxlj9QX6TZZxgPo3EiN9Yb97kvQ2BtiM0PmFu6E1VAW88gzyeKupOFnyJDtscOzp1UyxBOZVYbgp1E5_0hBs4WVdpIg56VOpRBNxFOuTM8VVpcCyPTptwYQQeHPwDcxgfX093us6wdIz5ZPVjIPgT1xf8BLGCfOtKBdUn-de5HBSN6Mqvb1Q9lS8mfU9GGiOeC8oPXyr0iWoiOMxY9s4vGKKr77h579wCGKbzZT0LJGFjvawKw_2YqLeWdmvdEnl76x1-M2SMaj8Ft-0SdLEdG6bU0YChHGcEXNWHfRFI3pNQE9j2G32SMkP7J6ibJKTNlQLOxabB1i8x9duTcHFylqsJiVJ7VZHf1IaflIlXSCAP7jd4nY4FzVa6anY4jLLnuy6vJweD-Lwz_EThlbmdtvkwbDFiCg8ds35A2N3MXPb5ojcRO8cRSt6ryofVHeoeD1eRsf29V8Hsz7cXBbtIwVcebOVjQsVWda-0rIPG8OpUbwA1HguqqvOHAPLh617kbKhysIW6nvdjLtUr7jKpoaTzyWhnglqEe8W_qnfujAmS7o77-8JlOscAOcEIW1dnBSBfuU93eMy04tVqvi0bPjQ4rfkq3zgI6C1wne_az8JrMrGQwE5hJ50Z4AXZ0HpPWOy59OgdVNDrhMihokPS2R8roNeie4Vie3m5HcZ6X4NpklUm13PrHyje5priew4Qn4ifL417WWGCpFWnjRJNr6p7uopBp9uZaHHcw-PPhkxwhD7PUQYU9YWJ87lTS0NfUmuSHEXexUoWWmvAXAmuyXnnByOhS5kypd-6y37ijfSDqaAm0O0aBSPs9c22sfjwaKUMS8rfoZCMdO4rke8Daqz2E9cg_rfS0p1BHzk4Go4_LYwXqbDyGII8meSQvVv5xLEUoYH8PA3DY3XNdkB7BoJOfjV4DPuC4MzCcsBLrJmVf2hJqqwv8G3yT2baTUivbwO-K684aMwIQqKknFqqZahWY0tSNeLs9wlRxRbKdieIQ_0v8Drh1ArmbrNOFtdtm87_M994d-zBzsmakJFrO7Vve6m2GUSakjiKvwvC3RJgFR6h723La5gclMtTuBqWZXFSfj9fCxrsxOhUHrTchjqnAvBMBHMK9RPiQ3JhihSRt5UoNchyPteVyqKVJO2mUM3oKJOUFGJ2I5CiC8hLrwXQzXzVuVBMhNEoFiWYvn9XugKN8Va-6_BMQajtE2pJ8GWxJUfbq9AflP3K1adLKNs8fuOBC_PQZjF447oas8zfNQEaUOXnqjePp1tmXMxcS07uaKZZxorFqI1-y8DWH7aUZE0sM8NDucYibM2RQyyRzIxwlXCBM75Y8a8mJSzVhxBxAa0Jveh\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning comprehensive file link and mode tests**\"}]}","endedAt":1788247332837},{"type":"toolCall","id":"call_aU3l7ifmEkHJbxGQJkCI2Vfm|fc_046f5546d6e20d23016a967d24b35487d09995d8009c4e7a52","name":"bash","arguments":{"command":"id; getent group | awk -F: -v u=\"$(id -un)\" '$4 ~ \"(^|,)\"u\"(,|$)\" {print $1,$3}'","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":2327,"output":124,"cacheRead":150016,"cacheWrite":0,"reasoning":58,"totalTokens":152467,"cost":{"input":0.011635000000000001,"output":0.00372,"cacheRead":0.07500799999999999,"cacheWrite":0,"total":0.090363}},"stopReason":"toolUse","timestamp":1788247327560,"responseId":"resp_046f5546d6e20d23016a967d1fe15c87d094fe78f47e75a6fe","rawStopReason":"completed"}}
{"type":"message","id":"9f396c0e","parentId":"88e7f3bd","timestamp":"2026-09-01T07:22:13.126Z","message":{"role":"toolResult","toolCallId":"call_aU3l7ifmEkHJbxGQJkCI2Vfm|fc_046f5546d6e20d23016a967d24b35487d09995d8009c4e7a52","toolName":"bash","content":[{"type":"text","text":"uid=1000(cube) gid=1000(cube) groups=1000(cube),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),114(lpadmin),125(docker),984(ollama)\nadm 4\ncdrom 24\nsudo 27\ndip 30\nplugdev 46\nusers 100\nlpadmin 114\nollama 984\ndocker 125\n"}],"isError":false,"timestamp":1788247333126}}
{"type":"message","id":"e982b60a","parentId":"9f396c0e","timestamp":"2026-09-01T07:22:31.021Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Adding tests for gid locking defect**","startedAt":1788247338754,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967d2aaaf887d0b3eda7bd4e6e4b10\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln02hQOutZVwQ7OW_Nqzg8bdRIKnzYbc3do2bTuvDSM36LJF3XRBgS_FNQ8DMvKr9-ly8zSNccwQmu75DOJVxpQNyjGIJTzcYAYO4Pv3eZBCaQ4j5ulDLNNaaKQN0B0s1MwlyTs1tXXwJcbkXqrb9EJT4CingXM3XfmbR8KnTGHTg_Lnv_K5nMsZnKA0X4CGimlUB0j_q_yRdY9udAS9WeMR8-XUjftnzEjCAW_dB3Eg_cCrqlHwTZT530iXzCFd8RqPwntIdUcMzaTAjML5dhRgOIGEs2OYqmuQ10nzgXxOkRAwT_9fu2vBKyztpELDn8mSHorTa-HkTdcOULyIP4CLFb3UM0KndNByHFpH6XrZmk_V-eHUc9IKn6vqds3sCyqsaL59Dl4DdL6iZqs67OpttfySiTx-_gVQxl4uyEsJx7v4J7YFiylJTGTY0CyPZJNUpqC_edUs60zKWWl1PIA8hgbofRn5zOaktnBhvBCbadahV8aVsV8ACLhAP39a8IJngpJcgEcl6zqifGnvhL6inot8DZSKf6f_ibBbjlLj7dxdfwteaUwKdk_8FtBTbGEE_45Bdh2AQVcsXWfHVgpoR6Z_zV4RymuIqVyVedkWwTrfyqacxQ30dotfCYokY05f6EypiIaorgvf0dg8Kczc_zFMJBMO_d2Qwapx29W5tOtI42iajYLRiICiyiAQex-BNvPB4HjhPGM6fsBarIVxHXDMqW3dqv2aYcoyjoRdptGh8yB7dyv-moKOnEjXK680CC6vWvJ14vktAfMU1D6Edxq5K99WT7lF-Mw1tLcoezbywAPl8nb6b7ePaXcmo5k2zDaGCnDNu4wqYvsffCqrB2BAiZGV6cCN8PtypKHdNdna_utUn7yXxEgX6Pxf7FoS1we4WYSG4xt8boe33P3G7lHA0rvKWvDTnIWREKZXeCbyDOVo2x9KIo8sRXg2UaFCahwI0YCyEw3KL0m5FQ0CGf4UUifp6O3jCz6WV31YLbF7uKxMUomd-GyHDJsVrtDfhLwzswEPzVBT1JF05Hy2KeLcW1i2JkCQ0NIeq2jnz-qsR3b4Qrb3x9rvGtvphVF-ILRPrUbZHgeFr0Kbp5CCrM7YBTSNyti85kueJez3Zgf-76xMQ-01ZBCpEEuPA4s9wHNILb_FCC-M8ybc2nYjxYR-wr2kNGY-GDxietra33JoypoAbb9ENFGIob_N3ks-dwBdHruSvrNycQcv91lZhfTPe762sZz6d3ma40zaBQnkLacfQXB9n1McIQlNdzQeagdB-SzQdCuNuwmauPBpTZATfg5gMrbaPx_UpG_XaDFeCUAjmc6QVuyRZ_ezwAnn4Jj_F_x2erIjRGp6onQTYXNWsbCwspH5FPrySj193pb_m6bbgGXNQstCCtkg2aqawcImY11y9UwdDWM722Q8Giurpw7VKgT6DeSSJSR-BYg_ZqoP2EiQCVRNmn9lAV4DLV4ji8JabnIVm8FJq-RbWq7g5bJOdFoO_QD0d7C9aWw=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Adding tests for gid locking defect**\"}]}","endedAt":1788247350955},{"type":"toolCall","id":"call_beJwghgFFikORgrNmLjNsSPr|fc_046f5546d6e20d23016a967d36d6bc87d0a820074cb7667d9b","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python - <<'PY'\nimport importlib.util,json\nfrom pathlib import Path\nfrom tempfile import TemporaryDirectory\nspec=importlib.util.spec_from_file_location('matrix','/tmp/r71b_adversarial_matrix.py');m=importlib.util.module_from_spec(spec)\n# Avoid module execution; use source prefix through cases declaration.\nsrc=Path('/tmp/r71b_adversarial_matrix.py').read_text().split('cases=[',1)[0];ns={};exec(src,ns)\nfor name,file in [('hold_wrong_gid','hold.json'),('lock_wrong_gid','maintenance.lock')]:\n with TemporaryDirectory() as td:\n  p,c,h,a=ns['arm'](Path(td));q=p/'data/topic59-maintenance-r71b'/file;os=__import__('os');os.chown(q,-1,125);os.environ['CREDENTIALS_DIRECTORY']=str(c)\n  r=ns['Topic59MaintenanceGate'].for_profile(p).evaluate(ns['PROJ'],ns['NOW'])\n  print(json.dumps({'case':name,'decision':r.kind.value,'reason':None if r.reason is None else r.reason.value,'file_gid':q.stat().st_gid,'profile_gid':p.stat().st_gid},sort_keys=True))\nPY","timeout":60}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":512,"output":382,"cacheRead":152064,"cacheWrite":0,"reasoning":42,"totalTokens":152958,"cost":{"input":0.00256,"output":0.01146,"cacheRead":0.076032,"cacheWrite":0,"total":0.09005200000000001}},"stopReason":"toolUse","timestamp":1788247333172,"responseId":"resp_046f5546d6e20d23016a967d2989e087d0aa20d24f68b2dfea","rawStopReason":"completed"}}
{"type":"message","id":"abab54c8","parentId":"e982b60a","timestamp":"2026-09-01T07:22:31.250Z","message":{"role":"toolResult","toolCallId":"call_beJwghgFFikORgrNmLjNsSPr|fc_046f5546d6e20d23016a967d36d6bc87d0a820074cb7667d9b","toolName":"bash","content":[{"type":"text","text":"{\"case\": \"hold_wrong_gid\", \"decision\": \"deny\", \"file_gid\": 125, \"profile_gid\": 1000, \"reason\": \"filesystem_contract\"}\n{\"case\": \"lock_wrong_gid\", \"decision\": \"noop_maintenance\", \"file_gid\": 125, \"profile_gid\": 1000, \"reason\": null}\n"}],"isError":false,"timestamp":1788247351250}}
{"type":"message","id":"88bf61ce","parentId":"abab54c8","timestamp":"2026-09-01T07:22:44.873Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Confirming stale LSP diagnostics issue**\n\n**Planning LSP diagnostics refresh and comparison**","startedAt":1788247353901,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967d39d12087d09e85744b55750b63\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln1Eb6S25dNO8pHrlUK6aRpeku_xa1N1DUkkSIY5W2tERsmh8hjqu-_6qrJ74gwhHmQuF_-waK7UJ0iFhQJvjTrrbp53n587G5tFzRbCOdoDMdIVaOiqFNzzQBZQF3s4WsnDtLO2NFJk45oVXwbW06wAshYHmwUMpBzrKlDKU0LCGVQy0mvMYhPmGoa4RV1hOBuvVm8PVUst_xEl0sQLiUUHQHsvTbnHIt0EbGPfSNOhwZPuvNcctkJ-NhWKEZES9ruTW6_0n69kI9DqEzpeRKBcm2nyyF_hM8mY63V80hTztB7gUEAGiym_hv_PGZMd-qft7YOWszKHu4xEDwLeaVVojonMThjIRJFEAR0h4MqYpsvR5HtDwX1Sy4wIgxf1-1FrJKHaouw22Z--A1Ta-Tslg1-OREUcYnI-zG7IU1JKNiNRYR7p-f_pVr7JCHf5Q57Baah2EZZswB8b2jGgy6iw50M0FouSvPBzJR1hv6kfH0aSXtZ6S-H0EyvxOaxbyZC6k408JNFnXwr_ueDyaFOfQW9ABB5h2VISmqXOzdV8VIcDyJsqcy_p3kd5oDOvBqH96lzmFegi_RyLff05P8m5DjuEF1k6YcFKiFdEq40rLMQf6IxxW_Yo7qRYvR6_CagnqrbFJ-wHgvL6DwC4KBudpNgiQaVy9qCSraJlwxGJi0PrwXeR0zCgjOugrKDZvE1Nzb76GAJn0fNvw36wZE_dpEXChtlj53xc7YiG32F9pSnAK_ViHuCAmlpjgq_5eKgrRlSSBOR6SDm3jQYrnn6L9BHbRkZzviYDm6h6d4T8mULGloLEF1q-SGndtDI7pidtuqBEQZFhiwHbOjb77NCEcLfqP9JxtNjm_sRUxZGmmBH9Z9weREFXuSJ0vUkTZZSXkoa2jhkUF9Ib9QV-X59Rq7BoYorHAuq9UiE65o_4cQQqDqaGKYGry4JZX5YcXz_XNpyX_0uzdKh2Qrlnly64PTz-qb8wqEWiiYO7oNYqH2iQkz-3saaP1IG8j52ot-kEVRQTgZ5EztnvKVkQhaqG3KNprkdfSmfWKjH97HuUfqh9oqjmFMeUr21Sfi2RHaNeH__IvML0X23CmBjyVdw1YsC1OXrBbZGgkyyKEBkblIz_jikM0PvTN1784p1UVF-7VjFJ9XJ5HoOXMXv-xD7ZCSrDyVx5Mp-76QlFmzTEb3X2ukmKBdodZsxwsfKHOuDC_S75X_MWgCCCm_R_2KL_RAo3ftcopCBs6flcRHws2tNYncZ_O0ASePrPhTl0vKnK7Huz5UmPMmnmnPJDZ6yefg59zaCM49FmV2cQOwvWefW15bB5nGiWn3zrb6AGeZwS_5g17j8p1SwRcmvorO8f4DUMlBY_eICf26dbLP8cIH8DWFW7yglLCI7EFayNOQIE_QNXEeb6Af1I1IAKtXGd2EuwL35nPMlzb1WBz7hd5YExa8bkl45qlBsIxUbtXrx2Ehwck4XD32ypQqTbl0ssbkDz-lgofojg5MHQyN9RD-0Jyx13wu5LxCwwCy7rG2lfd9fWXb0xl04xu4FapPbWNSk74Vz0k0vk67wuW7ecP7jiV3R9Kc5zjYAXujXYgm9Xbv902sbY7f2mYq_p1gOhYiBXnZklLnsWbBnkVXjup-9MYWmTdUOIRQXqWE_cjviDsuAmT7ADRFf_CdKUL9yW8NElbN0PrbJzygyEbQLbOdA58mdjZKHk5Fo4S9z7F7XoLGDlG5-RvsXOIdy5__d-iCRfypdjhkfvWzVWFMwRzD2ONGB5S3DhMicipLZxEBTk405X9iq9CtJdBMfhGkQeckYejmGybMbMKKJdntsPVIwiMkHuri4SS8PBpqRLNIUJRkAQ0aIohSaRgEHLIf2qAOxJ0oxe6CgDIC1AiWkGYWavkuYdFrtejMZ-7VZbTMiL4l2IB7E-mGYZhCRbJfR5BN29ENOCz119QFoWh_7Th_Wr00a01HdH-s9Ux49fSd-HOu6dESodkcigsqeJIeqznb2eWD8nN6h9sYVSHvi33mzw-ZJrYz4_uraH9laLOB8MlaKBO4wYDPj42eNEbThWWYkVuO2tf2mHpEPu-mXRWBvhroZfhFGQpqKrdbcGo-Ne7IXO_vIszCGkkYTgFmMFj0d10Ac9DppR780YWntKCraj8Fa9SoOakJU54zZVivdmSVN1ueBGkJuE96uHkw00O65qCP44FgsJlKWd-5v9zEfpzV8-VDAjCB1l0fV7EEu6dmQHyN6YixnGEO1rd-gWcIHJdcoM4bJBGbhMkCRi9WduRWwnNFqhdZlZtHRf-nrcOd3iAo7tU94BcdkcJ9-ny1crGIfvkdk0_Cn5xNEPjU_eKu73RB9NIgfZJ9-izqgWFID3HYsSn5DRFS7jMnptEe5I1Alx1gfGhTtNph1thi1A-fcuqWToSj2Z4qKNFewtJ2dOZPp_GcKCRIvjq0iwNWH0ZtEYw2ZfyMMj99jognF_sIoYtwDXBWZDAPLe5zjuezrBfpSW_gNBGb_HpuIAWLTEjPjBF4I7SUgA5bxDrQPnucC0oa0dwFkhB1_gfhRdyZe6JxPWEVyUMArz4pgXIjdEYx7ahNnYFExZYimQNWJPaTATtyklL2iJvyS50uIX-ggBvh0Bz-OdpnlOJ90ewcreZtMFkcTRFWtwjd0X5svvx04yggt9ZzBrii1VJ1Suk1B_jmDU1pmgI6J7ngwqQlUJveCF1sOEXKUZS-vS9NJVMeT5ZB2pE_PDAt68oby4mHUdj__cOEM4AQOaO5iVJMl08pZ2XwrZkD7jotwYABAp7jKtygFZqHpiizC59IiY0do814zEWAZdQrAEjxUa2vv69EFsS6SYo7syGfByhef3T6gQ0dljGwSl1ysTwnZ1\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Confirming stale LSP diagnostics issue**\"},{\"type\":\"summary_text\",\"text\":\"**Planning LSP diagnostics refresh and comparison**\"}]}","endedAt":1788247364758},{"type":"toolCall","id":"call_vBR5R6rluTpmknrj8GZQoZQR|fc_046f5546d6e20d23016a967d44a5f887d0910de3ef8e431e20","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms","severity":"error"}},{"type":"toolCall","id":"call_tr1kT5HQCnq2nJP4t9HOh8oN|fc_046f5546d6e20d23016a967d44a60c87d0aa721a98837ec990","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","severity":"all"}},{"type":"toolCall","id":"call_0wZHMoC7Ao57hIIoLIvMIjKt|fc_046f5546d6e20d23016a967d44a61887d093f4d6a21d42d7f8","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","severity":"all"}},{"type":"toolCall","id":"call_RgeA7ZSK9KrcDeumdKM7w1VI|fc_046f5546d6e20d23016a967d44a62487d0b19457380373f89c","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py","severity":"all"}},{"type":"toolCall","id":"call_QmzmEPJTptP42zHpiUyWBSI2|fc_046f5546d6e20d23016a967d44a63087d0931f45993a42a483","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","severity":"all"}},{"type":"toolCall","id":"call_n6dVBOghoVbYJe8RSSA32x7X|fc_046f5546d6e20d23016a967d44a63887d0b4d75362dee20efa","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","severity":"all"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":977,"output":560,"cacheRead":152064,"cacheWrite":0,"reasoning":234,"totalTokens":153601,"cost":{"input":0.0048850000000000005,"output":0.0168,"cacheRead":0.076032,"cacheWrite":0,"total":0.097717}},"stopReason":"toolUse","timestamp":1788247351294,"responseId":"resp_046f5546d6e20d23016a967d385a7087d0aa23147fcb994c60","rawStopReason":"completed"}}
{"type":"message","id":"a1ce67c0","parentId":"88bf61ce","timestamp":"2026-09-01T07:22:45.156Z","message":{"role":"toolResult","toolCallId":"call_vBR5R6rluTpmknrj8GZQoZQR|fc_046f5546d6e20d23016a967d44a5f887d0910de3ef8e431e20","toolName":"lsp_diagnostics","content":[{"type":"text","text":"Directory: /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms\nExtension: .py\nFiles scanned: 50 (capped at 50)\nFiles with errors: 0\nTotal diagnostics: 11519\n\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/__init__.py: error[basedpyright] (reportUnsupportedDunderAll) at 29:4: \"QQAdapter\"이(가) __all__에 지정되었지만 모듈에 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/__init__.py: error[basedpyright] (reportUnsupportedDunderAll) at 30:4: \"YuanbaoAdapter\"이(가) __all__에 지정되었지만 모듈에 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/__init__.py: error[basedpyright] (reportUnknownParameterType) at 34:16: 매개 변수 \"name\"의 형식을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/__init__.py: error[basedpyright] (reportMissingParameterType) at 34:16: ‘name’ 매개 변수에 대한 형식 주석이 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/_http_client_limits.py: error[basedpyright] (reportUnknownParameterType) at 43:4: 반환 형식 \"Unknown | None\"을(를) 부분적으로 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/_http_client_limits.py: error[basedpyright] (reportInvalidTypeForm) at 43:32: 형식 식에는 변수를 사용할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/_http_client_limits.py: error[basedpyright] (reportUnknownMemberType) at 43:32: \"Limits\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportImportCycles) at 1:0: 가져오기 체인에서 순환이 검색되었습니다.\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/run.py\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 46:24: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 46:30: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 46:36: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportConstantRedefinition) at 52:4: ‘AIOHTTP_AVAILABLE’은(는) 대문자이므로 상수이고 다시 정의할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 97:17: Type of parameter \"value\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 97:24: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 100:19: Argument type is Any\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 109:25: Type of parameter \"value\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 109:32: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 135:4: Type of parameter \"content\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 135:13: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 158:15: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 160:8: \"items\"의 형식을 부분적으로 알 수 없습니다.\n  ‘items’의 유형이 ‘list[Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 160:55: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 161:12: \"item\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 168:32: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 168:32: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 170:20: \"text\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 170:27: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 173:39: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 192:21: Argument type is Any\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 207:4: Return type is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 207:34: Type of parameter \"content\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 207:43: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 207:51: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 234:4: \"items\"의 형식을 부분적으로 알 수 없습니다.\n  ‘items’의 유형이 ‘list[Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 234:51: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"list[Unknown]\"입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 235:22: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"list\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 235:27: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 235:37: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 238:8: \"part\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 252:8: \"raw_type\"의 형식을 부분적으로 알 수 없습니다.\n  ‘raw_type’의 유형이 ‘Unknown | None’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 252:19: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 253:24: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 256:12: \"text\"의 형식을 부분적으로 알 수 없습니다.\n  ‘text’의 유형이 ‘Unknown | None’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 256:19: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 260:27: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 268:12: \"detail\"의 형식을 부분적으로 알 수 없습니다.\n  ‘detail’의 유형이 ‘Unknown | None’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 268:21: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 269:12: \"image_ref\"의 형식을 부분적으로 알 수 없습니다.\n  ‘image_ref’의 유형이 ‘Unknown | None’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 269:24: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 274:16: \"url_value\"의 형식을 부분적으로 알 수 없습니다.\n  ‘url_value’의 유형이 ‘Unknown | None’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 274:28: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 275:16: \"detail\"의 형식을 부분적으로 알 수 없습니다.\n  ‘detail’의 유형이 ‘Unknown | None’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 275:25: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 275:49: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"get\" 함수의 \"default\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | None\"입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 277:16: \"url_value\"의 형식을 부분적으로 알 수 없습니다.\n  ‘url_value’의 유형이 ‘Unknown | None’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportImplicitStringConcatenation) at 285:24: 암시적 문자열 연결이 허용되지 않습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 292:24: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 292:34: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportImplicitStringConcatenation) at 302:16: 암시적 문자열 연결이 허용되지 않습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportImplicitStringConcatenation) at 309:12: 암시적 문자열 연결이 허용되지 않습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 325:33: Type of parameter \"content\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 325:42: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 330:12: \"part\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 332:28: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 332:28: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 333:53: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 333:53: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"Unknown | Literal['']\"입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 340:4: 반환 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportInvalidTypeForm) at 340:69: 형식 식에는 변수를 사용할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 340:69: \"Response\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportOptionalMemberAccess) at 346:15: \"json_response\"은(는) \"None\"의 알려진 특성이 아님\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 352:4: 반환 형식 \"tuple[Any, Unknown | None]\"을(를) 부분적으로 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 352:37: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 352:47: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 352:89: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 352:94: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportInvalidTypeForm) at 352:104: 형식 식에는 변수를 사용할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 352:104: \"Response\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportOptionalMemberAccess) at 356:25: \"json_response\"은(는) \"None\"의 알려진 특성이 아님\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 363:15: 반환 형식 \"tuple[None, Unknown]\"을(를) 부분적으로 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportArgumentType) at 383:76: ‘None’ 형식의 식을 ‘str’ 형식의 매개 변수에 할당할 수 없습니다.\n  \"None\"은 \"str\"에 할당할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnannotatedClassAttribute) at 384:13: Type annotation for attribute `_max_size` is required because this class is not decorated with `@final`\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnnecessaryComparison) at 385:11: \"str\" 및 \"None\" 형식이 겹치지 않으므로 조건은 항상 False로 평가됩니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnreachable) at 386:12: 코드에 접근할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnreachable) at 387:16: 코드에 접근할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnreachable) at 390:16: 코드에 접근할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 391:23: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnannotatedClassAttribute) at 393:17: Type annotation for attribute `_conn` is required because this class is not decorated with `@final`\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 402:8: 호출 식의 결과가 ‘str’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 403:8: 호출 식의 결과가 ‘Cursor’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 410:8: 호출 식의 결과가 ‘Cursor’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 443:39: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 443:48: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 443:58: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 445:8: Type of \"row\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 450:8: 호출 식의 결과가 ‘Cursor’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 456:19: Return type is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 456:30: Argument type is Any\n  인수가 \"loads\" 함수의 \"s\" 매개 변수에 해당합니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 462:12: 호출 식의 결과가 ‘Cursor’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 469:42: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 469:52: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 471:8: 호출 식의 결과가 ‘Cursor’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 476:8: Type of \"count\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 481:20: Type of \"row\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 487:48: Type of \"_\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 489:16: 호출 식의 결과가 ‘Cursor’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 494:16: 호출 식의 결과가 ‘Cursor’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 503:8: 호출 식의 결과가 ‘Cursor’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 512:45: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 514:8: Type of \"row\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 521:8: 호출 식의 결과가 ‘Cursor’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAny) at 535:8: Type of \"row\" is Any\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportOptionalMemberAccess) at 550:9: \"middleware\"은(는) \"None\"의 알려진 특성이 아님\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 551:14: 반환 형식 \"Response | Unknown\"을(를) 부분적으로 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 551:30: 매개 변수 \"request\"의 형식을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportMissingParameterType) at 551:30: ‘request’ 매개 변수에 대한 형식 주석이 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 551:39: 매개 변수 \"handler\"의 형식을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportMissingParameterType) at 551:39: ‘handler’ 매개 변수에 대한 형식 주석이 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 553:8: \"adapter\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 553:18: \"app\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 553:18: \"get\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 554:8: \"origin\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 554:17: \"headers\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 554:17: \"get\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 557:19: \"_origin_allowed\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportOptionalMemberAccess) at 558:27: \"Response\"은(는) \"None\"의 알려진 특성이 아님\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 559:12: \"cors_headers\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 559:27: \"_cors_headers_for_origin\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 561:11: \"method\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportOptionalMemberAccess) at 563:27: \"Response\"은(는) \"None\"의 알려진 특성이 아님\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportOptionalMemberAccess) at 564:23: \"Response\"은(는) \"None\"의 알려진 특성이 아님\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 564:52: 인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"headers\" 매개 변수에 해당합니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 566:8: \"response\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 568:12: \"headers\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 568:12: \"update\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 569:15: 반환 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAssignmentType) at 571:22: 형식 \"None\"을 선언된 형식 \"(request: Unknown, handler: Unknown) -> CoroutineType[Any, Any, Response | Unknown]\"에 할당할 수 없습니다.\n  형식 \"None\"은 형식 \"(request: Unknown, handler: Unknown) -> CoroutineType[Any, Any, Response | Unknown]\"에 할당할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportArgumentType) at 574:86: ‘None’ 형식의 식을 ‘str’ 형식의 매개 변수에 할당할 수 없습니다.\n  \"None\"은 \"str\"에 할당할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportArgumentType) at 574:104: ‘None’ 형식의 식을 ‘str’ 형식의 매개 변수에 할당할 수 없습니다.\n  \"None\"은 \"str\"에 할당할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 574:113: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 574:123: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportOptionalMemberAccess) at 587:9: \"middleware\"은(는) \"None\"의 알려진 특성이 아님\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 588:14: 반환 형식 \"Response | Unknown\"을(를) 부분적으로 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 588:36: 매개 변수 \"request\"의 형식을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportMissingParameterType) at 588:36: ‘request’ 매개 변수에 대한 형식 주석이 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 588:45: 매개 변수 \"handler\"의 형식을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportMissingParameterType) at 588:45: ‘handler’ 매개 변수에 대한 형식 주석이 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 590:11: \"method\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 591:12: \"cl\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 591:17: \"headers\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 591:17: \"get\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 594:27: 인수 형식을 알 수 없습니다.\n  인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportOptionalMemberAccess) at 595:35: \"json_response\"은(는) \"None\"의 알려진 특성이 아님\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportOptionalMemberAccess) at 597:31: \"json_response\"은(는) \"None\"의 알려진 특성이 아님\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 598:15: 반환 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAssignmentType) at 600:28: 형식 \"None\"을 선언된 형식 \"(request: Unknown, handler: Unknown) -> CoroutineType[Any, Any, Response | Unknown]\"에 할당할 수 없습니다.\n  형식 \"None\"은 형식 \"(request: Unknown, handler: Unknown) -> CoroutineType[Any, Any, Response | Unknown]\"에 할당할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportOptionalMemberAccess) at 614:9: \"middleware\"은(는) \"None\"의 알려진 특성이 아님\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 615:14: 반환 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 615:42: 매개 변수 \"request\"의 형식을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportMissingParameterType) at 615:42: ‘request’ 매개 변수에 대한 형식 주석이 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 615:51: 매개 변수 \"handler\"의 형식을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportMissingParameterType) at 615:51: ‘handler’ 매개 변수에 대한 형식 주석이 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 617:8: \"response\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 619:12: \"headers\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 619:12: \"setdefault\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 620:15: 반환 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportAssignmentType) at 622:34: 형식 \"None\"을 선언된 형식 \"(request: Unknown, handler: Unknown) -> CoroutineType[Any, Any, Unknown]\"에 할당할 수 없습니다.\n  형식 \"None\"은 형식 \"(request: Unknown, handler: Unknown) -> CoroutineType[Any, Any, Unknown]\"에 할당할 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 629:8: \"_store\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_store’의 유형이 ‘OrderedDict[Unknown, Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnannotatedClassAttribute) at 629:13: Type annotation for attribute `_store` is required because this class is not decorated with `@final`\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportDeprecated) at 630:24: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 630:60: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnannotatedClassAttribute) at 631:13: Type annotation for attribute `_ttl` is required because this class is not decorated with `@final`\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnannotatedClassAttribute) at 632:13: Type annotation for attribute `_max` is required because this class is not decorated with `@final`\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 636:8: \"expired\"의 형식을 부분적으로 알 수 없습니다.\n  ‘expired’의 유형이 ‘list[Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 636:25: \"k\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 636:28: \"v\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 636:33: \"_store\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_store’의 유형이 ‘OrderedDict[Unknown, Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 637:12: \"k\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 638:12: \"_store\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_store’의 유형이 ‘OrderedDict[Unknown, Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 638:12: \"pop\"의 형식을 부분적으로 알 수 없습니다.\n  ‘pop’의 유형이 ‘Overload[(key: Unknown) -> Unknown, (key: Unknown, default: Unknown) -> Unknown, (key: Unknown, default: _T@pop) -> (Unknown | _T@pop)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 638:28: 인수 형식을 알 수 없습니다.\n  인수가 \"pop\" 함수의 \"key\" 매개 변수에 해당합니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 639:18: \"_store\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_store’의 유형이 ‘OrderedDict[Unknown, Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 639:18: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"len\" 함수의 \"obj\" 매개 변수에 해당합니다.\n  인수 형식이 \"OrderedDict[Unknown, Unknown]\"입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 640:12: \"_store\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_store’의 유형이 ‘OrderedDict[Unknown, Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 640:12: 호출 식의 결과가 ‘tuple[Unknown, Unknown]’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 642:14: 반환 형식 \"Unknown | Any\"을(를) 부분적으로 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 642:59: 매개 변수 \"compute_coro\"의 형식을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportMissingParameterType) at 642:59: ‘compute_coro’ 매개 변수에 대한 형식 주석이 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 644:8: \"item\"의 형식을 부분적으로 알 수 없습니다.\n  ‘item’의 유형이 ‘Unknown | None’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 644:15: \"_store\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_store’의 유형이 ‘OrderedDict[Unknown, Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 644:15: \"get\"의 형식을 부분적으로 알 수 없습니다.\n  ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 646:19: 반환 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownParameterType) at 651:22: 반환 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 652:16: \"resp\" 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownMemberType) at 654:16: \"_store\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_store’의 유형이 ‘OrderedDict[Unknown, Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 656:23: 반환 유형을 알 수 없습니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownVariableType) at 658:12: \"task\"의 형식을 부분적으로 알 수 없습니다.\n  ‘task’의 유형이 ‘Task[Unknown]’입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnknownArgumentType) at 658:39: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"create_task\" 함수의 \"coro\" 매개 변수에 해당합니다.\n  인수 형식이 \"CoroutineType[Any, Any, Unknown]\"입니다.\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportExplicitAny) at 661:57: Type `Any` is not allowed\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/api_server.py: error[basedpyright] (reportUnusedCallResult) at 663:20: 호출 식의 결과가 ‘Task[Any] | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\n\n... (11319 more diagnostics not shown)"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms","severity":"error","mode":"directory","diagnostics":[],"totalDiagnostics":11519,"truncated":false,"fileFailures":[]},"isError":false,"timestamp":1788247365156}}
{"type":"message","id":"b7a73cd5","parentId":"a1ce67c0","timestamp":"2026-09-01T07:22:45.156Z","message":{"role":"toolResult","toolCallId":"call_tr1kT5HQCnq2nJP4t9HOh8oN|fc_046f5546d6e20d23016a967d44a60c87d0aa721a98837ec990","toolName":"lsp_diagnostics","content":[{"type":"text","text":"error[basedpyright] (reportArgumentType) at 26:8: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionSlot\" 형식의 \"card_slot\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionSlot\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 26:18: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"logical_key\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 26:28: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionCustomerId\" 형식의 \"customer_identity_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionCustomerId\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 26:43: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"config_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 26:53: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"candidate_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 27:8: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"route_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 27:18: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"status_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 27:28: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"payload_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 49:8: 호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportUnusedCallResult) at 53:4: 호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportUnknownParameterType) at 57:80: 매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 57:80: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 63:4: \"setenv\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportAny) at 80:4: Type of \"payload\" is Any\nerror[basedpyright] (reportUnknownParameterType) at 86:66: 매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 86:66: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 92:4: \"setenv\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 103:71: 매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 103:71: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 109:4: \"setenv\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 111:4: 호출 식의 결과가 ‘Path’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportUnknownParameterType) at 122:87: 매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 122:87: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 128:4: \"setenv\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 134:4: 호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportUnknownParameterType) at 145:80: 매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 145:80: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 151:4: \"setenv\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 156:8: 호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportUnusedCallResult) at 162:8: 호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요."}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","severity":"all","mode":"file","diagnostics":[{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":25,"character":8},"end":{"line":25,"character":16}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionSlot\" 형식의 \"card_slot\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionSlot\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":25,"character":18},"end":{"line":25,"character":26}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"logical_key\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":25,"character":28},"end":{"line":25,"character":36}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionCustomerId\" 형식의 \"customer_identity_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionCustomerId\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":25,"character":43},"end":{"line":25,"character":51}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"config_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":25,"character":53},"end":{"line":25,"character":59}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"candidate_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":26,"character":8},"end":{"line":26,"character":16}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"route_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":26,"character":18},"end":{"line":26,"character":26}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"status_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":26,"character":28},"end":{"line":26,"character":36}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"payload_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":48,"character":8},"end":{"line":48,"character":33}},"message":"호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":52,"character":4},"end":{"line":52,"character":57}},"message":"호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":56,"character":80},"end":{"line":56,"character":91}},"message":"매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":56,"character":80},"end":{"line":56,"character":91}},"message":"‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":62,"character":4},"end":{"line":62,"character":22}},"message":"\"setenv\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":79,"character":4},"end":{"line":79,"character":11}},"message":"Type of \"payload\" is Any","severity":1,"code":"reportAny","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAny"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":85,"character":66},"end":{"line":85,"character":77}},"message":"매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":85,"character":66},"end":{"line":85,"character":77}},"message":"‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":91,"character":4},"end":{"line":91,"character":22}},"message":"\"setenv\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":102,"character":71},"end":{"line":102,"character":82}},"message":"매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":102,"character":71},"end":{"line":102,"character":82}},"message":"‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":108,"character":4},"end":{"line":108,"character":22}},"message":"\"setenv\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":110,"character":4},"end":{"line":110,"character":75}},"message":"호출 식의 결과가 ‘Path’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":121,"character":87},"end":{"line":121,"character":98}},"message":"매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":121,"character":87},"end":{"line":121,"character":98}},"message":"‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":127,"character":4},"end":{"line":127,"character":22}},"message":"\"setenv\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":133,"character":4},"end":{"line":133,"character":37}},"message":"호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":144,"character":80},"end":{"line":144,"character":91}},"message":"매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":144,"character":80},"end":{"line":144,"character":91}},"message":"‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":150,"character":4},"end":{"line":150,"character":22}},"message":"\"setenv\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":155,"character":8},"end":{"line":155,"character":31}},"message":"호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","diagnostic":{"range":{"start":{"line":161,"character":8},"end":{"line":161,"character":31}},"message":"호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}}],"totalDiagnostics":30,"truncated":false},"isError":false,"timestamp":1788247365156}}
{"type":"message","id":"9e041f43","parentId":"b7a73cd5","timestamp":"2026-09-01T07:22:45.156Z","message":{"role":"toolResult","toolCallId":"call_0wZHMoC7Ao57hIIoLIvMIjKt|fc_046f5546d6e20d23016a967d44a61887d093f4d6a21d42d7f8","toolName":"lsp_diagnostics","content":[{"type":"text","text":"error[basedpyright] (reportUnknownParameterType) at 15:79: 매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 15:79: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 22:4: 호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportUnknownMemberType) at 24:4: \"delenv\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 26:8: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionSlot\" 형식의 \"card_slot\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionSlot\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 26:18: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"logical_key\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 26:28: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionCustomerId\" 형식의 \"customer_identity_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionCustomerId\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 26:56: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"config_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 27:8: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"candidate_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 27:18: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"route_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 27:28: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"status_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 27:38: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"payload_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다."}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","severity":"all","mode":"file","diagnostics":[{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":14,"character":79},"end":{"line":14,"character":90}},"message":"매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":14,"character":79},"end":{"line":14,"character":90}},"message":"‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":21,"character":4},"end":{"line":21,"character":45}},"message":"호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":23,"character":4},"end":{"line":23,"character":22}},"message":"\"delenv\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":25,"character":8},"end":{"line":25,"character":16}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionSlot\" 형식의 \"card_slot\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionSlot\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":25,"character":18},"end":{"line":25,"character":26}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"logical_key\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":25,"character":28},"end":{"line":25,"character":36}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionCustomerId\" 형식의 \"customer_identity_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionCustomerId\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":25,"character":56},"end":{"line":25,"character":64}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"config_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":26,"character":8},"end":{"line":26,"character":16}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"candidate_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":26,"character":18},"end":{"line":26,"character":26}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"route_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":26,"character":28},"end":{"line":26,"character":36}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"status_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","diagnostic":{"range":{"start":{"line":26,"character":38},"end":{"line":26,"character":46}},"message":"\"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"payload_digest\" 매개 변수에 할당할 수 없습니다.\n  \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}}],"totalDiagnostics":12,"truncated":false},"isError":false,"timestamp":1788247365156}}
{"type":"message","id":"addf2781","parentId":"9e041f43","timestamp":"2026-09-01T07:22:45.156Z","message":{"role":"toolResult","toolCallId":"call_RgeA7ZSK9KrcDeumdKM7w1VI|fc_046f5546d6e20d23016a967d44a62487d0b19457380373f89c","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788247365156}}
{"type":"message","id":"6c086d0b","parentId":"addf2781","timestamp":"2026-09-01T07:22:45.156Z","message":{"role":"toolResult","toolCallId":"call_QmzmEPJTptP42zHpiUyWBSI2|fc_046f5546d6e20d23016a967d44a63087d0931f45993a42a483","toolName":"lsp_diagnostics","content":[{"type":"text","text":"error[basedpyright] (reportUnusedImport) at 27:4: 가져오기 \"WeeklyOperationsAuthorityReceipt\"에 액세스하지 않았습니다.\nerror[basedpyright] (reportUnusedImport) at 28:4: 가져오기 \"WeeklyOperationsOwner\"에 액세스하지 않았습니다.\nerror[basedpyright] (reportUnknownParameterType) at 226:23: 매개 변수 \"projection\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 226:23: ‘projection’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownParameterType) at 226:35: 매개 변수 \"now\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 226:35: ‘now’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownVariableType) at 227:8: \"_\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_’의 유형이 ‘tuple[Unknown, Unknown]’입니다.\nerror[basedpyright] (reportUnknownParameterType) at 235:80: 매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 235:80: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 239:4: \"setattr\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportPrivateUsage) at 240:18: ‘_ledger’은(는) 선언된 클래스 외부에서 보호되고 사용됩니다.\nerror[basedpyright] (reportUnknownLambdaType) at 241:15: 매개 변수 \"projection\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 241:64: \"logical_key\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 241:64: 인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"args\" 매개 변수에 해당합니다."}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","severity":"all","mode":"file","diagnostics":[{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":26,"character":4},"end":{"line":26,"character":36}},"message":"가져오기 \"WeeklyOperationsAuthorityReceipt\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedImport","source":"basedpyright","data":{"actions":[{"action":"basedpyright.unusedImport"}],"category":0,"rule":"reportUnusedImport"},"tags":[1],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedImport"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":27,"character":4},"end":{"line":27,"character":25}},"message":"가져오기 \"WeeklyOperationsOwner\"에 액세스하지 않았습니다.","severity":1,"code":"reportUnusedImport","source":"basedpyright","data":{"actions":[{"action":"basedpyright.unusedImport"}],"category":0,"rule":"reportUnusedImport"},"tags":[1],"codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedImport"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":225,"character":23},"end":{"line":225,"character":33}},"message":"매개 변수 \"projection\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":225,"character":23},"end":{"line":225,"character":33}},"message":"‘projection’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":225,"character":35},"end":{"line":225,"character":38}},"message":"매개 변수 \"now\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":225,"character":35},"end":{"line":225,"character":38}},"message":"‘now’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":226,"character":8},"end":{"line":226,"character":9}},"message":"\"_\"의 형식을 부분적으로 알 수 없습니다.\n  ‘_’의 유형이 ‘tuple[Unknown, Unknown]’입니다.","severity":1,"code":"reportUnknownVariableType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownVariableType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":234,"character":80},"end":{"line":234,"character":91}},"message":"매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":234,"character":80},"end":{"line":234,"character":91}},"message":"‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":238,"character":4},"end":{"line":238,"character":23}},"message":"\"setattr\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":239,"character":18},"end":{"line":239,"character":25}},"message":"‘_ledger’은(는) 선언된 클래스 외부에서 보호되고 사용됩니다.","severity":1,"code":"reportPrivateUsage","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportPrivateUsage"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":240,"character":15},"end":{"line":240,"character":25}},"message":"매개 변수 \"projection\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":240,"character":64},"end":{"line":240,"character":86}},"message":"\"logical_key\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py","diagnostic":{"range":{"start":{"line":240,"character":64},"end":{"line":240,"character":86}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"__init__\" 함수의 \"args\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}}],"totalDiagnostics":14,"truncated":false},"isError":false,"timestamp":1788247365156}}
{"type":"message","id":"90f95603","parentId":"6c086d0b","timestamp":"2026-09-01T07:22:45.156Z","message":{"role":"toolResult","toolCallId":"call_n6dVBOghoVbYJe8RSSA32x7X|fc_046f5546d6e20d23016a967d44a63887d0b4d75362dee20efa","toolName":"lsp_diagnostics","content":[{"type":"text","text":"error[basedpyright] (reportUnannotatedClassAttribute) at 26:13: Type annotation for attribute `enabled` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 27:13: Type annotation for attribute `fail` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 43:13: Type annotation for attribute `success` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 44:13: Type annotation for attribute `error` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnannotatedClassAttribute) at 45:13: Type annotation for attribute `raw_response` is required because this class is not decorated with `@final`\nerror[basedpyright] (reportUnknownParameterType) at 96:65: 매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 96:65: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 100:4: \"setattr\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 101:4: \"setattr\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 101:61: 매개 변수 \"_job_id\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 101:70: 매개 변수 \"_output\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 102:4: \"setattr\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 102:58: 매개 변수 \"_job_id\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 102:67: 매개 변수 \"success\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 102:76: 매개 변수 \"error\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 102:95: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportUnknownMemberType) at 103:4: \"setattr\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 103:53: 매개 변수 \"_job\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 105:16: \"run_one_job\"의 형식을 부분적으로 알 수 없습니다.\n  ‘run_one_job’의 유형이 ‘(job: dict[Unknown, Unknown], *, adapters: Unknown | None = None, loop: Unknown | None = None, verbose: bool = False) -> bool’입니다.\nerror[basedpyright] (reportArgumentType) at 118:49: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 120:8: 호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportArgumentType) at 135:48: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 136:49: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 138:8: 호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportArgumentType) at 153:48: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 154:49: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 156:8: 호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportAttributeAccessIssue) at 171:14: \"AsyncFakeCardTransport\" 클래스의 \"raw_response\" 특성에 할당할 수 없음\n  \"NutritionScheduledTickOutcome\" 형식의 식을 \"AsyncFakeCardTransport\" 클래스의 \"raw_response\" 특성에 할당할 수 없음\n    \"NutritionScheduledTickOutcome\"은 \"None\"에 할당할 수 없습니다.\nerror[basedpyright] (reportArgumentType) at 174:49: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 176:8: 호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportArgumentType) at 194:12: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.\nerror[basedpyright] (reportUnusedCallResult) at 200:8: 호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.\nerror[basedpyright] (reportUnknownParameterType) at 208:70: 매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportMissingParameterType) at 208:70: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 213:4: \"setattr\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 214:4: \"setattr\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 216:16: 매개 변수 \"_args\"의 형식을 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 216:25: 매개 변수 \"_kwargs\"의 형식을 부분적으로 알 수 없습니다.\nerror[basedpyright] (reportUnknownMemberType) at 218:4: \"setattr\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 218:58: 매개 변수 \"_job_id\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 218:67: 매개 변수 \"ok\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 218:71: 매개 변수 \"error\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 218:90: 인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, Unknown]\"입니다.\nerror[basedpyright] (reportUnknownMemberType) at 219:4: \"setattr\" 유형을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 219:61: 매개 변수 \"_job_id\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownLambdaType) at 219:70: 매개 변수 \"output\"의 형식을 알 수 없습니다.\nerror[basedpyright] (reportUnknownArgumentType) at 219:93: 인수 형식을 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\nerror[basedpyright] (reportUnknownMemberType) at 222:16: \"run_one_job\"의 형식을 부분적으로 알 수 없습니다.\n  ‘run_one_job’의 유형이 ‘(job: dict[Unknown, Unknown], *, adapters: Unknown | None = None, loop: Unknown | None = None, verbose: bool = False) -> bool’입니다."}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","severity":"all","mode":"file","diagnostics":[{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":25,"character":13},"end":{"line":25,"character":20}},"message":"Type annotation for attribute `enabled` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":26,"character":13},"end":{"line":26,"character":17}},"message":"Type annotation for attribute `fail` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":42,"character":13},"end":{"line":42,"character":20}},"message":"Type annotation for attribute `success` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":43,"character":13},"end":{"line":43,"character":18}},"message":"Type annotation for attribute `error` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":44,"character":13},"end":{"line":44,"character":25}},"message":"Type annotation for attribute `raw_response` is required because this class is not decorated with `@final`","severity":1,"code":"reportUnannotatedClassAttribute","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnannotatedClassAttribute"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":95,"character":65},"end":{"line":95,"character":76}},"message":"매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":95,"character":65},"end":{"line":95,"character":76}},"message":"‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":99,"character":4},"end":{"line":99,"character":23}},"message":"\"setattr\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":100,"character":4},"end":{"line":100,"character":23}},"message":"\"setattr\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":100,"character":61},"end":{"line":100,"character":68}},"message":"매개 변수 \"_job_id\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":100,"character":70},"end":{"line":100,"character":77}},"message":"매개 변수 \"_output\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":101,"character":4},"end":{"line":101,"character":23}},"message":"\"setattr\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":101,"character":58},"end":{"line":101,"character":65}},"message":"매개 변수 \"_job_id\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":101,"character":67},"end":{"line":101,"character":74}},"message":"매개 변수 \"success\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":101,"character":76},"end":{"line":101,"character":81}},"message":"매개 변수 \"error\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":101,"character":95},"end":{"line":101,"character":111}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":102,"character":4},"end":{"line":102,"character":23}},"message":"\"setattr\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":102,"character":53},"end":{"line":102,"character":57}},"message":"매개 변수 \"_job\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":104,"character":16},"end":{"line":104,"character":37}},"message":"\"run_one_job\"의 형식을 부분적으로 알 수 없습니다.\n  ‘run_one_job’의 유형이 ‘(job: dict[Unknown, Unknown], *, adapters: Unknown | None = None, loop: Unknown | None = None, verbose: bool = False) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":117,"character":49},"end":{"line":117,"character":58}},"message":"\"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":119,"character":8},"end":{"line":119,"character":44}},"message":"호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":134,"character":48},"end":{"line":134,"character":57}},"message":"\"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":135,"character":49},"end":{"line":135,"character":58}},"message":"\"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":137,"character":8},"end":{"line":137,"character":44}},"message":"호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":152,"character":48},"end":{"line":152,"character":57}},"message":"\"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":153,"character":49},"end":{"line":153,"character":58}},"message":"\"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":155,"character":8},"end":{"line":155,"character":44}},"message":"호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":170,"character":14},"end":{"line":170,"character":26}},"message":"\"AsyncFakeCardTransport\" 클래스의 \"raw_response\" 특성에 할당할 수 없음\n  \"NutritionScheduledTickOutcome\" 형식의 식을 \"AsyncFakeCardTransport\" 클래스의 \"raw_response\" 특성에 할당할 수 없음\n    \"NutritionScheduledTickOutcome\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportAttributeAccessIssue","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportAttributeAccessIssue"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":173,"character":49},"end":{"line":173,"character":58}},"message":"\"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":175,"character":8},"end":{"line":175,"character":44}},"message":"호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":193,"character":12},"end":{"line":193,"character":21}},"message":"\"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n  형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n    ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n      \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n        형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, _AsyncCardResult]\"에 할당할 수 없습니다.\n          ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, _AsyncCardResult]’ 형식과 호환되지 않습니다.\n    \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다.","severity":1,"code":"reportArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":199,"character":8},"end":{"line":199,"character":44}},"message":"호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요.","severity":1,"code":"reportUnusedCallResult","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnusedCallResult"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":207,"character":70},"end":{"line":207,"character":81}},"message":"매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":207,"character":70},"end":{"line":207,"character":81}},"message":"‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다.","severity":1,"code":"reportMissingParameterType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportMissingParameterType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":212,"character":4},"end":{"line":212,"character":23}},"message":"\"setattr\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":213,"character":4},"end":{"line":213,"character":23}},"message":"\"setattr\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":215,"character":16},"end":{"line":215,"character":21}},"message":"매개 변수 \"_args\"의 형식을 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":215,"character":25},"end":{"line":215,"character":32}},"message":"매개 변수 \"_kwargs\"의 형식을 부분적으로 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":217,"character":4},"end":{"line":217,"character":23}},"message":"\"setattr\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":217,"character":58},"end":{"line":217,"character":65}},"message":"매개 변수 \"_job_id\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":217,"character":67},"end":{"line":217,"character":69}},"message":"매개 변수 \"ok\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":217,"character":71},"end":{"line":217,"character":76}},"message":"매개 변수 \"error\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":217,"character":90},"end":{"line":217,"character":101}},"message":"인수 형식을 부분적으로 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\n  인수 형식이 \"tuple[Unknown, Unknown]\"입니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":218,"character":4},"end":{"line":218,"character":23}},"message":"\"setattr\" 유형을 알 수 없습니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":218,"character":61},"end":{"line":218,"character":68}},"message":"매개 변수 \"_job_id\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":218,"character":70},"end":{"line":218,"character":76}},"message":"매개 변수 \"output\"의 형식을 알 수 없습니다.","severity":1,"code":"reportUnknownLambdaType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownLambdaType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":218,"character":93},"end":{"line":218,"character":99}},"message":"인수 형식을 알 수 없습니다.\n  인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.","severity":1,"code":"reportUnknownArgumentType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownArgumentType"}}},{"file":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py","diagnostic":{"range":{"start":{"line":221,"character":16},"end":{"line":221,"character":37}},"message":"\"run_one_job\"의 형식을 부분적으로 알 수 없습니다.\n  ‘run_one_job’의 유형이 ‘(job: dict[Unknown, Unknown], *, adapters: Unknown | None = None, loop: Unknown | None = None, verbose: bool = False) -> bool’입니다.","severity":1,"code":"reportUnknownMemberType","source":"basedpyright","codeDescription":{"href":"https://docs.basedpyright.com/v1.39.9/configuration/config-files/#reportUnknownMemberType"}}}],"totalDiagnostics":48,"truncated":false},"isError":false,"timestamp":1788247365156}}
{"type":"message","id":"ce2589a3","parentId":"90f95603","timestamp":"2026-09-01T07:23:05.896Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning basedpyright test diagnostics**","startedAt":1788247369477,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967d49647c87d089441f04cb93e112\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln1ZIWOkunI41FKfNUaD7U_BUXMqcBaq93tfZY_jPQld-zaOO_AHTcubd1uN1lBn37-64N7kF85E18ACgKf5u_ufg3vAoB4UXpz73jUkAkle4JM_9txlB3IOcWPFDqr5D6raCKJVvOEb_bBa__OlEakUe7Tq36IEgniQd5dcx1KGTzXaKjuuyWu46chPgKJEI_LtwvWIqw7aNJjfSeyRHYL5jUifbURWDoqK8h7LoVxyQpGHeYacoESXK7z6hAKCo7rqnQB_PMSXXL3HvJ_o9Y_iPUn6zfLh6-3drvddr5tkWsaaybw0btln3NFW4eR-14iD6J6i2EqHrJCMo9w0AGE_RMhSYKjIj8G2hChcOpNMutP0q2TWliKlMTaltZTa5rFY270TknS_kNv6C9ZlKgWeGa-6ae69euYJaIp5vWfLzD69rGuGGn5BJ9NtC3c02fQn2_bSvvgLvIXiEKtdwDilEzFGHuwtTONbJk4a4fbfbaFXMJEnqboZI-s2MbWo5zE5RMs3KEBcp8LimOw3YWKW5gGeHAilGu3A9vSafjkCwb94IJPVrglc8htRTT5Oq00kOOlAoi8zx5ISJHfuay9Wa-UDvoukVDTzPa5vuDVPZuqDK9BCnd3r5uTcrcgz3PcpkoTc5-cmCaVNY_y6Z9p4ochSQwyNO4zOVJ-U8Jjz52_j1WkQkZ061khlxYW-Sz43fqH5Jo8HQByK5C_5kH6DyFMvsxLi_VJ__PTuqcYWrupxcn47pNbwkYR6ALWCsDFAWrFeLegRM4IP6fj-BAaKnWT8InKHiM7SuA3Kbbxm2J8iMMPyTTnD3MiTvJdKsIQl37jQojLTdhro_CzkAKTYcwIbPBtkY_YUiFvsEAwgOyLefgcJbdw_uvYoGUlxVi4dcSvOCG1GVJR8qv4NVsU1LMDGWJUcxB-Srky4B_2UY13P-c9Lq74PhJIZsJOJwvpY5MHoD2C2Bz4lVm2Ro1j6dZI15hLzX06xayGbi4kN77oZTfs8hewqMbZEr3V85gs4_PJyA5JmZ2JCXTd9jiaDW5lnmaerJqGD7uX_bHtG_AyhuJmo03vIZG5cOWjzvfDhePfYRKzpWql4MTWORCa9pdpSz637RdrIt7REghQhe4tNoxrbxCd8L2NkkDyvCF8sMq2PctQQTlMaTXE1H0QU5I2e55P7UqyZWILz9N2MI330u695eynvyYk398vgD7FsKGIiTfoFhG0GSNQ-wzwnkqy_ZoTncc4IKiSIXS3UE4kOY4v8c77mxOoDoh2TsqrLdjYHJIQp0zohDnU6wFi7YHlr6ZnlmRTmsXuI86ouF0-JM6oM5EEuYj9yfTt-XvwbIBcoXtcAd4qLi7uCfSNzf1fy2GmIj7yli845Wb28YGvRmx1XA_o55nQXVX8uhTQQlSfUiFIjHdEoqMmO_s9C5Bf4_kAxe_verre1viT19nwAdYPuxKD8z_YteohqBfs02ur8mRVdn3NAeT0jVXXL1Jme4mC6aWIxw6f6sgVBE0zgINHgm1XerHRsuvPm9D7ds9uYc-He-pwe7XMLuzzFuqolVis2wUKcuHZTXG4WNTwG1dcXAaQLtyoANlMgLZq5dqzpkPQ5uKyFq0R8A9O6jS92l2lsT1sYNE3isB0BjssJFQklmUJEqXmg86qlh60lODdfLC0ph_lHfZBEp0YWk6nNC8hzMXifLYDT3zGjBTHtDTs4of1tx96Uo6J_ygIT4RwbJyT9sGsO-rJfczfK99GTi5KHJTeVcN0-HgOIk0RVp0y1jACMcilbyaz40S5PGSvbya4Oi9BcHQI98evOvC2UwKceJCNyKj9TYQJHOSrJD3_x6L19m_K61L7DjCV0u2aVLjludHh5YUiLKbN6emqwwSZCO3yKzacG2JlmkUuCKJAQet2JEE4aPDwKi5vkRfi-QZvoZvcpYypq2aSpOYkr83fBMZHJylPf_mCXi3s=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning basedpyright test diagnostics**\"}]}","endedAt":1788247385783},{"type":"toolCall","id":"call_N23h3RoFKpfS1eUALbtlG26O|fc_046f5546d6e20d23016a967d59b27c87d08985a6a5ee7c4538","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=\"$PWD/dualcoach/profile\" basedpyright tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py --pythonpath .venv/bin/python --level warning 2>&1 | tail -20","timeout":120}},{"type":"toolCall","id":"call_68J7WIZVJjIcUkBW2R2NbKZO|fc_046f5546d6e20d23016a967d59b28c87d0a037fd3ba680975d","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python - <<'PY'\nimport gateway.platforms.nutrition_weekly_maintenance_contract as c\nimport gateway.platforms.nutrition_weekly_maintenance_io as i\nimport gateway.platforms.nutrition_weekly_maintenance_store as s\nimport gateway.platforms.nutrition_weekly_operations as o\nimport gateway.platforms.nutrition_weekly_dispatch_result as r\nimport gateway.platforms.nutrition_weekly_dispatcher as d\nimport gateway.platforms.telegram_weekly_host_dispatch as h\nimport cron.physique_inline_card as p\nprint('IMPORT_SMOKE_PASS')\nPY","timeout":60}},{"type":"toolCall","id":"call_okG7H6tymav46twIvPG0r7HD|fc_046f5546d6e20d23016a967d59b29487d0a52d88fbebaefb70","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY'\nimport ast,json\nfrom pathlib import Path\nfiles=[Path(x) for x in '''gateway/platforms/nutrition_weekly_maintenance_contract.py\ngateway/platforms/nutrition_weekly_maintenance_io.py\ngateway/platforms/nutrition_weekly_maintenance_store.py\ngateway/platforms/nutrition_weekly_operations.py\ngateway/platforms/nutrition_weekly_dispatch_result.py\ngateway/platforms/nutrition_weekly_dispatcher.py\ncron/physique_inline_card.py'''.splitlines()]\nissues=[]\nfor p in files:\n s=p.read_text();t=ast.parse(s)\n for n in ast.walk(t):\n  if isinstance(n,ast.Name) and n.id=='Any':issues.append((str(p),n.lineno,'Any'))\n  if isinstance(n,ast.Call) and isinstance(n.func,ast.Name) and n.func.id=='cast':issues.append((str(p),n.lineno,'cast'))\n  if isinstance(n,ast.ExceptHandler) and isinstance(n.type,ast.Name) and n.type.id in {'Exception','BaseException'}:issues.append((str(p),n.lineno,'broad-catch'))\n for ln,line in enumerate(s.splitlines(),1):\n  if any(x in line for x in ('# type: ignore','# noqa','time.sleep(','asyncio.sleep(','pytest.skip','pytest.mark.xfail')):issues.append((str(p),ln,'text-rule'))\nprint(json.dumps({'issues':issues},sort_keys=True))\nPY\nsha256sum gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py cron/physique_inline_card.py cron/scheduler.py","timeout":30}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":20967,"output":901,"cacheRead":152064,"cacheWrite":0,"reasoning":98,"totalTokens":173932,"cost":{"input":0.10483500000000001,"output":0.027030000000000002,"cacheRead":0.076032,"cacheWrite":0,"total":0.207897}},"stopReason":"toolUse","timestamp":1788247365216,"responseId":"resp_046f5546d6e20d23016a967d465b0887d0b40a739e2a0f3e59","rawStopReason":"completed"}}
{"type":"message","id":"0390ea23","parentId":"ce2589a3","timestamp":"2026-09-01T07:23:06.699Z","message":{"role":"toolResult","toolCallId":"call_N23h3RoFKpfS1eUALbtlG26O|fc_046f5546d6e20d23016a967d59b27c87d08985a6a5ee7c4538","toolName":"bash","content":[{"type":"text","text":"  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:15:80 - error: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다. (reportMissingParameterType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:22:5 - error: 호출 식의 결과가 ‘int’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:24:5 - error: \"delenv\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:26:9 - error: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionSlot\" 형식의 \"card_slot\" 매개 변수에 할당할 수 없습니다.\n    \"str\"은 \"OpaqueProjectionSlot\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:26:19 - error: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"logical_key\" 매개 변수에 할당할 수 없습니다.\n    \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:26:29 - error: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionCustomerId\" 형식의 \"customer_identity_digest\" 매개 변수에 할당할 수 없습니다.\n    \"str\"은 \"OpaqueProjectionCustomerId\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:26:57 - error: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"config_digest\" 매개 변수에 할당할 수 없습니다.\n    \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:27:9 - error: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"candidate_digest\" 매개 변수에 할당할 수 없습니다.\n    \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:27:19 - error: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"route_digest\" 매개 변수에 할당할 수 없습니다.\n    \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:27:29 - error: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"status_digest\" 매개 변수에 할당할 수 없습니다.\n    \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py:27:39 - error: \"LiteralString\" 형식의 인수를 \"__init__\" 함수에서 \"OpaqueProjectionDigest\" 형식의 \"payload_digest\" 매개 변수에 할당할 수 없습니다.\n    \"str\"은 \"OpaqueProjectionDigest\"에 할당할 수 없습니다. (reportArgumentType)\n104 errors, 0 warnings, 0 notes\n"}],"isError":false,"timestamp":1788247386699}}
{"type":"message","id":"de2bf9e1","parentId":"0390ea23","timestamp":"2026-09-01T07:23:06.699Z","message":{"role":"toolResult","toolCallId":"call_68J7WIZVJjIcUkBW2R2NbKZO|fc_046f5546d6e20d23016a967d59b28c87d0a037fd3ba680975d","toolName":"bash","content":[{"type":"text","text":"IMPORT_SMOKE_PASS\n"}],"isError":false,"timestamp":1788247386699}}
{"type":"message","id":"eec88f65","parentId":"de2bf9e1","timestamp":"2026-09-01T07:23:06.699Z","message":{"role":"toolResult","toolCallId":"call_okG7H6tymav46twIvPG0r7HD|fc_046f5546d6e20d23016a967d59b29487d0a52d88fbebaefb70","toolName":"bash","content":[{"type":"text","text":"{\"issues\": [[\"gateway/platforms/nutrition_weekly_dispatcher.py\", 136, \"cast\"], [\"gateway/platforms/nutrition_weekly_dispatcher.py\", 136, \"cast\"]]}\nf77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619  gateway/platforms/nutrition_weekly_maintenance_contract.py\n9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d  gateway/platforms/nutrition_weekly_maintenance_io.py\n8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542  gateway/platforms/nutrition_weekly_maintenance_store.py\nb0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e  gateway/platforms/nutrition_weekly_operations.py\n3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2  gateway/platforms/nutrition_weekly_dispatch_result.py\n9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b  gateway/platforms/nutrition_weekly_dispatcher.py\n9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2  cron/physique_inline_card.py\n09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95  cron/scheduler.py\n"}],"isError":false,"timestamp":1788247386699}}
{"type":"message","id":"425d8f96","parentId":"eec88f65","timestamp":"2026-09-01T07:23:49.121Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Verifying adapter scheduler integration**\n\n**Planning same-day sending sequence**\n\n**Auditing ledger consistency and privacy**","startedAt":1788247389495,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967d5d68bc87d0a22e203331108293\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln1tMov5tTwWFYaVMFcMjitZj-cMai0r2Lp7FaV0_tgKl-FDj8dILEfgAi8_TEH6vypdSICYpR-a1b5oUUtZFBUI8UT_nWDDRQ9v3Oyg8VNAsdgH2rP9mfudizlYnN8ALaniTNaZLKvFzoWoUmwtYmRetg6u7mqSwDWAvvFHVQIlViyOsMwCG73aGqbhJGvNEvKWCXlLAeErJDpQnriE_svGv8hdkBe_JnJ_68ustwNw5PsP8UUD-dsdQ_fB7KyiZyGldTgBFTaUdPCEpXKR7bbrWL0MgsXy6al6hybWL1_veYGGnYO0syeIXU5Id1a_LLGtMaS9d-VK5nFOKRpo37XkL0m56kbz2jEf7s6GVMowx3NjacjZ_2K7gah0FsWNYRpUMdOQkWK4yG-SQMw2PThb0D_pKnGdn5OmxlxFt2ELUZApmHur-j7zI_Gm_n0Sz0nQ1ek0DYUWJaKopUpYZsPe16zZaCUKCLOzdk93dIpidtJobf6vlopqoF_r9_TZrNz8IwF_oiw3BwIAJGbV9-fkgduyRKB7ebPdVPMx5BT15URuNDsgMkOtkZcuuB92COxpHhuAKOyV5iNIbIJeLcrnkb24_sBQCWVY9p9Z13paVlK-UgNUCg9AM9hPaFjgAEXPdhDxhhPpz3LWyBc_r6ZlvV8MxhLrJoY4mDF-6XpXwPL28NuCMu_sXopbQoCXAJH_WxY7L7GyJAcvgrM7bPY9piqGhV9hsRy2fh-sDHX6j5ldrqFFA8_dsG0pJS0lkqDNaT0_KE4yTBnfTydRmXQj8fjUCUjc3yxdyVe-V36BIXimRIpkowwj8ixFs4IcLeZkEipKBSfGTXwQ8rii-ZO9an82CZVRc3CGXK02OG5FWxFvdRwXIe9rl7-JluP9mZw9OPWlslViLC4v0NRyX07BK60Pw0nrlD2ZRsA57yUfmfTlUqTQKUKXwmVr6Wp2lna1a4lqfV_FIXqjWzyrpdQI97TlDKvi3jPKrrQKviyYofaAQfUa1wyGutK9hj15TK8yrpQ381TK1UbbwONtSTqw-CP6lVJZdQbWnP2UiaUpqzepzKaM_6fAaI5M7k1EMp5zXd2XqVFhi1hSoYKiw33rXQUmXKWq-5YAt282AH6cNx34ZxYgVE5Lzkqxyt_1Tryy9GdQdj9Ow7ySDdRVUmHlrb0ve8m5dxRh1FxKbgDmBw4-d8q7ZFHwGZmLQDnyvSN-vce30dZ3fEgmQgOc0T4LU7-U4QrrN6fYMK9rfZIvCSRJrBo4z1Bhhmn6mOS8iM37HoOh9ujOlZ3_3tws40XSJFHU7nQbKe5eCfyUT1IbrA_1aZou8GfRkngc2WgNpUJzzp9N5r9PyxZ0wkNz-YNI23Tg0hUi3yTdDYLhXW8D3xuCqNzXM_04SgZ9VVsKy3XVPOfYx-RRy3K6QLlIekaPzD5WvnfmWGMn_Y0Xouw2jMnw7QWy7SNC435VXS2T3CaNh9XtP-OMY-BjUpj30aXTYZwuIq9oFssQi6crxGRuxAs1UstxHtJBIhNKnY-C8e8qqpFT435a6oxQ5oAY_SIV-CRFgkJ5s7mSzwvu43-VvwnERV_Ha_qS-Yv4SxMn0XOzsKDOernmdirGTAGaI5k4_YZ_HKgXsnaUr-GkJ-CNmVPWzVuKQXAz75G48gZDBPBAeZAFn3UZKSW24NO_bQ2cawygnYsIIpiu-iv76qj2b2dFH-3YierPQ_Lx2F3XdEMUDpcQ6UlGYIraj30pez_ywHaWptxrfhyq3RsRWrLd7F479sgMCWZijx0pZyHhtW2n3GZo5EqN-LZ8PNyClAby0oHcf6cPEKypWYkAv5lr_ycXpG_ZcnWVkkil9jU9MJNc9QjXwp7jefKukO5_OCoi0HymRHqqgO7y5UwF2YnDmLBGjbdd9u_slKehPp7WHzW5zjSF4X9yv5ydh3xBGuJqZ66KfU5r1sTvO42zI9YQA-voW4Jwy2Roch1XPm_PbUiMr3y7F5No_dpu5H9p_hx5yAyv8J2qe0CAUacgj0uRYBkQkkedNJmgG1LJrojQibuhvlXQiqsRLypVUAPxjr5TR85qnlegX55fC3B3gUgSbcksJt4IRMaSl9ykc0dbH-tgvTaXWv6KQuoh-nclpwEa-kTG0YUcG9zeu1jAbRbg-_gKS6Sj1zXfb7Xt9NB7k6Qd9P19brVDGzGSixH-qNj77ixUBAIYDJW22I3TaFYBR_tBg_Q4XrdKV_iVR32vsLiwrs7NFKixyLbJNzAdeDBfeZ7fruIzSjW_dd4rtPqKjSvQWI8sbxo0UjU4VpD5MmlJFrgZPpBLbU7G9J7kjmp7_5yUbscX2ap4tUOUF-zifGYq7-d9Eopb4kQPOE94isuqrgOPl58_O1SwhtAt6c9Wi6w8RhpbRsNw9tlSwAChqPwL9NLU7X9IFNTdLIqnF9zOg67hBVGX0LmmxFWXUMD8Cxw6hCfGNC00Xg5gLK3li5QPgNMmDbJvceuD0-_nY__A8BMA9SNbhvOz9nK7lKSyag682PbXM-NqsvPOOnjm8OMlq6tWvff0Upi-0wHn9sE__1mBwoPIwF5cT60AlNttMpKNR7VD6jPJGWvlBxW6NWJUxN-ewAMiBzYjGmUHZyJYHbCiyup394GLsuE7u7TV-E7067gMHW46AZIpBLrfxDP0MYJp4JA0ebGhoUTxGDZ0FEdxXUS0N7fUeutK1C3HZuHbN-klN0Uz92y7EPcnx5mvo1d8T5yjKAw5CHnwVUsnNjucoiDGbTIWMjMgtv-_yq4twJJ9px6DcX2DJcWYriiUxwzc6vSX5gQJNaU0D2vrBYNZBaCkKx3WaBV-Xq15pMV5tLUuob0pB8WbCYQ16uAONtBHfiyloBFboasqsc24CKjr5ao3BOoz7OTI7zFAAYmhVH0WaadibOBvGSG3Z7ljAeGdnDmSdjSAsFugzEKINj46usRpPSslcMdr38KEIpZRVimj3oQCz1p6jXlOBwaKDWy2HHFC_icZWyXnqAxdy7KWuGR3VkHfqpgu4TQK6hSqtdc1BvTKWoKpytJXSNO0btjoI_Tyg-DY2CLh1AIrMU4dqXJGZ6UjBZzh9S4jj64OuzrdTCSKWqI1OsmjYIhcAuCBfphg48XedJF04Ac6bA0KJMIWU4imeDqDDuz3PEOnWVB1qSGHG9SEZi-uIcKz0Bdorb9MKYkWEv4qYIVmSpNn2btAnJ7EZOe0SUG3Bo4CqwqBH100JjAcd0OulT2uKaUg1v5hqHM5pFMcqfhQRhdr8wBQFuidfiaIKI3cd2cdnthEb1DGS5OGx4bvam3FtOKH5jODNEunHnp5iSnH7hISlq6_9WpcSYTIGs6Kx-XFfojFp4LZWmgQz9jvqC1UWvLhFWr1IV3mRE-aqj66Cv09bkMeWNHcNQNzaSuK3sq5CqPFFM_Hmu_s0aVQuk4FeKMJ81qPB6hRIia6oDrY2TTWuSKSM9ciQitsFkJoNXjP9nobQH78XmfpkPmVf_L8qoHea1NM1B2sWjT-AjNlmGoqy7Fm8pUtchcYhL6i68_r-wlpZHGc0I2zUvjWnfzOAr1kYPqTKtCefHH07j7oAWOeIb261vpGgExdaUzbmGf70IjhxCmLdEuJEX5qM9tzgrxrwQ0EqX3MvJjcv1epEXXB_RWv-jGMjxwXcmcb8xfsCzSdZMqI7gnRk2seftr7naVLp_1lIJmvF3dzCqpxlfMSHfKK5zu69bX0u0cE9Xz44G2DXeKDx-tN8nPD_e0DS4mnPFzIwV2CwYvk6D9o7BpQy9bRiDx8d9jcek1fnPLbqELo1_URi0BGNKIqPvdjcOwRrCYAOi_La77zxICHSriMu5s_UZwIYI-rHgerKdsN3CR706juj7TDPhIz9gPZ5H0U5EBnlaE7A3QkR7VdDpRfDWPBhHNxyBLjFPPOg8-EdD-fJbrRTUauOs4S-N0iSwJD5cN6gHWvlKyfcdZSpbMU97mbUxKZ1cX5a0IRvfqI9rtcoys9x2YgJ9i4l8ltUFFPSeUGxUB2V3rN-uHsd6TnDZouqHQm0wTFXhzhzT9_EFHADRQoUBSV1CBcSqGaEU7igraIl7ARkWxkhRIrpjUfbLkZx2tau6gC_9mQ-nKZvXhRja5dg9_yoLHQPTfB3V4rZYxhJ3rA0PhIABIIH_pCijSPCrl434bustoJ6cxelvBF1zvBUqNJU34pcqxvBYrEfAfy9szfuWPgU-kMe20CO5rHvaRdrzgsOML8Eh7fQfha3Ocj5_AGdIr5W7zf5pGLVFB_EfLAg7PcMGCUxggU7mART4vxlbZES_bvEkmFtzHAJq7YCQJ2b67M-K2YvDczDs9AMwPqA4ZiIQgsx6ZOVI_s-ksjAJQ_ysTSfRUZnywV1DyxGpiCHEO-TlenNAndWQSIzZ_fGdvIXtcWUnd29-bmHiC9kianJwQn5MZw7fmuAARldfF6nDmD7Qa9EbRKP09McYYpjlOKJwew47MPAzoVMY8RUMUC8jNez_OhTm-tjb9NXUvIDA2Fv3Kq18Rx1JYimuuHdnrC2DEXIfh3fKPuELv6LUtKUanOYc4eEZEu8PIsHckBU9iL5At-YPnwXnWXVclFVCkf3ydAbHvzbahyihoyZytdCNZAwjViRP53SNOKfLKRWYr_QIXC10jea5xXm9qiluex4HFwhfZPauPYgt3liXq8rS0lpUeesuWgDdVhUHNJLMhzhIxYevW2yIQxPhWcCzwR-N69cwxOySeMgUYkQX8FHOo1QykN5sMDCwglZ_yCNDY52vyDVXZPJ-P-9vd6RM6DpsyuHT3Gp7oV16mOZs9F_wRXPG37qBGsnHHq4m0Y50a_P4CgsHYUj1gRdMYoPiPOJqJ57IrMj1uZPCJRoS7KKZKGyg==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Verifying adapter scheduler integration**\"},{\"type\":\"summary_text\",\"text\":\"**Planning same-day sending sequence**\"},{\"type\":\"summary_text\",\"text\":\"**Auditing ledger consistency and privacy**\"}]}","endedAt":1788247405410},{"type":"toolCall","id":"call_SWoxmpUIDt7GOYVyqJF96wij|fc_046f5546d6e20d23016a967d6d53c887d0a02542ed1dc5232a","name":"bash","arguments":{"command":"cat > /tmp/r71b_manual_bridge.py <<'PY'\nfrom __future__ import annotations\nimport asyncio, hashlib, json, os, socket, tempfile, threading\nfrom dataclasses import dataclass, replace\nfrom datetime import date, timedelta\nfrom pathlib import Path\nfrom gateway.config import Platform\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import Topic59MaintenanceAuthorityV1,Topic59MaintenanceHoldV1,canonical_document\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59DayCardProjector,Topic59PublicationDisposition\nfrom gateway.platforms.nutrition_weekly_operations_ledger import Topic59PublicationLedger\nfrom gateway.platforms.nutrition_weekly_operations_models import project_topic59_day_card\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\nfrom cron.physique_inline_card import NUTRITION_TICK_CARD,launch_scheduled_card\nfrom cron import scheduler\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import _request,_Transport,Topic59DayState\n\n@dataclass\nclass TypedResult:\n success:bool=True\n error:str|None=None\n raw_response:NutritionScheduledTickOutcome|None=NutritionScheduledTickOutcome('noop_maintenance')\nclass Adapter:\n def __init__(self):self.calls=0\n def is_inline_card_enabled(self,card):return card==NUTRITION_TICK_CARD\n async def send_inline_card(self,card):self.calls+=1;return TypedResult()\n\ndef projection(req):\n route=req.config.review_route;assert route is not None\n return project_topic59_day_card(req.card,config_digest=req.config.digest,route_key=route.key)\n\nwith tempfile.TemporaryDirectory() as td:\n root=Path(td);p=root/'profile';c=root/'credentials';p.mkdir(mode=0o700)\n req=_request(date(2026,8,20),Topic59DayState.SUBMITTED);proj=projection(req);now=req.runtime.now\n hold=Topic59MaintenanceHoldV1(hold_id='3'*64,package_digest='4'*64,candidate_digest=proj.candidate_digest,config_digest=proj.config_digest,route_digest=proj.route_digest,customer_identity_digest=proj.customer_identity_digest,card_slot=proj.card_slot,kst_day=proj.kst_day,not_before=now,expires_at=now+timedelta(minutes=5));hb=canonical_document(hold);auth=Topic59MaintenanceAuthorityV1(package_digest='4'*64,hold_sha256=hashlib.sha256(hb).hexdigest(),hold=hold)\n m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n for n,b in [('hold.json',hb),('maintenance.lock',b'')]:q=m/n;q.write_bytes(b);q.chmod(0o600)\n c.mkdir(mode=0o700);q=c/'nutricoach-topic59-maintenance-r71b.json';q.write_bytes(canonical_document(auth));q.chmod(0o400);os.environ['CREDENTIALS_DIRECTORY']=str(c)\n ledger=p/'data/weekly-operations-topic59.jsonl';led=Topic59PublicationLedger(ledger)\n for day in (date(2026,8,18),date(2026,8,19)):\n  _=led.claim(projection(_request(day,Topic59DayState.SUBMITTED)))\n before=ledger.read_bytes();historical_hash=hashlib.sha256(before).hexdigest();historical_rows=len(before.splitlines())\n t=_Transport();projector=Topic59DayCardProjector(ledger,Topic59MaintenanceGate.for_profile(p))\n first=asyncio.run(projector.publish(req,t));audit=(m/'skip-audit.json').read_bytes();audit_stat=(m/'skip-audit.json').stat();second=asyncio.run(projector.publish(req,t));same_day_unchanged=(ledger.read_bytes()==before and audit==(m/'skip-audit.json').read_bytes() and audit_stat.st_mtime_ns==(m/'skip-audit.json').stat().st_mtime_ns)\n loop=asyncio.new_event_loop();thread=threading.Thread(target=loop.run_forever);thread.start();adapter=Adapter();real_socket=socket.socket;network=[0]\n def blocked(*a,**k):network[0]+=1;raise AssertionError('socket reached')\n socket.socket=blocked\n try: launched=launch_scheduled_card(p,adapter,loop,now,NUTRITION_TICK_CARD)\n finally:socket.socket=real_socket\n runs=[];outputs=[];old=(scheduler.mark_job_run,scheduler.save_job_output,scheduler.get_hermes_home,scheduler._hermes_now)\n scheduler.mark_job_run=lambda _id,ok,error:runs.append((ok,error));scheduler.save_job_output=lambda _id,out:outputs.append(out) or root/'out';scheduler.get_hermes_home=lambda:p;scheduler._hermes_now=lambda:now\n socket.socket=blocked\n try: processed=scheduler.run_one_job({'id':'qa','inline_card':NUTRITION_TICK_CARD},adapters={Platform.TELEGRAM:adapter},loop=loop)\n finally:\n  socket.socket=real_socket;scheduler.mark_job_run,scheduler.save_job_output,scheduler.get_hermes_home,scheduler._hermes_now=old;loop.call_soon_threadsafe(loop.stop);thread.join(timeout=2);loop.close()\n tomorrow_req=replace(req,card=replace(req.card,kst_day=date(2026,8,21)),runtime=replace(req.runtime,now=req.runtime.now+timedelta(days=1)))\n tomorrow=asyncio.run(projector.publish(tomorrow_req,t));after=ledger.read_bytes();payload=json.loads(audit)\n forbidden_values=[req.runtime.customer_key,req.runtime.owner_user_id,req.runtime.owner_chat_id,req.card.render()]\n privacy=not any(v.encode() in audit for v in forbidden_values) and payload['sent'] is False and payload['delivered'] is False and payload['message_id'] is None and payload['provider_receipt'] is None and payload['provider_calls']==payload['network_calls']==0\n print(json.dumps({'same_day_dispositions':[first.disposition.value,second.disposition.value],'same_day_files_unchanged':same_day_unchanged,'audit_count':len(list(m.glob('skip-audit.json'))),'historical_rows':historical_rows,'historical_prefix_unchanged':after.startswith(before),'historical_hash':historical_hash,'send_current':0,'edit_current':0,'transport_send_total_after_tomorrow':len(t.sent),'transport_edit_total':len(t.edited),'launch':{'maintenance_noop':launched.maintenance_noop,'sent':launched.sent,'error':launched.error},'scheduler':{'processed':processed,'mark':runs,'status':outputs[0].split('Status: ',1)[1].strip()},'adapter_calls':adapter.calls,'network_calls':network[0],'tomorrow':tomorrow.disposition.value,'privacy':privacy},sort_keys=True))\nPY\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python /tmp/r71b_manual_bridge.py","timeout":120}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":2908,"output":2092,"cacheRead":172544,"cacheWrite":0,"reasoning":487,"totalTokens":177544,"cost":{"input":0.01454,"output":0.06276,"cacheRead":0.086272,"cacheWrite":0,"total":0.163572}},"stopReason":"toolUse","timestamp":1788247386738,"responseId":"resp_046f5546d6e20d23016a967d5b235087d0a8be0f2b18852b38","rawStopReason":"completed"}}
{"type":"message","id":"9e63ff24","parentId":"425d8f96","timestamp":"2026-09-01T07:23:49.406Z","message":{"role":"toolResult","toolCallId":"call_SWoxmpUIDt7GOYVyqJF96wij|fc_046f5546d6e20d23016a967d6d53c887d0a02542ed1dc5232a","toolName":"bash","content":[{"type":"text","text":"{\"adapter_calls\": 2, \"audit_count\": 1, \"edit_current\": 0, \"historical_hash\": \"5cbf7d0622145144e0b5a4e2ceaab8b72bedd93a84ec766b044b8be10fb3f08a\", \"historical_prefix_unchanged\": true, \"historical_rows\": 4, \"launch\": {\"error\": null, \"maintenance_noop\": true, \"sent\": false}, \"network_calls\": 0, \"privacy\": true, \"same_day_dispositions\": [\"noop_maintenance\", \"noop_maintenance\"], \"same_day_files_unchanged\": true, \"scheduler\": {\"mark\": [[true, null]], \"processed\": true, \"status\": \"maintenance no-op completed\"}, \"send_current\": 0, \"tomorrow\": \"sent\", \"transport_edit_total\": 0, \"transport_send_total_after_tomorrow\": 1}\n"}],"isError":false,"timestamp":1788247429406}}
{"type":"message","id":"b58cef80","parentId":"9e63ff24","timestamp":"2026-09-01T07:24:05.710Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Running exact 189 commands including r2**","startedAt":1788247431640,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967d878e1487d0a1f8c36041c55478\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln2V5hXrtNtiEhjzPGMGyOS2PraDQOwM1RTXsLlIdGAKaH-1rCspk3G3piEWAfWSZcGFpcizlZYO8Mqtj_sRSTeTwN147SoLTkphFFuk8qhmggTcBmTluXt4vnqY5tZ3J8Jme2Z0PJbsVsykBJsNMgnODknr0D4IvwOE1kdIwpt-g1ms5d5he1yjKetZftJLPWt-LeDKrDxKDwyY1iMKXirhD7pqGmPmfee83VtQZaKXo23_go6148V5r0GK8sbad4zQe6FSC_Rndhr2d2LOoYb9syNlL2em8WQwKSTLQ0QG91G_G7HDBZoonSPtt1uy7McEnVqQg-WRmQ5UKeCMbkAxb-CUFL7XBk8_U5dKjE9E8DxTir-UVylSF95KRwm3epkxhJM8VEDBV-v4R7EIEoGc1OV8YEAtQ7039x31JRMjKeJjrCVs4gAoXnWTZsLqOl9c_D-DDhQF4kbM-GzXGqnHjAi4C54hOdo7ybSVuw2kdE2aeV8kDmCCqlPAutGuaPtclsW1r8K_IUv4Sy0bf02EYhWirNZ2-LgZBFo-7yALiCtI9J1Iyc3Kzj3QUKIRw3ZEhfo7uUJxLIc7Pv_zPYX0Kz93drY9S3oFJ_KJdIdktLprwa62d_JcsBlstmRXBxwMCGWWI0vshEVS3MxUP2Py33CwEmSF1BgORX93xm5tnyUKp3lLuHwDMdzrsD7SF9RG4yeMK_9MLXajdWF_6QoAjBmgctqZOqYOU4ago0ZJyrq-ZxIrRgsCtG58U-NuY44A1YpSWGnAFMpHxGm0pl8dZFtLLlDylQisR65QwA3uAKiSfWUUCyTO6_FHK-G0TZlE8Zci-wi57_v3P88aBK3W8SpfedwC7ZN6lUA8jIJA3wLQD4Hmmgns0B-QtjdMWye7W2sGNsARKgvPMxFi6MfEewuSXvuwlOFAUn_-ayhm3nr2KOkPcrJ7BkQBWS2Yko_EtZhdeVPZSBr1RLthUxr_KQYVaWeYW2IiAhXBIZvKu9e55anX7zS2ex6fyOlW-AE49dJoU322tckU6ZlGR3xn5kyngp6PEx-R9Jnmvu39CJK-pOggrD6wwa1I73QYsnvWXqMcgeM2FNR3xbmcgC7-QcqVIyvlzot7f8INMfkEVnipsjA2fuBpCQfHDqQ8OxaGRkTG88qP50Seiktg7LR7XfA4xJ6nt2KYXIGGF_bhxmfVg60Xmyev4TsFoFT69-VCAiEPBxPO12D_9XynP0SXbJi9lo0YhvqkgsgLf1nT-Ak1NpzLXDL_LCVHirlbmhLoweD7I4s9FFPbZH2ipytJtkswiwyqmcnn4ryhTeTnwzKX1YE6M63Y-BnYNqyGi-fvTVd-pj606yM-i8xfgiroATG4ITGvGNV3dIhKZnO3MTSQZw_bfALdfHgvYPHiYPSiG2uaHYD3wr3-DL1-LnfpWjtuwqepJ0TIBmdUMmc4vte6TCAuCyPKr7u9qahJqQ4AoZDzeN0OuG2HodGdp5KxaeTImtYuN2lVN4D1C9RcJtc=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Running exact 189 commands including r2**\"}]}","endedAt":1788247445595},{"type":"toolCall","id":"call_NGnZOxdeJhBjoU9IaR6hjRKy|fc_046f5546d6e20d23016a967d95823c87d0b5fa15ca9aa06aac","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py","timeout":120}},{"type":"toolCall","id":"call_EuGGDUapUe4xRtOzJd2irU3G|fc_046f5546d6e20d23016a967d95825087d095ce35ec9060483f","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && sha256sum tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_scheduler.py","timeout":30}},{"type":"toolCall","id":"call_VcYVGu604sGWxr35e84j1ov6|fc_046f5546d6e20d23016a967d95826087d0a216679edc75b26b","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && awk '!/^[[:space:]]*$/ && !/^[[:space:]]*#/' gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py | awk 'BEGIN{f=\"\"} /^==>/{next} {n++} END{print n}' ; for f in gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py; do printf '%s ' \"$f\"; awk '!/^[[:space:]]*$/ && !/^[[:space:]]*#/{n++}END{print n+0}' \"$f\"; done","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":3166,"output":774,"cacheRead":174592,"cacheWrite":0,"reasoning":52,"totalTokens":178532,"cost":{"input":0.01583,"output":0.02322,"cacheRead":0.087296,"cacheWrite":0,"total":0.126346}},"stopReason":"toolUse","timestamp":1788247429449,"responseId":"resp_046f5546d6e20d23016a967d865ee887d09b28ff6d67d7e3d2","rawStopReason":"completed"}}
{"type":"message","id":"c179659d","parentId":"b58cef80","timestamp":"2026-09-01T07:24:12.715Z","message":{"role":"toolResult","toolCallId":"call_NGnZOxdeJhBjoU9IaR6hjRKy|fc_046f5546d6e20d23016a967d95823c87d0b5fa15ca9aa06aac","toolName":"bash","content":[{"type":"text","text":"........................................................................ [ 38%]\n........................................................................ [ 76%]\n.............................................                            [100%]\n189 passed in 6.59s\n"}],"isError":false,"timestamp":1788247452715}}
{"type":"message","id":"09ff2e53","parentId":"c179659d","timestamp":"2026-09-01T07:24:12.715Z","message":{"role":"toolResult","toolCallId":"call_EuGGDUapUe4xRtOzJd2irU3G|fc_046f5546d6e20d23016a967d95825087d095ce35ec9060483f","toolName":"bash","content":[{"type":"text","text":"c4bc83bf5153f47760c794815769f594a2df35135314c9a7ac3678de792d7112  tests/gateway/test_nutrition_weekly_topic59_maintenance.py\ne79329824051ca336365c3622cfdab0c2a4d36fe53e2ee55cea6753ceac6d28a  tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\nb1a400491526427abc8236bb1114765260edeaf2a7b56bf7968e6c5d20201d56  tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n5dbc476bf1cb7246392dddf96ba02ee48fddc5c0b7cf6c39f0cecc06eb73aaac  tests/gateway/test_nutrition_weekly_operations_topic59.py\n0e3570a667adcceea3099910550dce888daccc556a466b8c40c8af75a122697c  tests/gateway/test_nutrition_weekly_operations_topic59_failures.py\n1eb4967c527c310d3a0333973cf911e48513afc06dc79793a75f2db051e7994e  tests/gateway/test_nutrition_weekly_operations_topic59_r2.py\n1d87c3f528f2af12b143e0b31958f7d54ebc6e71113294b53dfe31c270eaec30  tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py\n358d9365895c4f7caddf0104d47f734ccf78b00eab094f527574423b51f6090d  tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py\nea943f130b7c923e678eb8066ae20c01997fb124d9351d92f96be45b9b3032d8  tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py\na50d4046ffe5236f750ef4237ef8068657a282dbe250c05192c876c4911c6abc  tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py\nb9241d89c96293d9625a504f546b1c44ecfb58cabe6b2088f8fec314ea0ae673  tests/cron/test_physique_inline_card.py\nc45b784365292c6572bcab3844dd46b9353f2f5197332ff6850f3752f3eb9b9a  tests/cron/test_scheduler.py\n"}],"isError":false,"timestamp":1788247452715}}
{"type":"message","id":"815fe080","parentId":"09ff2e53","timestamp":"2026-09-01T07:24:12.715Z","message":{"role":"toolResult","toolCallId":"call_VcYVGu604sGWxr35e84j1ov6|fc_046f5546d6e20d23016a967d95826087d0a216679edc75b26b","toolName":"bash","content":[{"type":"text","text":"854\ngateway/platforms/nutrition_weekly_maintenance_contract.py 137\ngateway/platforms/nutrition_weekly_maintenance_io.py 99\ngateway/platforms/nutrition_weekly_maintenance_store.py 208\ngateway/platforms/nutrition_weekly_operations.py 146\ngateway/platforms/nutrition_weekly_dispatch_result.py 14\ngateway/platforms/nutrition_weekly_dispatcher.py 250\n"}],"isError":false,"timestamp":1788247452715}}
{"type":"message","id":"bd6c6092","parentId":"815fe080","timestamp":"2026-09-01T07:25:07.275Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Verifying source integrity and blockers**\n\n**Identifying receipt hash mismatches and blockers**\n\n**Preparing final evidence with hashes**","startedAt":1788247458455,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967da2603887d09a86f40ec8ce9f22\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln21zMUw_mgtXoe9ifKJburPsEwTh-9ef0Py1F27MQrNwXCnCcfnCAVJjgvaGTT1UwVVEMeUo6xmbZsTw_OBH7pRxvvOGi87d5srBUQ0GHqPrEcuZsCqM92HUpxl9qC_exdQm_dUJbn5kFWkREuCz0eKyi4SQq6ooiFRSxGsFALKu87fWVvlgqXwhAf-OjhYo19J2M9UL1WzSWRyLu5a38g9nXyzpxyPD_qxuQgF_K_j9jwp6xOtkWKZEHVkHsc6tNJeFzu9QOHrxF49RpkrOmoRx0f7DZI-NM8wVk3l8z2GCEGttVRE870ECz-poGNdIPWPj8jtQy4EpXycsYb5yIVYFaM3erEPPohUyvxrttea0-oTkVCqauQzbeZY_VkKXvx_IK0aNY19T6lOzSZqKJefMMpbYQMrXwFoJ7mS3HpFRWWwij8MxiDtUbCO8GwGJInJwM2_PPLSRJ6IX0pcIL4-jhPrdfMEKDx5TOjuexEDD7LWMIc_UmqFGz7dhdKLVlw__OqBTpRIYaBpuupllyiszaiQM0zPDXGc3_Dwz_o64Uhk1B0lKfQhR5kN358bcTl4xDxpsRX85Mr2tS465oNv7-kjJy4cLp5iFJ9T2hy7SyAXbTOihP1ZpFoYpf8t5oJ78L2ptT2ofDHZYlitTro8__v190fLEWaVzAxFxl4cTgvzuSwPj0U7BF1qkbIDFYGzgdioRu249th_y-JiuAQ1YTv-uZwmYun4Sj4zUye2gueAt_Kgo3FSQvBBglUs0YgsXsZdvQz-3KItIvqYQNSJpok3gLkjxbGPw-_FSG0ldTRi9R4MVIfpKMW20iw7ujnMuWeqAqeSaRr2rr7x5Tcgow_WjPa4xyzJ0tE4PU8mLrmDUd7WdKUyX5S4mu3CtEHcKtkSSk-5UCcwVV1jm7urPYDwhiUEMdcmSw3DSBlkVMpMj7athAvWuFXLch9M8aY0G2oHYNuhqEvZLVbaeEAiIEOWEcwY3YpmKZvqgETepXPm8A-uuNQNgglPYpzpMnwOiefDQrAMKA3P3DkI9WXBme38I7fGcKzBrCENTzRMX0yZiwYvu-hu-iursNKfhcHGl1O_uP6r-obCVWT1H98-603kcadaEq-n6iV4tOY3rFGfUiGVLkzd6UNevrBSnbDxm7EoIWA13ahikrOtzgu4OuE6lWkkDzCwbs0zdClc8YsN5W0hqs3X3En1sqY4Umpgbd50BV0Jm_tIIpylZJJifuHTsAGtGVGL8gtRCh6EI_yQsEEEnAXUWTPbF6qdUSApJlfBg-hY4TO7A-2Fx2pLaPiklhRN521IZXxkm87qFN4WIcPgrcUe_z8ghXEha8ARZxSbLQGA2-44l2Ap7T900sRh99GWCi1LK3NDEuhLOE2KtbuhSbpA8AI6zA1FqogGta_H7ftYRmzwWojGg8dokZtObMnW-FJREki7_dAefqmcwIqjP7uIatzkG7nuhxmoUFn7ZcxzXgQ2U8Cbp6phew3vdx__E_aNRSZCG26lvVbNCA0oqeOJMtgtPm1al4e_ZQ9TaVvFF6fe_WBz9PzFhN3Gd4xzRAuHPaYnZUsa35fIofSbYi61-cSkgQwV3xexkXkCJ1sh2FMU6IIAsZLZ7gjD93WVDx34X1YsJNcb4RFD1vglA2oHPkTMckOm0ugVzgt7VsEi1zwm3lkrTgI6Z9XPjVM7TRMHV8esLSjVc-dMv9Al2AYfMc--0bd0N7YZj7J63PBwtPde1b0J78THiJ7Ti4TrfmmEs-aB42SiuW5BMjJyIpwd8ZKG_y0db17jUMWTPohiwGAoYoEdYVQ6kUqWNmYwJptKDP_a-CJct7n5h4L39UF3c9-_5xb1KrTrsv16XX27xvyrL9DxS_ibHIPhbiYroSKuE5V_z8QuwmB2857LqIXFvHWMfHx4lKPva7JyQ2M0jrc-zX89JRv5AMmQuUjnPphDl1AeBU71NbTzu638rGs7lygulFbEdzsqQA_se6Ti5glkoYkmaOM9A0X1luTbq54TLM30tYSD5ciOAZpc1By9jfV5CXXEbwbajENG5TkpphSqvOdIijaFNPeGBiLQt_iBTp1tJF6aHPu17DN6U_CyLLC-yJmjMk04lz9SnCO_zZj-X21fKR-y2lyQ2tSMGpepXT8H5sdE3IRsCh3UTI748WPHcRuEHK7KhoG1I6kjL611Ndd7aaVFO9yRqvzoqT7rWRvnBZYgY9G62u2lQWcrE2xWm2NuaX5v4J4F3sPLUmAJHHtifBMD3WrpO0czzDODiLa52He0sfhN7X6GfsSBlnQKZJE1-QoqteRlR9647HEF0wTtWdl9w-YSuI5QbnJN7Et58VK-O083QL8xsyjUg0A0c6wGOmLsOFlSYlI-y39nOSbkXgVZyXf-an4rrmiXJOTkBb5WMuh_z-f8Ssr76rM5DCykMiqVvgBFBDyLgdehGEEcjNzr5xPHt1eNVRjWz9JskxfAmzWyCnjGXrGw-6nrEssUv52lGjni4W-rFdBKUxNaTGonN_Gifo5nafRYmvPtA0QlixGAOw7DuEN_BAEFVc6Q0krCuPGPacF5peiFkTnngJJUdqhIQD-RV2fCNUuYpHUa571XjfeZvuLjT2KZYnFOx0-yqnWKYBSVCEWiIiScXkQPyQqevYrGB5fppJgQTbwmX3HeBJq3S_NVQoB-L9cC3TSWWzaXgV_tCEcM3cRgf-IM4q2Rg-OXQ8IVs6SxSGxTcsYkAZ5J5xgfdGlHuitH7ZXrPpqKrijbZvI-IeJatHlsHW3AeFvlDWDMDvFbFo_ODg5EM0D1H0uJq09Wska78eRqdE9K3UVS6IKwbrTtyybCHAxClbxGuNhU4SEEX5v796chAHtdblRncMOEOaPoQcWV_75cyqOXSiVk9qoy882stmx9Http14boXCFbTYtj1a-wyg4_XxLrtsnJg1AionlbW7O54oDRffE97Rw12umvk1vjW8ut0iwJvhyfpQivNYPujciFltHXhagUSrNHrjAOs2TxidKF58qIG9qyU1s9CTg41CCVRznj6jGdmSRGdkY95wXls3nAjTQ-X_2yfvHdLSdPMTw6JKL0k9GWNqSLDenY1om_vgrtuuWALHvWQ6Fta7QC_b9AIzWicyyJVEAhejzGaCgDBJDxauT-SjqzUmtxzylbzjviAfqYY2QQqtwVJU_jLik2jHeX-ba_SADLvkOTX3K02bTZ5Q_zNVdHu0FLFu7qF8VnaR0CDSZFhGaW8q2xqKFDkUokLY1v_hT6TrdI74SGg12LHCwnkDNx0H6lQYh3Nt-7oTUaq_qAuDOaYyS6bL3SbgposEJVPRSnf4nAYsRm3FOMfJzSI8aquXCHDETp5oXAtbcCaE_LL8vkj5Y2QpDj0odaDqDY4ngQ-QKKiKc5uMy_x7qE51i2Wlrq-uDN2zqiNms-tLWLSgS6CTNV5PO3MA7oqpSbaTJanaT-jA1q6ASHcFDH8bdSw0jhlWPucEiE8XxmPDyrQgyaqlAJY5Q-OapXlH8jqSr3SLcAmyycrEDoTm-gB3NYuCYJG2kDyy_CyaiV1nU4IrVS3CiLh9E3kS228mihxrybuR3uMz5p2e_V8543exSL7ddBPbgLuPzh6GZThCfb_OXEMVpLFDNVrRO86AzQRj1VGrtsx7Gobkk95EKOZIhdvA8fvjI3EIkaQlV_diS2avtPH41blPIRT7D-a-B3gM1KVdsfJt4gotWu21riVt-M5CTB_2rm68m_IHmpGoEEtRzb4HHfIzePudvYngYYbRzyippEGomsmQM87TAwhnX_8DKt5om1Hcrl0wmYlVJlzDCOPDvxVd6hkLe0Mnz7Ec3QNrYN3Rnm0uqY808jQQJSoSsh4m8PdhpMKwFGX4dLpQw2cFMWsJL9jqWDSiuPpz5PhPWZqCyCN0LWsjaSb4gt0pzsNSpJYupY5TKOz7FUfD7CLtHzXYt2rpNYkisXyOJuuOqG-p2JddLLdWqlf-KkFvn-Ldwh9VBMT_uQ0k4YniWY1OG2vq2I-9TvvjT4r7IS3nYvB82GAUM3bSY9PpjBzYvSL82LjYX8wMK2g1wqVRmE6a4aouTieV26llkxY1Boajc-7H14Z8pCflhiwQc3Qy87tsPgtt4svpE2u6SvWfaBoTjaY3-lhNYdozWhj2gsCmLjRWx9eAouaPglSUxbU2H9ZgnLYuUxoHkF-ylJtKvCqDX6fPAupR9nXVLY29Fs1AE6JumJ9t7k6ixJrxk-ob5WvgjLTATjJUr-S3O8qRCeo0X5GD8Z7eign3Jl3lu_mm1czK-e_b2bn--p5QlWezxrlJKR8f7G4A-aEKH0BnSPd0zoJOtpcZIHgGoOHU--Pnl3vcITgPPPnZUtRraWlORhACWu4nKUzm0SqHAY0wL2RsvvI3CEDH2cSjVo6QPO6M6oMF0dANW-G3QGbS3v-ak8_auT9qlbFTraf1Pk2-fo7T-tPU0ma-hHjy1ZXq9qO4A2319b7wsBwl-02q7sgEXDI3MytNxDeJNonn6nc_QxdVdp7eXObShSF9YkcWEwk8PtJV54pkWlKvY4v8dUfjgfaJQiNJ5FJWz16-32s_H48Ej4jaIV5BvDbnkVVOu7ZC0fdfSFoI2YX1NbxKY4QzOEWZtPnrSNMrsBMRHvHOk8UIuCrJaGda9T5jS9SUjTY5MRbnXb81Tct9JHOrww5MN1tUAxGQKw6wLtvmor8v0iDJizux_1u0j3eWCsdsV6OY0MDwrdXSTdDDgO7DShZfeYEugP9aAdDBKxhpMjskwktdroLP2q4LGHrwoy7q2fzlMLvrx2_8aXfXQCECGugoWb8en4-WRTbLw9Vci-6bXjEJwnbRD8bxJQDZaJkfzEdqVgBz2mEbsybRSRRW5FnPgz5_adeXzHJcFvVevyKh0=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Verifying source integrity and blockers**\"},{\"type\":\"summary_text\",\"text\":\"**Identifying receipt hash mismatches and blockers**\"},{\"type\":\"summary_text\",\"text\":\"**Preparing final evidence with hashes**\"}]}","endedAt":1788247477476},{"type":"thinking","thinking":"**Planning timestamp formatting in bash**","startedAt":1788247477479,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967db550d487d099e02deac18439c9\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln224mTAhuieO8BCA1mUjmO6PdWgvsGQfj5-lsRCN3u5xcyef8lFxzczhOC2y3-Q22JX8PI01H97WKzIWuKqiI1uoJeBAg7tQAYTRrkCz1mPLygNdrv0s3jFdC6NrNd33RlDP2u_FU2zo0ajhsNRJ6r3WbDCo9o-dCZlZG2ffMVAuB-PWE_cK4WP9mj9iywVcRr8Y3XKCCFeSFiDaQUMPSJUxIlw1v5plvhqP1QbjvQTJvADwYRD9RrMm4PbI9f-hE9dTF3GPy6Sxq8cZTVPcPWhEuWd9xGAZkF9SYruo7V8rqZbv-NJx8SdHSULiQypu9d0TgAVfxRj4VvrVWAAysWV4bQkbVtUBWQao2tnssMja9z_HNbyq-Jgu0RE8y1PxXXu01v4ilonDYZZ6SbTeOhbhKHPqxaUlEYtXrDQukl5C8wsXgRES_zeesQbef2YMzVxs9TJEJSsvD_tW3BrJkjuuGSDw0H7-orx4UCBss2vF_ap6i3ZHB_hikCrPI1EOX4sgPQ4Ga6PbfbW7_a5k94TPmZCZTtR6sPYoV9VOiy-47FjKwlQ2FzIjGrVdr-QZctEZETe4Lw4Mhbq4z63GtgtiQcriZ6EarjUGRKQ-QqEKHEbLm3zNZZ6Pf3E2XOc6MR_gJ9LlOX57chvCGVWqeKKjHL1vnaK9I2W6PPd1HiGgot4RgIU-fNC4fMtMvV3O_mqIhGIazVKZD2fFRxoy46R8mBCCVjVK6GzKzcSxyp0ednHAaoJpIJ5UNJ5QjH__nSIpc3vRWSGIPPt5Iv5JXP0f7SaIu-H5o0ts7t-pgDTs5QYzNg2v3jWZJ5eGQZR0zuwN0dkbaTmOsChJ4jLJsWGXljmjNyDI_ruET86cVpjqsTuvlVS9TRojv7qfm_vF3mOXs7iEwv3XmOpg3M4eJPKo25BHrEvUc2X1kbZS06ychUVFDshnZUGoj8nCVN2kV9QSa7BwQAa1J8dY_Lv4QLKuOndU8_bzMtKsPNjuOBc05VvsFo7TTjugxXrayVdfFBsvpktCidYXPQnK9iq-dcGSGCQGcXvpxTViCXCJCIF7lAZ9k-_zx0oflMMRqsIE8qv2Rz4mofUrxPS-TTGPmwA9_OlUeIEcO7ihJ2aHsfJ4OkF7SStqNVm4ryTI5AXjaRgEHBkcs3kowTSw0Wd-7_qX8FwumbfAMFEXUNlXK3lv6EY6ypdKnqgc-393rFPB6o-E9C7-3aReLLWdJjXK2MXv3oQWiZ8dXC8My2umFzFFfxoXr7kM5r2OzUBtk23Ix-pVa8uDau0FYYDMGvhfu2KMjZ-2lv2W0qzf5fRaw1k4LZhJEzBPXJfm-dPH5jOongAXOYCtEAhRmZJjDWLMEMy6ARoiYwkPiEWIG_WlkdA0vImyzyJAMAXbvaNMZcXE4GX18FVyouI-nEvmc1fIXJetSIhcftMIErKKiA7k3G58YU=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning timestamp formatting in bash**\"}]}","endedAt":1788247478762},{"type":"text","text":"Adversarial execution found a real fail-open filesystem-contract defect: a maintenance lock with the wrong profile group is accepted and the hold is consumed successfully. The strict DoneClaim therefore cannot be confirmed; I’m sealing the evidence with the independent repro, the incomplete receipt/test qualification findings, and cleanup proof.","textSignature":"{\"v\":1,\"id\":\"msg_046f5546d6e20d23016a967db6a3a487d0898676f08585817d\",\"phase\":\"commentary\"}"},{"type":"toolCall","id":"call_UbmZkl3Stw09BlSiEOROxARH|fc_046f5546d6e20d23016a967dd2cdf487d0807f3d90d5740395","name":"bash","arguments":{"command":"rm -f /tmp/r71b_adversarial_matrix.py /tmp/r71b_manual_bridge.py; test ! -e /tmp/r71b_adversarial_matrix.py && test ! -e /tmp/r71b_manual_bridge.py && echo TEMP_CLEAN","timeout":20}},{"type":"toolCall","id":"call_i5lDWCYCkehfqLmmgciyTCBg|fc_046f5546d6e20d23016a967dd2ce0487d09b0ac78d261ee27c","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && sha256sum gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py cron/physique_inline_card.py cron/scheduler.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py","timeout":20}},{"type":"toolCall","id":"call_yxhGiRVxJ6qeqcakn4UV6omm|fc_046f5546d6e20d23016a967dd2ce0c87d09274c033ef1b505a","name":"bash","arguments":{"command":"for p in '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-candidate' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-transaction-preseal-v15-runtime-authority-r71b-maintenance' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/preflight-v15-runtime-authority-r71b-maintenance' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-authorization-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-executions-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance' '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-rehearsal'; do test ! -e \"$p\" && test ! -L \"$p\" || { echo \"PRESENT $p\"; exit 1; }; done; echo PACKAGE_LIVE_ROOTS_UNTOUCHED_ABSENT","timeout":20}},{"type":"toolCall","id":"call_KkmhevyG7SiGEC3vyWoqR3KX|fc_046f5546d6e20d23016a967dd2ce1087d0bf2971a3de573744","name":"bash","arguments":{"command":"date -Iseconds","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":179291,"output":1178,"cacheRead":0,"cacheWrite":0,"reasoning":553,"totalTokens":180469,"cost":{"input":0.8964550000000001,"output":0.03534,"cacheRead":0,"cacheWrite":0,"total":0.9317950000000002}},"stopReason":"toolUse","timestamp":1788247452751,"diagnostics":[{"type":"provider_transport_failure","timestamp":1788247452784,"error":{"name":"Error","message":"WebSocket error","stack":"Error: WebSocket error\n    at extractWebSocketError (file:///home/cube/.hermes/node/lib/node_modules/@code-yeongyu/senpi/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js:962:12)\n    at WebSocket.onError (file:///home/cube/.hermes/node/lib/node_modules/@code-yeongyu/senpi/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js:1041:18)\n    at [nodejs.internal.kHybridDispatch] (node:internal/event_target:843:20)\n    at WebSocket.dispatchEvent (node:internal/event_target:776:26)\n    at fireEvent (/home/cube/.hermes/node/lib/node_modules/@code-yeongyu/senpi/node_modules/undici/lib/web/websocket/util.js:69:10)\n    at #onSocketClose (/home/cube/.hermes/node/lib/node_modules/@code-yeongyu/senpi/node_modules/undici/lib/web/websocket/websocket.js:630:7)\n    at TLSSocket.onSocketClose (/home/cube/.hermes/node/lib/node_modules/@code-yeongyu/senpi/node_modules/undici/lib/web/websocket/websocket.js:99:45)\n    at TLSSocket.emit (node:events:521:24)\n    at node:net:351:12\n    at TCP.done (node:internal/tls/wrap:752:7)"},"details":{"configuredTransport":"auto","fallbackTransport":"sse","eventsEmitted":false,"phase":"before_message_stream_start","requestBytes":759932}}],"responseId":"resp_046f5546d6e20d23016a967d9d95d487d09b7be276dac85fd5","rawStopReason":"completed"}}
{"type":"message","id":"e5686def","parentId":"bd6c6092","timestamp":"2026-09-01T07:25:07.354Z","message":{"role":"toolResult","toolCallId":"call_UbmZkl3Stw09BlSiEOROxARH|fc_046f5546d6e20d23016a967dd2cdf487d0807f3d90d5740395","toolName":"bash","content":[{"type":"text","text":"TEMP_CLEAN\n"}],"isError":false,"timestamp":1788247507354}}
{"type":"message","id":"3c91a776","parentId":"e5686def","timestamp":"2026-09-01T07:25:07.354Z","message":{"role":"toolResult","toolCallId":"call_i5lDWCYCkehfqLmmgciyTCBg|fc_046f5546d6e20d23016a967dd2ce0487d09b0ac78d261ee27c","toolName":"bash","content":[{"type":"text","text":"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619  gateway/platforms/nutrition_weekly_maintenance_contract.py\n9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d  gateway/platforms/nutrition_weekly_maintenance_io.py\n8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542  gateway/platforms/nutrition_weekly_maintenance_store.py\nb0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e  gateway/platforms/nutrition_weekly_operations.py\n3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2  gateway/platforms/nutrition_weekly_dispatch_result.py\n9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b  gateway/platforms/nutrition_weekly_dispatcher.py\n9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2  cron/physique_inline_card.py\n09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95  cron/scheduler.py\nc75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6  gateway/platforms/nutrition_weekly_operations_publication_contract.py\n6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88  gateway/platforms/telegram_weekly_host_dispatch.py\n5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7  gateway/platforms/telegram.py\n"}],"isError":false,"timestamp":1788247507354}}
{"type":"message","id":"d4c9cab2","parentId":"3c91a776","timestamp":"2026-09-01T07:25:07.354Z","message":{"role":"toolResult","toolCallId":"call_yxhGiRVxJ6qeqcakn4UV6omm|fc_046f5546d6e20d23016a967dd2ce0c87d09274c033ef1b505a","toolName":"bash","content":[{"type":"text","text":"PACKAGE_LIVE_ROOTS_UNTOUCHED_ABSENT\n"}],"isError":false,"timestamp":1788247507354}}
{"type":"message","id":"ab9bd648","parentId":"d4c9cab2","timestamp":"2026-09-01T07:25:07.354Z","message":{"role":"toolResult","toolCallId":"call_KkmhevyG7SiGEC3vyWoqR3KX|fc_046f5546d6e20d23016a967dd2ce1087d0bf2971a3de573744","toolName":"bash","content":[{"type":"text","text":"2026-09-01T16:25:07+09:00\n"}],"isError":false,"timestamp":1788247507354}}
{"type":"message","id":"41e11d68","parentId":"ab9bd648","timestamp":"2026-09-01T07:27:45.941Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Verifying evidence JSON and LSP test counts**\n\n**Confirming test coverage for UID/GID scenarios**","startedAt":1788247511883,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967dd75ddc87d08b0b1689763cae82\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln3pX8N4LrDU2VVmaAA2qpaZl1i2fMuRAXrliFKSeeK-I-26kjQuW8smXLyB1P7r50BRHMzUdNJ61Q3b1z4hk0B9htv5oV-73c-mjYYScIurNmWeJNhJm6UuN1dB8M0D0kEIn7P300qgQJDebFbUHCvC1kKKQzTNP2xB86xtgDNFXkCeMqXk51dGQsNnk_pcl8pX1nl3rlggWL4E_dm7eV2hFj01NEZ6L_3TkHJta4eYJeju_7BocSjnyd7_f8WMsfg4_ymJBk04Z11Jt7jmLFaIg7y1e3ipM4bSoIls6G75BCe2FPm1UfmaMuu8m7QGVEbFc6kBuRV-sRuHOm15IGs-fPA7x4nzkYXHgpInMZFGP8kCMjpMcqGWDJ4F9PJaXIKRBs-OZLnWnNs6mfHtk6b1N67OdgkI-bms8D8mEieMl_2U9G3maHFnWvYQ-l8H6WVVwaIlnorome47Kxr8cenZgNamln0xCrRuuubDN0C-812Z8XiBwB8iU3wABCf1DUFEJCr8CdEdSynrI3RVhWNTgymhG1vZ0aBVHzIsqRZBhbe0w0zhbRn08jq7MlYR-FvTE67jwy3pwFVD9B4CBxod0m6n9utIcNg9Q2DUxqE647NWLCzeZRMlWdeOwuRTmMf_U8Z90wzuwDip9joxh6uicV_165CBD3nYNs8IPL0OQGXgKipONmxzj61mwRmri4M1M052Ou9hVHukdmpXlErl4ghCgDq9iWBysdUC6O7zmhY4ytSuk3FCPhl7Y6S1_GHBJfwqOyKAtGHYc99tRmlbEZqX-qjd4fV0DeM_KRC8962qbMzXw_HmwKJpVgUXG82UBLF8zm57urZz_ed2Pni9C2H939V9KyaC52dBSKk6aLEF6UQa88OqUtTXGTPQPCvH-BCpjKzPhxygSyFnb2eUb00uEBAdqFtOsSQxlB8qiurmLZIS8PYnKcf2ZXQQVoPUxAN88brf4p_NFuj2O_9mqnA9Pn7DBsgQWVWzQeMCoGA1hF2rimFa-kL7lDp0rlHTPQuZLggvcCgMyAW3RimcVSaV_OhuHYVmseRgJ-SeffTsyKgA_o6FaSn5K6WKABJYfmsUdS2yzA2vwe0U2X4XGAQ-c4ut13nfkaDl5MVJwZHlV5kSBu5Z-q8uLEAlJ9DEAeT0caDxTo3ImZiWJXUfL7xRoPQmWJ449g81TEZl08xyq_1IxT080pYUFAQP5ezDu-aFl346n1nq7mEtTqb8s8ebXOFzBgGR8FgQt2gzqR9gxGAjAfFHODjmr3dvGCusxGasJKtqVl-9TCRRbC24aeCkJiqGWSnJziBmEiKkN5lJXqUOf1nIeYI9FgAoG3IqgZl1Vqu1cHArlSfSMt9g9rz7jOrlOoCgdkOHc9kg8ntEQ82spp3r1iQwrknsG2TkDZNYM_I71wnRefOgyvADgf0TzBvE3Fr4_mkZqB5LD-Ce9xesJz48m0qBQdOBNdc4gc5kWrY-R9nsBy6PnKzMnjU4wNrSYas0WMVet58nC94B3sZI65nr9Hg_Qjy2e17zwelrHghaPVLyG0iL9k_Wg21x8m87TJVTDGqa1eOFRxqrSMqgBQjvS4WSCAsn2aFylEqV6MKS1o5pgTDbMsRR-qCzyRYKixu-9c1xhbEYuPHH_TvCO1uJ9sWQvMtH8PjRT3Qtz-XjQH3CDwW7BaMqCE6pRXznjT17BvHid2uKg7zadTpglW1oUKbXcvl3ra8-fi46__otIrGvqsEuqvD8_gqDKsPkQRee4y5De712H_eXXmu26ne1qgQNkPuLFNUkf8cVeIAXG6OxrgMsHUXR9R7uqW2RUOL02DBwI15NMAdqn-so5K5JDU1N8GuXVF3R7RAi4tRIkr2X-kXm4Jhn3qwMihmJKkxblTwAhez5muCpHGbWWkVVyxft_RiIC0oE_HVwHtvzKk8KkYyaiOl23LemjS2KhKoekcZl0E7x67LWR4aLVbpAtx-Dk3t7IPt9s_Ln1mlL7wqBr0gDw6AdA19igLbEidF84_Ei3N3wl2J-DAGNrOmn0eNBZCn3l8mfEeLLsMmnIq8KlQDzLHzL3-hq0NJQ5g6nra1_sV6NmVIh6wYia1gfXAYiktP8l7XEqmF5fSUAejCPmwYKq5dAKIRhFafHe0IJUtxcEaX_5JzI-aYBLKNYa-KEJnzJHY6C8FEG9oqshrwlrIQPQEfCA5uVeAp4DTy29zYRFmnbWesVi1BUNOe-Cagn3VV33G9ZZxqxjHuaOkYzMKEIwFSuIjlqd2zk49r-00Oj1JmthJMjvVawQ3MibLPcmusZX922bklh5W7fTDV_0ofSlunErg0BiiNiNWAltH7_Lk5txZJT1TFX2ygtJdQqXvhCR9y2D9D9sM3AhnozVRjPWdBgtCV95nvWG5qYn8nfOuCaonZkVEVl_yB9jn3j8VjvAxoWdW0zzFTgeDPN6CqKjFPh7ZMmJTTUNRWBQ-CmUZB8HUEnEbYAk1dwlv7aB7jKEglR5T6KmATRe7euF9f09frL81Yjy6rQy12QV5Yj91j0XvtjzCpCPlXgdLbtbUUPYMNgNBkU99yl1rKNYml0vjvP6oGvpFlr6gU7upIDMSnoOGJ7iaYYtEvsPek_7dO7bCUZl_LsWFsgiHnK17t0BXDYwmXOkAZpZX-1MeYDoJz-urUlFfaaMwRoo_9BZEfJmPJrdO8rHWmwbdch4FmhlJUlujDixfWw1iRozoIWE6fO4vSQbb-NhriSPZkRW3gVSxVpDBo0w7Ikaqb4v4QHXPi6UTbaDuiwWGVajPmYR8aBG5njOwUG0nwV2Ey1Had-0qoAh-HgTujZGvUHQDyNgibHbIfyKEPgrbQLwvvibTKTuOtJvTKdkmrK9dBQmwhYO2IMfWLC6t4V3louDD3bUOxaZW351CO79Xs_QStJLo1naGEJgtXWxhTZPk0B2-Rf7kXCszeyL-ndNHn--Q8qWfNv14tqubvW4Xp3mMGMh1Dpf3FBLtdG-3ambHGDOVZDAmBZ6h1lPMXNv_U0dnl9vYK0k883O3o2-LC6hgOOFl2HH0DlFj72naG0BBHUS9TSEiz-cpO89AAz-hiJC-Ba7-9N1hhUfy3hyTs4i31iZqIWxXtxzy-o2AsZa8qv1I7-5YuAc3ciFyhIa0Ihb3Gq-aYhLboEoWNyE2lwZsrwplY5nFJxiyXAp-jvBw5ReWCHM1CJ2DPlaxhi6bTf6VXIcx_99nc82CJXBc6YpDfTmnmnwfRoo62hFLgBvfK33lPl13gWVIkEzEQJMIFM8qCllsagHa9_LqVdHOUayIxgeFOCEcq7PVetcZKmp3OL4kTxnndKoOFUBL-6Pyg_Ot4GxNayrVP08hPxyWRQ4N9YdW4cvwGxOQb0pRbPtZQRXaCz0QP7cH4mxkFzjLYuo_0SkemzRI5FrKDpDXMxfhZUuRQUTRMSyk-1WiqawKE6BYdF5xhY_chLJgBAcUAs4gGswzgIr8x23JvXjwAgWo5dqVczN5Ehv_C_Ue2t4TU1vtQ0dqNW-yKCG849khu3x92NGOPr2INWmrs6xv3k9rvI16ndg5ksmrBY2K0vcRCr5VC4jpkw\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Verifying evidence JSON and LSP test counts**\"},{\"type\":\"summary_text\",\"text\":\"**Confirming test coverage for UID/GID scenarios**\"}]}","endedAt":1788247530622},{"type":"toolCall","id":"call_EIKgC0EE09FmdIc6fTLMolRk|fc_046f5546d6e20d23016a967de9834087d09d4bf83c170accf3","name":"write","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json","content":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-adversarial-v1\",\n  \"task_id\": \"st_01a05bd2\",\n  \"reviewed_claim_task_id\": \"st_01a05bc2\",\n  \"captured_at\": \"2026-09-01T16:25:07+09:00\",\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"verdict\": \"needs-fix\",\n  \"confidence\": 0.99,\n  \"blocker_count\": 4,\n  \"blockers\": [\n    {\n      \"code\": \"MAINTENANCE_LOCK_WRONG_GID_ACCEPTED\",\n      \"severity\": \"contract_blocker\",\n      \"finding\": \"A maintenance.lock owned by the effective UID but by gid 125 instead of the profile gid 1000 is accepted; the gate returns noop_maintenance and consumes the hold. The contract requires lock to be profile-owned and every wrong owner/group case to fail closed.\",\n      \"source_cause\": \"Topic59MaintenanceGate._evaluate_locked calls _open_file(directory_fd, 'maintenance.lock', 0o600) without the profile gid. nutrition_weekly_maintenance_io.open_file validates gid only when a gid argument is supplied.\",\n      \"repro\": {\n        \"control\": {\n          \"case\": \"hold_wrong_gid\",\n          \"file_gid\": 125,\n          \"profile_gid\": 1000,\n          \"decision\": \"deny\",\n          \"reason\": \"filesystem_contract\"\n        },\n        \"failure\": {\n          \"case\": \"lock_wrong_gid\",\n          \"file_gid\": 125,\n          \"profile_gid\": 1000,\n          \"decision\": \"noop_maintenance\",\n          \"reason\": null\n        }\n      },\n      \"required_fix\": \"Validate maintenance.lock against the profile uid and gid under the same openat/no-follow contract as active, consuming, and audit files, and add a deterministic regression test.\"\n    },\n    {\n      \"code\": \"RECEIPT_HASH_INVENTORY_INCOMPLETE\",\n      \"severity\": \"strict_evidence_blocker\",\n      \"finding\": \"All eight hashes present in the DoneClaim receipt match, but the receipt hashes no tests and omits three propagation files that were modified for this runtime. Therefore the actual changed runtime/test set cannot be hash-matched to the receipt as required.\",\n      \"omitted_runtime_files\": {\n        \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\": \"c75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6\",\n        \"gateway/platforms/telegram_weekly_host_dispatch.py\": \"6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88\",\n        \"gateway/platforms/telegram.py\": \"5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7\"\n      },\n      \"test_hashes_recorded_by_this_review\": {\n        \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\": \"c4bc83bf5153f47760c794815769f594a2df35135314c9a7ac3678de792d7112\",\n        \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\": \"e79329824051ca336365c3622cfdab0c2a4d36fe53e2ee55cea6753ceac6d28a\",\n        \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\": \"b1a400491526427abc8236bb1114765260edeaf2a7b56bf7968e6c5d20201d56\",\n        \"tests/gateway/test_nutrition_weekly_operations_topic59.py\": \"5dbc476bf1cb7246392dddf96ba02ee48fddc5c0b7cf6c39f0cecc06eb73aaac\",\n        \"tests/gateway/test_nutrition_weekly_operations_topic59_failures.py\": \"0e3570a667adcceea3099910550dce888daccc556a466b8c40c8af75a122697c\",\n        \"tests/gateway/test_nutrition_weekly_operations_topic59_r2.py\": \"1eb4967c527c310d3a0333973cf911e48513afc06dc79793a75f2db051e7994e\",\n        \"tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py\": \"1d87c3f528f2af12b143e0b31958f7d54ebc6e71113294b53dfe31c270eaec30\",\n        \"tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py\": \"358d9365895c4f7caddf0104d47f734ccf78b00eab094f527574423b51f6090d\",\n        \"tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py\": \"ea943f130b7c923e678eb8066ae20c01997fb124d9351d92f96be45b9b3032d8\",\n        \"tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py\": \"a50d4046ffe5236f750ef4237ef8068657a282dbe250c05192c876c4911c6abc\",\n        \"tests/cron/test_physique_inline_card.py\": \"b9241d89c96293d9625a504f546b1c44ecfb58cabe6b2088f8fec314ea0ae673\",\n        \"tests/cron/test_scheduler.py\": \"c45b784365292c6572bcab3844dd46b9353f2f5197332ff6850f3752f3eb9b9a\"\n      }\n    },\n    {\n      \"code\": \"DONECLAIM_NEGATIVE_MATRIX_NOT_IN_TEST_SUITE\",\n      \"severity\": \"strict_qualification_blocker\",\n      \"finding\": \"The actual new failure test file contains one case only: artifact without credential. The implementation session transcript confirms no canonical JSON, boundary hash, time, replay, binding, file-kind, mode, nlink, symlink, hardlink, owner/group, audit-tamper, or partial-state matrix was added, despite the DoneClaim describing the maintenance runtime as qualified.\",\n      \"independent_reproduction\": {\n        \"matrix_rejects_passed\": 29,\n        \"matrix_rejects_total\": 29,\n        \"claim_calls\": 0,\n        \"send_calls\": 0,\n        \"edit_calls\": 0,\n        \"network_calls\": 0,\n        \"covered\": [\n          \"authority noncanonical/malformed/empty/oversized/extra-field/wrong-hold-hash\",\n          \"hold noncanonical\",\n          \"early/expired/replayed\",\n          \"wrong candidate/config/route/customer/card-slot/day\",\n          \"hold and lock symlink/hardlink/wrong-mode/FIFO\",\n          \"audit symlink\",\n          \"maintenance-directory symlink\",\n          \"simultaneous active+consuming\",\n          \"partial atomic temp\",\n          \"artifact without credential\"\n        ],\n        \"separate_failure\": \"The wrong-gid lock case did not reject and is blocker MAINTENANCE_LOCK_WRONG_GID_ACCEPTED.\"\n      },\n      \"required_fix\": \"Land deterministic source tests for the full matrix, including the discovered wrong-gid lock regression, rather than relying on an unrecorded manual oracle.\"\n    },\n    {\n      \"code\": \"CHANGED_TEST_DIAGNOSTICS_FAIL_STRICT_GATE\",\n      \"severity\": \"strict_diagnostics_blocker\",\n      \"finding\": \"Fresh basedpyright over the five changed maintenance/propagation test files reports 104 errors. Current LSP reports errors in the new maintenance tests and modified Topic59/cron tests. These are changed-region diagnostics, not the stale new-module import issue.\",\n      \"stale_import_resolution\": \"The persistent LSP still reports missing imports for nutrition_weekly_maintenance_io and nutrition_weekly_dispatch_result in source files, while a fresh basedpyright process over the targeted runtime source reports 0 errors, 0 warnings, 0 notes. Those source import errors are stale. The test diagnostics reproduce in both current LSP and a fresh basedpyright process and are real.\",\n      \"examples\": [\n        \"OpaqueProjectionSlot/OpaqueProjectionDigest arguments supplied as plain str\",\n        \"untyped monkeypatch parameters and members\",\n        \"AsyncFakeCardTransport does not satisfy _AsyncCardAdapter\",\n        \"raw_response inferred as None and later assigned NutritionScheduledTickOutcome\",\n        \"private _ledger access and untyped claim lambda\"\n      ]\n    }\n  ],\n  \"evidence\": {\n    \"receipt_eight_runtime_hashes\": {\n      \"result\": \"all_match\",\n      \"hashes\": {\n        \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n        \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d\",\n        \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542\",\n        \"gateway/platforms/nutrition_weekly_operations.py\": \"b0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e\",\n        \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n        \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n        \"cron/physique_inline_card.py\": \"9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2\",\n        \"cron/scheduler.py\": \"09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95\"\n      }\n    },\n    \"call_path\": {\n      \"source_order\": [\n        \"Topic59DayCardProjector.publish calls reserves_topic59, which validates customer identity, candidate identity, and weekly_operations_is_authorized\",\n        \"publish validates review_route and computes the exact Topic59Projection\",\n        \"publish calls Topic59MaintenanceGate.evaluate(projection, runtime.now)\",\n        \"NOOP_MAINTENANCE returns immediately with logical_key and maintenance_audit_digest\",\n        \"Topic59PublicationLedger.claim occurs only after the exhaustive maintenance decision match\",\n        \"transport send/edit occurs only after claim returns a send/edit action\"\n      ],\n      \"proof\": \"The focused projector test replaces ledger.claim with an AssertionError and observes noop_maintenance, message_id None, no ledger file, send 0, edit 0. Independent manual execution also preserves a pre-existing four-row historical sending ledger byte prefix through both same-day ticks.\"\n    },\n    \"affected_matrix\": {\n      \"command_scope\": \"new maintenance tests; all Topic59 base/failure/r2/r2-slots/Telegram suites; dispatcher epoch2/host matrix; cron inline-card/scheduler\",\n      \"result\": \"189 passed in 6.59s\"\n    },\n    \"manual_actual_bridge\": {\n      \"surface\": \"actual projector -> typed NutritionScheduledTickOutcome -> actual launch_scheduled_card -> actual run_one_job scheduler branch, with socket guard\",\n      \"same_day_dispositions\": [\"noop_maintenance\", \"noop_maintenance\"],\n      \"same_day_files_unchanged\": true,\n      \"audit_count\": 1,\n      \"historical_sending_rows\": 4,\n      \"historical_prefix_unchanged\": true,\n      \"current_day_send_calls\": 0,\n      \"current_day_edit_calls\": 0,\n      \"network_calls\": 0,\n      \"launch_result\": {\"maintenance_noop\": true, \"sent\": false, \"error\": null},\n      \"scheduler\": {\"processed\": true, \"mark_job_run\": [true, null], \"status\": \"maintenance no-op completed\"},\n      \"tomorrow_disposition\": \"sent\",\n      \"tomorrow_fake_send_calls\": 1,\n      \"tomorrow_edit_calls\": 0\n    },\n    \"privacy\": {\n      \"result\": \"pass\",\n      \"audit_has_card_text\": false,\n      \"audit_has_raw_customer_key\": false,\n      \"audit_has_raw_telegram_user_or_chat_id\": false,\n      \"sent\": false,\n      \"delivered\": false,\n      \"message_id\": null,\n      \"provider_receipt\": null,\n      \"provider_calls\": 0,\n      \"network_calls\": 0\n    },\n    \"tooling\": {\n      \"ruff_changed_runtime_and_tests\": \"pass\",\n      \"ty_targeted_runtime_with_profile_path\": \"pass\",\n      \"basedpyright_targeted_runtime\": \"0 errors, 0 warnings, 0 notes\",\n      \"basedpyright_changed_tests\": \"104 errors, 0 warnings, 0 notes\",\n      \"compileall\": \"pass\",\n      \"import_smoke\": \"pass\",\n      \"lsp_runtime\": \"established modules clean; persistent server has stale missing-import errors for new modules; cron/scheduler.py and telegram.py retain extensive legacy diagnostics\",\n      \"lsp_changed_tests\": \"fail with changed-region diagnostics\",\n      \"ast_text_scan\": \"No Any, ignore, noqa, broad catch, sleep, skip, xfail, or weakened assertion was introduced in the focused maintenance modules. The two cast calls in dispatcher line 136 predate this increment.\",\n      \"pure_loc\": {\n        \"nutrition_weekly_maintenance_contract.py\": 137,\n        \"nutrition_weekly_maintenance_io.py\": 99,\n        \"nutrition_weekly_maintenance_store.py\": 208,\n        \"nutrition_weekly_dispatch_result.py\": 14,\n        \"nutrition_weekly_operations.py\": 146,\n        \"nutrition_weekly_dispatcher.py\": 250\n      }\n    },\n    \"scope_guards\": {\n      \"git_or_github_actions\": 0,\n      \"network_or_provider_actions\": 0,\n      \"customer_actions\": 0,\n      \"source_edits_by_reviewer\": 0,\n      \"package_preseal_live_profile_credential_root_creations\": 0,\n      \"fresh_r71b_package_live_roots_absent_before_and_after\": true,\n      \"reviewed_source_hashes_unchanged_during_review\": true\n    }\n  },\n  \"repro\": {\n    \"primary\": [\n      \"Create a valid profile/credential/hold fixture owned by uid/gid 1000 with maintenance directory 0700 and files 0600/credential 0400.\",\n      \"Change only maintenance.lock gid to supplementary group 125.\",\n      \"Set CREDENTIALS_DIRECTORY to the fixture credential directory.\",\n      \"Evaluate Topic59MaintenanceGate against the exact bound projection at not_before.\",\n      \"Observed: noop_maintenance and terminal audit creation; expected: DENY(filesystem_contract), zero state changes.\"\n    ],\n    \"source_locator\": [\n      \"gateway/platforms/nutrition_weekly_maintenance_store.py:_evaluate_locked\",\n      \"gateway/platforms/nutrition_weekly_maintenance_io.py:open_file\"\n    ]\n  },\n  \"cleanup\": {\n    \"temporary_scripts_removed\": [\n      \"/tmp/r71b_adversarial_matrix.py\",\n      \"/tmp/r71b_manual_bridge.py\"\n    ],\n    \"temporary_fixture_roots\": \"TemporaryDirectory contexts removed all synthetic profiles, credentials, ledgers, audits, locks, and outputs.\",\n    \"worktree_source_modified\": false,\n    \"package_or_live_roots_modified\": false,\n    \"network_or_provider_calls\": 0,\n    \"only_persistent_review_artifact\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json\"\n  }\n}\n"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":2390,"output":4288,"cacheRead":178688,"cacheWrite":0,"reasoning":349,"totalTokens":185366,"cost":{"input":0.01195,"output":0.12864,"cacheRead":0.08934399999999999,"cacheWrite":0,"total":0.22993399999999997}},"stopReason":"toolUse","timestamp":1788247507402,"responseId":"resp_046f5546d6e20d23016a967dd4e02087d0a1cdb74047adb2f7","rawStopReason":"completed"}}
{"type":"message","id":"337063aa","parentId":"41e11d68","timestamp":"2026-09-01T07:27:45.947Z","message":{"role":"toolResult","toolCallId":"call_EIKgC0EE09FmdIc6fTLMolRk|fc_046f5546d6e20d23016a967de9834087d09d4bf83c170accf3","toolName":"write","content":[{"type":"text","text":"Successfully wrote 13160 bytes to /home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json"}],"details":{"operation":"add","patch":"--- /dev/null\n+++ /home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json\n@@ -0,0 +1,209 @@\n+{\n+  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-adversarial-v1\",\n+  \"task_id\": \"st_01a05bd2\",\n+  \"reviewed_claim_task_id\": \"st_01a05bc2\",\n+  \"captured_at\": \"2026-09-01T16:25:07+09:00\",\n+  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n+  \"verdict\": \"needs-fix\",\n+  \"confidence\": 0.99,\n+  \"blocker_count\": 4,\n+  \"blockers\": [\n+    {\n+      \"code\": \"MAINTENANCE_LOCK_WRONG_GID_ACCEPTED\",\n+      \"severity\": \"contract_blocker\",\n+      \"finding\": \"A maintenance.lock owned by the effective UID but by gid 125 instead of the profile gid 1000 is accepted; the gate returns noop_maintenance and consumes the hold. The contract requires lock to be profile-owned and every wrong owner/group case to fail closed.\",\n+      \"source_cause\": \"Topic59MaintenanceGate._evaluate_locked calls _open_file(directory_fd, 'maintenance.lock', 0o600) without the profile gid. nutrition_weekly_maintenance_io.open_file validates gid only when a gid argument is supplied.\",\n+      \"repro\": {\n+        \"control\": {\n+          \"case\": \"hold_wrong_gid\",\n+          \"file_gid\": 125,\n+          \"profile_gid\": 1000,\n+          \"decision\": \"deny\",\n+          \"reason\": \"filesystem_contract\"\n+        },\n+        \"failure\": {\n+          \"case\": \"lock_wrong_gid\",\n+          \"file_gid\": 125,\n+          \"profile_gid\": 1000,\n+          \"decision\": \"noop_maintenance\",\n+          \"reason\": null\n+        }\n+      },\n+      \"required_fix\": \"Validate maintenance.lock against the profile uid and gid under the same openat/no-follow contract as active, consuming, and audit files, and add a deterministic regression test.\"\n+    },\n+    {\n+      \"code\": \"RECEIPT_HASH_INVENTORY_INCOMPLETE\",\n+      \"severity\": \"strict_evidence_blocker\",\n+      \"finding\": \"All eight hashes present in the DoneClaim receipt match, but the receipt hashes no tests and omits three propagation files that were modified for this runtime. Therefore the actual changed runtime/test set cannot be hash-matched to the receipt as required.\",\n+      \"omitted_runtime_files\": {\n+        \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\": \"c75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6\",\n+        \"gateway/platforms/telegram_weekly_host_dispatch.py\": \"6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88\",\n+        \"gateway/platforms/telegram.py\": \"5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7\"\n+      },\n+      \"test_hashes_recorded_by_this_review\": {\n+        \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\": \"c4bc83bf5153f47760c794815769f594a2df35135314c9a7ac3678de792d7112\",\n+        \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\": \"e79329824051ca336365c3622cfdab0c2a4d36fe53e2ee55cea6753ceac6d28a\",\n+        \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\": \"b1a400491526427abc8236bb1114765260edeaf2a7b56bf7968e6c5d20201d56\",\n+        \"tests/gateway/test_nutrition_weekly_operations_topic59.py\": \"5dbc476bf1cb7246392dddf96ba02ee48fddc5c0b7cf6c39f0cecc06eb73aaac\",\n+        \"tests/gateway/test_nutrition_weekly_operations_topic59_failures.py\": \"0e3570a667adcceea3099910550dce888daccc556a466b8c40c8af75a122697c\",\n+        \"tests/gateway/test_nutrition_weekly_operations_topic59_r2.py\": \"1eb4967c527c310d3a0333973cf911e48513afc06dc79793a75f2db051e7994e\",\n+        \"tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py\": \"1d87c3f528f2af12b143e0b31958f7d54ebc6e71113294b53dfe31c270eaec30\",\n+        \"tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py\": \"358d9365895c4f7caddf0104d47f734ccf78b00eab094f527574423b51f6090d\",\n+        \"tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py\": \"ea943f130b7c923e678eb8066ae20c01997fb124d9351d92f96be45b9b3032d8\",\n+        \"tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py\": \"a50d4046ffe5236f750ef4237ef8068657a282dbe250c05192c876c4911c6abc\",\n+        \"tests/cron/test_physique_inline_card.py\": \"b9241d89c96293d9625a504f546b1c44ecfb58cabe6b2088f8fec314ea0ae673\",\n+        \"tests/cron/test_scheduler.py\": \"c45b784365292c6572bcab3844dd46b9353f2f5197332ff6850f3752f3eb9b9a\"\n+      }\n+    },\n+    {\n+      \"code\": \"DONECLAIM_NEGATIVE_MATRIX_NOT_IN_TEST_SUITE\",\n+      \"severity\": \"strict_qualification_blocker\",\n+      \"finding\": \"The actual new failure test file contains one case only: artifact without credential. The implementation session transcript confirms no canonical JSON, boundary hash, time, replay, binding, file-kind, mode, nlink, symlink, hardlink, owner/group, audit-tamper, or partial-state matrix was added, despite the DoneClaim describing the maintenance runtime as qualified.\",\n+      \"independent_reproduction\": {\n+        \"matrix_rejects_passed\": 29,\n+        \"matrix_rejects_total\": 29,\n+        \"claim_calls\": 0,\n+        \"send_calls\": 0,\n+        \"edit_calls\": 0,\n+        \"network_calls\": 0,\n+        \"covered\": [\n+          \"authority noncanonical/malformed/empty/oversized/extra-field/wrong-hold-hash\",\n+          \"hold noncanonical\",\n+          \"early/expired/replayed\",\n+          \"wrong candidate/config/route/customer/card-slot/day\",\n+          \"hold and lock symlink/hardlink/wrong-mode/FIFO\",\n+          \"audit symlink\",\n+          \"maintenance-directory symlink\",\n+          \"simultaneous active+consuming\",\n+          \"partial atomic temp\",\n+          \"artifact without credential\"\n+        ],\n+        \"separate_failure\": \"The wrong-gid lock case did not reject and is blocker MAINTENANCE_LOCK_WRONG_GID_ACCEPTED.\"\n+      },\n+      \"required_fix\": \"Land deterministic source tests for the full matrix, including the discovered wrong-gid lock regression, rather than relying on an unrecorded manual oracle.\"\n+    },\n+    {\n+      \"code\": \"CHANGED_TEST_DIAGNOSTICS_FAIL_STRICT_GATE\",\n+      \"severity\": \"strict_diagnostics_blocker\",\n+      \"finding\": \"Fresh basedpyright over the five changed maintenance/propagation test files reports 104 errors. Current LSP reports errors in the new maintenance tests and modified Topic59/cron tests. These are changed-region diagnostics, not the stale new-module import issue.\",\n+      \"stale_import_resolution\": \"The persistent LSP still reports missing imports for nutrition_weekly_maintenance_io and nutrition_weekly_dispatch_result in source files, while a fresh basedpyright process over the targeted runtime source reports 0 errors, 0 warnings, 0 notes. Those source import errors are stale. The test diagnostics reproduce in both current LSP and a fresh basedpyright process and are real.\",\n+      \"examples\": [\n+        \"OpaqueProjectionSlot/OpaqueProjectionDigest arguments supplied as plain str\",\n+        \"untyped monkeypatch parameters and members\",\n+        \"AsyncFakeCardTransport does not satisfy _AsyncCardAdapter\",\n+        \"raw_response inferred as None and later assigned NutritionScheduledTickOutcome\",\n+        \"private _ledger access and untyped claim lambda\"\n+      ]\n+    }\n+  ],\n+  \"evidence\": {\n+    \"receipt_eight_runtime_hashes\": {\n+      \"result\": \"all_match\",\n+      \"hashes\": {\n+        \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n+        \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d\",\n+        \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542\",\n+        \"gateway/platforms/nutrition_weekly_operations.py\": \"b0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e\",\n+        \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n+        \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n+        \"cron/physique_inline_card.py\": \"9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2\",\n+        \"cron/scheduler.py\": \"09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95\"\n+      }\n+    },\n+    \"call_path\": {\n+      \"source_order\": [\n+        \"Topic59DayCardProjector.publish calls reserves_topic59, which validates customer identity, candidate identity, and weekly_operations_is_authorized\",\n+        \"publish validates review_route and computes the exact Topic59Projection\",\n+        \"publish calls Topic59MaintenanceGate.evaluate(projection, runtime.now)\",\n+        \"NOOP_MAINTENANCE returns immediately with logical_key and maintenance_audit_digest\",\n+        \"Topic59PublicationLedger.claim occurs only after the exhaustive maintenance decision match\",\n+        \"transport send/edit occurs only after claim returns a send/edit action\"\n+      ],\n+      \"proof\": \"The focused projector test replaces ledger.claim with an AssertionError and observes noop_maintenance, message_id None, no ledger file, send 0, edit 0. Independent manual execution also preserves a pre-existing four-row historical sending ledger byte prefix through both same-day ticks.\"\n+    },\n+    \"affected_matrix\": {\n+      \"command_scope\": \"new maintenance tests; all Topic59 base/failure/r2/r2-slots/Telegram suites; dispatcher epoch2/host matrix; cron inline-card/scheduler\",\n+      \"result\": \"189 passed in 6.59s\"\n+    },\n+    \"manual_actual_bridge\": {\n+      \"surface\": \"actual projector -> typed NutritionScheduledTickOutcome -> actual launch_scheduled_card -> actual run_one_job scheduler branch, with socket guard\",\n+      \"same_day_dispositions\": [\"noop_maintenance\", \"noop_maintenance\"],\n+      \"same_day_files_unchanged\": true,\n+      \"audit_count\": 1,\n+      \"historical_sending_rows\": 4,\n+      \"historical_prefix_unchanged\": true,\n+      \"current_day_send_calls\": 0,\n+      \"current_day_edit_calls\": 0,\n+      \"network_calls\": 0,\n+      \"launch_result\": {\"maintenance_noop\": true, \"sent\": false, \"error\": null},\n+      \"scheduler\": {\"processed\": true, \"mark_job_run\": [true, null], \"status\": \"maintenance no-op completed\"},\n+      \"tomorrow_disposition\": \"sent\",\n+      \"tomorrow_fake_send_calls\": 1,\n+      \"tomorrow_edit_calls\": 0\n+    },\n+    \"privacy\": {\n+      \"result\": \"pass\",\n+      \"audit_has_card_text\": false,\n+      \"audit_has_raw_customer_key\": false,\n+      \"audit_has_raw_telegram_user_or_chat_id\": false,\n+      \"sent\": false,\n+      \"delivered\": false,\n+      \"message_id\": null,\n+      \"provider_receipt\": null,\n+      \"provider_calls\": 0,\n+      \"network_calls\": 0\n+    },\n+    \"tooling\": {\n+      \"ruff_changed_runtime_and_tests\": \"pass\",\n+      \"ty_targeted_runtime_with_profile_path\": \"pass\",\n+      \"basedpyright_targeted_runtime\": \"0 errors, 0 warnings, 0 notes\",\n+      \"basedpyright_changed_tests\": \"104 errors, 0 warnings, 0 notes\",\n+      \"compileall\": \"pass\",\n+      \"import_smoke\": \"pass\",\n+      \"lsp_runtime\": \"established modules clean; persistent server has stale missing-import errors for new modules; cron/scheduler.py and telegram.py retain extensive legacy diagnostics\",\n+      \"lsp_changed_tests\": \"fail with changed-region diagnostics\",\n+      \"ast_text_scan\": \"No Any, ignore, noqa, broad catch, sleep, skip, xfail, or weakened assertion was introduced in the focused maintenance modules. The two cast calls in dispatcher line 136 predate this increment.\",\n+      \"pure_loc\": {\n+        \"nutrition_weekly_maintenance_contract.py\": 137,\n+        \"nutrition_weekly_maintenance_io.py\": 99,\n+        \"nutrition_weekly_maintenance_store.py\": 208,\n+        \"nutrition_weekly_dispatch_result.py\": 14,\n+        \"nutrition_weekly_operations.py\": 146,\n+        \"nutrition_weekly_dispatcher.py\": 250\n+      }\n+    },\n+    \"scope_guards\": {\n+      \"git_or_github_actions\": 0,\n+      \"network_or_provider_actions\": 0,\n+      \"customer_actions\": 0,\n+      \"source_edits_by_reviewer\": 0,\n+      \"package_preseal_live_profile_credential_root_creations\": 0,\n+      \"fresh_r71b_package_live_roots_absent_before_and_after\": true,\n+      \"reviewed_source_hashes_unchanged_during_review\": true\n+    }\n+  },\n+  \"repro\": {\n+    \"primary\": [\n+      \"Create a valid profile/credential/hold fixture owned by uid/gid 1000 with maintenance directory 0700 and files 0600/credential 0400.\",\n+      \"Change only maintenance.lock gid to supplementary group 125.\",\n+      \"Set CREDENTIALS_DIRECTORY to the fixture credential directory.\",\n+      \"Evaluate Topic59MaintenanceGate against the exact bound projection at not_before.\",\n+      \"Observed: noop_maintenance and terminal audit creation; expected: DENY(filesystem_contract), zero state changes.\"\n+    ],\n+    \"source_locator\": [\n+      \"gateway/platforms/nutrition_weekly_maintenance_store.py:_evaluate_locked\",\n+      \"gateway/platforms/nutrition_weekly_maintenance_io.py:open_file\"\n+    ]\n+  },\n+  \"cleanup\": {\n+    \"temporary_scripts_removed\": [\n+      \"/tmp/r71b_adversarial_matrix.py\",\n+      \"/tmp/r71b_manual_bridge.py\"\n+    ],\n+    \"temporary_fixture_roots\": \"TemporaryDirectory contexts removed all synthetic profiles, credentials, ledgers, audits, locks, and outputs.\",\n+    \"worktree_source_modified\": false,\n+    \"package_or_live_roots_modified\": false,\n+    \"network_or_provider_calls\": 0,\n+    \"only_persistent_review_artifact\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json\"\n+  }\n+}\n"},"isError":false,"timestamp":1788247665947}}
{"type":"message","id":"4265062f","parentId":"337063aa","timestamp":"2026-09-01T07:27:52.974Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Validating JSON structure**","startedAt":1788247669291,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a967e7535ac87d0a7df52acb8325e83\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqln54OV4J4QfRYA6QY5Bx88cYgNdvuWwU_AkWJzg_t6vj_BijrtJ-pxlxbVZ7a5amE4_UPrAaUXWNYoOkocfzEkNuZe4_vF7f3TiQ8Z8RqtbS0dWBp09mhiSCzhlXM9WLSpOouu0ypnHxXCh9BMRvfko6u0dv09ykAy5CkT6aSgHGvsBtz-YcpQ2_42sRFbmBlKjktaVdq7Di5vzyt84cR8JyGJ5k8qyevP2QfIOjnaSaWO7tWhdBbi8epDQcCy5ql-YSb3hXJZbyjBgYJYqI2LmrSjY-95m_gfBHJ12zacb_Ge6s2dKbq_J3KWTFWlSSWgTB1hR10BwuZfKBuAjHUcrGH04reCdWycj09w6u49BjpCUuYSIlEi9kqJuZz_Zc1uhmM_xayP7gkE25GJSZYraIZe0X_jbmzn8pagYMOQwUihssySCZaeVu5IrJmdX9WP9FDtOmTucqq3uX0CLWyXNPxzN-jIxH_WWf2xrWAe3_ugwcruuPxTbyf8ymQxMxndykVHXXZctWnUGGp3Mp01TtXSIeG90JyYJEBCNzGtKq60K31qytBltz3J_IbfMnvhed35RPwCD_BKhcYqsesYYr7MhYA_F1tKflNW94dsp5c0BNBDIX72F-R4LrZ3JSpNnABYzs6tJXsA05ZOqxAd3hb2J4GZh8J_NqtGF-dfD3UWBEY6D4V7jSMOUM9i3sTJK6CscJYfr5fZUs0rYw1qkp4tMVgwipCCBoRJZU8ZIFmJulBZjN2r-_SkXlB2K42jAgXmSEBS7lKEaWvkqhMmESBbBUWW81z7ew0qAXdDnc7-jqNqen59TrjrZYrslUYcz3qvfR9MXWqJo-hfH_4CWiD6TXZN0LCL_likm2U3ScP8kNmJPouFDoUCafRN2XRmPbnCq4K2lUflYCgWJ3Q2RJzibLrmvidLjLYnw3ICPxvSwhv8Ne6AA3DFBtUD3mzrFa94-J3qTDdfiBOo_jPRdJxAlA-du9JJC9RXpi9tY7OqJrpAG-KuOneHz0_R5C1GRGul6hDUmIQNusQk6y5f1YoIqQIXHbyH5CZJZVTno8gV392dTlxOGrdqEWkKEhq-AOqHVeMAUuTiA0ie0i1DcxgE3ilGV8008GhfT7bjIaEuc-OevyOlmM7u0yRTng22v1uHRx6FIihVTCu5hLi5Xy2MLAGh2O4giBoLWUPMz7D2uUK8RvTVdOukWJkmKpSFsVDLg4RX_g9BL3R7QH7CUDYweq9v21XqoaAmkFfOYQ_0F7ebl-kF6_qZ0AuSK43P5VAYgcYCgpGoAj8mXHBsMB0z-Qkj_BAbwMB7-IWGYigpi2B-qN-3KmsRdz9Qr9MCvtTJPqiteH5CEm_Rhz-mFh-A==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Validating JSON structure**\"}]}","endedAt":1788247672940},{"type":"toolCall","id":"call_oMC5tkrARfIqnq3nE2F23EQt|fc_046f5546d6e20d23016a967e78d90c87d09cf8cd5051246ecc","name":"bash","arguments":{"command":"python -m json.tool '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json' >/dev/null && sha256sum '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json'","timeout":20}},{"type":"toolCall","id":"call_tk0JV8qpCSKjd2i6cQEyNMyM|fc_046f5546d6e20d23016a967e78d91c87d0b9ad377f89f77583","name":"read","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json","offset":1,"limit":35}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":7757,"output":203,"cacheRead":177664,"cacheWrite":0,"reasoning":16,"totalTokens":185624,"cost":{"input":0.038785,"output":0.00609,"cacheRead":0.088832,"cacheWrite":0,"total":0.133707}},"stopReason":"toolUse","timestamp":1788247665995,"responseId":"resp_046f5546d6e20d23016a967e73ca5087d0829b964f0a662510","rawStopReason":"completed"}}
{"type":"message","id":"6bc8417b","parentId":"4265062f","timestamp":"2026-09-01T07:27:53.019Z","message":{"role":"toolResult","toolCallId":"call_oMC5tkrARfIqnq3nE2F23EQt|fc_046f5546d6e20d23016a967e78d90c87d09cf8cd5051246ecc","toolName":"bash","content":[{"type":"text","text":"fdaccd2a11618f864e3a8bfbddaed3c379eb4857987f8eadced66474116e0d52  /home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json\n"}],"isError":false,"timestamp":1788247673019}}
{"type":"message","id":"ad24d80d","parentId":"6bc8417b","timestamp":"2026-09-01T07:27:53.019Z","message":{"role":"toolResult","toolCallId":"call_tk0JV8qpCSKjd2i6cQEyNMyM|fc_046f5546d6e20d23016a967e78d91c87d0b9ad377f89f77583","toolName":"read","content":[{"type":"text","text":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-adversarial-v1\",\n  \"task_id\": \"st_01a05bd2\",\n  \"reviewed_claim_task_id\": \"st_01a05bc2\",\n  \"captured_at\": \"2026-09-01T16:25:07+09:00\",\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"verdict\": \"needs-fix\",\n  \"confidence\": 0.99,\n  \"blocker_count\": 4,\n  \"blockers\": [\n    {\n      \"code\": \"MAINTENANCE_LOCK_WRONG_GID_ACCEPTED\",\n      \"severity\": \"contract_blocker\",\n      \"finding\": \"A maintenance.lock owned by the effective UID but by gid 125 instead of the profile gid 1000 is accepted; the gate returns noop_maintenance and consumes the hold. The contract requires lock to be profile-owned and every wrong owner/group case to fail closed.\",\n      \"source_cause\": \"Topic59MaintenanceGate._evaluate_locked calls _open_file(directory_fd, 'maintenance.lock', 0o600) without the profile gid. nutrition_weekly_maintenance_io.open_file validates gid only when a gid argument is supplied.\",\n      \"repro\": {\n        \"control\": {\n          \"case\": \"hold_wrong_gid\",\n          \"file_gid\": 125,\n          \"profile_gid\": 1000,\n          \"decision\": \"deny\",\n          \"reason\": \"filesystem_contract\"\n        },\n        \"failure\": {\n          \"case\": \"lock_wrong_gid\",\n          \"file_gid\": 125,\n          \"profile_gid\": 1000,\n          \"decision\": \"noop_maintenance\",\n          \"reason\": null\n        }\n      },\n      \"required_fix\": \"Validate maintenance.lock against the profile uid and gid under the same openat/no-follow contract as active, consuming, and audit files, and add a deterministic regression test.\"\n    },\n    {\n      \"code\": \"RECEIPT_HASH_INVENTORY_INCOMPLETE\",\n\n[175 more lines in file. Use offset=36 to continue.]"}],"isError":false,"timestamp":1788247673019}}
{"type":"message","id":"c887813b","parentId":"ad24d80d","timestamp":"2026-09-01T07:27:57.656Z","message":{"role":"assistant","content":[{"type":"text","text":"I read this as verification delivery - I completed the adversarial review and wrote the evidence artifact.\n\nVerdict: **needs-fix**  \nConfidence: **0.99**  \nBlockers: **4**\n\nPrimary defect: `maintenance.lock` with the wrong GID is accepted and produces `noop_maintenance` instead of failing closed.\n\nEvidence:\n\n`/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json`\n\nSHA-256: `fdaccd2a11618f864e3a8bfbddaed3c379eb4857987f8eadced66474116e0d52`","textSignature":"{\"v\":1,\"id\":\"msg_046f5546d6e20d23016a967e7ac86c87d0862a72b738516b5b\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":1347,"output":155,"cacheRead":184832,"cacheWrite":0,"reasoning":0,"totalTokens":186334,"cost":{"input":0.0067350000000000005,"output":0.0046500000000000005,"cacheRead":0.092416,"cacheWrite":0,"total":0.103801}},"stopReason":"stop","timestamp":1788247673067,"responseId":"resp_046f5546d6e20d23016a967e79683887d0abed10ef2bbe88b6","rawStopReason":"completed"}}
{"type":"message","id":"d711620a","parentId":"c887813b","timestamp":"2026-09-01T07:50:28.394Z","message":{"role":"user","content":[{"type":"text","text":"TASK: Delta-only re-review of the four prior blockers against amended current source/evidence. Frozen prior-approved scope: valid hold/crash/concurrency/propagation/manual behavior. Verify independently: (1) maintenance.lock wrong gid now DENY/filesystem_contract, hold/artifacts byte-unchanged, claim/send/edit/network0; also valid same-gid control succeeds. (2) all 52 negative cases are actually landed deterministic tests and cover every prior listed category with zero-call/no-fabrication assertions, not manual-only. (3) all retained changed/new strict test/support files and all 11 runtime propagation files have complete current hashes in evidence and match disk. (4) fresh basedpyright+ty zero on exact current files; current LSP diagnostics or a clearly demonstrated stale-server discrepancy only for unchanged/deleted import cache; no real changed-region diagnostics, Any/cast/ignore/noqa/private access/untyped lambda/sleeps. Rerun focused61, affected240, manual two-noop/tomorrow, Ruff/compile/no-excuse/cleanup. Update/replace task-10-r71b-maintenance-runtime-adversarial.json with confirmed only if blocker_count0. No source edits/package/live actions."}],"timestamp":1788249028384}}
{"type":"message","id":"03991a38","parentId":"d711620a","timestamp":"2026-09-01T07:50:40.100Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Inspecting amended evidence and timestamps**","startedAt":1788249031958,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9683c7dd6087d0bd1b47ee87dcd0b6\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloPJotUvMBCw7GAzWM4-92yYHFMQlx8t5krYqi_YuMmUvCmaPsRE3gt_TwcwTkDGgN05eQ8W1mS8fXAkP3Iep86j7i50VZj3ugtqbj6IIuiOt3kRxN2THDVhmHjD3PN8cTppqQSxCJKpXG5Kl5VDFXetC9-KnlrGWRdqZNNl1MxTCYuHDWkicrmr8kHMGETqJMK9g882-wcoF1exJIKsoeluvmb9e9nvXwfqohim9kYVrc8tpQGH8omTDxo13Mb1Imjteb8o_H0ynH9u6s9BWsty_myE-YMYCXbjof8VV3ANJHCZW8Kw-21vmh_Ja-ZDYllimjE42NEvhnArB-8rjowSfNsgQj6POO6erlX-_FF4SzeQN1-IPRhDAnXtUFBh6u77ttq9POYkq7vl4LQPYZq3HnhKD5JOsC3pL4AJOr5oFG2d_3N-d6wkDFyoAvZRewWOoKZiUX9JKkuny5PLBXYCqXkwo-DjuCYcdRoWZrIil95iwVoWJziu51X5piQSa23Ea5bR_GCyR1DbfmfPgtFsMFciEepbHGaw6nVy0qEd0QjPJI530dMHjfbv4coEaPKpMc769_HwPGMCW241_47R4JNXWFwZyu0J1gszKZtPSOrvA8tKAW2oVNsm2NjWGV-GCPzE6X6w1BjEt2erKFM9HKqhSveowHDiFQ3cYi0i8IqUjQeaG5_olXOKMfXvr9dZKEQ89UUJ10w9ZYO_ibP3bXrsKUcTvLz8fLwSd7e0C0_HuG9Bh6UyizlzpBw8axmPXHki8McF3t7QbMhlfJ3rzygQOOZ8psGtDETCRpcpLKYEWWPaaz0GSjliwg5PWPBU9fjWYG-0NpAvU5vRG4mv3W58D5axymXUlAtmOA2IdQE2nJJbYcFbJCOEqXF5iiLL43Fxjbgdkhw43PfLUxolRmu1MpMuqlxFu0cJ-U7FEnF3UUuIL97h9kmqigzCpzuQMGmOhg_--Wm-aYQJehhV95zi8lRm2v9Ycaijk3ANr7VUm9t_tsvXtWU8bk_AeyiwRg4Fz2aaEiUWZBRKsv2PgW2IrW-RpOXoV0Gh2cVDrrMwdFPdFOYezD96kNHHMDSBVg8b2IYwiv7gOfSz1i64MdsKUfmMLWf7QyEsvBe6AanQMtEJ9V95XR_MahsnN428c7Bw1Yu0UVOoAettSMRcmuAdP2Z4h0_iKbUMIlgGds_r_08maC5M8NpGhOyuMa2FbJglHFoyxG6crapNlW7tc9qbnBXP1MAo4YBo1X2pPg4RJ1Ja7LudCwhi6ktm5XNBVZEAwEhOK0gkvbl4edAKRcpvYcubh9uHqMX1nTpN5aeBhSpKdfYVdbNoJtQFsxO3t6vDfF7Nuwqj7SfhoK6ucfb5eIs1CTHclRbJ-b9BcI8-KamgVka7orQzsFFjEyC0zJfikgAaClf56oJgwkbOK_A-NMplltF0nzRhuHhFHHqbRwFvGgzt2JbGLKKGJ9O0NRbY0HNNLKQxf_gYw2Cdh1lCT6-b1NwCoG2sgMrOLk4=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Inspecting amended evidence and timestamps**\"}]}","endedAt":1788249033854},{"type":"text","text":"I read this as a delta-only adversarial re-review - I’ll preserve the previously approved behavior scope, independently retest the four amended blockers and required focused/affected/manual/static gates, then replace only the adversarial evidence with confirmed if every gate is clean.","textSignature":"{\"v\":1,\"id\":\"msg_046f5546d6e20d23016a9683c912f087d0868b638f7bbab083\",\"phase\":\"commentary\"}"},{"type":"toolCall","id":"call_3rA3NuAzBJWV7AJWQIyBgtLZ|fc_046f5546d6e20d23016a9683cfe2b887d087448dfc47dbc0c3","name":"read","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json"}},{"type":"toolCall","id":"call_lxLpI0nm3VzKYrEmddLHLbIG|fc_046f5546d6e20d23016a9683cfe2c887d09fcecce103ee7d33","name":"read","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json","offset":1,"limit":120}},{"type":"toolCall","id":"call_TWvtlghMgDOjCKGk65D58TKu|fc_046f5546d6e20d23016a9683cfe2d087d08b832f2ca69f1b05","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && find gateway/platforms cron tests -type f -newermt '2026-09-01 16:20:00' ! -path '*/__pycache__/*' -printf '%TY-%Tm-%TdT%TH:%TM:%TS %p\\n' | sort; printf '%s\\n' '--- maintenance refs'; rg -l 'Topic59Maintenance|noop_maintenance|maintenance_noop' tests gateway/platforms cron | sort","timeout":30}},{"type":"toolCall","id":"call_kaWNjaQrXW4etySREWRXDkJv|fc_046f5546d6e20d23016a9683cfe2d887d0a6b3e904cc52458f","name":"bash","arguments":{"command":"find '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper' -maxdepth 1 -type f -newermt '2026-09-01 16:20:00' -printf '%TY-%Tm-%TdT%TH:%TM:%TS %f\\n' | sort","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":732,"output":447,"cacheRead":185856,"cacheWrite":0,"reasoning":35,"totalTokens":187035,"cost":{"input":0.0036600000000000005,"output":0.01341,"cacheRead":0.092928,"cacheWrite":0,"total":0.109998}},"stopReason":"toolUse","timestamp":1788249028395,"responseId":"resp_046f5546d6e20d23016a9683c6574087d0ab43b0ae50531e25","rawStopReason":"completed"}}
{"type":"message","id":"0c6651fb","parentId":"03991a38","timestamp":"2026-09-01T07:50:40.147Z","message":{"role":"toolResult","toolCallId":"call_3rA3NuAzBJWV7AJWQIyBgtLZ|fc_046f5546d6e20d23016a9683cfe2b887d087448dfc47dbc0c3","toolName":"read","content":[{"type":"text","text":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-v2\",\n  \"task_id\": \"st_01a05bc2\",\n  \"amendment_task\": \"adversarial-blocker-closure\",\n  \"status\": \"DONE_SOURCE_ONLY\",\n  \"blocker_count\": 0,\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"scope_guards\": {\n    \"git_or_github_actions\": 0,\n    \"network_or_provider_actions\": 0,\n    \"customer_actions\": 0,\n    \"package_preseal_live_profile_credential_root_creations\": 0,\n    \"commits\": 0\n  },\n  \"blocker_closure\": {\n    \"maintenance_lock_wrong_gid\": {\n      \"red\": \"wrong supplementary gid 125 returned noop_maintenance and consumed the hold\",\n      \"green\": \"OwnedMaintenanceDirectory carries the profile uid/gid; lock, active, consuming and audit opens validate both exactly\",\n      \"regression\": \"wrong gid returns deny/filesystem_contract with byte-identical artifact snapshot, claim/send/edit/network zero\"\n    },\n    \"negative_matrix\": {\n      \"parameterized_cases\": 51,\n      \"dedicated_wrong_gid_regression\": 1,\n      \"total_rejections\": 52,\n      \"all_passed\": true,\n      \"categories\": [\n        \"credential missing/empty/malformed/oversized/noncanonical/extra/hash/symlink/hardlink/mode/file-kind/owner\",\n        \"hold empty/malformed/oversized/noncanonical/extra/early/expired/replay\",\n        \"candidate/config/route/customer/card-slot/day binding mismatch\",\n        \"directory symlink/mode/gid/owner\",\n        \"active, lock and audit symlink/hardlink/mode/file-kind/gid/owner\",\n        \"simultaneous active+consuming, partial temp and partial audit\"\n      ],\n      \"per_case_oracle\": {\n        \"decision\": \"deny\",\n        \"publication\": \"refused\",\n        \"claim_calls\": 0,\n        \"record_calls\": 0,\n        \"send_calls\": 0,\n        \"edit_calls\": 0,\n        \"network_calls\": 0,\n        \"message_id\": null,\n        \"maintenance_audit_digest\": null,\n        \"delivery_ledger_created\": false,\n        \"artifact_snapshot_changed\": false\n      }\n    },\n    \"strict_tests\": {\n      \"legacy_maintenance_additions_restored\": [\n        \"tests/gateway/test_nutrition_weekly_operations_topic59.py\",\n        \"tests/cron/test_physique_inline_card.py\"\n      ],\n      \"new_strict_test_and_support_files\": 7,\n      \"branded_projection_types\": true,\n      \"typed_protocol_and_dataclass_fakes\": true,\n      \"public_publication_ledger_injection_seam\": true,\n      \"private_ledger_access\": false,\n      \"untyped_lambdas\": false,\n      \"Any_cast_ignore_noqa\": false,\n      \"sleeps_or_polling\": false\n    },\n    \"hash_inventory\": \"complete for all 11 runtime propagation files and every retained changed/new strict test/support file\"\n  },\n  \"verification\": {\n    \"wrong_gid_red_green\": \"RED reproduced, GREEN 1 passed\",\n    \"full_negative_matrix\": \"52 passed\",\n    \"focused_maintenance\": \"61 passed in 0.76s\",\n    \"affected_suite\": \"240 passed in 6.92s\",\n    \"ruff\": \"PASS all 11 runtime files and retained changed/new tests/support\",\n    \"ty\": \"PASS all typed runtime and retained changed/new tests/support\",\n    \"basedpyright_fresh\": \"0 errors, 0 warnings, 0 notes across all typed runtime and retained changed/new tests/support\",\n    \"lsp\": \"All established changed files and six of seven strict new test/support files report no diagnostics. The persistent server retained a stale pre-merge snapshot for nutrition_weekly_maintenance_adversarial_support.py; document symbols showed current local HoldBinding while diagnostics referenced the deleted split import. Fresh basedpyright over the exact current file set is the clean equivalent.\",\n    \"compileall\": \"PASS\",\n    \"import_smoke\": \"PASS\",\n    \"no_excuse\": \"PASS: no violations in 11 strict core/test files\",\n    \"ast_escape_hatch_scan\": \"PASS: no Any/cast/ignore/noqa/broad catch/sleep/skip/xfail in maintenance core or strict tests\",\n    \"generated_bytecode_after_cleanup\": 0,\n    \"patch_backup_or_reject_files_after_cleanup\": 0\n  },\n  \"manual_zero_call_qa\": {\n    \"same_day_dispositions\": [\"noop_maintenance\", \"noop_maintenance\"],\n    \"audit_count\": 1,\n    \"delivery_ledger_unchanged_same_day\": true,\n    \"current_day_send_calls\": 0,\n    \"current_day_edit_calls\": 0,\n    \"network_calls\": 0,\n    \"tomorrow_disposition\": \"sent\",\n    \"tomorrow_fake_send_calls\": 1,\n    \"scheduler_processed\": true,\n    \"scheduler_mark_job_run\": [true, null],\n    \"scheduler_status\": \"maintenance no-op completed\"\n  },\n  \"privacy\": {\n    \"audit_has_card_text\": false,\n    \"audit_has_raw_customer_key\": false,\n    \"audit_has_raw_telegram_identity\": false,\n    \"sent\": false,\n    \"delivered\": false,\n    \"message_id\": null,\n    \"provider_receipt\": null,\n    \"provider_calls\": 0,\n    \"network_calls\": 0\n  },\n  \"runtime_hashes\": {\n    \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n    \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9df3f5f368e16fa6019674620a1fa06ba767ac13babd130b0ea79655ab7cdb60\",\n    \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"1affe722d322de8d4e7ae40920dfbcd25a5915008c732193123241eb4e26e5fa\",\n    \"gateway/platforms/nutrition_weekly_operations.py\": \"4a3f27b30d0c639ce6b0020e5f81a386bae22b3a0a5568a497d0a8b4dcbc3fe6\",\n    \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\": \"c75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6\",\n    \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n    \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n    \"gateway/platforms/telegram_weekly_host_dispatch.py\": \"6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88\",\n    \"gateway/platforms/telegram.py\": \"5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7\",\n    \"cron/physique_inline_card.py\": \"16788d449f33b8e0f6c0e8a5db55d1455b3ee694a984307283b07a6b9db29b67\",\n    \"cron/scheduler.py\": \"07fddef7d2df68e2ddee243f5c0901eb15054f91a642dcd96723a139e30f461f\"\n  },\n  \"test_and_support_hashes\": {\n    \"tests/gateway/nutrition_weekly_maintenance_support.py\": \"810ab4768633142b11b9889f08a79789dde79001ae82f7cb7bc6bc1b1213df5d\",\n    \"tests/gateway/nutrition_weekly_maintenance_fs_mutations.py\": \"619b6188e3df38613bd166e4c372b46424888a164d069a25ab4d07a07e611d7f\",\n    \"tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\": \"8cef1f9a7bcccecab843f1c767d870087f57b1d36ce41f48d6f2d5cddc919e25\",\n    \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\": \"4100ab82d11b78a78cffceb6c1150c6ffc448d8fa5b4b97ec8a5b27cc3b4cab7\",\n    \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\": \"bd6fc29371c02c8f627f60d8879ccf77a0596c6e5ed13b91938f6212d2364664\",\n    \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\": \"89f21c1535039ce58e7bc404727fe806a6976bdef6708fa2a31b292e836be7fe\",\n    \"tests/cron/test_physique_inline_card_maintenance.py\": \"4ce999edcfb4949c6df077026c3dd5282b80ffecc0e268786f442a325c1e357e\",\n    \"restored/tests/gateway/test_nutrition_weekly_operations_topic59.py\": \"d0535437501dc31c7a14de07dab1f27eb96a3d8c27efcf113101827b7055661a\",\n    \"restored/tests/cron/test_physique_inline_card.py\": \"931215dab7c03e4cf1eec8e9da96a5895e8ba119c99843aa18036ddd3eaaab02\"\n  },\n  \"pure_loc\": {\n    \"nutrition_weekly_maintenance_contract.py\": 137,\n    \"nutrition_weekly_maintenance_io.py\": 107,\n    \"nutrition_weekly_maintenance_store.py\": 214,\n    \"nutrition_weekly_operations.py\": 158,\n    \"nutrition_weekly_dispatch_result.py\": 14,\n    \"nutrition_weekly_dispatcher.py\": 250,\n    \"telegram_weekly_host_dispatch.py\": 217,\n    \"physique_inline_card.py\": 154,\n    \"nutrition_weekly_maintenance_support.py\": 231,\n    \"nutrition_weekly_maintenance_fs_mutations.py\": 51,\n    \"nutrition_weekly_maintenance_adversarial_support.py\": 237,\n    \"test_nutrition_weekly_topic59_maintenance.py\": 85,\n    \"test_nutrition_weekly_topic59_maintenance_failures.py\": 70,\n    \"test_nutrition_weekly_dispatcher_maintenance.py\": 30,\n    \"test_physique_inline_card_maintenance.py\": 21,\n    \"inherited_large_files\": [\"gateway/platforms/telegram.py\", \"cron/scheduler.py\"]\n  },\n  \"done_claim\": {\n    \"claim\": \"All four adversarial blockers are closed in source with no package or live effects.\",\n    \"single_responsibility\": \"PASS\",\n    \"boundary_purity\": \"PASS: canonical frozen Pydantic authority/hold/audit documents\",\n    \"variant_and_binding_coverage\": \"PASS: 52 deterministic rejection cases plus valid, crash, concurrency and next-day controls\",\n    \"escape_hatches\": \"PASS\",\n    \"defensive_layer\": \"PASS: ownership and filesystem checks remain at the openat boundary\",\n    \"tests\": \"PASS: wrong lock gid, every negative class, zero-call publication and truthful cron status are locked\",\n    \"parameter_bloat\": \"No new production parameter object is a throwaway wrapper\",\n    \"redundant_verification\": \"Only contract-required durable write readback remains\",\n    \"negative_naming\": \"PASS\",\n    \"logging\": \"NOT_TOUCHED\"\n  }\n}\n"}],"isError":false,"timestamp":1788249040147}}
{"type":"message","id":"422be8c9","parentId":"0c6651fb","timestamp":"2026-09-01T07:50:40.147Z","message":{"role":"toolResult","toolCallId":"call_lxLpI0nm3VzKYrEmddLHLbIG|fc_046f5546d6e20d23016a9683cfe2c887d09fcecce103ee7d33","toolName":"read","content":[{"type":"text","text":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-adversarial-v1\",\n  \"task_id\": \"st_01a05bd2\",\n  \"reviewed_claim_task_id\": \"st_01a05bc2\",\n  \"captured_at\": \"2026-09-01T16:25:07+09:00\",\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"verdict\": \"needs-fix\",\n  \"confidence\": 0.99,\n  \"blocker_count\": 4,\n  \"blockers\": [\n    {\n      \"code\": \"MAINTENANCE_LOCK_WRONG_GID_ACCEPTED\",\n      \"severity\": \"contract_blocker\",\n      \"finding\": \"A maintenance.lock owned by the effective UID but by gid 125 instead of the profile gid 1000 is accepted; the gate returns noop_maintenance and consumes the hold. The contract requires lock to be profile-owned and every wrong owner/group case to fail closed.\",\n      \"source_cause\": \"Topic59MaintenanceGate._evaluate_locked calls _open_file(directory_fd, 'maintenance.lock', 0o600) without the profile gid. nutrition_weekly_maintenance_io.open_file validates gid only when a gid argument is supplied.\",\n      \"repro\": {\n        \"control\": {\n          \"case\": \"hold_wrong_gid\",\n          \"file_gid\": 125,\n          \"profile_gid\": 1000,\n          \"decision\": \"deny\",\n          \"reason\": \"filesystem_contract\"\n        },\n        \"failure\": {\n          \"case\": \"lock_wrong_gid\",\n          \"file_gid\": 125,\n          \"profile_gid\": 1000,\n          \"decision\": \"noop_maintenance\",\n          \"reason\": null\n        }\n      },\n      \"required_fix\": \"Validate maintenance.lock against the profile uid and gid under the same openat/no-follow contract as active, consuming, and audit files, and add a deterministic regression test.\"\n    },\n    {\n      \"code\": \"RECEIPT_HASH_INVENTORY_INCOMPLETE\",\n      \"severity\": \"strict_evidence_blocker\",\n      \"finding\": \"All eight hashes present in the DoneClaim receipt match, but the receipt hashes no tests and omits three propagation files that were modified for this runtime. Therefore the actual changed runtime/test set cannot be hash-matched to the receipt as required.\",\n      \"omitted_runtime_files\": {\n        \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\": \"c75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6\",\n        \"gateway/platforms/telegram_weekly_host_dispatch.py\": \"6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88\",\n        \"gateway/platforms/telegram.py\": \"5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7\"\n      },\n      \"test_hashes_recorded_by_this_review\": {\n        \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\": \"c4bc83bf5153f47760c794815769f594a2df35135314c9a7ac3678de792d7112\",\n        \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\": \"e79329824051ca336365c3622cfdab0c2a4d36fe53e2ee55cea6753ceac6d28a\",\n        \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\": \"b1a400491526427abc8236bb1114765260edeaf2a7b56bf7968e6c5d20201d56\",\n        \"tests/gateway/test_nutrition_weekly_operations_topic59.py\": \"5dbc476bf1cb7246392dddf96ba02ee48fddc5c0b7cf6c39f0cecc06eb73aaac\",\n        \"tests/gateway/test_nutrition_weekly_operations_topic59_failures.py\": \"0e3570a667adcceea3099910550dce888daccc556a466b8c40c8af75a122697c\",\n        \"tests/gateway/test_nutrition_weekly_operations_topic59_r2.py\": \"1eb4967c527c310d3a0333973cf911e48513afc06dc79793a75f2db051e7994e\",\n        \"tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py\": \"1d87c3f528f2af12b143e0b31958f7d54ebc6e71113294b53dfe31c270eaec30\",\n        \"tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py\": \"358d9365895c4f7caddf0104d47f734ccf78b00eab094f527574423b51f6090d\",\n        \"tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py\": \"ea943f130b7c923e678eb8066ae20c01997fb124d9351d92f96be45b9b3032d8\",\n        \"tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py\": \"a50d4046ffe5236f750ef4237ef8068657a282dbe250c05192c876c4911c6abc\",\n        \"tests/cron/test_physique_inline_card.py\": \"b9241d89c96293d9625a504f546b1c44ecfb58cabe6b2088f8fec314ea0ae673\",\n        \"tests/cron/test_scheduler.py\": \"c45b784365292c6572bcab3844dd46b9353f2f5197332ff6850f3752f3eb9b9a\"\n      }\n    },\n    {\n      \"code\": \"DONECLAIM_NEGATIVE_MATRIX_NOT_IN_TEST_SUITE\",\n      \"severity\": \"strict_qualification_blocker\",\n      \"finding\": \"The actual new failure test file contains one case only: artifact without credential. The implementation session transcript confirms no canonical JSON, boundary hash, time, replay, binding, file-kind, mode, nlink, symlink, hardlink, owner/group, audit-tamper, or partial-state matrix was added, despite the DoneClaim describing the maintenance runtime as qualified.\",\n      \"independent_reproduction\": {\n        \"matrix_rejects_passed\": 29,\n        \"matrix_rejects_total\": 29,\n        \"claim_calls\": 0,\n        \"send_calls\": 0,\n        \"edit_calls\": 0,\n        \"network_calls\": 0,\n        \"covered\": [\n          \"authority noncanonical/malformed/empty/oversized/extra-field/wrong-hold-hash\",\n          \"hold noncanonical\",\n          \"early/expired/replayed\",\n          \"wrong candidate/config/route/customer/card-slot/day\",\n          \"hold and lock symlink/hardlink/wrong-mode/FIFO\",\n          \"audit symlink\",\n          \"maintenance-directory symlink\",\n          \"simultaneous active+consuming\",\n          \"partial atomic temp\",\n          \"artifact without credential\"\n        ],\n        \"separate_failure\": \"The wrong-gid lock case did not reject and is blocker MAINTENANCE_LOCK_WRONG_GID_ACCEPTED.\"\n      },\n      \"required_fix\": \"Land deterministic source tests for the full matrix, including the discovered wrong-gid lock regression, rather than relying on an unrecorded manual oracle.\"\n    },\n    {\n      \"code\": \"CHANGED_TEST_DIAGNOSTICS_FAIL_STRICT_GATE\",\n      \"severity\": \"strict_diagnostics_blocker\",\n      \"finding\": \"Fresh basedpyright over the five changed maintenance/propagation test files reports 104 errors. Current LSP reports errors in the new maintenance tests and modified Topic59/cron tests. These are changed-region diagnostics, not the stale new-module import issue.\",\n      \"stale_import_resolution\": \"The persistent LSP still reports missing imports for nutrition_weekly_maintenance_io and nutrition_weekly_dispatch_result in source files, while a fresh basedpyright process over the targeted runtime source reports 0 errors, 0 warnings, 0 notes. Those source import errors are stale. The test diagnostics reproduce in both current LSP and a fresh basedpyright process and are real.\",\n      \"examples\": [\n        \"OpaqueProjectionSlot/OpaqueProjectionDigest arguments supplied as plain str\",\n        \"untyped monkeypatch parameters and members\",\n        \"AsyncFakeCardTransport does not satisfy _AsyncCardAdapter\",\n        \"raw_response inferred as None and later assigned NutritionScheduledTickOutcome\",\n        \"private _ledger access and untyped claim lambda\"\n      ]\n    }\n  ],\n  \"evidence\": {\n    \"receipt_eight_runtime_hashes\": {\n      \"result\": \"all_match\",\n      \"hashes\": {\n        \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n        \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d\",\n        \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542\",\n        \"gateway/platforms/nutrition_weekly_operations.py\": \"b0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e\",\n        \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n        \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n        \"cron/physique_inline_card.py\": \"9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2\",\n        \"cron/scheduler.py\": \"09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95\"\n      }\n    },\n    \"call_path\": {\n      \"source_order\": [\n        \"Topic59DayCardProjector.publish calls reserves_topic59, which validates customer identity, candidate identity, and weekly_operations_is_authorized\",\n        \"publish validates review_route and computes the exact Topic59Projection\",\n        \"publish calls Topic59MaintenanceGate.evaluate(projection, runtime.now)\",\n        \"NOOP_MAINTENANCE returns immediately with logical_key and maintenance_audit_digest\",\n        \"Topic59PublicationLedger.claim occurs only after the exhaustive maintenance decision match\",\n        \"transport send/edit occurs only after claim returns a send/edit action\"\n\n[90 more lines in file. Use offset=121 to continue.]"}],"isError":false,"timestamp":1788249040147}}
{"type":"message","id":"71749eb6","parentId":"422be8c9","timestamp":"2026-09-01T07:50:40.147Z","message":{"role":"toolResult","toolCallId":"call_TWvtlghMgDOjCKGk65D58TKu|fc_046f5546d6e20d23016a9683cfe2d087d08b832f2ca69f1b05","toolName":"bash","content":[{"type":"text","text":"2026-09-01T16:30:50.9608176430 gateway/platforms/nutrition_weekly_maintenance_io.py\n2026-09-01T16:30:50.9609193650 gateway/platforms/nutrition_weekly_maintenance_store.py\n2026-09-01T16:36:51.3952470020 tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n2026-09-01T16:37:13.0639712210 tests/gateway/nutrition_weekly_maintenance_support.py\n2026-09-01T16:37:13.0641560700 tests/gateway/nutrition_weekly_maintenance_fs_mutations.py\n2026-09-01T16:37:45.2427944840 tests/gateway/test_nutrition_weekly_topic59_maintenance.py\n2026-09-01T16:39:09.8288203880 tests/gateway/test_nutrition_weekly_operations_topic59.py\n2026-09-01T16:39:09.8437511670 tests/cron/test_physique_inline_card.py\n2026-09-01T16:39:09.8739950570 cron/scheduler.py\n2026-09-01T16:39:44.0429502740 tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n2026-09-01T16:40:29.6569230750 cron/physique_inline_card.py\n2026-09-01T16:42:04.6266813380 gateway/platforms/nutrition_weekly_operations.py\n2026-09-01T16:45:02.7409059630 tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n2026-09-01T16:45:02.7554916600 tests/cron/test_physique_inline_card_maintenance.py\n--- maintenance refs\ncron/physique_inline_card.py\ngateway/platforms/nutrition_weekly_dispatch_result.py\ngateway/platforms/nutrition_weekly_dispatcher.py\ngateway/platforms/nutrition_weekly_maintenance_contract.py\ngateway/platforms/nutrition_weekly_maintenance_io.py\ngateway/platforms/nutrition_weekly_maintenance_store.py\ngateway/platforms/nutrition_weekly_operations.py\ngateway/platforms/telegram.py\ngateway/platforms/telegram_weekly_host_dispatch.py\ntests/cron/test_physique_inline_card_maintenance.py\ntests/gateway/nutrition_weekly_maintenance_adversarial_support.py\ntests/gateway/nutrition_weekly_maintenance_support.py\ntests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py\ntests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n"}],"isError":false,"timestamp":1788249040147}}
{"type":"message","id":"af1d0cbf","parentId":"71749eb6","timestamp":"2026-09-01T07:50:40.147Z","message":{"role":"toolResult","toolCallId":"call_kaWNjaQrXW4etySREWRXDkJv|fc_046f5546d6e20d23016a9683cfe2d887d0a6b3e904cc52458f","toolName":"bash","content":[{"type":"text","text":"2026-09-01T16:27:45.9445414130 task-10-r71b-maintenance-runtime-adversarial.json\n2026-09-01T16:49:21.4840966130 task-10-r71b-maintenance-runtime.json\n"}],"isError":false,"timestamp":1788249040147}}
{"type":"message","id":"176454e9","parentId":"af1d0cbf","timestamp":"2026-09-01T07:50:51.506Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Inspecting amended source tests and runtime changes**","startedAt":1788249042292,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9683d233f487d08d6fdccab3e4a53e\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloPb6V2XQUaMERiEv9yR00dK8Q2kZgX1pmJJrPBQ1RH4Xk6GUuz2IDZPT7le5IEb6TmYKkK47GCQ4L1r363xA00lf3eA9UTqjOtvR6qB_KMvvboGWssUs5oibeHYh6qnGZhz58UgVMAeG_X7cievK8f8cbimoujewjPczxVcqUWwfCqHUxrBSjgCzUIcwMFmYV266Xsc-WtKgt4xeP91DNFwWWH4qN8sP-VawntMsXXpO0z1sUZUXvnJtMxf4TTT8uLeV--Ym1q0jHNg2lTZSyBKo_FASg1XyJHr-8ahPWcfGP4_JjrugmQYOpLZMIkz7JEwMcSEEtYGCA7iXTJp3SU26CXVOXX6qNVekkZuiVQHgqftEq-GN-bMpOcBZWgcHLISWuMp-wtX8T2kNrAnJO2bCBlvLnLepH6E6yGO9F6obHVaXMt6y4CIFhzXdkxQVkQtCURImBMf6R76EIby_cihcBFChVfjTDPwaeEkDKdQHngIWImQptaVfzr5mf3mKFibJEGqA3n9otTeOzpvCyRQdgxKYBgS6xSMB56aH0v6PooR913v0aBShygmvuUud_b4VTYwXacmM2bBluAwoGq9tNE2Ln9CWjqpdiqM63BZ1j_ocFcbktoinHr3k_-vCbaPUHRCPAT86xIdDcR-aDPvwaIkQ_I7QadeEA-gPF29lKUankxiCi_IdaCQs1wuin-18WblphRoqz8_HsCfU_OnWTzum3HTjV2N_yaqE__EKgmax9VuVo-EHkDuBX7XhHVwYfyGgAdoKBDxPfWWaZ9pyChTTwCaekN_q8-P-h_Gvw_SjTSYz-A8Hflfh-HR2CtUCulcncRaAogcLV6G4619Q16N6xdqYibqvaq3I6fTBFxM-UulwpJkmCxwZP6nhcHFJDXiv0h7tRaHFSgzIDp4WGt70y72EQyNQoUsNXsOv6em5KlXPrSDUNMzTIUAJrc8VQHwRhOB-SCtP3LSH-RGtthWYuYBlMR7e5J1syU0U5fieOZ4xLSfirkdvfW9z5bgRTOFOkEu83bcqw9pfsROEjWgx3XgE2PyfGma-bWkgxJXle_Z2jtyGf09Y-GcMbvU8GHMF_pBYy_sbAXvrTd2T4XMwc9ni-usEaYLoypLZH0pdY91T3PkQvED2nyuYQI0WcF_zzA2v_sAA1ef87hNxs-ftKo78DxxyEnx3FwOvlDXpDfhe1xOt9BWA0HZ_skxbeIPEJ87TTU5rjB5sDL61FcExIpWS99WgZL63JBv8vUwt5wJe3zDYztRVZgoUQvOFX2BlNLnb7CR-apeUrQbSPg6XmghyJCblUsaWYNhzGuU00xqQU0WbFRjyJfZnMfkMEh7B_PPUhajcboZe0zU4uWjda5x94zfrY3JcUrfUGgBaBRd1pAIlspIlu4eu_0iSKxkdEaGosAZR48kQy6OKHFrE_qaeNPo5MZQzrZEZAMr2u5AYdBqGPv7PMEeNA7QcdNw6t41aSHI_lZQtdWPJsrCz7ESmg9IpiH3sKu15ME=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Inspecting amended source tests and runtime changes**\"}]}","endedAt":1788249051505},{"type":"toolCall","id":"call_IZ5VyM8B3PGAr8PIVMcEsIpD|fc_046f5546d6e20d23016a9683db2bf487d0a1e37683fa5177fe","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_io.py"}},{"type":"toolCall","id":"call_ywlFChxr7ysQxMP0ccERbhHp|fc_046f5546d6e20d23016a9683db2c0887d08aa4fd60f4abdf31","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py"}},{"type":"toolCall","id":"call_Yl07JTCruBQ9IzwtFLJeNRCl|fc_046f5546d6e20d23016a9683db2c1087d0a962cbd2da1c7cc7","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_operations.py"}},{"type":"toolCall","id":"call_EPLLvTvZvFYmZxPXKcRr8hTp|fc_046f5546d6e20d23016a9683db2c1887d0a02c678df4325bd5","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/nutrition_weekly_maintenance_support.py"}},{"type":"toolCall","id":"call_QjKxzOoiOjf6FtlOMt557E1m|fc_046f5546d6e20d23016a9683db2c2487d09ee9d4b3f1df32e7","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/nutrition_weekly_maintenance_fs_mutations.py"}},{"type":"toolCall","id":"call_7DZmV1D7iTplJyx8FfFfPLCr|fc_046f5546d6e20d23016a9683db2c2c87d0984581cd5e775323","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/nutrition_weekly_maintenance_adversarial_support.py"}},{"type":"toolCall","id":"call_AKtTXCwjUQeEqKfZvnkCHjYl|fc_046f5546d6e20d23016a9683db2c3487d087ce8ac6a7b80db4","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py"}},{"type":"toolCall","id":"call_LsBi8eSKWSF4AXaQKhRB8dIy|fc_046f5546d6e20d23016a9683db2c3c87d0a63db13ba65635f3","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py"}},{"type":"toolCall","id":"call_uGXpUfNK5twD15EDUpVTDciD|fc_046f5546d6e20d23016a9683db2c4087d0a08ab414867be978","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py"}},{"type":"toolCall","id":"call_05VpZiPFfv1m2HZNere1QAO3|fc_046f5546d6e20d23016a9683db2c4887d09abe0879f2b63b0d","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card_maintenance.py"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":7116,"output":499,"cacheRead":185856,"cacheWrite":0,"reasoning":34,"totalTokens":193471,"cost":{"input":0.03558,"output":0.01497,"cacheRead":0.092928,"cacheWrite":0,"total":0.143478}},"stopReason":"toolUse","timestamp":1788249040189,"responseId":"resp_046f5546d6e20d23016a9683d0887087d08761a6e701d8db7b","rawStopReason":"completed"}}
{"type":"message","id":"81478d8a","parentId":"176454e9","timestamp":"2026-09-01T07:50:51.535Z","message":{"role":"toolResult","toolCallId":"call_IZ5VyM8B3PGAr8PIVMcEsIpD|fc_046f5546d6e20d23016a9683db2bf487d0a1e37683fa5177fe","toolName":"read","content":[{"type":"text","text":"\"\"\"Secure openat and atomic-write primitives for Topic-59 maintenance.\"\"\"\n\nfrom __future__ import annotations\n\nimport os\nimport stat\nfrom dataclasses import dataclass\nfrom pathlib import Path\nfrom typing import Final, TypeVar\n\nfrom pydantic import BaseModel\n\nfrom .nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceAuthorityV1,\n    Topic59MaintenanceContractError,\n    canonical_document,\n)\n\n_CREDENTIAL: Final = \"nutricoach-topic59-maintenance-r71b.json\"\n_DIRECTORY_FLAGS: Final = os.O_RDONLY | os.O_DIRECTORY | os.O_CLOEXEC | os.O_NOFOLLOW\n_FILE_FLAGS: Final = os.O_RDONLY | os.O_CLOEXEC | os.O_NOFOLLOW | os.O_NONBLOCK\n_MAX_BYTES: Final = 8192\n_DocumentT = TypeVar(\"_DocumentT\", bound=BaseModel)\n\n\n@dataclass(frozen=True, slots=True)\nclass OwnedMaintenanceDirectory:\n    descriptor: int\n    uid: int\n    gid: int\n\n\ndef read_credential(root: Path) -> Topic59MaintenanceAuthorityV1:\n    root_fd = os.open(root, _DIRECTORY_FLAGS)\n    try:\n        raw = read_regular_at(root_fd, _CREDENTIAL, 0o400, os.geteuid(), None)\n        return parse_document(raw, Topic59MaintenanceAuthorityV1)\n    finally:\n        os.close(root_fd)\n\n\ndef open_owned_directory(profile_root: Path) -> OwnedMaintenanceDirectory:\n    profile_fd = os.open(profile_root, _DIRECTORY_FLAGS)\n    profile_info = os.fstat(profile_fd)\n    if profile_info.st_uid != os.geteuid() or profile_info.st_gid != os.getegid():\n        os.close(profile_fd)\n        raise PermissionError\n    try:\n        data_fd = os.open(\"data\", _DIRECTORY_FLAGS, dir_fd=profile_fd)\n    finally:\n        os.close(profile_fd)\n    data_info = os.fstat(data_fd)\n    if data_info.st_uid != profile_info.st_uid or data_info.st_gid != profile_info.st_gid:\n        os.close(data_fd)\n        raise PermissionError\n    try:\n        directory_fd = os.open(\"topic59-maintenance-r71b\", _DIRECTORY_FLAGS, dir_fd=data_fd)\n    finally:\n        os.close(data_fd)\n    info = os.fstat(directory_fd)\n    if (\n        not stat.S_ISDIR(info.st_mode) or stat.S_IMODE(info.st_mode) != 0o700\n        or info.st_uid != profile_info.st_uid or info.st_gid != profile_info.st_gid\n    ):\n        os.close(directory_fd)\n        raise PermissionError\n    return OwnedMaintenanceDirectory(\n        descriptor=directory_fd, uid=profile_info.st_uid, gid=profile_info.st_gid,\n    )\n\n\ndef read_regular_at(\n    directory_fd: int, name: str, mode: int, uid: int, gid: int | None,\n) -> bytes:\n    descriptor = open_file(directory_fd, name, mode, uid, gid)\n    try:\n        raw = os.read(descriptor, _MAX_BYTES + 1)\n        if not raw or len(raw) > _MAX_BYTES or os.read(descriptor, 1):\n            raise Topic59MaintenanceContractError()\n        return raw\n    finally:\n        os.close(descriptor)\n\n\ndef open_file(\n    directory_fd: int, name: str, mode: int, uid: int | None = None, gid: int | None = None,\n) -> int:\n    descriptor = os.open(name, _FILE_FLAGS, dir_fd=directory_fd)\n    info = os.fstat(descriptor)\n    expected_uid = os.geteuid() if uid is None else uid\n    if (\n        not stat.S_ISREG(info.st_mode) or stat.S_IMODE(info.st_mode) != mode\n        or info.st_uid != expected_uid or (gid is not None and info.st_gid != gid)\n        or info.st_nlink != 1\n    ):\n        os.close(descriptor)\n        raise PermissionError\n    return descriptor\n\n\ndef parse_document(raw: bytes, model: type[_DocumentT]) -> _DocumentT:\n    parsed = model.model_validate_json(raw)\n    if canonical_document(parsed) != raw:\n        raise Topic59MaintenanceContractError()\n    return parsed\n\n\ndef atomic_write_at(directory_fd: int, name: str, raw: bytes) -> None:\n    temporary = f\".{name}.tmp\"\n    descriptor = os.open(\n        temporary, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_CLOEXEC | os.O_NOFOLLOW,\n        0o600, dir_fd=directory_fd,\n    )\n    try:\n        view = memoryview(raw)\n        while view:\n            view = view[os.write(descriptor, view):]\n        os.fsync(descriptor)\n    finally:\n        os.close(descriptor)\n    os.rename(temporary, name, src_dir_fd=directory_fd, dst_dir_fd=directory_fd)\n    fsync_directory(directory_fd)\n    if read_regular_at(directory_fd, name, 0o600, os.geteuid(), os.getegid()) != raw:\n        raise OSError\n\n\ndef fsync_directory(directory_fd: int) -> None:\n    os.fsync(directory_fd)\n"}],"isError":false,"timestamp":1788249051535}}
{"type":"message","id":"5a573bbc","parentId":"81478d8a","timestamp":"2026-09-01T07:50:51.535Z","message":{"role":"toolResult","toolCallId":"call_ywlFChxr7ysQxMP0ccERbhHp|fc_046f5546d6e20d23016a9683db2c0887d08aa4fd60f4abdf31","toolName":"read","content":[{"type":"text","text":"\"\"\"Crash-safe, no-follow storage gate for the r71b Topic-59 hold.\"\"\"\n\nfrom __future__ import annotations\n\nimport fcntl\nimport hashlib\nimport json\nimport os\nfrom dataclasses import dataclass\nfrom datetime import date, datetime\nfrom pathlib import Path\nfrom typing import Final, TypeVar\n\nfrom pydantic import BaseModel, ValidationError\n\nfrom .nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceAuthorityV1,\n    Topic59MaintenanceContractError,\n    Topic59MaintenanceDecision,\n    Topic59MaintenanceDecisionKind,\n    Topic59MaintenanceFailure,\n    Topic59MaintenanceHoldV1,\n    Topic59MaintenanceSkipAuditV1,\n    canonical_document,\n)\nfrom .nutrition_weekly_maintenance_io import (\n    atomic_write_at as _atomic_write_at,\n    fsync_directory as _fsync_directory,\n    OwnedMaintenanceDirectory,\n    open_file as _open_file,\n    open_owned_directory as _open_owned_directory,\n    parse_document as _parse_document,\n    read_credential as _read_credential,\n    read_regular_at as _read_regular_at,\n)\nfrom .nutrition_weekly_operations_models import Topic59Projection\n\n_DocumentT = TypeVar(\"_DocumentT\", bound=BaseModel)\n_EXPECTED_NAMES: Final = frozenset({\n    \"hold.json\", \"hold.consuming.json\", \"skip-audit.json\", \"maintenance.lock\",\n})\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59MaintenancePaths:\n    profile_root: Path\n    directory: Path\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59MaintenanceGate:\n    paths: Topic59MaintenancePaths\n\n    @classmethod\n    def for_profile(cls, profile_root: Path) -> Topic59MaintenanceGate:\n        return cls(Topic59MaintenancePaths(\n            profile_root, profile_root / \"data\" / \"topic59-maintenance-r71b\",\n        ))\n\n    def evaluate(\n        self, projection: Topic59Projection, now: datetime,\n    ) -> Topic59MaintenanceDecision:\n        credential_root = os.environ.get(\"CREDENTIALS_DIRECTORY\")\n        if credential_root is None:\n            if not os.path.lexists(self.paths.directory):\n                return _allow()\n            return _deny(Topic59MaintenanceFailure.AUTHORITY_MISSING_FOR_TARGET_DAY)\n        try:\n            authority = _read_credential(Path(credential_root))\n        except FileNotFoundError:\n            if not os.path.lexists(self.paths.directory):\n                return _allow()\n            return _deny(Topic59MaintenanceFailure.AUTHORITY_MISSING_FOR_TARGET_DAY)\n        except (OSError, ValidationError, Topic59MaintenanceContractError):\n            return _deny(Topic59MaintenanceFailure.AUTHORITY_CORRUPT)\n        try:\n            directory = _open_owned_directory(self.paths.profile_root)\n        except FileNotFoundError:\n            if authority.hold.kst_day == projection.kst_day:\n                return _deny(Topic59MaintenanceFailure.HOLD_MISSING)\n            return _allow()\n        except OSError:\n            return _deny(Topic59MaintenanceFailure.FILESYSTEM_CONTRACT)\n        try:\n            return self._evaluate_locked(directory, authority, projection, now)\n        finally:\n            os.close(directory.descriptor)\n\n    def _evaluate_locked(\n        self,\n        directory: OwnedMaintenanceDirectory,\n        authority: Topic59MaintenanceAuthorityV1,\n        projection: Topic59Projection,\n        now: datetime,\n    ) -> Topic59MaintenanceDecision:\n        try:\n            if frozenset(os.listdir(directory.descriptor)) - _EXPECTED_NAMES:\n                return _deny(Topic59MaintenanceFailure.FILESYSTEM_CONTRACT)\n            lock_fd = _open_file(\n                directory.descriptor, \"maintenance.lock\", 0o600, directory.uid, directory.gid,\n            )\n            try:\n                fcntl.flock(lock_fd, fcntl.LOCK_EX)\n                return _consume_locked(directory, authority, projection, now)\n            finally:\n                fcntl.flock(lock_fd, fcntl.LOCK_UN)\n                os.close(lock_fd)\n        except FileNotFoundError:\n            return _deny(Topic59MaintenanceFailure.FILESYSTEM_CONTRACT)\n        except (OSError, ValidationError, Topic59MaintenanceContractError):\n            return _deny(Topic59MaintenanceFailure.FILESYSTEM_CONTRACT)\n\n\ndef _consume_locked(\n    directory: OwnedMaintenanceDirectory,\n    authority: Topic59MaintenanceAuthorityV1,\n    projection: Topic59Projection,\n    now: datetime,\n) -> Topic59MaintenanceDecision:\n    directory_fd = directory.descriptor\n    hold = authority.hold\n    audit = _optional_document(directory, \"skip-audit.json\", Topic59MaintenanceSkipAuditV1)\n    active = _optional_document(directory, \"hold.json\", Topic59MaintenanceHoldV1)\n    consuming = _optional_document(directory, \"hold.consuming.json\", Topic59MaintenanceHoldV1)\n    if audit is not None:\n        if not _audit_matches(audit, authority, hold):\n            return _deny(Topic59MaintenanceFailure.AUDIT_CORRUPT)\n        if projection.kst_day != hold.kst_day:\n            if active is None and consuming is None:\n                return _allow()\n            return _deny(Topic59MaintenanceFailure.HOLD_REPLAYED)\n        if not _projection_matches(hold, projection):\n            return _deny(Topic59MaintenanceFailure.BINDING_MISMATCH)\n        if active is not None:\n            return _deny(Topic59MaintenanceFailure.HOLD_REPLAYED)\n        if consuming is not None:\n            if consuming != hold:\n                return _deny(Topic59MaintenanceFailure.HOLD_REPLAYED)\n            os.unlink(\"hold.consuming.json\", dir_fd=directory_fd)\n            _fsync_directory(directory_fd)\n        return _noop(canonical_document(audit))\n    selected = consuming if consuming is not None else active\n    if selected is None:\n        if hold.kst_day == projection.kst_day:\n            return _deny(Topic59MaintenanceFailure.HOLD_MISSING)\n        return _allow()\n    if selected != hold or not _projection_matches(hold, projection):\n        return _deny(Topic59MaintenanceFailure.BINDING_MISMATCH)\n    if now < hold.not_before:\n        return _deny(Topic59MaintenanceFailure.HOLD_NOT_YET_VALID)\n    if now >= hold.expires_at:\n        return _deny(Topic59MaintenanceFailure.HOLD_EXPIRED)\n    if active is not None:\n        if consuming is not None:\n            return _deny(Topic59MaintenanceFailure.HOLD_REPLAYED)\n        os.rename(\n            \"hold.json\", \"hold.consuming.json\",\n            src_dir_fd=directory_fd, dst_dir_fd=directory_fd,\n        )\n        _fsync_directory(directory_fd)\n    audit_bytes = _build_audit(authority, hold, now)\n    _atomic_write_at(directory_fd, \"skip-audit.json\", audit_bytes)\n    os.unlink(\"hold.consuming.json\", dir_fd=directory_fd)\n    _fsync_directory(directory_fd)\n    return _noop(audit_bytes)\n\n\ndef _optional_document(\n    directory: OwnedMaintenanceDirectory, name: str, model: type[_DocumentT],\n) -> _DocumentT | None:\n    try:\n        raw = _read_regular_at(\n            directory.descriptor, name, 0o600, directory.uid, directory.gid,\n        )\n    except FileNotFoundError:\n        return None\n    return _parse_document(raw, model)\n\n\ndef _projection_matches(hold: Topic59MaintenanceHoldV1, projection: Topic59Projection) -> bool:\n    return (\n        hold.candidate_digest == projection.candidate_digest\n        and hold.config_digest == projection.config_digest\n        and hold.route_digest == projection.route_digest\n        and hold.customer_identity_digest == projection.customer_identity_digest\n        and hold.card_slot == projection.card_slot\n        and hold.kst_day == projection.kst_day\n    )\n\n\ndef _audit_matches(\n    audit: Topic59MaintenanceSkipAuditV1,\n    authority: Topic59MaintenanceAuthorityV1,\n    hold: Topic59MaintenanceHoldV1,\n) -> bool:\n    return (\n        audit.hold_id == hold.hold_id and audit.hold_sha256 == authority.hold_sha256\n        and audit.authority_id == authority.authority_id\n        and audit.package_digest == hold.package_digest\n        and audit.candidate_digest == hold.candidate_digest\n        and audit.config_digest == hold.config_digest and audit.route_digest == hold.route_digest\n        and audit.customer_identity_digest == hold.customer_identity_digest\n        and audit.card_slot == hold.card_slot and audit.kst_day == hold.kst_day\n        and hold.not_before <= audit.recorded_at < hold.expires_at\n    )\n\n\ndef _build_audit(\n    authority: Topic59MaintenanceAuthorityV1, hold: Topic59MaintenanceHoldV1, now: datetime,\n) -> bytes:\n    fields: dict[str, str | bool | int | None | date | datetime] = {\n        \"schema\": \"nutricoach-topic59-maintenance-skip-audit-v1\",\n        \"hold_id\": hold.hold_id, \"hold_sha256\": authority.hold_sha256,\n        \"authority_id\": authority.authority_id, \"package_digest\": hold.package_digest,\n        \"candidate_digest\": hold.candidate_digest, \"config_digest\": hold.config_digest,\n        \"route_digest\": hold.route_digest,\n        \"customer_identity_digest\": hold.customer_identity_digest,\n        \"card_slot\": hold.card_slot, \"kst_day\": hold.kst_day.isoformat(),\n        \"recorded_at\": now.isoformat(), \"terminal_state\": \"maintenance_skipped\",\n        \"disposition\": \"noop_maintenance\", \"sent\": False, \"delivered\": False,\n        \"message_id\": None, \"provider_receipt\": None, \"provider_calls\": 0, \"network_calls\": 0,\n    }\n    encoded = json.dumps(fields, sort_keys=True, separators=(\",\", \":\")).encode()\n    fields[\"row_digest\"] = hashlib.sha256(encoded).hexdigest()\n    fields[\"kst_day\"] = hold.kst_day\n    fields[\"recorded_at\"] = now\n    return canonical_document(Topic59MaintenanceSkipAuditV1.model_validate(fields))\n\n\ndef _allow() -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(kind=Topic59MaintenanceDecisionKind.ALLOW)\n\n\ndef _deny(reason: Topic59MaintenanceFailure) -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(kind=Topic59MaintenanceDecisionKind.DENY, reason=reason)\n\n\ndef _noop(raw: bytes) -> Topic59MaintenanceDecision:\n    return Topic59MaintenanceDecision(\n        kind=Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n        audit_digest=hashlib.sha256(raw).hexdigest(),\n    )\n"}],"isError":false,"timestamp":1788249051535}}
{"type":"message","id":"df1375bc","parentId":"5a573bbc","timestamp":"2026-09-01T07:50:51.535Z","message":{"role":"toolResult","toolCallId":"call_Yl07JTCruBQ9IzwtFLJeNRCl|fc_046f5546d6e20d23016a9683db2c1087d0a962cbd2da1c7cc7","toolName":"read","content":[{"type":"text","text":"\"\"\"Fail-closed Topic-59 card projection and publication boundary.\"\"\"\n\nfrom __future__ import annotations\n\nimport hashlib\nfrom dataclasses import dataclass\nfrom datetime import datetime\nfrom enum import StrEnum\nfrom pathlib import Path\nfrom typing import Protocol\n\nfrom .nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecision,\n    Topic59MaintenanceDecisionKind,\n)\nfrom .nutrition_weekly_operations_authority import (\n    WeeklyOperationsAuthorityReceipt,\n    WeeklyOperationsRuntimeContext,\n    weekly_operations_is_authorized,\n)\nfrom .nutrition_weekly_operations_config import WeeklyOperationsConfig\nfrom .nutrition_weekly_operations_ledger import Topic59PublicationLedger\nfrom .nutrition_weekly_operations_models import (\n    Topic59DayCard,\n    Topic59Projection,\n    project_topic59_day_card,\n)\nfrom .nutrition_weekly_operations_publication_contract import (\n    Topic59IncidentReason,\n    Topic59LedgerAction,\n    Topic59LedgerConflict,\n    Topic59LedgerError,\n    Topic59LedgerState,\n    Topic59ProviderDelivered,\n    Topic59ProviderOutcome,\n)\n\n\nclass Topic59PublicationDisposition(StrEnum):\n    REFUSED = \"refused\"\n    SENT = \"sent\"\n    EDITED = \"edited\"\n    NOOP = \"noop\"\n    NOOP_MAINTENANCE = \"noop_maintenance\"\n    INCIDENT = \"incident\"\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59PublicationRequest:\n    card: Topic59DayCard\n    config: WeeklyOperationsConfig\n    receipt: WeeklyOperationsAuthorityReceipt\n    runtime: WeeklyOperationsRuntimeContext\n\n\n@dataclass(frozen=True, slots=True)\nclass Topic59PublicationResult:\n    disposition: Topic59PublicationDisposition\n    logical_key: str | None = None\n    message_id: str | None = None\n    reason: Topic59IncidentReason | None = None\n    maintenance_audit_digest: str | None = None\n\n\nclass Topic59MaintenanceEvaluator(Protocol):\n    def evaluate(\n        self, projection: Topic59Projection, now: datetime,\n    ) -> Topic59MaintenanceDecision: ...\n\n\nclass Topic59PublicationLedgerPort(Protocol):\n    def claim(self, projection: Topic59Projection) -> Topic59LedgerAction: ...\n\n    def record(\n        self, action: Topic59LedgerAction, outcome: Topic59ProviderOutcome,\n    ) -> Topic59LedgerState: ...\n\n\nclass Topic59Transport(Protocol):\n    async def send(self, *, chat_id: str, topic_id: str, text: str) -> Topic59ProviderOutcome: ...\n\n    async def edit(\n        self, *, chat_id: str, topic_id: str, message_id: str, text: str\n    ) -> Topic59ProviderOutcome: ...\n\n\nclass Topic59DayCardProjector:\n    def __init__(\n        self, ledger_path: Path,\n        maintenance_gate: Topic59MaintenanceEvaluator | None = None,\n        publication_ledger: Topic59PublicationLedgerPort | None = None,\n    ) -> None:\n        self._ledger: Topic59PublicationLedgerPort = (\n            Topic59PublicationLedger(ledger_path)\n            if publication_ledger is None else publication_ledger\n        )\n        self._maintenance_gate: Topic59MaintenanceEvaluator | None = maintenance_gate\n\n    async def publish(\n        self, request: Topic59PublicationRequest, transport: Topic59Transport\n    ) -> Topic59PublicationResult:\n        if not self.reserves_topic59(request):\n            return Topic59PublicationResult(Topic59PublicationDisposition.REFUSED, reason=Topic59IncidentReason.AUTHORITY_REJECTED)\n        route = request.config.review_route\n        if route is None:\n            return Topic59PublicationResult(Topic59PublicationDisposition.REFUSED, reason=Topic59IncidentReason.AUTHORITY_REJECTED)\n        projection = project_topic59_day_card(request.card, config_digest=request.config.digest, route_key=route.key)\n        if self._maintenance_gate is not None:\n            maintenance = self._maintenance_gate.evaluate(projection, request.runtime.now)\n            match maintenance.kind:\n                case Topic59MaintenanceDecisionKind.ALLOW:\n                    pass\n                case Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE:\n                    return Topic59PublicationResult(\n                        Topic59PublicationDisposition.NOOP_MAINTENANCE, projection.logical_key,\n                        maintenance_audit_digest=maintenance.audit_digest,\n                    )\n                case Topic59MaintenanceDecisionKind.DENY:\n                    return Topic59PublicationResult(\n                        Topic59PublicationDisposition.REFUSED, projection.logical_key,\n                        reason=Topic59IncidentReason.MAINTENANCE_REJECTED,\n                    )\n        try:\n            action = self._ledger.claim(projection)\n        except Topic59LedgerError:\n            return Topic59PublicationResult(\n                Topic59PublicationDisposition.INCIDENT, projection.logical_key, reason=Topic59IncidentReason.LEDGER_CORRUPTION\n            )\n        if action.kind == \"noop\":\n            return Topic59PublicationResult(Topic59PublicationDisposition.NOOP, projection.logical_key, action.message_id)\n        if action.kind == \"incident\":\n            return Topic59PublicationResult(\n                Topic59PublicationDisposition.INCIDENT, projection.logical_key, action.message_id, action.reason\n            )\n        outcome = await self._deliver(action, route.chat_id, transport)\n        try:\n            state = self._ledger.record(action, outcome)\n        except Topic59LedgerError:\n            return Topic59PublicationResult(\n                Topic59PublicationDisposition.INCIDENT, projection.logical_key, action.message_id, Topic59IncidentReason.LEDGER_CORRUPTION\n            )\n        if state is Topic59LedgerState.SENT_AUDITED:\n            disposition = Topic59PublicationDisposition.SENT if action.operation == \"send\" else Topic59PublicationDisposition.EDITED\n            return Topic59PublicationResult(disposition, projection.logical_key, _receipt(action, outcome))\n        return Topic59PublicationResult(\n            Topic59PublicationDisposition.INCIDENT,\n            projection.logical_key,\n            action.message_id,\n            Topic59IncidentReason.PROVIDER_TERMINAL,\n        )\n\n    @staticmethod\n    def reserves_topic59(request: Topic59PublicationRequest) -> bool:\n        route = request.config.review_route\n        expected_identity = _customer_identity_digest(request.runtime.customer_key)\n        return (\n            route is not None\n            and request.card.customer_identity_digest == expected_identity\n            and request.card.candidate_digest == request.runtime.candidate_digest\n            and weekly_operations_is_authorized(request.config, request.receipt, request.runtime)\n        )\n\n    @staticmethod\n    async def _deliver(\n        action: Topic59LedgerAction, chat_id: str, transport: Topic59Transport\n    ) -> Topic59ProviderOutcome:\n        if action.operation == \"send\":\n            return await transport.send(chat_id=chat_id, topic_id=\"59\", text=action.projection.text)\n        if action.operation == \"edit\" and action.message_id is not None:\n            return await transport.edit(\n                chat_id=chat_id, topic_id=\"59\", message_id=action.message_id, text=action.projection.text\n            )\n        raise Topic59LedgerConflict(\"invalid publication action\")\n\n\ndef _customer_identity_digest(customer_key: str) -> str:\n    material = f\"nutricoach-weekly-operations-customer-identity-v1\\0{customer_key}\"\n    return hashlib.sha256(material.encode(\"utf-8\")).hexdigest()\n\n\ndef _receipt(action: Topic59LedgerAction, outcome: Topic59ProviderOutcome) -> str | None:\n    if action.operation == \"edit\":\n        return action.message_id\n    return outcome.message_id if isinstance(outcome, Topic59ProviderDelivered) else None\n"}],"isError":false,"timestamp":1788249051535}}
{"type":"message","id":"1832a374","parentId":"df1375bc","timestamp":"2026-09-01T07:50:51.535Z","message":{"role":"toolResult","toolCallId":"call_EPLLvTvZvFYmZxPXKcRr8hTp|fc_046f5546d6e20d23016a9683db2c1887d0a02c678df4325bd5","toolName":"read","content":[{"type":"text","text":"\"\"\"Strict fixtures for adversarial Topic-59 maintenance tests.\"\"\"\n\nfrom __future__ import annotations\n\nimport hashlib\nimport os\nfrom dataclasses import dataclass\nfrom datetime import date, datetime, timedelta\nfrom pathlib import Path\nfrom typing import Final\nfrom zoneinfo import ZoneInfo\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceAuthorityV1,\n    Topic59MaintenanceHoldV1,\n    canonical_document,\n)\nfrom gateway.platforms.nutrition_weekly_operations import (\n    Topic59DayCardProjector, Topic59PublicationRequest, Topic59PublicationResult,\n)\nfrom gateway.platforms.nutrition_weekly_operations_authority import (\n    WeeklyOperationsRuntimeContext,\n)\nfrom gateway.platforms.nutrition_weekly_operations_config import (\n    WeeklyOperationsConfig, WeeklyOperationsReviewRoute,\n)\nfrom gateway.platforms.nutrition_weekly_operations_publication_contract import (\n    Topic59LedgerAction, Topic59LedgerState, Topic59ProviderOutcome,\n)\nfrom gateway.platforms.nutrition_weekly_operations_models import (\n    Topic59ApprovalState, Topic59DayCard, Topic59DayState, Topic59DeliveryState,\n    Topic59DraftState, Topic59Projection, project_topic59_day_card,\n)\nfrom tests.gateway._weekly_operations_authority_support import (\n    authority_receipt_fixture, test_registry_identity,\n)\n\nKST: Final = ZoneInfo(\"Asia/Seoul\")\nNOW: Final = datetime(2031, 2, 3, 9, 0, tzinfo=KST)\nCANDIDATE: Final = \"a\" * 64\nCONFIG: Final = \"e\" * 64\nROUTE: Final = \"f\" * 64\nCUSTOMER_KEY: Final = \"client_001\"\nCUSTOMER: Final = hashlib.sha256(\n    f\"nutricoach-weekly-operations-customer-identity-v1\\0{CUSTOMER_KEY}\".encode(),\n).hexdigest()\nCONSENT: Final = \"6\" * 64\n\n\n@dataclass(frozen=True, slots=True)\nclass MaintenanceFixture:\n    profile: Path\n    credentials: Path\n    maintenance: Path\n    credential: Path\n    hold: Topic59MaintenanceHoldV1\n    authority: Topic59MaintenanceAuthorityV1\n    hold_bytes: bytes\n    projection: Topic59Projection\n    request: Topic59PublicationRequest\n    now: datetime\n\n    @property\n    def audit(self) -> Path:\n        return self.maintenance / \"skip-audit.json\"\n\n    @property\n    def ledger(self) -> Path:\n        return self.profile / \"data\" / \"weekly-operations-topic59.jsonl\"\n\n\n@dataclass(frozen=True, slots=True)\nclass _SidecarRow:\n    customer_identity_digest: str\n    kst_day: date\n    state: str\n    source_event_id: str | None\n    logical_key: str\n    row_digest: str\n\n\ndef publication_request(now: datetime = NOW) -> Topic59PublicationRequest:\n    config = WeeklyOperationsConfig(\n        True,\n        review_route=WeeklyOperationsReviewRoute(\"90001\", \"10001\"),\n        registry_identity_binding_digest=test_registry_identity().binding_digest,\n    )\n    receipt = authority_receipt_fixture(\n        CANDIDATE, config.digest, (CUSTOMER_KEY,), (\"90001\", \"10001\", 1),\n        CONSENT, now - timedelta(days=1), now + timedelta(days=1),\n        config.feature_epoch,\n    )\n    runtime = WeeklyOperationsRuntimeContext(\n        CANDIDATE, CUSTOMER_KEY, \"90001\", \"10001\", 1, CONSENT, True,\n        config.feature_epoch, now,\n    )\n    row = _SidecarRow(\n        customer_identity_digest=CUSTOMER,\n        kst_day=now.date(),\n        state=Topic59DayState.SUBMITTED.value,\n        source_event_id=\"event-maintenance\",\n        logical_key=\"row-maintenance\",\n        row_digest=\"7\" * 64,\n    )\n    card = Topic59DayCard.from_sidecar(\n        row, completed_field_count=5, draft_state=Topic59DraftState.DRAFTED,\n        approval_state=Topic59ApprovalState.PENDING,\n        delivery_state=Topic59DeliveryState.NOT_SENT,\n        candidate_digest=CANDIDATE,\n    )\n    return Topic59PublicationRequest(card, config, receipt, runtime)\n\n\ndef arm_maintenance(\n    root: Path, monkeypatch: pytest.MonkeyPatch, *, now: datetime = NOW,\n) -> MaintenanceFixture:\n    profile = root / \"profile\"\n    credentials = root / \"credentials\"\n    profile.mkdir(mode=0o700)\n    request = publication_request(now)\n    route = request.config.review_route\n    if route is None:\n        raise AssertionError\n    exact_projection = project_topic59_day_card(\n        request.card, config_digest=request.config.digest, route_key=route.key,\n    )\n    hold = Topic59MaintenanceHoldV1(\n        hold_id=\"3\" * 64,\n        package_digest=\"4\" * 64,\n        candidate_digest=exact_projection.candidate_digest,\n        config_digest=exact_projection.config_digest,\n        route_digest=exact_projection.route_digest,\n        customer_identity_digest=exact_projection.customer_identity_digest,\n        card_slot=exact_projection.card_slot,\n        kst_day=now.date(),\n        not_before=now - timedelta(minutes=1),\n        expires_at=now + timedelta(minutes=5),\n    )\n    hold_bytes = canonical_document(hold)\n    authority = Topic59MaintenanceAuthorityV1(\n        package_digest=hold.package_digest,\n        hold_sha256=hashlib.sha256(hold_bytes).hexdigest(),\n        hold=hold,\n    )\n    maintenance = profile / \"data\" / \"topic59-maintenance-r71b\"\n    maintenance.mkdir(parents=True, mode=0o700)\n    _ = maintenance.chmod(0o700)\n    _write_owned(maintenance / \"hold.json\", hold_bytes, 0o600)\n    _write_owned(maintenance / \"maintenance.lock\", b\"\", 0o600)\n    credentials.mkdir(mode=0o700)\n    credential = credentials / \"nutricoach-topic59-maintenance-r71b.json\"\n    _write_owned(credential, canonical_document(authority), 0o400)\n    monkeypatch.setenv(\"CREDENTIALS_DIRECTORY\", str(credentials))\n    return MaintenanceFixture(\n        profile=profile,\n        credentials=credentials,\n        maintenance=maintenance,\n        credential=credential,\n        hold=hold,\n        authority=authority,\n        hold_bytes=hold_bytes,\n        projection=exact_projection,\n        request=request,\n        now=now,\n    )\n\n\ndef write_bound_hold(fixture: MaintenanceFixture, hold: Topic59MaintenanceHoldV1) -> None:\n    hold_bytes = canonical_document(hold)\n    authority = Topic59MaintenanceAuthorityV1(\n        package_digest=hold.package_digest,\n        hold_sha256=hashlib.sha256(hold_bytes).hexdigest(),\n        hold=hold,\n    )\n    _write_owned(fixture.maintenance / \"hold.json\", hold_bytes, 0o600)\n    _write_owned(fixture.credential, canonical_document(authority), 0o400)\n\n\ndef _write_owned(path: Path, content: bytes, mode: int) -> None:\n    if path.exists():\n        _ = path.chmod(0o600)\n    _ = path.write_bytes(content)\n    _ = path.chmod(mode)\n\n\ndef change_group(path: Path) -> int:\n    profile_group = path.parent.stat().st_gid\n    alternate = next(group for group in os.getgroups() if group != profile_group)\n    _ = os.chown(path, -1, alternate)\n    return alternate\n\n\nclass RejectingLedger:\n    claim_calls: int\n    record_calls: int\n\n    def __init__(self) -> None:\n        self.claim_calls = 0\n        self.record_calls = 0\n\n    def claim(self, projection: Topic59Projection) -> Topic59LedgerAction:\n        self.claim_calls += 1\n        raise AssertionError(projection.logical_key)\n\n    def record(\n        self, action: Topic59LedgerAction, outcome: Topic59ProviderOutcome,\n    ) -> Topic59LedgerState:\n        self.record_calls += 1\n        raise AssertionError((action.kind, outcome))\n\n\nclass RejectingTransport:\n    send_calls: int\n    edit_calls: int\n    network_calls: int\n\n    def __init__(self) -> None:\n        self.send_calls = 0\n        self.edit_calls = 0\n        self.network_calls = 0\n\n    async def send(\n        self, *, chat_id: str, topic_id: str, text: str,\n    ) -> Topic59ProviderOutcome:\n        self.send_calls += 1\n        self.network_calls += 1\n        raise AssertionError((chat_id, topic_id, text))\n\n    async def edit(\n        self, *, chat_id: str, topic_id: str, message_id: str, text: str,\n    ) -> Topic59ProviderOutcome:\n        self.edit_calls += 1\n        self.network_calls += 1\n        raise AssertionError((chat_id, topic_id, message_id, text))\n\n\n@dataclass(frozen=True, slots=True)\nclass DeniedObservation:\n    result: Topic59PublicationResult\n    claim_calls: int\n    record_calls: int\n    send_calls: int\n    edit_calls: int\n    network_calls: int\n\n\nasync def publish_with_tripwires(fixture: MaintenanceFixture) -> DeniedObservation:\n    ledger = RejectingLedger()\n    transport = RejectingTransport()\n    projector = Topic59DayCardProjector(\n        fixture.ledger,\n        Topic59MaintenanceGate.for_profile(fixture.profile),\n        ledger,\n    )\n    result = await projector.publish(fixture.request, transport)\n    return DeniedObservation(\n        result=result,\n        claim_calls=ledger.claim_calls,\n        record_calls=ledger.record_calls,\n        send_calls=transport.send_calls,\n        edit_calls=transport.edit_calls,\n        network_calls=transport.network_calls,\n    )\n"}],"isError":false,"timestamp":1788249051535}}
{"type":"message","id":"c5b90e9a","parentId":"1832a374","timestamp":"2026-09-01T07:50:51.535Z","message":{"role":"toolResult","toolCallId":"call_QjKxzOoiOjf6FtlOMt557E1m|fc_046f5546d6e20d23016a9683db2c2487d09ee9d4b3f1df32e7","toolName":"read","content":[{"type":"text","text":"\"\"\"Filesystem mutations for maintenance boundary tests.\"\"\"\n\nfrom __future__ import annotations\n\nimport os\nfrom pathlib import Path\n\nimport pytest\n\nfrom tests.gateway.nutrition_weekly_maintenance_support import MaintenanceFixture\n\n\ndef rewrite(path: Path, content: bytes, mode: int) -> None:\n    if os.path.lexists(path):\n        path.unlink()\n    _ = path.write_bytes(content)\n    _ = path.chmod(mode)\n\n\ndef noncanonical(raw: bytes) -> bytes:\n    return b\"{ \" + raw[1:]\n\n\ndef extra(raw: bytes) -> bytes:\n    return raw[:-2] + b',\"unexpected\":true}\\n'\n\n\ndef symlink(path: Path, target: Path) -> None:\n    path.unlink()\n    path.symlink_to(target)\n\n\ndef hardlink(path: Path) -> None:\n    os.link(path, path.with_name(f\"{path.name}.linked\"))\n\n\ndef fifo(path: Path) -> None:\n    path.unlink()\n    os.mkfifo(path, 0o600)\n\n\ndef replace_directory_with_symlink(fixture: MaintenanceFixture) -> None:\n    for child in fixture.maintenance.iterdir():\n        child.unlink()\n    fixture.maintenance.rmdir()\n    fixture.maintenance.symlink_to(fixture.credentials, target_is_directory=True)\n\n\ndef fake_identity(\n    monkeypatch: pytest.MonkeyPatch, target: Path, *, change_uid: bool,\n) -> None:\n    original = os.fstat\n    target_inode = target.stat().st_ino\n\n    def altered(descriptor: int) -> os.stat_result:\n        current = original(descriptor)\n        if current.st_ino != target_inode:\n            return current\n        values = list(current)\n        index = 4 if change_uid else 5\n        values[index] = values[index] + 1\n        return os.stat_result(values)\n\n    monkeypatch.setattr(os, \"fstat\", altered)\n\n\ndef artifact_snapshot(path: Path) -> tuple[tuple[str, int, int, int, int], ...]:\n    if path.is_symlink() or not path.is_dir():\n        info = path.lstat()\n        return ((path.name, info.st_mode, info.st_nlink, info.st_size, info.st_mtime_ns),)\n    rows: list[tuple[str, int, int, int, int]] = []\n    for child in sorted(path.iterdir(), key=lambda item: item.name):\n        info = child.lstat()\n        rows.append((child.name, info.st_mode, info.st_nlink, info.st_size, info.st_mtime_ns))\n    return tuple(rows)\n"}],"isError":false,"timestamp":1788249051535}}
{"type":"message","id":"43bb879d","parentId":"c5b90e9a","timestamp":"2026-09-01T07:50:51.535Z","message":{"role":"toolResult","toolCallId":"call_7DZmV1D7iTplJyx8FfFfPLCr|fc_046f5546d6e20d23016a9683db2c2c87d0984581cd5e775323","toolName":"read","content":[{"type":"text","text":"\"\"\"Deterministic mutations for the complete maintenance rejection matrix.\"\"\"\n\nfrom __future__ import annotations\n\nfrom dataclasses import dataclass, replace\nfrom datetime import date, datetime, timedelta\nfrom enum import StrEnum\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecisionKind, Topic59MaintenanceHoldV1,\n)\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom tests.gateway.nutrition_weekly_maintenance_fs_mutations import (\n    extra as _extra, fake_identity as _fake_identity, fifo as _fifo,\n    hardlink as _hardlink, noncanonical as _noncanonical,\n    replace_directory_with_symlink as _replace_directory_with_symlink,\n    rewrite as _rewrite, symlink as _symlink,\n)\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\n    MaintenanceFixture,\n    change_group, write_bound_hold,\n)\n\n\nclass MatrixCase(StrEnum):\n    CREDENTIAL_MISSING = \"credential_missing\"\n    AUTHORITY_EMPTY = \"authority_empty\"\n    AUTHORITY_MALFORMED = \"authority_malformed\"\n    AUTHORITY_OVERSIZED = \"authority_oversized\"\n    AUTHORITY_NONCANONICAL = \"authority_noncanonical\"\n    AUTHORITY_EXTRA = \"authority_extra\"\n    AUTHORITY_HASH = \"authority_hash\"\n    HOLD_EMPTY = \"hold_empty\"\n    HOLD_MALFORMED = \"hold_malformed\"\n    HOLD_OVERSIZED = \"hold_oversized\"\n    HOLD_NONCANONICAL = \"hold_noncanonical\"\n    HOLD_EXTRA = \"hold_extra\"\n    HOLD_EARLY = \"hold_early\"\n    HOLD_EXPIRED = \"hold_expired\"\n    HOLD_REPLAY = \"hold_replay\"\n    WRONG_CANDIDATE = \"wrong_candidate\"\n    WRONG_CONFIG = \"wrong_config\"\n    WRONG_ROUTE = \"wrong_route\"\n    WRONG_CUSTOMER = \"wrong_customer\"\n    WRONG_SLOT = \"wrong_slot\"\n    WRONG_DAY = \"wrong_day\"\n    CREDENTIAL_SYMLINK = \"credential_symlink\"\n    CREDENTIAL_HARDLINK = \"credential_hardlink\"\n    CREDENTIAL_MODE = \"credential_mode\"\n    CREDENTIAL_KIND = \"credential_kind\"\n    CREDENTIAL_OWNER = \"credential_owner\"\n    DIRECTORY_SYMLINK = \"directory_symlink\"\n    DIRECTORY_MODE = \"directory_mode\"\n    DIRECTORY_GID = \"directory_gid\"\n    DIRECTORY_OWNER = \"directory_owner\"\n    ACTIVE_SYMLINK = \"active_symlink\"\n    ACTIVE_HARDLINK = \"active_hardlink\"\n    ACTIVE_MODE = \"active_mode\"\n    ACTIVE_KIND = \"active_kind\"\n    ACTIVE_GID = \"active_gid\"\n    ACTIVE_OWNER = \"active_owner\"\n    LOCK_SYMLINK = \"lock_symlink\"\n    LOCK_HARDLINK = \"lock_hardlink\"\n    LOCK_MODE = \"lock_mode\"\n    LOCK_KIND = \"lock_kind\"\n    LOCK_GID = \"lock_gid\"\n    LOCK_OWNER = \"lock_owner\"\n    AUDIT_SYMLINK = \"audit_symlink\"\n    AUDIT_HARDLINK = \"audit_hardlink\"\n    AUDIT_MODE = \"audit_mode\"\n    AUDIT_KIND = \"audit_kind\"\n    AUDIT_GID = \"audit_gid\"\n    AUDIT_OWNER = \"audit_owner\"\n    ACTIVE_AND_CONSUMING = \"active_and_consuming\"\n    PARTIAL_TEMP = \"partial_temp\"\n    PARTIAL_AUDIT = \"partial_audit\"\n\n\n@dataclass(frozen=True, slots=True)\nclass HoldBinding:\n    candidate: str\n    config: str\n    route: str\n    customer: str\n    slot: str\n    day: date\n    not_before: datetime\n    expires_at: datetime\n\n    @classmethod\n    def exact(cls, fixture: MaintenanceFixture) -> HoldBinding:\n        hold = fixture.hold\n        return cls(\n            hold.candidate_digest, hold.config_digest, hold.route_digest,\n            hold.customer_identity_digest, hold.card_slot, hold.kst_day,\n            hold.not_before, hold.expires_at,\n        )\n\n\ndef _bind(fixture: MaintenanceFixture, binding: HoldBinding) -> None:\n    write_bound_hold(fixture, Topic59MaintenanceHoldV1(\n        hold_id=fixture.hold.hold_id, package_digest=fixture.hold.package_digest,\n        candidate_digest=binding.candidate, config_digest=binding.config,\n        route_digest=binding.route, customer_identity_digest=binding.customer,\n        card_slot=binding.slot, kst_day=binding.day,\n        not_before=binding.not_before, expires_at=binding.expires_at,\n    ))\n\n\ndef apply_case(\n    case: MatrixCase, fixture: MaintenanceFixture, monkeypatch: pytest.MonkeyPatch,\n) -> bool:\n    \"\"\"Apply one mutation and report whether setup created a valid audit.\"\"\"\n    active = fixture.maintenance / \"hold.json\"\n    lock = fixture.maintenance / \"maintenance.lock\"\n    match case:\n        case MatrixCase.CREDENTIAL_MISSING:\n            fixture.credential.unlink()\n        case MatrixCase.AUTHORITY_EMPTY:\n            _rewrite(fixture.credential, b\"\", 0o400)\n        case MatrixCase.AUTHORITY_MALFORMED:\n            _rewrite(fixture.credential, b\"{\\n\", 0o400)\n        case MatrixCase.AUTHORITY_OVERSIZED:\n            _rewrite(fixture.credential, b\"x\" * 8193, 0o400)\n        case MatrixCase.AUTHORITY_NONCANONICAL:\n            _rewrite(fixture.credential, _noncanonical(fixture.credential.read_bytes()), 0o400)\n        case MatrixCase.AUTHORITY_EXTRA:\n            _rewrite(fixture.credential, _extra(fixture.credential.read_bytes()), 0o400)\n        case MatrixCase.AUTHORITY_HASH:\n            raw = fixture.credential.read_bytes().replace(\n                fixture.authority.hold_sha256.encode(), b\"0\" * 64,\n            )\n            _rewrite(fixture.credential, raw, 0o400)\n        case MatrixCase.HOLD_EMPTY:\n            _rewrite(active, b\"\", 0o600)\n        case MatrixCase.HOLD_MALFORMED:\n            _rewrite(active, b\"{\\n\", 0o600)\n        case MatrixCase.HOLD_OVERSIZED:\n            _rewrite(active, b\"x\" * 8193, 0o600)\n        case MatrixCase.HOLD_NONCANONICAL:\n            _rewrite(active, _noncanonical(fixture.hold_bytes), 0o600)\n        case MatrixCase.HOLD_EXTRA:\n            _rewrite(active, _extra(fixture.hold_bytes), 0o600)\n        case MatrixCase.HOLD_EARLY:\n            binding = replace(\n                HoldBinding.exact(fixture),\n                not_before=fixture.now + timedelta(minutes=1),\n                expires_at=fixture.now + timedelta(minutes=6),\n            )\n            _bind(fixture, binding)\n        case MatrixCase.HOLD_EXPIRED:\n            binding = replace(\n                HoldBinding.exact(fixture),\n                not_before=fixture.now - timedelta(minutes=6),\n                expires_at=fixture.now - timedelta(minutes=1),\n            )\n            _bind(fixture, binding)\n        case MatrixCase.HOLD_REPLAY:\n            _create_valid_audit(fixture)\n            _rewrite(active, fixture.hold_bytes, 0o600)\n        case MatrixCase.WRONG_CANDIDATE:\n            _bind(fixture, replace(HoldBinding.exact(fixture), candidate=\"8\" * 64))\n        case MatrixCase.WRONG_CONFIG:\n            _bind(fixture, replace(HoldBinding.exact(fixture), config=\"8\" * 64))\n        case MatrixCase.WRONG_ROUTE:\n            _bind(fixture, replace(HoldBinding.exact(fixture), route=\"8\" * 64))\n        case MatrixCase.WRONG_CUSTOMER:\n            _bind(fixture, replace(HoldBinding.exact(fixture), customer=\"8\" * 64))\n        case MatrixCase.WRONG_SLOT:\n            _bind(fixture, replace(HoldBinding.exact(fixture), slot=\"8\" * 64))\n        case MatrixCase.WRONG_DAY:\n            _bind(fixture, replace(\n                HoldBinding.exact(fixture), day=fixture.hold.kst_day + timedelta(days=1),\n                not_before=fixture.hold.not_before + timedelta(days=1),\n                expires_at=fixture.hold.expires_at + timedelta(days=1),\n            ))\n        case MatrixCase.CREDENTIAL_SYMLINK:\n            _symlink(fixture.credential, active)\n        case MatrixCase.CREDENTIAL_HARDLINK:\n            _hardlink(fixture.credential)\n        case MatrixCase.CREDENTIAL_MODE:\n            _ = fixture.credential.chmod(0o600)\n        case MatrixCase.CREDENTIAL_KIND:\n            _fifo(fixture.credential)\n        case MatrixCase.CREDENTIAL_OWNER:\n            _fake_identity(monkeypatch, fixture.credential, change_uid=True)\n        case MatrixCase.DIRECTORY_SYMLINK:\n            _replace_directory_with_symlink(fixture)\n        case MatrixCase.DIRECTORY_MODE:\n            _ = fixture.maintenance.chmod(0o755)\n        case MatrixCase.DIRECTORY_GID:\n            _ = change_group(fixture.maintenance)\n        case MatrixCase.DIRECTORY_OWNER:\n            _fake_identity(monkeypatch, fixture.maintenance, change_uid=True)\n        case MatrixCase.ACTIVE_SYMLINK:\n            _symlink(active, fixture.credential)\n        case MatrixCase.ACTIVE_HARDLINK:\n            _hardlink(active)\n        case MatrixCase.ACTIVE_MODE:\n            _ = active.chmod(0o640)\n        case MatrixCase.ACTIVE_KIND:\n            _fifo(active)\n        case MatrixCase.ACTIVE_GID:\n            _ = change_group(active)\n        case MatrixCase.ACTIVE_OWNER:\n            _fake_identity(monkeypatch, active, change_uid=True)\n        case MatrixCase.LOCK_SYMLINK:\n            _symlink(lock, fixture.credential)\n        case MatrixCase.LOCK_HARDLINK:\n            _hardlink(lock)\n        case MatrixCase.LOCK_MODE:\n            _ = lock.chmod(0o640)\n        case MatrixCase.LOCK_KIND:\n            _fifo(lock)\n        case MatrixCase.LOCK_GID:\n            _ = change_group(lock)\n        case MatrixCase.LOCK_OWNER:\n            _fake_identity(monkeypatch, lock, change_uid=True)\n        case MatrixCase.AUDIT_SYMLINK:\n            _create_valid_audit(fixture)\n            _symlink(fixture.audit, fixture.credential)\n        case MatrixCase.AUDIT_HARDLINK:\n            _create_valid_audit(fixture)\n            _hardlink(fixture.audit)\n        case MatrixCase.AUDIT_MODE:\n            _create_valid_audit(fixture)\n            _ = fixture.audit.chmod(0o640)\n        case MatrixCase.AUDIT_KIND:\n            _create_valid_audit(fixture)\n            _fifo(fixture.audit)\n        case MatrixCase.AUDIT_GID:\n            _create_valid_audit(fixture)\n            _ = change_group(fixture.audit)\n        case MatrixCase.AUDIT_OWNER:\n            _create_valid_audit(fixture)\n            _fake_identity(monkeypatch, fixture.audit, change_uid=True)\n        case MatrixCase.ACTIVE_AND_CONSUMING:\n            _rewrite(fixture.maintenance / \"hold.consuming.json\", fixture.hold_bytes, 0o600)\n        case MatrixCase.PARTIAL_TEMP:\n            _rewrite(fixture.maintenance / \".skip-audit.json.tmp\", b\"{\", 0o600)\n        case MatrixCase.PARTIAL_AUDIT:\n            _rewrite(fixture.audit, b\"{\", 0o600)\n    return False\n\n\n\ndef _create_valid_audit(fixture: MaintenanceFixture) -> None:\n    result = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n    assert result.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n\n\n"}],"isError":false,"timestamp":1788249051535}}
{"type":"message","id":"7de0337a","parentId":"43bb879d","timestamp":"2026-09-01T07:50:51.535Z","message":{"role":"toolResult","toolCallId":"call_AKtTXCwjUQeEqKfZvnkCHjYl|fc_046f5546d6e20d23016a9683db2c3487d087ce8ac6a7b80db4","toolName":"read","content":[{"type":"text","text":"from __future__ import annotations\n\nimport threading\nfrom concurrent.futures import ThreadPoolExecutor\nfrom dataclasses import replace\nfrom datetime import timedelta\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecisionKind,\n    Topic59MaintenanceSkipAuditV1,\n)\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom tests.gateway.nutrition_weekly_maintenance_support import arm_maintenance\n\n\ndef test_valid_hold_is_consumed_once_and_same_day_is_idempotent(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n\n    # When\n    first = gate.evaluate(fixture.projection, fixture.now)\n    first_bytes = fixture.audit.read_bytes()\n    first_stat = fixture.audit.stat()\n    second = gate.evaluate(fixture.projection, fixture.now + timedelta(minutes=20))\n\n    # Then\n    assert first.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n    assert second == first\n    assert fixture.audit.read_bytes() == first_bytes\n    assert fixture.audit.stat().st_mtime_ns == first_stat.st_mtime_ns\n    assert not (fixture.maintenance / \"hold.json\").exists()\n    assert not (fixture.maintenance / \"hold.consuming.json\").exists()\n    audit = Topic59MaintenanceSkipAuditV1.model_validate_json(first_bytes)\n    assert audit.provider_calls == audit.network_calls == 0\n    assert audit.sent is audit.delivered is False\n    assert audit.message_id is audit.provider_receipt is None\n\n\ndef test_prior_day_terminal_audit_allows_next_day(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n    _ = gate.evaluate(fixture.projection, fixture.now)\n    tomorrow = replace(\n        fixture.projection, kst_day=fixture.projection.kst_day + timedelta(days=1),\n    )\n\n    # When\n    result = gate.evaluate(tomorrow, fixture.now + timedelta(days=1))\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.ALLOW\n\n\ndef test_consuming_marker_completes_after_rename_crash(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    consuming = fixture.maintenance / \"hold.consuming.json\"\n    _ = (fixture.maintenance / \"hold.json\").rename(consuming)\n\n    # When\n    result = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n    assert fixture.audit.is_file()\n    assert not consuming.exists()\n\n\ndef test_complete_audit_finalizes_consuming_marker_after_replace_crash(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n    first = gate.evaluate(fixture.projection, fixture.now)\n    consuming = fixture.maintenance / \"hold.consuming.json\"\n    _ = consuming.write_bytes(fixture.hold_bytes)\n    _ = consuming.chmod(0o600)\n\n    # When\n    recovered = gate.evaluate(fixture.projection, fixture.now)\n\n    # Then\n    assert recovered == first\n    assert not consuming.exists()\n\n\ndef test_concurrent_ticks_create_one_audit_without_timing_waits(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n    barrier = threading.Barrier(3)\n\n    def evaluate() -> Topic59MaintenanceDecisionKind:\n        _ = barrier.wait(timeout=2)\n        return gate.evaluate(fixture.projection, fixture.now).kind\n\n    # When\n    with ThreadPoolExecutor(max_workers=2) as workers:\n        futures = (workers.submit(evaluate), workers.submit(evaluate))\n        _ = barrier.wait(timeout=2)\n        outcomes = tuple(future.result(timeout=2) for future in futures)\n\n    # Then\n    assert outcomes == (\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n    )\n    assert tuple(fixture.maintenance.glob(\"skip-audit.json\")) == (fixture.audit,)\n"}],"isError":false,"timestamp":1788249051535}}
{"type":"message","id":"14de682e","parentId":"7de0337a","timestamp":"2026-09-01T07:50:51.535Z","message":{"role":"toolResult","toolCallId":"call_LsBi8eSKWSF4AXaQKhRB8dIy|fc_046f5546d6e20d23016a9683db2c3c87d0a63db13ba65635f3","toolName":"read","content":[{"type":"text","text":"from __future__ import annotations\n\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecisionKind,\n    Topic59MaintenanceFailure,\n)\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59PublicationDisposition\nfrom gateway.platforms.nutrition_weekly_operations_publication_contract import (\n    Topic59IncidentReason,\n)\nfrom tests.gateway.nutrition_weekly_maintenance_adversarial_support import (\n    MatrixCase,\n    apply_case,\n)\nfrom tests.gateway.nutrition_weekly_maintenance_fs_mutations import artifact_snapshot\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\n    arm_maintenance,\n    change_group,\n    publish_with_tripwires,\n)\n\n\n@pytest.fixture\ndef anyio_backend() -> str:\n    return \"asyncio\"\n\n\ndef test_lock_wrong_gid_denies_before_state_change(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    lock = fixture.maintenance / \"maintenance.lock\"\n    alternate_gid = change_group(lock)\n    assert alternate_gid != fixture.profile.stat().st_gid\n    before = artifact_snapshot(fixture.maintenance)\n\n    # When\n    result = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.DENY\n    assert result.reason is Topic59MaintenanceFailure.FILESYSTEM_CONTRACT\n    assert artifact_snapshot(fixture.maintenance) == before\n    assert not fixture.audit.exists()\n    assert not fixture.ledger.exists()\n\n\n@pytest.mark.anyio\n@pytest.mark.parametrize(\n    \"case\", tuple(MatrixCase), ids=[case.value for case in MatrixCase],\n)\nasync def test_negative_matrix_denies_before_claim_transport_or_network(\n    case: MatrixCase, tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    _ = apply_case(case, fixture, monkeypatch)\n    before = artifact_snapshot(fixture.maintenance)\n\n    # When\n    decision = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n    observation = await publish_with_tripwires(fixture)\n\n    # Then\n    assert decision.kind is Topic59MaintenanceDecisionKind.DENY\n    assert decision.reason is not None\n    assert observation.result.disposition is Topic59PublicationDisposition.REFUSED\n    assert observation.result.reason is Topic59IncidentReason.MAINTENANCE_REJECTED\n    assert observation.result.message_id is None\n    assert observation.result.maintenance_audit_digest is None\n    assert (\n        observation.claim_calls,\n        observation.record_calls,\n        observation.send_calls,\n        observation.edit_calls,\n        observation.network_calls,\n    ) == (0, 0, 0, 0, 0)\n    assert not fixture.ledger.exists()\n    assert artifact_snapshot(fixture.maintenance) == before\n"}],"isError":false,"timestamp":1788249051535}}
{"type":"message","id":"8ff97312","parentId":"14de682e","timestamp":"2026-09-01T07:50:51.535Z","message":{"role":"toolResult","toolCallId":"call_uGXpUfNK5twD15EDUpVTDciD|fc_046f5546d6e20d23016a9683db2c4087d0a08ab414867be978","toolName":"read","content":[{"type":"text","text":"from __future__ import annotations\n\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_operations import Topic59PublicationDisposition\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\n    arm_maintenance,\n    publish_with_tripwires,\n)\n\n\n@pytest.fixture\ndef anyio_backend() -> str:\n    return \"asyncio\"\n\n\ndef test_maintenance_disposition_is_distinct_from_delivery() -> None:\n    assert Topic59PublicationDisposition.NOOP_MAINTENANCE.value == \"noop_maintenance\"\n\n\n@pytest.mark.anyio\nasync def test_valid_maintenance_precedes_claim_and_transport(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n\n    # When\n    observation = await publish_with_tripwires(fixture)\n\n    # Then\n    assert observation.result.disposition is Topic59PublicationDisposition.NOOP_MAINTENANCE\n    assert observation.result.message_id is None\n    assert observation.result.maintenance_audit_digest is not None\n    assert (\n        observation.claim_calls,\n        observation.record_calls,\n        observation.send_calls,\n        observation.edit_calls,\n        observation.network_calls,\n    ) == (0, 0, 0, 0, 0)\n    assert not fixture.ledger.exists()\n"}],"isError":false,"timestamp":1788249051535}}
{"type":"message","id":"b7f277f6","parentId":"8ff97312","timestamp":"2026-09-01T07:50:51.535Z","message":{"role":"toolResult","toolCallId":"call_05VpZiPFfv1m2HZNere1QAO3|fc_046f5546d6e20d23016a9683db2c4887d09abe0879f2b63b0d","toolName":"read","content":[{"type":"text","text":"from __future__ import annotations\n\nfrom cron.physique_inline_card import (\n    LaunchResult,\n    ScheduledLaunchStatus,\n    scheduled_launch_record,\n)\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n\n\ndef test_typed_tick_outcome_becomes_truthful_scheduler_record() -> None:\n    # Given\n    tick = NutritionScheduledTickOutcome(\"noop_maintenance\")\n\n    # When\n    record = scheduled_launch_record(LaunchResult(\n        maintenance_noop=tick.disposition == \"noop_maintenance\",\n    ))\n\n    # Then\n    assert record.status is ScheduledLaunchStatus.MAINTENANCE\n    assert record.success is True\n    assert record.error is None\n    assert record.status.value == \"maintenance no-op completed\"\n\n\ndef test_normal_success_remains_sent() -> None:\n    # Given / When\n    record = scheduled_launch_record(LaunchResult(sent=True))\n\n    # Then\n    assert record.status is ScheduledLaunchStatus.SENT\n    assert record.success is True\n    assert record.error is None\n"}],"isError":false,"timestamp":1788249051535}}
{"type":"message","id":"bec39bc7","parentId":"b7f277f6","timestamp":"2026-09-01T07:51:10.100Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Assessing wrong gid test coverage**\n\n**Verifying restored hash mappings**","startedAt":1788249054056,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9683ddf7ac87d0a9af1b874335530b\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloPtMy0Sa9wrzRKqdAnKok2cvM_YuM8WX1dF8KW5WSZjOldL5-szwgiw_fFGNbpxraFcA7j-e83mOeak8zHGnkgpQHmvjBkPHQ_wPAMtXJ3IFO3472dHPncOYj0tL4xf952n87zWXvBxvQ_Hslb2o2dZL6P0hzVKppPCgOBcBE3RNiGvQ0Yk1EPwhDmtnip-yQGRaqHyvvXD2oeGZcPwv_N40QsBlPErJZPdnqGFI8F6GdJNO7EAiE4AB8VOC6wpT1lYlYx9ayURWf3ZTp6UB1UsVS9MZ2lLs3hp6t6ZrzuD0YRXSz44Mh03LgfFNQBE1sSlpzaEPwC6z_1yMpa7xxI_IlSlZKDZyC_B80QrEiLG-HneEm0LFsExpO46Wa4ynu077tLEXsu3qVkRLP1fCcMQBeLOKddngMFD-OoQibuW4kwAosoggb6ig1Clk4_QS0hc4IG-HJ4cQ1LVxTD3LvHoTXBUbwkWLYxSIpYei4mJn6siCs1kfSEm9sAUnnKLIbX2bZgPeNPhxWUD-r6qqJxsMSHRsqrogdxJFpp-rvDEZZmSDIEVHiRwTvtYz7LXngjKp25UlMMY6OtKYZs0lqdn01ce1l-CPLu2Oh-1lwVq1_3xYF0T0OJlrKumvry21GXdt1L5ET-L6XLPKK3zhvqb6nAdzF_-Vfi9AzYD1SPdWSqMqRQ1DruQxHUXyMvXkSilrTc1hzHNMISc1oaCqUpoMXvRNwjX6utGTbiDVTXeHm0WQ9AUz6vZf7adZ9sbNICVusCww5kyPEXAZ6kceQzzfpFJy7CtzXk_MEycrc4bpaMm9staDfAV6Cjvux5S8TKYopFgGYKn0sujn_YCCX0NIbJCHEstVcsFdzLqj1Frgl6Xizn68wzjF-qXG4wiYAl2xnL0o3APIvY6N1J0WvygGfL7onB049fFksqm9oqEPIQqMsDJOvhEvGTSEoQjr01GffsU2LsGNv1Ay_PHvJf7mzgs9FooOFo0yKK76n6SLcbk7s4BQGOEFp5hYOxiCj3uFzwOMv70D8D5KuL_zOeftg92vRPPJ7kcWKHsJr6zkGqD5w5dGAfrLAdB-2Izp_DS55kk1xOqYkRKu9Y7x9sFcQ0RVomFzmcmj6fL9t68K-4YfMnZ6_P6FvicTUCAyEVvraPzfUl5je_JhEb-gqDlUIAjEDsiTxPB81_k95MkE2USZdHpQi1JLNnuF9CcxXSqlmClhaUA8qu7MgWp8-bh4oCs18AHHK_S4pzhYwxmhx1_VhWoZjvQCTdqdcXnGNgGgIAbTaIOMUKUMzWguQDYBikPJkpahMOlAcKCQa7o6KE79bkJA_2SRq0vozk9HNOf-Si3BSH7Hh80isjFDnYpjVPIfSYuV1_tiYo0MyYhDWJ1hu-H8ULNg7Mp8UyWTssGvSYH05rQFIFRyALeJ5x9TRNxc3dVqc3a8rFS6PHBdpGBdZwzOKEDTqjIDR9ujcQF58vQJirrmU1qdBMOE7QzRahS3xPzmYkNocUqwBxQNU2rPXiM4jKCtOpegSz7hd_rt-hvRkjn7Q9TL8l1chj_uCC5AyKpPOFBq66ZnDzhy0O0EyMzmyfOEaaG89qXdffhyJwrdr1LU5xozUIHEqKBUvhoelhMQgeGZLci_1Ifq-T-1c90qo3qH2G-eI2FtXW-qU1ZiQ9t0VAB6Ig0cuAVure-U2uyIcOK7MbBGj8Q3y62TX9n1FjepdiPdJkzLYTjGFbSgu77fIRoLVoKRWTMbxW2uNKmJq-SeTNMTY1SVpw08UcPmpCOxEOYBrhJh-gnWEOnqZV9oSJKpIFGt_H10TjQwidWbprXYq_gnxLUKH_yOagZibS3uiKVYzmgYbV79oGcb1S-WUbz4CKMjSvfwMP5unC4h1I9LwDhXf8kN6vMT9QzTJPAu8iGlZWbfQuByccJUfqWVz3dyZNhpl75bjPmmCPFYuWCYGMKHqCKX7NFi4sr3Zx-BpAbCTTCc0NoVyPwQX5-tQyIqfm9MyV4VSdKWxKGJSuprxsx7Na94riyGpxuy_qEZMq_vkJm1Z8r6xY2aWpPpiAanqXB4gX0BcKnnfoUz6rpapCxYYIHScEiQiJH5fJhDwsH-0qbeDf1b-7rt8uGYo8clvuGwxg0AyktMOPajEKtUcef3cy96zBYMG91St6D9fSnVINb3iP9zvFJAS4SFbHSKho4w67uWgZQKjalcP99d4oyFAqANtDbWuGi9oAXqv4tWHUVxzcfS2PKlvzjoX9J_Kntb_nN1n2Hg6nNJJqdR09o78azQFu-vueYizCZBhBk4Bow93zn2wVfjzSsEsku2n2H0pUQsGmV8KYEba754zahKVhfV9n4H3jUvcPgfFzNsbtyGEGufoQI9WY50WL2n9wg379Oi1UhQg1HgMV885CBZR-ISSk1EK9M34kw-xxT04mpV-Mu-t0GtYnm9HEZaQzD_97H4fIJDWgYVtsZY50iGvhhu0ya0a8Knma2PteKkOANH5r8GsMVZhuv76NlXnTv7qWJ8yzQAMFeUXBDMeHsvCgNxN6Qb604ZMIv_x2AtwYrP6We6iSJzLKx_uHIHblTH42Yg6m8tPFX1P9E0X5y4ITCx0MSFHNS0CQJv0YmVj8yB5VUOFRf25BUi1tCUde1nuvk7FshPAiNGLkeVKrWgenGw302gd_HOJ1CnhoStADvxVjJ9qMmklcmJMoW-hg8MstonTj6plxuMocfduh7bvJYR4KJcJ1_90tK_ZY0EhcCFReZnkzb3mtZ4w19M2PsR3rOK7xxWi6HqP1kHv4WP3kdwpo=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Assessing wrong gid test coverage**\"},{\"type\":\"summary_text\",\"text\":\"**Verifying restored hash mappings**\"}]}","endedAt":1788249069991},{"type":"toolCall","id":"call_CKGkH89dRyEQbyrbaYOXI2fZ|fc_046f5546d6e20d23016a9683ede4a487d080a16b69bb402823","name":"bash","arguments":{"command":"rg -l 'focused_maintenance|61 passed|52 passed|affected_suite|240 passed' '/home/cube/projects/richard/traning coach/.omo/senpi-task/children' --glob '*.jsonl' | tail -20","timeout":30}},{"type":"toolCall","id":"call_O4My0rGWzyFuJaUljUGyXUaT|fc_046f5546d6e20d23016a9683ede4bc87d0ab38878d684cf6f6","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && sha256sum gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py","timeout":30}},{"type":"toolCall","id":"call_DfrJAZgn19KKMPpNw7i1mZJS|fc_046f5546d6e20d23016a9683ede4c487d0bd3545f837d3b462","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/pytest --collect-only -q tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py | tail -5; PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/pytest --collect-only -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py | tail -5","timeout":60}},{"type":"toolCall","id":"call_unkaBW7XDz8Yd65lLT2iTVPQ|fc_046f5546d6e20d23016a9683ede4cc87d09a4fd1e1494bae85","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && rg -n 'ScheduledLaunchStatus|scheduled_launch_record|maintenance_noop' cron/physique_inline_card.py cron/scheduler.py","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":13613,"output":827,"cacheRead":192000,"cacheWrite":0,"reasoning":225,"totalTokens":206440,"cost":{"input":0.068065,"output":0.024810000000000002,"cacheRead":0.096,"cacheWrite":0,"total":0.18887500000000002}},"stopReason":"toolUse","timestamp":1788249051578,"responseId":"resp_046f5546d6e20d23016a9683dc1ebc87d0bf2ac705feae2bae","rawStopReason":"completed"}}
{"type":"message","id":"a5becbd5","parentId":"bec39bc7","timestamp":"2026-09-01T07:51:10.831Z","message":{"role":"toolResult","toolCallId":"call_CKGkH89dRyEQbyrbaYOXI2fZ|fc_046f5546d6e20d23016a9683ede4a487d080a16b69bb402823","toolName":"bash","content":[{"type":"text","text":"/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a0251d/sessions/st_01a0251d/2026-08-21T16-15-19-365Z_01a0251a-f745-7489-ab6f-da73c678a786.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a0593b/sessions/st_01a0593b/2026-08-31T19-11-07-913Z_01a0593b-8488-73e2-921e-ef5adceb88a2.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a058f7/sessions/st_01a058f7/2026-08-31T17-56-45-068Z_01a058f7-6b8c-7317-a1b9-d7b9b9b20c47.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a0366b/sessions/st_01a0366b/2026-08-25T00-56-58-419Z_01a0366b-a133-7936-87f9-02d2b1b9df9a.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_019ff61a/sessions/st_019ff61a/2026-08-12T13-12-41-440Z_019ff61a-86e0-7443-bc80-e0b327807097.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a017ff/sessions/st_01a017ff/2026-08-19T03-09-17-244Z_01a017fe-9c3c-7ef9-b4d5-69e17d8a489e.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_019ffbad/sessions/st_019ffbad/2026-08-13T15-11-03-442Z_019ffbad-4112-75e7-92a9-c9c6791e6125.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a01fa3/sessions/st_01a01fa3/2026-08-20T14-43-09-031Z_01a01fa0-3867-7c6a-a15f-582cbda2dffe.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a029d5/sessions/st_01a029d5/2026-08-22T14-11-02-242Z_01a029cf-89e2-71a4-8e3e-6c61a46276c7.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a01fa0/sessions/st_01a01fa0/2026-08-20T14-43-08-632Z_01a01fa0-36d8-7f1e-aabb-13ef0dc2b8e0.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_019ff56c/sessions/st_019ff56c/2026-08-12T10-02-33-909Z_019ff56c-7635-771d-b5c7-28fdbc3ccf45.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_019ffb23/sessions/st_019ffb23/2026-08-13T12-40-14-347Z_019ffb23-2d0b-7d48-95a9-d6101b94c979.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a019bc/sessions/st_01a019bc/2026-08-19T11-15-14-172Z_01a019bb-827c-747a-9bff-087967fab3ce.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_019ffd8e/sessions/st_019ffd8e/2026-08-13T23-56-27-384Z_019ffd8e-4578-73bd-bf45-7e06e5a3185c.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a019f4/sessions/st_01a019f4/2026-08-19T12-12-41-261Z_01a019f0-1bad-79c6-ad7c-adadaeebfc55.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a03a74/sessions/st_01a03a74/2026-08-25T19-45-07-795Z_01a03a74-7cd3-76b1-9919-a9de51e7739d.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a004c8/sessions/st_01a004c8/2026-08-15T09-37-18-259Z_01a004c8-69b3-7d8d-9c93-2ca3079b604f.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a05929/sessions/st_01a05929/2026-08-31T18-51-55-085Z_01a05929-ed4d-70a0-8119-ac7d7d486923.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a04343/sessions/st_01a04343/2026-08-27T12-48-41-303Z_01a04343-f157-7dc5-b1f9-40e58e77e605.jsonl\n/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a03479/sessions/st_01a03479/2026-08-24T15-52-54-186Z_01a03479-84aa-771a-9673-4518913f4f91.jsonl\n"}],"isError":false,"timestamp":1788249070831}}
{"type":"message","id":"9506346b","parentId":"a5becbd5","timestamp":"2026-09-01T07:51:10.831Z","message":{"role":"toolResult","toolCallId":"call_O4My0rGWzyFuJaUljUGyXUaT|fc_046f5546d6e20d23016a9683ede4bc87d0ab38878d684cf6f6","toolName":"bash","content":[{"type":"text","text":"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619  gateway/platforms/nutrition_weekly_maintenance_contract.py\n9df3f5f368e16fa6019674620a1fa06ba767ac13babd130b0ea79655ab7cdb60  gateway/platforms/nutrition_weekly_maintenance_io.py\n1affe722d322de8d4e7ae40920dfbcd25a5915008c732193123241eb4e26e5fa  gateway/platforms/nutrition_weekly_maintenance_store.py\n4a3f27b30d0c639ce6b0020e5f81a386bae22b3a0a5568a497d0a8b4dcbc3fe6  gateway/platforms/nutrition_weekly_operations.py\nc75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6  gateway/platforms/nutrition_weekly_operations_publication_contract.py\n3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2  gateway/platforms/nutrition_weekly_dispatch_result.py\n9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b  gateway/platforms/nutrition_weekly_dispatcher.py\n6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88  gateway/platforms/telegram_weekly_host_dispatch.py\n5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7  gateway/platforms/telegram.py\n16788d449f33b8e0f6c0e8a5db55d1455b3ee694a984307283b07a6b9db29b67  cron/physique_inline_card.py\n07fddef7d2df68e2ddee243f5c0901eb15054f91a642dcd96723a139e30f461f  cron/scheduler.py\n810ab4768633142b11b9889f08a79789dde79001ae82f7cb7bc6bc1b1213df5d  tests/gateway/nutrition_weekly_maintenance_support.py\n619b6188e3df38613bd166e4c372b46424888a164d069a25ab4d07a07e611d7f  tests/gateway/nutrition_weekly_maintenance_fs_mutations.py\n8cef1f9a7bcccecab843f1c767d870087f57b1d36ce41f48d6f2d5cddc919e25  tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n4100ab82d11b78a78cffceb6c1150c6ffc448d8fa5b4b97ec8a5b27cc3b4cab7  tests/gateway/test_nutrition_weekly_topic59_maintenance.py\nbd6fc29371c02c8f627f60d8879ccf77a0596c6e5ed13b91938f6212d2364664  tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n89f21c1535039ce58e7bc404727fe806a6976bdef6708fa2a31b292e836be7fe  tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n4ce999edcfb4949c6df077026c3dd5282b80ffecc0e268786f442a325c1e357e  tests/cron/test_physique_inline_card_maintenance.py\nd0535437501dc31c7a14de07dab1f27eb96a3d8c27efcf113101827b7055661a  tests/gateway/test_nutrition_weekly_operations_topic59.py\n931215dab7c03e4cf1eec8e9da96a5895e8ba119c99843aa18036ddd3eaaab02  tests/cron/test_physique_inline_card.py\n"}],"isError":false,"timestamp":1788249070831}}
{"type":"message","id":"5b21c21a","parentId":"9506346b","timestamp":"2026-09-01T07:51:10.831Z","message":{"role":"toolResult","toolCallId":"call_DfrJAZgn19KKMPpNw7i1mZJS|fc_046f5546d6e20d23016a9683ede4c487d0bd3545f837d3b462","toolName":"bash","content":[{"type":"text","text":"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py::test_negative_matrix_denies_before_claim_transport_or_network[active_and_consuming]\ntests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py::test_negative_matrix_denies_before_claim_transport_or_network[partial_temp]\ntests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py::test_negative_matrix_denies_before_claim_transport_or_network[partial_audit]\n\n52 tests collected in 0.14s\ntests/gateway/test_nutrition_weekly_dispatcher_maintenance.py::test_valid_maintenance_precedes_claim_and_transport\ntests/cron/test_physique_inline_card_maintenance.py::test_typed_tick_outcome_becomes_truthful_scheduler_record\ntests/cron/test_physique_inline_card_maintenance.py::test_normal_success_remains_sent\n\n61 tests collected in 0.21s\n"}],"isError":false,"timestamp":1788249070831}}
{"type":"message","id":"0b31582f","parentId":"5b21c21a","timestamp":"2026-09-01T07:51:10.831Z","message":{"role":"toolResult","toolCallId":"call_unkaBW7XDz8Yd65lLT2iTVPQ|fc_046f5546d6e20d23016a9683ede4cc87d09a4fd1e1494bae85","toolName":"bash","content":[{"type":"text","text":"cron/scheduler.py:2085:            from cron.physique_inline_card import scheduled_launch_record\ncron/scheduler.py:2087:            record = scheduled_launch_record(launched)\ncron/physique_inline_card.py:76:    maintenance_noop: bool = False\ncron/physique_inline_card.py:79:class ScheduledLaunchStatus(StrEnum):\ncron/physique_inline_card.py:89:    status: ScheduledLaunchStatus\ncron/physique_inline_card.py:94:def scheduled_launch_record(result: LaunchResult) -> ScheduledLaunchRecord:\ncron/physique_inline_card.py:95:    if result.maintenance_noop:\ncron/physique_inline_card.py:96:        return ScheduledLaunchRecord(ScheduledLaunchStatus.MAINTENANCE, True)\ncron/physique_inline_card.py:98:        return ScheduledLaunchRecord(ScheduledLaunchStatus.SENT, True)\ncron/physique_inline_card.py:100:        return ScheduledLaunchRecord(ScheduledLaunchStatus.DUPLICATE, True)\ncron/physique_inline_card.py:102:        return ScheduledLaunchRecord(ScheduledLaunchStatus.DISABLED, True)\ncron/physique_inline_card.py:104:        ScheduledLaunchStatus.FAILED, False,\ncron/physique_inline_card.py:146:            sent=sent and not transport.maintenance_noop,\ncron/physique_inline_card.py:148:            maintenance_noop=transport.maintenance_noop,\ncron/physique_inline_card.py:182:        self.maintenance_noop: bool = False\ncron/physique_inline_card.py:198:        self.maintenance_noop = scheduled_tick_is_maintenance(result)\n"}],"isError":false,"timestamp":1788249070831}}
{"type":"message","id":"6e296626","parentId":"0b31582f","timestamp":"2026-09-01T07:51:23.305Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning deterministic inode ownership tests**\n\n**Reconciling test counts with session files**","startedAt":1788249073106,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9683f105cc87d0abc4a70ff4379ea0\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloP63pTuePq3re5HchrNphNulNGo2hMD70BTVf2zYQAQ7l1dgGzbQ-Ptshkjkm8WkriFNYU7SiQapesM4TNV98dqPL2Te2zOtf1TgFJPJB9DTd0ev6fMBY2txx6W_SWdWf_ijrdEq_0p2fwfVmf3OS8qrh4xWlbnyDAZJDqRgdsHeLdzus7fIsey3fQuEZ9N75V-IIE52Y8po126BzjnCULGty0vvhOH_kpn_zbWVh-S0lN9YYBObPEGdzsdbxYPzfWFhUPrcwBwk-fEqR0MIl3Cs-hSBa8gKgQMzqsjBebQ8imta41JG9dsU6zTDJ-bz1tR-L6_4x2y50tqV9-QvvLveeal-aQqoPYDJgJiurqmL6RZrYVx5NbiNpBQ6ATs67eSdgWL-F9S6mfMx1FiVVb0i1E0ZQFVoyJHFc76s5jEcBHVDwWSo6hzOMDz3mKk_w-lNQqJWasulGWmd9qe8qGECAMRBRJ1EBb4UgRHkyqiUXGvHPdxIRqwkydFNvQq2nnsckBmHzQnJFJ9dkGkVAyhIuw5_z36kdnkrBQbFzUSJ81wgyEH0r5yIH9r550g22_augquVKmIFAS-q2j5ngvUlYIeuPePTUI9jYfiYhv6jtXYSR44N3ePrQPhLIARbDPwwVdg8AwZzQzpHMcFYunsvNAY_EHIvZ9PtB2z9KhucOZHVnhTbQCBjZ8hq2xJNBXHT6P_8uVwv9wxYwanLkAV6UgDtWgs99sI8--ApLkw4aYj5vUx-7uopn0-_DCHQlO5Yj8iXE-LrjCZLL32KYHpFOSAIyJMZ2TDkI1Ace2D95woAjZd7wIqOp_yVkaVWZIrwhT7-sC_iA9eGxEK1F39Z1w9Hz9ZPVwUpB28l9LgfzcvjgKKY3QgrTIbgjdVBUuqLxEPz_uThlXbvmOfs1DdCcpzKEM-5XkpgPz_oBboBjDpYHaJFy9HMNGZVXa7JEvKKl93bqXIZg_v5YByL_BT6N7sFbduXs9PQHJVYta4rSJpFTB-fyKoNvNNHuydxzD3FFoKHznjm3kU5ZSWn1Wd3hLWXNfjokCiPShLqHvshOBwJ9BcsCjrlYG_pxoJXScrAroKLjz2WSgykMqll_Dd0yKA4LOi91I8RvQMLNHuBIWhmMRGk0WItDMM4cBmmFBHajmzvEX9158smGBHdvq459bmQuwApoObSzg-b4mn54abQWXg9xhHCd0XmBxlBuqdk3uZdpAXJm4XI4FKdWgOCYoMCMSGDmUnm-kVED2k-8TYYnsO0gz8AsuxaExbqtz7X3vl-j3fTCjxKhXs-3kA6SjpT364fZqRMxc6l_jx87IwEz0A9WxhLYKhIlwIRUdXlASaOuE4U56wPR5CfR_Vk5atIt6_N-ksCYzgC3MRUiMkjlamwuCkTlQxos-NmXXqVwnDVCcI31X5zG8QIqOPzn_RrfMJ3L-KCJs1FYe9svFB3vbUyTKZKCTlNpXvfnLWcvVKfFvbh_BX-1yLEa6vYmfTFtwpFF_Zpi5DvnHhMPmc4vjeGrJ947AY3hW3kH9dKNbUPXNbH2e3RmPs3_UV7pJI_7LPl8ly5vCamPtEheXBgOk3AAo5oGPHTMVALgwnqxWCfbboB9kG31OvePeN7-8V1RbYQAr7H7aistGw1jOH4VYBiWOInqsAKzUv-bFL0XaAnLQvn6t__qJKawzdytmbVyZCHBcs0i7bu1unTQPTWBNdkbs1ePN05x9nhI1tXGJx3OTjaK1csI9ICbcrG4DymL-3BzmJPL3fgj1SgyoDE_PVAmDbF8i7WEXsgs503J4NkADMsgYlPj8Ha90T1VBBNkqREW5mZqCytYvi0YiDLed4qJJ8wrU-gMQJHwuH_DxO0mF01asKgmwMK6wryOfv0qbgK6TdFYlx4xc8AcCu_e7Wy1zCXEbE8rz0_6Tx6xqN4-yH8hmeGsbys-_jr6HFeOAWuoFvLA1xK4qvjeWgaWoFG0cq5whtpZubhWVHGFd9OJxa1HmjD0WA6qejl8ZVsNB-ehKNzst_-ANvuGOpUOA8z0q7Q3xMwXhdTYvgUhF2vh66dDmDDgBnnlEiNwNCJdCTbjEClzvr1OiDKhkNMwJ9RAJCA2oVkFZwR6KypLBD9ztxwI5-wRzR_n75ys6PCuLDfNV9JSiYsNMAMu73KSRnJHDaU1BoDPDG3ixc5h25ecT18qr1aZJWioEchYi9vhX7vKrnBgaq5ACBnZ4a0I73U3LsMUtZjEJOpJSVaTZp9W2KiXh8mopiU7aX2eshcFEs4ip444LK47oVGroRgtNT9oOw4MUDB0hBMRs3uEIqmX0C7c8jbqAmHiLSu1rA8OMb135kHTTWyfpx2-gcegexLSJac7V0ceGP2tzWO0bd-XTZOq6wfFUqS0JoL9pbjt_pRaH9Lhh857oQkWaMl_89SkKwifDl95_uywsurveXcHytb1Mym3WHaSpxvSXUsS_I53kH4f8JD-NtQ1WDYv9RHxeDmyqSSpKI1yxO6tG0zOZDBCqXdCobPBCDY9Y2axUcrn5MQUbawqXLllOCJ6pw5Lw6phxKAw6mkhDy3rwhgXzjRQYhiQaDzDggvcZOgNyDDmjnMnE2mW2-BTZ-7PXyeKYLViYPC-8yfnBz4Y8Kyry7Dg3dkbWPMwxi3J0mjLcEqddg1cXhlqqntZeuRY42V4tRfCDdIEQ5gEpq7DD6rJK1zWyHdkVXLn3QFAVD7xryysjchaXfx74iT_BpAYWyv8wF_hTnfopspebAx41IdUCSr-iEIbthqEFdq9bsyUGoX4eCf5TjQpUI_3ByDZPjp9PBJzolHfItBYGeTHDeXhML4rtJXsn7ijk0HRul4tuO774t8sWFG-Bi42EqoZHHRgS-3LxL0-V44FchEPPIJrV9Dj6IGSLoScSljcGzqRuY5OlEA1ALTofcOjKTbteaO0EgIvN6q8VC5esQ4NUNY2yEM7-A-G1Il7cvsg==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning deterministic inode ownership tests**\"},{\"type\":\"summary_text\",\"text\":\"**Reconciling test counts with session files**\"}]}","endedAt":1788249082502},{"type":"toolCall","id":"call_BBByltWZZg0oGEiL3IiDYaLe|fc_046f5546d6e20d23016a9683fa6af087d08b98ebcfd8b10c49","name":"bash","arguments":{"command":"find '/home/cube/projects/richard/traning coach/.omo/senpi-task/children' -type f -name '*.jsonl' -newermt '2026-09-01 16:20:00' -printf '%T@ %p\\n' | sort -n | tail -10","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":4225,"output":360,"cacheRead":205312,"cacheWrite":0,"reasoning":271,"totalTokens":209897,"cost":{"input":0.021125,"output":0.0108,"cacheRead":0.102656,"cacheWrite":0,"total":0.134581}},"stopReason":"toolUse","timestamp":1788249070871,"responseId":"resp_046f5546d6e20d23016a9683ef445887d0a02d88be235f0a6d","rawStopReason":"completed"}}
{"type":"message","id":"de120ba5","parentId":"6e296626","timestamp":"2026-09-01T07:51:23.333Z","message":{"role":"toolResult","toolCallId":"call_BBByltWZZg0oGEiL3IiDYaLe|fc_046f5546d6e20d23016a9683fa6af087d08b98ebcfd8b10c49","toolName":"bash","content":[{"type":"text","text":"1788249002.2362640090 /home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a05bc2/sessions/st_01a05bc2/2026-09-01T06-57-35-910Z_01a05bc2-4ea6-7c1c-9e54-d5320d07400b.jsonl\n1788249083.3048537240 /home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a05bd2/sessions/st_01a05bd2/2026-09-01T07-15-36-751Z_01a05bd2-ccaf-7e68-b24a-06e374433703.jsonl\n"}],"isError":false,"timestamp":1788249083333}}
{"type":"message","id":"22ee120d","parentId":"de120ba5","timestamp":"2026-09-01T07:51:30.601Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"","startedAt":1788249085037,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9683fcf3d887d0a8c857114b5a73ea\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloP9XcY343N4s9o5XgvjOtDX-5jA0aDNLRHmyQwbho6hxarCmhAmmTeWe95v1diBrKaQPLJ3nLXA7hTIPj1F3mkysVdyfJLYM0z0cjCuI2czY0byqbApnr2_qaLwmI9wJpbjv5Z-OC6gRxBnk-y00B9HjsJekiPIRfG3yau0mkV3dnubwKHqbPssG85o1FNJq9_Jo6r3K-Mvl-JFYD_Mn-fhc52E67v2KXTnpJZeBGQNKVya0sGQZU5I3FqHrWYTACReOqa_EyXnkKwFt14oNj8xs5caNC6Qp0WMf5L2mB9khtfbaEotAZmzz0of5PWgZqom2p2-RMGne2iVO7krmjX3svbX3pVlenCARyqHDO0rBnPT12D2LC_txA24BmiwL2RwUukBMhUHCkW-xfsM6wX8ql85eYMPEpcW4Zd22rUIN1sykEjqu0IE8xasFzZagGxR8o8w23ByGODcDGO7aNwEYOFTmB6r0YH1zyQzTgKEjCoCPiu5PiVp7uPRdvQsp4Zx8S_8VS4qJxvAl3Cqq6UvX8EJjzBVSqtsue1h62a5ZzRkLBqJEH70ToOwtWIVsCKEhiUOt48R1UatesXNxcmLcv709yYQhyxc-fGo92kK3DC3cC0dNeGXae5thf4b9iU2gboQWK9sBEo0qXtom2ZJ8cmiMcXQ6HH3zzbNwkWdZHPbrJGx4qmiRJ77x35_tY85DgRZ1DGoJ_WO75TDIuVsgL0NJ7PJ0-6sscv6aLELzdp2WWSXpxR9J_x4_qHHAuChuUAzrm4B-pVB7l5oq-FTdOYACmcAvLBOm0iG4Kf5vlGcbdscHPIz1AbBLEtN7orjIvuYzxuP-jP0fKRVG5JudNbANo2VDIm0ESh7p5t2LtRjCdX35CIrBzPWbD57NuoJsAeGHBe2rsog9exIkjXazw9xr_JCmh1LmIy5PMtBCVVLxly-UChxspIcR05qo143VC5F2NSU15uavO9ZlC84v2X7q6MZFS1Z3gTjUIxw7O23-fVhb-OVcxFBe8Ttd5Skq2xaJkasz-bdgj-1bUwZ9yuUOPCEIj55V4KF2SKd5YgmS574IuWl8vi0hVFhiFPVeD0Pn5IPqprE8qokbAVm9kQpWY0K4E6atR8_ubqE6n5Gir7Fb_2HIsHV5c_rWHTeA4PaHrDmAAYGIpIRyB7iWNI_gRB9M_Skfw6HmW3QBms_FDdWiP4AqQBlVuw5zsQ9HdIYZ7YWZP4PP-7AzSGW0iROuGfQdiGNYFllX0NkKoei9UJCeer_mYLk7rosqklAjVhXzRfvIPpFt1SvD2XQ64TtAUR8Zjb8pW5_y8QpOfOk8j4TQjuvhoqzrZtBU1z7f53srcUim6yvqGc-FCEGsTarCbwOcIoUulB5Ua57k-KsD54bhkgmrKwjbysSrRtZ\",\"summary\":[]}","endedAt":1788249085959},{"type":"toolCall","id":"call_ETr8T1xZp4Y50J0D4GJ5PjRj|fc_046f5546d6e20d23016a9683fddf7087d09240deebdc822111","name":"bash","arguments":{"command":"python - <<'PY'\nimport json\nfrom pathlib import Path\np=Path('/home/cube/projects/richard/traning coach/.omo/senpi-task/children/st_01a05bc2/sessions/st_01a05bc2/2026-09-01T06-57-35-910Z_01a05bc2-4ea6-7c1c-9e54-d5320d07400b.jsonl')\nfor line in p.read_text().splitlines():\n try:o=json.loads(line)\n except:continue\n m=o.get('message',{})\n for c in m.get('content',[]) if isinstance(m.get('content'),list) else []:\n  if c.get('type')=='toolCall':\n   a=c.get('arguments',{});cmd=a.get('command','') if isinstance(a,dict) else ''\n   if ('pytest -q' in cmd or 'basedpyright' in cmd or 'ty check' in cmd) and any(x in cmd for x in ('maintenance_adversarial_support','test_physique_inline_card_maintenance','topic59_maintenance')):\n    print('\\n---\\n'+cmd[-12000:])\nPY","timeout":30}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":674,"output":309,"cacheRead":209408,"cacheWrite":0,"reasoning":21,"totalTokens":210391,"cost":{"input":0.00337,"output":0.00927,"cacheRead":0.10470399999999999,"cacheWrite":0,"total":0.11734399999999999}},"stopReason":"toolUse","timestamp":1788249083378,"responseId":"resp_046f5546d6e20d23016a9683fbb86887d0b536da8e507e6b20","rawStopReason":"completed"}}
{"type":"message","id":"ec01c047","parentId":"22ee120d","timestamp":"2026-09-01T07:51:30.645Z","message":{"role":"toolResult","toolCallId":"call_ETr8T1xZp4Y50J0D4GJ5PjRj|fc_046f5546d6e20d23016a9683fddf7087d09240deebdc822111","toolName":"bash","content":[{"type":"text","text":"from tests.gateway.nutrition_weekly_maintenance_support import MaintenanceFixture\n\n\ndef rewrite(path: Path, content: bytes, mode: int) -> None:\n    if os.path.lexists(path):\n        path.unlink()\n    _ = path.write_bytes(content)\n    _ = path.chmod(mode)\n\n\ndef noncanonical(raw: bytes) -> bytes:\n    return b\"{ \" + raw[1:]\n\n\ndef extra(raw: bytes) -> bytes:\n    return raw[:-2] + b',\"unexpected\":true}\\n'\n\n\ndef symlink(path: Path, target: Path) -> None:\n    path.unlink()\n    path.symlink_to(target)\n\n\ndef hardlink(path: Path) -> None:\n    os.link(path, path.with_name(f\"{path.name}.linked\"))\n\n\ndef fifo(path: Path) -> None:\n    path.unlink()\n    os.mkfifo(path, 0o600)\n\n\ndef replace_directory_with_symlink(fixture: MaintenanceFixture) -> None:\n    for child in fixture.maintenance.iterdir():\n        child.unlink()\n    fixture.maintenance.rmdir()\n    fixture.maintenance.symlink_to(fixture.credentials, target_is_directory=True)\n\n\ndef fake_identity(\n    monkeypatch: pytest.MonkeyPatch, *, occurrence: int, change_uid: bool,\n) -> None:\n    original = os.fstat\n    calls = 0\n\n    def altered(descriptor: int) -> os.stat_result:\n        nonlocal calls\n        calls += 1\n        current = original(descriptor)\n        if calls != occurrence:\n            return current\n        values = list(current)\n        index = 4 if change_uid else 5\n        values[index] = values[index] + 1\n        return os.stat_result(values)\n\n    monkeypatch.setattr(maintenance_io.os, \"fstat\", altered)\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/nutrition_weekly_maintenance_adversarial_support.py');o=p.read_text();n=o\nn=n.replace('import os\\n','').replace('from pathlib import Path\\n','')\nn=n.replace('import gateway.platforms.nutrition_weekly_maintenance_io as maintenance_io\\n','')\nn=n.replace('from tests.gateway.nutrition_weekly_maintenance_support import (\\n    CANDIDATE,\\n    CONFIG,\\n    CUSTOMER,\\n    ROUTE,\\n    SLOT,\\n', 'from tests.gateway.nutrition_weekly_maintenance_fs_mutations import (\\n    extra as _extra, fake_identity as _fake_identity, fifo as _fifo,\\n    hardlink as _hardlink, noncanonical as _noncanonical,\\n    replace_directory_with_symlink as _replace_directory_with_symlink,\\n    rewrite as _rewrite, symlink as _symlink,\\n)\\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\\n')\nn += '''\n\n\ndef _bind(fixture: MaintenanceFixture, binding: HoldBinding) -> None:\n    hold = Topic59MaintenanceHoldV1(\n        hold_id=fixture.hold.hold_id,\n        package_digest=fixture.hold.package_digest,\n        candidate_digest=binding.candidate,\n        config_digest=binding.config,\n        route_digest=binding.route,\n        customer_identity_digest=binding.customer,\n        card_slot=binding.slot,\n        kst_day=binding.day,\n        not_before=binding.not_before,\n        expires_at=binding.expires_at,\n    )\n    write_bound_hold(fixture, hold)\n\n\ndef _create_valid_audit(fixture: MaintenanceFixture) -> None:\n    result = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n    assert result.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n\n\ndef _mutate_audit(\n    case: MatrixCase, fixture: MaintenanceFixture, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    audit = fixture.audit\n    match case:\n        case MatrixCase.AUDIT_SYMLINK:\n            _symlink(audit, fixture.credential)\n        case MatrixCase.AUDIT_HARDLINK:\n            _hardlink(audit)\n        case MatrixCase.AUDIT_MODE:\n            _ = audit.chmod(0o640)\n        case MatrixCase.AUDIT_KIND:\n            _fifo(audit)\n        case MatrixCase.AUDIT_GID:\n            _ = change_group(audit)\n        case MatrixCase.AUDIT_OWNER:\n            _fake_identity(monkeypatch, occurrence=5, change_uid=True)\n        case unreachable:\n            assert_never(unreachable)\n'''\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\nchanges={\n 'tests/gateway/nutrition_weekly_maintenance_fs_mutations.py': [('import gateway.platforms.nutrition_weekly_maintenance_io as maintenance_io\\n',''),('    monkeypatch.setattr(maintenance_io.os, \"fstat\", altered)\\n','    monkeypatch.setattr(os, \"fstat\", altered)\\n')],\n 'tests/gateway/nutrition_weekly_maintenance_adversarial_support.py': [\n('        case MatrixCase.AUDIT_SYMLINK | MatrixCase.AUDIT_HARDLINK | MatrixCase.AUDIT_MODE | MatrixCase.AUDIT_KIND | MatrixCase.AUDIT_GID | MatrixCase.AUDIT_OWNER:\\n            _create_valid_audit(fixture)\\n            _mutate_audit(case, fixture, monkeypatch)\\n            return True\\n', '''        case MatrixCase.AUDIT_SYMLINK:\n            _create_valid_audit(fixture)\n            _symlink(fixture.audit, fixture.credential)\n            return True\n        case MatrixCase.AUDIT_HARDLINK:\n            _create_valid_audit(fixture)\n            _hardlink(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_MODE:\n            _create_valid_audit(fixture)\n            _ = fixture.audit.chmod(0o640)\n            return True\n        case MatrixCase.AUDIT_KIND:\n            _create_valid_audit(fixture)\n            _fifo(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_GID:\n            _create_valid_audit(fixture)\n            _ = change_group(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_OWNER:\n            _create_valid_audit(fixture)\n            _fake_identity(monkeypatch, occurrence=5, change_uid=True)\n            return True\n'''),\n('        case unreachable:\\n            assert_never(unreachable)\\n    return False\\n','    return False\\n',1),\n],\n}\nfor name,repls in changes.items():\n p=Path(name);o=p.read_text();n=o\n for a,b in repls:\n  if a not in n:raise SystemExit(f'{name}: {a!r}')\n  n=n.replace(a,b)\n if name.endswith('adversarial_support.py'):\n  start=n.index('\\ndef _mutate_audit(')\n  n=n[:start]+'\\n'\n print(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+name,tofile='b/'+name)),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/nutrition_weekly_maintenance_adversarial_support.py');o=p.read_text();n=o\nn=n.replace('''        case MatrixCase.AUDIT_SYMLINK | MatrixCase.AUDIT_HARDLINK | MatrixCase.AUDIT_MODE | MatrixCase.AUDIT_KIND | MatrixCase.AUDIT_GID | MatrixCase.AUDIT_OWNER:\n            _create_valid_audit(fixture)\n            _mutate_audit(case, fixture, monkeypatch)\n            return True\n''','''        case MatrixCase.AUDIT_SYMLINK:\n            _create_valid_audit(fixture)\n            _symlink(fixture.audit, fixture.credential)\n            return True\n        case MatrixCase.AUDIT_HARDLINK:\n            _create_valid_audit(fixture)\n            _hardlink(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_MODE:\n            _create_valid_audit(fixture)\n            _ = fixture.audit.chmod(0o640)\n            return True\n        case MatrixCase.AUDIT_KIND:\n            _create_valid_audit(fixture)\n            _fifo(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_GID:\n            _create_valid_audit(fixture)\n            _ = change_group(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_OWNER:\n            _create_valid_audit(fixture)\n            _fake_identity(monkeypatch, occurrence=5, change_uid=True)\n            return True\n''')\nn=n.replace('        case unreachable:\\n            assert_never(unreachable)\\n    return False\\n','    return False\\n',1)\nstart=n.index('\\ndef _mutate_audit(');n=n[:start]+'\\n'\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && /tmp/nutricoach-t12-bin/apply_patch <<'PATCH'\n--- a/tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n+++ b/tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n@@ -5,7 +5,6 @@\n from dataclasses import dataclass, replace\n from datetime import date, datetime, timedelta\n from enum import StrEnum\n-from typing import assert_never\n \n import pytest\nPATCH\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/nutrition_weekly_maintenance_fs_mutations.py');o=p.read_text();n=o+'\\n\\ndef artifact_snapshot(path: Path) -> tuple[tuple[str, int, int, int, int], ...]:\\n    if path.is_symlink() or not path.is_dir():\\n        info = path.lstat()\\n        return ((path.name, info.st_mode, info.st_nlink, info.st_size, info.st_mtime_ns),)\\n    rows: list[tuple[str, int, int, int, int]] = []\\n    for child in sorted(path.iterdir(), key=lambda item: item.name):\\n        info = child.lstat()\\n        rows.append((child.name, info.st_mode, info.st_nlink, info.st_size, info.st_mtime_ns))\\n    return tuple(rows)\\n'\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py');o=p.read_text();n='''from __future__ import annotations\n\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecisionKind,\n    Topic59MaintenanceFailure,\n)\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59PublicationDisposition\nfrom gateway.platforms.nutrition_weekly_operations_publication_contract import (\n    Topic59IncidentReason,\n)\nfrom tests.gateway.nutrition_weekly_maintenance_adversarial_support import (\n    MatrixCase,\n    apply_case,\n)\nfrom tests.gateway.nutrition_weekly_maintenance_fs_mutations import artifact_snapshot\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\n    arm_maintenance,\n    change_group,\n    publish_with_tripwires,\n)\n\n\n@pytest.fixture\ndef anyio_backend() -> str:\n    return \"asyncio\"\n\n\ndef test_lock_wrong_gid_denies_before_state_change(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    lock = fixture.maintenance / \"maintenance.lock\"\n    alternate_gid = change_group(lock)\n    assert alternate_gid != fixture.profile.stat().st_gid\n    before = artifact_snapshot(fixture.maintenance)\n\n    # When\n    result = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.DENY\n    assert result.reason is Topic59MaintenanceFailure.FILESYSTEM_CONTRACT\n    assert artifact_snapshot(fixture.maintenance) == before\n    assert not fixture.audit.exists()\n    assert not fixture.ledger.exists()\n\n\n@pytest.mark.anyio\n@pytest.mark.parametrize(\n    \"case\", tuple(MatrixCase), ids=[case.value for case in MatrixCase],\n)\nasync def test_negative_matrix_denies_before_claim_transport_or_network(\n    case: MatrixCase, tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    _ = apply_case(case, fixture, monkeypatch)\n    before = artifact_snapshot(fixture.maintenance)\n\n    # When\n    decision = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n    observation = await publish_with_tripwires(fixture)\n\n    # Then\n    assert decision.kind is Topic59MaintenanceDecisionKind.DENY\n    assert decision.reason is not None\n    assert observation.result.disposition is Topic59PublicationDisposition.REFUSED\n    assert observation.result.reason is Topic59IncidentReason.MAINTENANCE_REJECTED\n    assert observation.result.message_id is None\n    assert observation.result.maintenance_audit_digest is None\n    assert (\n        observation.claim_calls,\n        observation.record_calls,\n        observation.send_calls,\n        observation.edit_calls,\n        observation.network_calls,\n    ) == (0, 0, 0, 0, 0)\n    assert not fixture.ledger.exists()\n    assert artifact_snapshot(fixture.maintenance) == before\n'''\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\nchanges={\n'tests/gateway/nutrition_weekly_maintenance_support.py':[\n('def _write_owned(path: Path, content: bytes, mode: int) -> None:\\n    _ = path.write_bytes(content)\\n    _ = path.chmod(mode)\\n','def _write_owned(path: Path, content: bytes, mode: int) -> None:\\n    if path.exists():\\n        _ = path.chmod(0o600)\\n    _ = path.write_bytes(content)\\n    _ = path.chmod(mode)\\n')],\n'tests/gateway/nutrition_weekly_maintenance_fs_mutations.py':[\n('def fake_identity(\\n    monkeypatch: pytest.MonkeyPatch, *, occurrence: int, change_uid: bool,\\n) -> None:\\n    original = os.fstat\\n    calls = 0\\n\\n    def altered(descriptor: int) -> os.stat_result:\\n        nonlocal calls\\n        calls += 1\\n        current = original(descriptor)\\n        if calls != occurrence:\\n            return current\\n', 'def fake_identity(\\n    monkeypatch: pytest.MonkeyPatch, target: Path, *, change_uid: bool,\\n) -> None:\\n    original = os.fstat\\n    target_inode = target.stat().st_ino\\n\\n    def altered(descriptor: int) -> os.stat_result:\\n        current = original(descriptor)\\n        if current.st_ino != target_inode:\\n            return current\\n')],\n'tests/gateway/nutrition_weekly_maintenance_adversarial_support.py':[\n('_fake_identity(monkeypatch, occurrence=1, change_uid=True)','_fake_identity(monkeypatch, fixture.credential, change_uid=True)'),\n('_fake_identity(monkeypatch, occurrence=3, change_uid=True)','_fake_identity(monkeypatch, fixture.maintenance, change_uid=True)'),\n('_fake_identity(monkeypatch, occurrence=5, change_uid=True)','_fake_identity(monkeypatch, active, change_uid=True)',1),\n('_fake_identity(monkeypatch, occurrence=4, change_uid=True)','_fake_identity(monkeypatch, lock, change_uid=True)'),\n('_fake_identity(monkeypatch, occurrence=5, change_uid=True)','_fake_identity(monkeypatch, fixture.audit, change_uid=True)'),\n],\n}\nfor name,repls in changes.items():\n p=Path(name);o=p.read_text();n=o\n for item in repls:\n  a,b,*count=item\n  if a not in n:raise SystemExit(f'{name}: {a!r}')\n  n=n.replace(a,b,count[0] if count else -1)\n print(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+name,tofile='b/'+name)),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_topic59_maintenance.py');o=p.read_text();n='''from __future__ import annotations\n\nimport threading\nfrom concurrent.futures import ThreadPoolExecutor\nfrom dataclasses import replace\nfrom datetime import timedelta\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecisionKind,\n    Topic59MaintenanceSkipAuditV1,\n)\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom tests.gateway.nutrition_weekly_maintenance_support import arm_maintenance\n\n\ndef test_valid_hold_is_consumed_once_and_same_day_is_idempotent(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n\n    # When\n    first = gate.evaluate(fixture.projection, fixture.now)\n    first_bytes = fixture.audit.read_bytes()\n    first_stat = fixture.audit.stat()\n    second = gate.evaluate(fixture.projection, fixture.now + timedelta(minutes=20))\n\n    # Then\n    assert first.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n    assert second == first\n    assert fixture.audit.read_bytes() == first_bytes\n    assert fixture.audit.stat().st_mtime_ns == first_stat.st_mtime_ns\n    assert not (fixture.maintenance / \"hold.json\").exists()\n    assert not (fixture.maintenance / \"hold.consuming.json\").exists()\n    audit = Topic59MaintenanceSkipAuditV1.model_validate_json(first_bytes)\n    assert audit.provider_calls == audit.network_calls == 0\n    assert audit.sent is audit.delivered is False\n    assert audit.message_id is audit.provider_receipt is None\n\n\ndef test_prior_day_terminal_audit_allows_next_day(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n    _ = gate.evaluate(fixture.projection, fixture.now)\n    tomorrow = replace(\n        fixture.projection, kst_day=fixture.projection.kst_day + timedelta(days=1),\n    )\n\n    # When\n    result = gate.evaluate(tomorrow, fixture.now + timedelta(days=1))\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.ALLOW\n\n\ndef test_consuming_marker_completes_after_rename_crash(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    consuming = fixture.maintenance / \"hold.consuming.json\"\n    _ = (fixture.maintenance / \"hold.json\").rename(consuming)\n\n    # When\n    result = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n    assert fixture.audit.is_file()\n    assert not consuming.exists()\n\n\ndef test_complete_audit_finalizes_consuming_marker_after_replace_crash(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n    first = gate.evaluate(fixture.projection, fixture.now)\n    consuming = fixture.maintenance / \"hold.consuming.json\"\n    _ = consuming.write_bytes(fixture.hold_bytes)\n    _ = consuming.chmod(0o600)\n\n    # When\n    recovered = gate.evaluate(fixture.projection, fixture.now)\n\n    # Then\n    assert recovered == first\n    assert not consuming.exists()\n\n\ndef test_concurrent_ticks_create_one_audit_without_timing_waits(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n    barrier = threading.Barrier(3)\n\n    def evaluate() -> Topic59MaintenanceDecisionKind:\n        _ = barrier.wait(timeout=2)\n        return gate.evaluate(fixture.projection, fixture.now).kind\n\n    # When\n    with ThreadPoolExecutor(max_workers=2) as workers:\n        futures = (workers.submit(evaluate), workers.submit(evaluate))\n        _ = barrier.wait(timeout=2)\n        outcomes = tuple(future.result(timeout=2) for future in futures)\n\n    # Then\n    assert outcomes == (\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n    )\n    assert tuple(fixture.maintenance.glob(\"skip-audit.json\")) == (fixture.audit,)\n'''\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('cron/physique_inline_card.py');o=p.read_text();n=o.replace('class _AsyncCardResult(Protocol):','class ScheduledCardResult(Protocol):').replace('Coroutine[None, None, _AsyncCardResult]','Coroutine[None, None, ScheduledCardResult]')\nmarker='\\n\\nclass _AsyncCardAdapter(Protocol):'\n# no insertion there; add helper after adapter class method block\nneedle='    def send_inline_card(self, card: str) -> Coroutine[None, None, ScheduledCardResult]: ...\\n\\n\\n'\nhelper='''    def send_inline_card(self, card: str) -> Coroutine[None, None, ScheduledCardResult]: ...\n\n\ndef scheduled_tick_is_maintenance(result: ScheduledCardResult) -> bool:\n    from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n\n    try:\n        raw_response = result.raw_response\n    except AttributeError:\n        return False\n    return (\n        isinstance(raw_response, NutritionScheduledTickOutcome)\n        and raw_response.disposition == \"noop_maintenance\"\n    )\n\n\n'''\nif needle not in n:raise SystemExit('adapter needle')\nn=n.replace(needle,helper)\nold='''        from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n        try:\n            raw_response = result.raw_response\n        except AttributeError:\n            raw_response = None\n        self.maintenance_noop = (\n            isinstance(raw_response, NutritionScheduledTickOutcome)\n            and raw_response.disposition == \"noop_maintenance\"\n        )\n'''\nn=n.replace(old,'        self.maintenance_noop = scheduled_tick_is_maintenance(result)\\n')\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py');o=p.read_text();n='''from __future__ import annotations\n\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_operations import Topic59PublicationDisposition\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\n    arm_maintenance,\n    publish_with_tripwires,\n)\n\n\n@pytest.fixture\ndef anyio_backend() -> str:\n    return \"asyncio\"\n\n\ndef test_maintenance_disposition_is_distinct_from_delivery() -> None:\n    assert Topic59PublicationDisposition.NOOP_MAINTENANCE.value == \"noop_maintenance\"\n\n\n@pytest.mark.anyio\nasync def test_valid_maintenance_precedes_claim_and_transport(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n\n    # When\n    observation = await publish_with_tripwires(fixture)\n\n    # Then\n    assert observation.result.disposition is Topic59PublicationDisposition.NOOP_MAINTENANCE\n    assert observation.result.message_id is None\n    assert observation.result.maintenance_audit_digest is not None\n    assert (\n        observation.claim_calls,\n        observation.record_calls,\n        observation.send_calls,\n        observation.edit_calls,\n        observation.network_calls,\n    ) == (0, 0, 0, 0, 0)\n    assert not fixture.ledger.exists()\n'''\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nadd_patch() { p=\"$1\"; c=$(cat); n=$(printf '%s\\n' \"$c\" | wc -l); { printf '%s\\n' '--- /dev/null' \"+++ b/$p\" \"@@ -0,0 +1,$n @@\"; printf '%s\\n' \"$c\" | sed 's/^/+/' ; } | /tmp/nutricoach-t12-bin/apply_patch; }\nadd_patch tests/cron/test_physique_inline_card_maintenance.py <<'PY'\nfrom __future__ import annotations\n\nfrom dataclasses import dataclass\n\nfrom cron.physique_inline_card import (\n    LaunchResult,\n    ScheduledLaunchStatus,\n    scheduled_launch_record,\n    scheduled_tick_is_maintenance,\n)\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n\n\n@dataclass(frozen=True, slots=True)\nclass ScheduledResult:\n    success: bool\n    error: str | None\n    raw_response: NutritionScheduledTickOutcome | None\n\n\ndef test_typed_tick_outcome_becomes_truthful_scheduler_record() -> None:\n    # Given\n    tick = ScheduledResult(True, None, NutritionScheduledTickOutcome(\"noop_maintenance\"))\n\n    # When\n    maintenance = scheduled_tick_is_maintenance(tick)\n    record = scheduled_launch_record(LaunchResult(maintenance_noop=maintenance))\n\n    # Then\n    assert maintenance is True\n    assert record.status is ScheduledLaunchStatus.MAINTENANCE\n    assert record.success is True\n    assert record.error is None\n    assert record.status.value == \"maintenance no-op completed\"\n\n\ndef test_normal_success_remains_sent() -> None:\n    # Given / When\n    record = scheduled_launch_record(LaunchResult(sent=True))\n\n    # Then\n    assert record.status is ScheduledLaunchStatus.SENT\n    assert record.success is True\n    assert record.error is None\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py tests/cron/test_physique_inline_card.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('cron/physique_inline_card.py');o=p.read_text();n=o.replace('''    success: bool\n    error: str | None\n    raw_response: NutritionScheduledTickOutcome | None\n''','''    @property\n    def success(self) -> bool: ...\n\n    @property\n    def error(self) -> str | None: ...\n\n    @property\n    def raw_response(self) -> NutritionScheduledTickOutcome | None: ...\n''')\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nadd_patch() { p=\"$1\"; c=$(cat); n=$(printf '%s\\n' \"$c\" | wc -l); { printf '%s\\n' '--- /dev/null' \"+++ b/$p\" \"@@ -0,0 +1,$n @@\"; printf '%s\\n' \"$c\" | sed 's/^/+/' ; } | /tmp/nutricoach-t12-bin/apply_patch; }\nadd_patch tests/gateway/nutrition_weekly_maintenance_hold_mutations.py <<'PY'\n\"\"\"Typed hold-binding mutations for maintenance rejection tests.\"\"\"\n\nfrom __future__ import annotations\n\nfrom dataclasses import dataclass\nfrom datetime import date, datetime\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import Topic59MaintenanceHoldV1\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\n    MaintenanceFixture,\n    write_bound_hold,\n)\n\n\n@dataclass(frozen=True, slots=True)\nclass HoldBinding:\n    candidate: str\n    config: str\n    route: str\n    customer: str\n    slot: str\n    day: date\n    not_before: datetime\n    expires_at: datetime\n\n    @classmethod\n    def exact(cls, fixture: MaintenanceFixture) -> HoldBinding:\n        hold = fixture.hold\n        return cls(\n            candidate=hold.candidate_digest,\n            config=hold.config_digest,\n            route=hold.route_digest,\n            customer=hold.customer_identity_digest,\n            slot=hold.card_slot,\n            day=hold.kst_day,\n            not_before=hold.not_before,\n            expires_at=hold.expires_at,\n        )\n\n\ndef bind_hold(fixture: MaintenanceFixture, binding: HoldBinding) -> None:\n    hold = Topic59MaintenanceHoldV1(\n        hold_id=fixture.hold.hold_id,\n        package_digest=fixture.hold.package_digest,\n        candidate_digest=binding.candidate,\n        config_digest=binding.config,\n        route_digest=binding.route,\n        customer_identity_digest=binding.customer,\n        card_slot=binding.slot,\n        kst_day=binding.day,\n        not_before=binding.not_before,\n        expires_at=binding.expires_at,\n    )\n    write_bound_hold(fixture, hold)\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/nutrition_weekly_maintenance_adversarial_support.py');o=p.read_text();n=o\nn=n.replace('from dataclasses import dataclass, replace\\nfrom datetime import date, datetime, timedelta\\n','from dataclasses import replace\\nfrom datetime import timedelta\\n')\nn=n.replace('    Topic59MaintenanceHoldV1,\\n','')\nn=n.replace('    write_bound_hold,\\n','')\nn=n.replace('from tests.gateway.nutrition_weekly_maintenance_support import (\\n','from tests.gateway.nutrition_weekly_maintenance_hold_mutations import (\\n    HoldBinding, bind_hold as _bind,\\n)\\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\\n')\nstart=n.index('\\n\\n@dataclass(frozen=True, slots=True)\\nclass HoldBinding:')\nend=n.index('\\n\\ndef apply_case(',start)\nn=n[:start]+n[end:]\nstart=n.index('\\n\\ndef _bind(')\nend=n.index('\\n\\ndef _create_valid_audit(',start)\nn=n[:start]+n[end:]\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_hold_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/cron/test_physique_inline_card_maintenance.py cron/physique_inline_card.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py tests/cron/test_physique_inline_card.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('gateway/platforms/nutrition_weekly_operations.py');o=p.read_text();n=o.replace('from typing import Protocol\\n','from typing import Protocol, assert_never\\n').replace('                case Topic59MaintenanceDecisionKind.DENY:\\n                    return Topic59PublicationResult(\\n                        Topic59PublicationDisposition.REFUSED, projection.logical_key,\\n                        reason=Topic59IncidentReason.MAINTENANCE_REJECTED,\\n                    )\\n', '                case Topic59MaintenanceDecisionKind.DENY:\\n                    return Topic59PublicationResult(\\n                        Topic59PublicationDisposition.REFUSED, projection.logical_key,\\n                        reason=Topic59IncidentReason.MAINTENANCE_REJECTED,\\n                    )\\n                case _ as unreachable:\\n                    assert_never(unreachable)\\n')\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_operations.py cron/physique_inline_card.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_hold_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_hold_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_physique_inline_card_maintenance.py tests/cron/test_scheduler.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\nmain=Path('tests/gateway/nutrition_weekly_maintenance_adversarial_support.py');o=main.read_text();n=o\nn=n.replace('from dataclasses import replace\\n','from dataclasses import dataclass, replace\\n').replace('from datetime import timedelta\\n','from datetime import date, datetime, timedelta\\n')\nn=n.replace('from tests.gateway.nutrition_weekly_maintenance_hold_mutations import (\\n    HoldBinding, bind_hold as _bind,\\n)\\n','')\nn=n.replace('    Topic59MaintenanceDecisionKind,\\n','    Topic59MaintenanceDecisionKind, Topic59MaintenanceHoldV1,\\n')\nn=n.replace('    change_group,\\n','    change_group, write_bound_hold,\\n')\ninsert='''\n\n@dataclass(frozen=True, slots=True)\nclass HoldBinding:\n    candidate: str\n    config: str\n    route: str\n    customer: str\n    slot: str\n    day: date\n    not_before: datetime\n    expires_at: datetime\n\n    @classmethod\n    def exact(cls, fixture: MaintenanceFixture) -> HoldBinding:\n        hold = fixture.hold\n        return cls(\n            hold.candidate_digest, hold.config_digest, hold.route_digest,\n            hold.customer_identity_digest, hold.card_slot, hold.kst_day,\n            hold.not_before, hold.expires_at,\n        )\n\n\ndef _bind(fixture: MaintenanceFixture, binding: HoldBinding) -> None:\n    write_bound_hold(fixture, Topic59MaintenanceHoldV1(\n        hold_id=fixture.hold.hold_id, package_digest=fixture.hold.package_digest,\n        candidate_digest=binding.candidate, config_digest=binding.config,\n        route_digest=binding.route, customer_identity_digest=binding.customer,\n        card_slot=binding.slot, kst_day=binding.day,\n        not_before=binding.not_before, expires_at=binding.expires_at,\n    ))\n'''\nmarker='\\n\\ndef apply_case('\nn=n.replace(marker,insert+marker)\nn=n.replace('            return True\\n','')\nn=n.replace('    return False\\n\\n\\ndef _create_valid_audit','\\n\\ndef _create_valid_audit')\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(main),tofile='b/'+str(main))),end='')\n# Delete the no-longer-used split file through patch.\np=Path('tests/gateway/nutrition_weekly_maintenance_hold_mutations.py');old=p.read_text()\nprint(''.join(difflib.unified_diff(old.splitlines(True),[],fromfile='a/'+str(p),tofile='/dev/null')),end='')\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/cron/test_physique_inline_card_maintenance.py');o=p.read_text();n='''from __future__ import annotations\n\nfrom cron.physique_inline_card import (\n    LaunchResult,\n    ScheduledLaunchStatus,\n    scheduled_launch_record,\n)\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n\n\ndef test_typed_tick_outcome_becomes_truthful_scheduler_record() -> None:\n    # Given\n    tick = NutritionScheduledTickOutcome(\"noop_maintenance\")\n\n    # When\n    record = scheduled_launch_record(LaunchResult(\n        maintenance_noop=tick.disposition == \"noop_maintenance\",\n    ))\n\n    # Then\n    assert record.status is ScheduledLaunchStatus.MAINTENANCE\n    assert record.success is True\n    assert record.error is None\n    assert record.status.value == \"maintenance no-op completed\"\n\n\ndef test_normal_success_remains_sent() -> None:\n    # Given / When\n    record = scheduled_launch_record(LaunchResult(sent=True))\n\n    # Then\n    assert record.status is ScheduledLaunchStatus.SENT\n    assert record.success is True\n    assert record.error is None\n'''\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nawk '!/^[[:space:]]*$/ && !/^[[:space:]]*#/' tests/gateway/nutrition_weekly_maintenance_adversarial_support.py | wc -l\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/traning coach' && replace_patch() { p=\"$1\"; c=$(cat); on=$(wc -l < \"$p\"); nn=$(printf '%s\\n' \"$c\" | wc -l); { printf '%s\\n' \"--- a/$p\" \"+++ b/$p\" \"@@ -1,$on +1,$nn @@\"; sed 's/^/-/' \"$p\"; printf '%s\\n' \"$c\" | sed 's/^/+/' ; } | /tmp/nutricoach-t12-bin/apply_patch; }\nreplace_patch .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json <<'JSON'\n{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-v2\",\n  \"task_id\": \"st_01a05bc2\",\n  \"amendment_task\": \"adversarial-blocker-closure\",\n  \"status\": \"DONE_SOURCE_ONLY\",\n  \"blocker_count\": 0,\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"scope_guards\": {\n    \"git_or_github_actions\": 0,\n    \"network_or_provider_actions\": 0,\n    \"customer_actions\": 0,\n    \"package_preseal_live_profile_credential_root_creations\": 0,\n    \"commits\": 0\n  },\n  \"blocker_closure\": {\n    \"maintenance_lock_wrong_gid\": {\n      \"red\": \"wrong supplementary gid 125 returned noop_maintenance and consumed the hold\",\n      \"green\": \"OwnedMaintenanceDirectory carries the profile uid/gid; lock, active, consuming and audit opens validate both exactly\",\n      \"regression\": \"wrong gid returns deny/filesystem_contract with byte-identical artifact snapshot, claim/send/edit/network zero\"\n    },\n    \"negative_matrix\": {\n      \"parameterized_cases\": 51,\n      \"dedicated_wrong_gid_regression\": 1,\n      \"total_rejections\": 52,\n      \"all_passed\": true,\n      \"categories\": [\n        \"credential missing/empty/malformed/oversized/noncanonical/extra/hash/symlink/hardlink/mode/file-kind/owner\",\n        \"hold empty/malformed/oversized/noncanonical/extra/early/expired/replay\",\n        \"candidate/config/route/customer/card-slot/day binding mismatch\",\n        \"directory symlink/mode/gid/owner\",\n        \"active, lock and audit symlink/hardlink/mode/file-kind/gid/owner\",\n        \"simultaneous active+consuming, partial temp and partial audit\"\n      ],\n      \"per_case_oracle\": {\n        \"decision\": \"deny\",\n        \"publication\": \"refused\",\n        \"claim_calls\": 0,\n        \"record_calls\": 0,\n        \"send_calls\": 0,\n        \"edit_calls\": 0,\n        \"network_calls\": 0,\n        \"message_id\": null,\n        \"maintenance_audit_digest\": null,\n        \"delivery_ledger_created\": false,\n        \"artifact_snapshot_changed\": false\n      }\n    },\n    \"strict_tests\": {\n      \"legacy_maintenance_additions_restored\": [\n        \"tests/gateway/test_nutrition_weekly_operations_topic59.py\",\n        \"tests/cron/test_physique_inline_card.py\"\n      ],\n      \"new_strict_test_and_support_files\": 7,\n      \"branded_projection_types\": true,\n      \"typed_protocol_and_dataclass_fakes\": true,\n      \"public_publication_ledger_injection_seam\": true,\n      \"private_ledger_access\": false,\n      \"untyped_lambdas\": false,\n      \"Any_cast_ignore_noqa\": false,\n      \"sleeps_or_polling\": false\n    },\n    \"hash_inventory\": \"complete for all 11 runtime propagation files and every retained changed/new strict test/support file\"\n  },\n  \"verification\": {\n    \"wrong_gid_red_green\": \"RED reproduced, GREEN 1 passed\",\n    \"full_negative_matrix\": \"52 passed\",\n    \"focused_maintenance\": \"61 passed in 0.76s\",\n    \"affected_suite\": \"240 passed in 6.92s\",\n    \"ruff\": \"PASS all 11 runtime files and retained changed/new tests/support\",\n    \"ty\": \"PASS all typed runtime and retained changed/new tests/support\",\n    \"basedpyright_fresh\": \"0 errors, 0 warnings, 0 notes across all typed runtime and retained changed/new tests/support\",\n    \"lsp\": \"All established changed files and six of seven strict new test/support files report no diagnostics. The persistent server retained a stale pre-merge snapshot for nutrition_weekly_maintenance_adversarial_support.py; document symbols showed current local HoldBinding while diagnostics referenced the deleted split import. Fresh basedpyright over the exact current file set is the clean equivalent.\",\n    \"compileall\": \"PASS\",\n    \"import_smoke\": \"PASS\",\n    \"no_excuse\": \"PASS: no violations in 11 strict core/test files\",\n    \"ast_escape_hatch_scan\": \"PASS: no Any/cast/ignore/noqa/broad catch/sleep/skip/xfail in maintenance core or strict tests\",\n    \"generated_bytecode_after_cleanup\": 0,\n    \"patch_backup_or_reject_files_after_cleanup\": 0\n  },\n  \"manual_zero_call_qa\": {\n    \"same_day_dispositions\": [\"noop_maintenance\", \"noop_maintenance\"],\n    \"audit_count\": 1,\n    \"delivery_ledger_unchanged_same_day\": true,\n    \"current_day_send_calls\": 0,\n    \"current_day_edit_calls\": 0,\n    \"network_calls\": 0,\n    \"tomorrow_disposition\": \"sent\",\n    \"tomorrow_fake_send_calls\": 1,\n    \"scheduler_processed\": true,\n    \"scheduler_mark_job_run\": [true, null],\n    \"scheduler_status\": \"maintenance no-op completed\"\n  },\n  \"privacy\": {\n    \"audit_has_card_text\": false,\n    \"audit_has_raw_customer_key\": false,\n    \"audit_has_raw_telegram_identity\": false,\n    \"sent\": false,\n    \"delivered\": false,\n    \"message_id\": null,\n    \"provider_receipt\": null,\n    \"provider_calls\": 0,\n    \"network_calls\": 0\n  },\n  \"runtime_hashes\": {\n    \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n    \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9df3f5f368e16fa6019674620a1fa06ba767ac13babd130b0ea79655ab7cdb60\",\n    \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"1affe722d322de8d4e7ae40920dfbcd25a5915008c732193123241eb4e26e5fa\",\n    \"gateway/platforms/nutrition_weekly_operations.py\": \"4a3f27b30d0c639ce6b0020e5f81a386bae22b3a0a5568a497d0a8b4dcbc3fe6\",\n    \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\": \"c75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6\",\n    \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n    \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n    \"gateway/platforms/telegram_weekly_host_dispatch.py\": \"6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88\",\n    \"gateway/platforms/telegram.py\": \"5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7\",\n    \"cron/physique_inline_card.py\": \"16788d449f33b8e0f6c0e8a5db55d1455b3ee694a984307283b07a6b9db29b67\",\n    \"cron/scheduler.py\": \"07fddef7d2df68e2ddee243f5c0901eb15054f91a642dcd96723a139e30f461f\"\n  },\n  \"test_and_support_hashes\": {\n    \"tests/gateway/nutrition_weekly_maintenance_support.py\": \"810ab4768633142b11b9889f08a79789dde79001ae82f7cb7bc6bc1b1213df5d\",\n    \"tests/gateway/nutrition_weekly_maintenance_fs_mutations.py\": \"619b6188e3df38613bd166e4c372b46424888a164d069a25ab4d07a07e611d7f\",\n    \"tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\": \"8cef1f9a7bcccecab843f1c767d870087f57b1d36ce41f48d6f2d5cddc919e25\",\n    \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\": \"4100ab82d11b78a78cffceb6c1150c6ffc448d8fa5b4b97ec8a5b27cc3b4cab7\",\n    \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\": \"bd6fc29371c02c8f627f60d8879ccf77a0596c6e5ed13b91938f6212d2364664\",\n    \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\": \"89f21c1535039ce58e7bc404727fe806a6976bdef6708fa2a31b292e836be7fe\",\n    \"tests/cron/test_physique_inline_card_maintenance.py\": \"4ce999edcfb4949c6df077026c3dd5282b80ffecc0e268786f442a325c1e357e\",\n    \"restored/tests/gateway/test_nutrition_weekly_operations_topic59.py\": \"d0535437501dc31c7a14de07dab1f27eb96a3d8c27efcf113101827b7055661a\",\n    \"restored/tests/cron/test_physique_inline_card.py\": \"931215dab7c03e4cf1eec8e9da96a5895e8ba119c99843aa18036ddd3eaaab02\"\n  },\n  \"pure_loc\": {\n    \"nutrition_weekly_maintenance_contract.py\": 137,\n    \"nutrition_weekly_maintenance_io.py\": 107,\n    \"nutrition_weekly_maintenance_store.py\": 214,\n    \"nutrition_weekly_operations.py\": 158,\n    \"nutrition_weekly_dispatch_result.py\": 14,\n    \"nutrition_weekly_dispatcher.py\": 250,\n    \"telegram_weekly_host_dispatch.py\": 217,\n    \"physique_inline_card.py\": 154,\n    \"nutrition_weekly_maintenance_support.py\": 231,\n    \"nutrition_weekly_maintenance_fs_mutations.py\": 51,\n    \"nutrition_weekly_maintenance_adversarial_support.py\": 237,\n    \"test_nutrition_weekly_topic59_maintenance.py\": 85,\n    \"test_nutrition_weekly_topic59_maintenance_failures.py\": 70,\n    \"test_nutrition_weekly_dispatcher_maintenance.py\": 30,\n    \"test_physique_inline_card_maintenance.py\": 21,\n    \"inherited_large_files\": [\"gateway/platforms/telegram.py\", \"cron/scheduler.py\"]\n  },\n  \"done_claim\": {\n    \"claim\": \"All four adversarial blockers are closed in source with no package or live effects.\",\n    \"single_responsibility\": \"PASS\",\n    \"boundary_purity\": \"PASS: canonical frozen Pydantic authority/hold/audit documents\",\n    \"variant_and_binding_coverage\": \"PASS: 52 deterministic rejection cases plus valid, crash, concurrency and next-day controls\",\n    \"escape_hatches\": \"PASS\",\n    \"defensive_layer\": \"PASS: ownership and filesystem checks remain at the openat boundary\",\n    \"tests\": \"PASS: wrong lock gid, every negative class, zero-call publication and truthful cron status are locked\",\n    \"parameter_bloat\": \"No new production parameter object is a throwaway wrapper\",\n    \"redundant_verification\": \"Only contract-required durable write readback remains\",\n    \"negative_naming\": \"PASS\",\n    \"logging\": \"NOT_TOUCHED\"\n  }\n}\nJSON\npython -m json.tool .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json >/dev/null\n\n[Showing lines 1157-2161 of 2161 (50.0KB limit). Full output: /home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-2509c34c535cbad0.log]"}],"details":{"truncation":{"content":"from tests.gateway.nutrition_weekly_maintenance_support import MaintenanceFixture\n\n\ndef rewrite(path: Path, content: bytes, mode: int) -> None:\n    if os.path.lexists(path):\n        path.unlink()\n    _ = path.write_bytes(content)\n    _ = path.chmod(mode)\n\n\ndef noncanonical(raw: bytes) -> bytes:\n    return b\"{ \" + raw[1:]\n\n\ndef extra(raw: bytes) -> bytes:\n    return raw[:-2] + b',\"unexpected\":true}\\n'\n\n\ndef symlink(path: Path, target: Path) -> None:\n    path.unlink()\n    path.symlink_to(target)\n\n\ndef hardlink(path: Path) -> None:\n    os.link(path, path.with_name(f\"{path.name}.linked\"))\n\n\ndef fifo(path: Path) -> None:\n    path.unlink()\n    os.mkfifo(path, 0o600)\n\n\ndef replace_directory_with_symlink(fixture: MaintenanceFixture) -> None:\n    for child in fixture.maintenance.iterdir():\n        child.unlink()\n    fixture.maintenance.rmdir()\n    fixture.maintenance.symlink_to(fixture.credentials, target_is_directory=True)\n\n\ndef fake_identity(\n    monkeypatch: pytest.MonkeyPatch, *, occurrence: int, change_uid: bool,\n) -> None:\n    original = os.fstat\n    calls = 0\n\n    def altered(descriptor: int) -> os.stat_result:\n        nonlocal calls\n        calls += 1\n        current = original(descriptor)\n        if calls != occurrence:\n            return current\n        values = list(current)\n        index = 4 if change_uid else 5\n        values[index] = values[index] + 1\n        return os.stat_result(values)\n\n    monkeypatch.setattr(maintenance_io.os, \"fstat\", altered)\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/nutrition_weekly_maintenance_adversarial_support.py');o=p.read_text();n=o\nn=n.replace('import os\\n','').replace('from pathlib import Path\\n','')\nn=n.replace('import gateway.platforms.nutrition_weekly_maintenance_io as maintenance_io\\n','')\nn=n.replace('from tests.gateway.nutrition_weekly_maintenance_support import (\\n    CANDIDATE,\\n    CONFIG,\\n    CUSTOMER,\\n    ROUTE,\\n    SLOT,\\n', 'from tests.gateway.nutrition_weekly_maintenance_fs_mutations import (\\n    extra as _extra, fake_identity as _fake_identity, fifo as _fifo,\\n    hardlink as _hardlink, noncanonical as _noncanonical,\\n    replace_directory_with_symlink as _replace_directory_with_symlink,\\n    rewrite as _rewrite, symlink as _symlink,\\n)\\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\\n')\nn += '''\n\n\ndef _bind(fixture: MaintenanceFixture, binding: HoldBinding) -> None:\n    hold = Topic59MaintenanceHoldV1(\n        hold_id=fixture.hold.hold_id,\n        package_digest=fixture.hold.package_digest,\n        candidate_digest=binding.candidate,\n        config_digest=binding.config,\n        route_digest=binding.route,\n        customer_identity_digest=binding.customer,\n        card_slot=binding.slot,\n        kst_day=binding.day,\n        not_before=binding.not_before,\n        expires_at=binding.expires_at,\n    )\n    write_bound_hold(fixture, hold)\n\n\ndef _create_valid_audit(fixture: MaintenanceFixture) -> None:\n    result = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n    assert result.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n\n\ndef _mutate_audit(\n    case: MatrixCase, fixture: MaintenanceFixture, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    audit = fixture.audit\n    match case:\n        case MatrixCase.AUDIT_SYMLINK:\n            _symlink(audit, fixture.credential)\n        case MatrixCase.AUDIT_HARDLINK:\n            _hardlink(audit)\n        case MatrixCase.AUDIT_MODE:\n            _ = audit.chmod(0o640)\n        case MatrixCase.AUDIT_KIND:\n            _fifo(audit)\n        case MatrixCase.AUDIT_GID:\n            _ = change_group(audit)\n        case MatrixCase.AUDIT_OWNER:\n            _fake_identity(monkeypatch, occurrence=5, change_uid=True)\n        case unreachable:\n            assert_never(unreachable)\n'''\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\nchanges={\n 'tests/gateway/nutrition_weekly_maintenance_fs_mutations.py': [('import gateway.platforms.nutrition_weekly_maintenance_io as maintenance_io\\n',''),('    monkeypatch.setattr(maintenance_io.os, \"fstat\", altered)\\n','    monkeypatch.setattr(os, \"fstat\", altered)\\n')],\n 'tests/gateway/nutrition_weekly_maintenance_adversarial_support.py': [\n('        case MatrixCase.AUDIT_SYMLINK | MatrixCase.AUDIT_HARDLINK | MatrixCase.AUDIT_MODE | MatrixCase.AUDIT_KIND | MatrixCase.AUDIT_GID | MatrixCase.AUDIT_OWNER:\\n            _create_valid_audit(fixture)\\n            _mutate_audit(case, fixture, monkeypatch)\\n            return True\\n', '''        case MatrixCase.AUDIT_SYMLINK:\n            _create_valid_audit(fixture)\n            _symlink(fixture.audit, fixture.credential)\n            return True\n        case MatrixCase.AUDIT_HARDLINK:\n            _create_valid_audit(fixture)\n            _hardlink(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_MODE:\n            _create_valid_audit(fixture)\n            _ = fixture.audit.chmod(0o640)\n            return True\n        case MatrixCase.AUDIT_KIND:\n            _create_valid_audit(fixture)\n            _fifo(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_GID:\n            _create_valid_audit(fixture)\n            _ = change_group(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_OWNER:\n            _create_valid_audit(fixture)\n            _fake_identity(monkeypatch, occurrence=5, change_uid=True)\n            return True\n'''),\n('        case unreachable:\\n            assert_never(unreachable)\\n    return False\\n','    return False\\n',1),\n],\n}\nfor name,repls in changes.items():\n p=Path(name);o=p.read_text();n=o\n for a,b in repls:\n  if a not in n:raise SystemExit(f'{name}: {a!r}')\n  n=n.replace(a,b)\n if name.endswith('adversarial_support.py'):\n  start=n.index('\\ndef _mutate_audit(')\n  n=n[:start]+'\\n'\n print(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+name,tofile='b/'+name)),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/nutrition_weekly_maintenance_adversarial_support.py');o=p.read_text();n=o\nn=n.replace('''        case MatrixCase.AUDIT_SYMLINK | MatrixCase.AUDIT_HARDLINK | MatrixCase.AUDIT_MODE | MatrixCase.AUDIT_KIND | MatrixCase.AUDIT_GID | MatrixCase.AUDIT_OWNER:\n            _create_valid_audit(fixture)\n            _mutate_audit(case, fixture, monkeypatch)\n            return True\n''','''        case MatrixCase.AUDIT_SYMLINK:\n            _create_valid_audit(fixture)\n            _symlink(fixture.audit, fixture.credential)\n            return True\n        case MatrixCase.AUDIT_HARDLINK:\n            _create_valid_audit(fixture)\n            _hardlink(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_MODE:\n            _create_valid_audit(fixture)\n            _ = fixture.audit.chmod(0o640)\n            return True\n        case MatrixCase.AUDIT_KIND:\n            _create_valid_audit(fixture)\n            _fifo(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_GID:\n            _create_valid_audit(fixture)\n            _ = change_group(fixture.audit)\n            return True\n        case MatrixCase.AUDIT_OWNER:\n            _create_valid_audit(fixture)\n            _fake_identity(monkeypatch, occurrence=5, change_uid=True)\n            return True\n''')\nn=n.replace('        case unreachable:\\n            assert_never(unreachable)\\n    return False\\n','    return False\\n',1)\nstart=n.index('\\ndef _mutate_audit(');n=n[:start]+'\\n'\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && /tmp/nutricoach-t12-bin/apply_patch <<'PATCH'\n--- a/tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n+++ b/tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n@@ -5,7 +5,6 @@\n from dataclasses import dataclass, replace\n from datetime import date, datetime, timedelta\n from enum import StrEnum\n-from typing import assert_never\n \n import pytest\nPATCH\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/nutrition_weekly_maintenance_fs_mutations.py');o=p.read_text();n=o+'\\n\\ndef artifact_snapshot(path: Path) -> tuple[tuple[str, int, int, int, int], ...]:\\n    if path.is_symlink() or not path.is_dir():\\n        info = path.lstat()\\n        return ((path.name, info.st_mode, info.st_nlink, info.st_size, info.st_mtime_ns),)\\n    rows: list[tuple[str, int, int, int, int]] = []\\n    for child in sorted(path.iterdir(), key=lambda item: item.name):\\n        info = child.lstat()\\n        rows.append((child.name, info.st_mode, info.st_nlink, info.st_size, info.st_mtime_ns))\\n    return tuple(rows)\\n'\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py');o=p.read_text();n='''from __future__ import annotations\n\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecisionKind,\n    Topic59MaintenanceFailure,\n)\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59PublicationDisposition\nfrom gateway.platforms.nutrition_weekly_operations_publication_contract import (\n    Topic59IncidentReason,\n)\nfrom tests.gateway.nutrition_weekly_maintenance_adversarial_support import (\n    MatrixCase,\n    apply_case,\n)\nfrom tests.gateway.nutrition_weekly_maintenance_fs_mutations import artifact_snapshot\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\n    arm_maintenance,\n    change_group,\n    publish_with_tripwires,\n)\n\n\n@pytest.fixture\ndef anyio_backend() -> str:\n    return \"asyncio\"\n\n\ndef test_lock_wrong_gid_denies_before_state_change(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    lock = fixture.maintenance / \"maintenance.lock\"\n    alternate_gid = change_group(lock)\n    assert alternate_gid != fixture.profile.stat().st_gid\n    before = artifact_snapshot(fixture.maintenance)\n\n    # When\n    result = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.DENY\n    assert result.reason is Topic59MaintenanceFailure.FILESYSTEM_CONTRACT\n    assert artifact_snapshot(fixture.maintenance) == before\n    assert not fixture.audit.exists()\n    assert not fixture.ledger.exists()\n\n\n@pytest.mark.anyio\n@pytest.mark.parametrize(\n    \"case\", tuple(MatrixCase), ids=[case.value for case in MatrixCase],\n)\nasync def test_negative_matrix_denies_before_claim_transport_or_network(\n    case: MatrixCase, tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    _ = apply_case(case, fixture, monkeypatch)\n    before = artifact_snapshot(fixture.maintenance)\n\n    # When\n    decision = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n    observation = await publish_with_tripwires(fixture)\n\n    # Then\n    assert decision.kind is Topic59MaintenanceDecisionKind.DENY\n    assert decision.reason is not None\n    assert observation.result.disposition is Topic59PublicationDisposition.REFUSED\n    assert observation.result.reason is Topic59IncidentReason.MAINTENANCE_REJECTED\n    assert observation.result.message_id is None\n    assert observation.result.maintenance_audit_digest is None\n    assert (\n        observation.claim_calls,\n        observation.record_calls,\n        observation.send_calls,\n        observation.edit_calls,\n        observation.network_calls,\n    ) == (0, 0, 0, 0, 0)\n    assert not fixture.ledger.exists()\n    assert artifact_snapshot(fixture.maintenance) == before\n'''\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\nchanges={\n'tests/gateway/nutrition_weekly_maintenance_support.py':[\n('def _write_owned(path: Path, content: bytes, mode: int) -> None:\\n    _ = path.write_bytes(content)\\n    _ = path.chmod(mode)\\n','def _write_owned(path: Path, content: bytes, mode: int) -> None:\\n    if path.exists():\\n        _ = path.chmod(0o600)\\n    _ = path.write_bytes(content)\\n    _ = path.chmod(mode)\\n')],\n'tests/gateway/nutrition_weekly_maintenance_fs_mutations.py':[\n('def fake_identity(\\n    monkeypatch: pytest.MonkeyPatch, *, occurrence: int, change_uid: bool,\\n) -> None:\\n    original = os.fstat\\n    calls = 0\\n\\n    def altered(descriptor: int) -> os.stat_result:\\n        nonlocal calls\\n        calls += 1\\n        current = original(descriptor)\\n        if calls != occurrence:\\n            return current\\n', 'def fake_identity(\\n    monkeypatch: pytest.MonkeyPatch, target: Path, *, change_uid: bool,\\n) -> None:\\n    original = os.fstat\\n    target_inode = target.stat().st_ino\\n\\n    def altered(descriptor: int) -> os.stat_result:\\n        current = original(descriptor)\\n        if current.st_ino != target_inode:\\n            return current\\n')],\n'tests/gateway/nutrition_weekly_maintenance_adversarial_support.py':[\n('_fake_identity(monkeypatch, occurrence=1, change_uid=True)','_fake_identity(monkeypatch, fixture.credential, change_uid=True)'),\n('_fake_identity(monkeypatch, occurrence=3, change_uid=True)','_fake_identity(monkeypatch, fixture.maintenance, change_uid=True)'),\n('_fake_identity(monkeypatch, occurrence=5, change_uid=True)','_fake_identity(monkeypatch, active, change_uid=True)',1),\n('_fake_identity(monkeypatch, occurrence=4, change_uid=True)','_fake_identity(monkeypatch, lock, change_uid=True)'),\n('_fake_identity(monkeypatch, occurrence=5, change_uid=True)','_fake_identity(monkeypatch, fixture.audit, change_uid=True)'),\n],\n}\nfor name,repls in changes.items():\n p=Path(name);o=p.read_text();n=o\n for item in repls:\n  a,b,*count=item\n  if a not in n:raise SystemExit(f'{name}: {a!r}')\n  n=n.replace(a,b,count[0] if count else -1)\n print(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+name,tofile='b/'+name)),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_topic59_maintenance.py');o=p.read_text();n='''from __future__ import annotations\n\nimport threading\nfrom concurrent.futures import ThreadPoolExecutor\nfrom dataclasses import replace\nfrom datetime import timedelta\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import (\n    Topic59MaintenanceDecisionKind,\n    Topic59MaintenanceSkipAuditV1,\n)\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom tests.gateway.nutrition_weekly_maintenance_support import arm_maintenance\n\n\ndef test_valid_hold_is_consumed_once_and_same_day_is_idempotent(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n\n    # When\n    first = gate.evaluate(fixture.projection, fixture.now)\n    first_bytes = fixture.audit.read_bytes()\n    first_stat = fixture.audit.stat()\n    second = gate.evaluate(fixture.projection, fixture.now + timedelta(minutes=20))\n\n    # Then\n    assert first.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n    assert second == first\n    assert fixture.audit.read_bytes() == first_bytes\n    assert fixture.audit.stat().st_mtime_ns == first_stat.st_mtime_ns\n    assert not (fixture.maintenance / \"hold.json\").exists()\n    assert not (fixture.maintenance / \"hold.consuming.json\").exists()\n    audit = Topic59MaintenanceSkipAuditV1.model_validate_json(first_bytes)\n    assert audit.provider_calls == audit.network_calls == 0\n    assert audit.sent is audit.delivered is False\n    assert audit.message_id is audit.provider_receipt is None\n\n\ndef test_prior_day_terminal_audit_allows_next_day(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n    _ = gate.evaluate(fixture.projection, fixture.now)\n    tomorrow = replace(\n        fixture.projection, kst_day=fixture.projection.kst_day + timedelta(days=1),\n    )\n\n    # When\n    result = gate.evaluate(tomorrow, fixture.now + timedelta(days=1))\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.ALLOW\n\n\ndef test_consuming_marker_completes_after_rename_crash(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    consuming = fixture.maintenance / \"hold.consuming.json\"\n    _ = (fixture.maintenance / \"hold.json\").rename(consuming)\n\n    # When\n    result = Topic59MaintenanceGate.for_profile(fixture.profile).evaluate(\n        fixture.projection, fixture.now,\n    )\n\n    # Then\n    assert result.kind is Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE\n    assert fixture.audit.is_file()\n    assert not consuming.exists()\n\n\ndef test_complete_audit_finalizes_consuming_marker_after_replace_crash(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n    first = gate.evaluate(fixture.projection, fixture.now)\n    consuming = fixture.maintenance / \"hold.consuming.json\"\n    _ = consuming.write_bytes(fixture.hold_bytes)\n    _ = consuming.chmod(0o600)\n\n    # When\n    recovered = gate.evaluate(fixture.projection, fixture.now)\n\n    # Then\n    assert recovered == first\n    assert not consuming.exists()\n\n\ndef test_concurrent_ticks_create_one_audit_without_timing_waits(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n    gate = Topic59MaintenanceGate.for_profile(fixture.profile)\n    barrier = threading.Barrier(3)\n\n    def evaluate() -> Topic59MaintenanceDecisionKind:\n        _ = barrier.wait(timeout=2)\n        return gate.evaluate(fixture.projection, fixture.now).kind\n\n    # When\n    with ThreadPoolExecutor(max_workers=2) as workers:\n        futures = (workers.submit(evaluate), workers.submit(evaluate))\n        _ = barrier.wait(timeout=2)\n        outcomes = tuple(future.result(timeout=2) for future in futures)\n\n    # Then\n    assert outcomes == (\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n        Topic59MaintenanceDecisionKind.NOOP_MAINTENANCE,\n    )\n    assert tuple(fixture.maintenance.glob(\"skip-audit.json\")) == (fixture.audit,)\n'''\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('cron/physique_inline_card.py');o=p.read_text();n=o.replace('class _AsyncCardResult(Protocol):','class ScheduledCardResult(Protocol):').replace('Coroutine[None, None, _AsyncCardResult]','Coroutine[None, None, ScheduledCardResult]')\nmarker='\\n\\nclass _AsyncCardAdapter(Protocol):'\n# no insertion there; add helper after adapter class method block\nneedle='    def send_inline_card(self, card: str) -> Coroutine[None, None, ScheduledCardResult]: ...\\n\\n\\n'\nhelper='''    def send_inline_card(self, card: str) -> Coroutine[None, None, ScheduledCardResult]: ...\n\n\ndef scheduled_tick_is_maintenance(result: ScheduledCardResult) -> bool:\n    from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n\n    try:\n        raw_response = result.raw_response\n    except AttributeError:\n        return False\n    return (\n        isinstance(raw_response, NutritionScheduledTickOutcome)\n        and raw_response.disposition == \"noop_maintenance\"\n    )\n\n\n'''\nif needle not in n:raise SystemExit('adapter needle')\nn=n.replace(needle,helper)\nold='''        from gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n        try:\n            raw_response = result.raw_response\n        except AttributeError:\n            raw_response = None\n        self.maintenance_noop = (\n            isinstance(raw_response, NutritionScheduledTickOutcome)\n            and raw_response.disposition == \"noop_maintenance\"\n        )\n'''\nn=n.replace(old,'        self.maintenance_noop = scheduled_tick_is_maintenance(result)\\n')\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py');o=p.read_text();n='''from __future__ import annotations\n\nfrom pathlib import Path\n\nimport pytest\n\nfrom gateway.platforms.nutrition_weekly_operations import Topic59PublicationDisposition\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\n    arm_maintenance,\n    publish_with_tripwires,\n)\n\n\n@pytest.fixture\ndef anyio_backend() -> str:\n    return \"asyncio\"\n\n\ndef test_maintenance_disposition_is_distinct_from_delivery() -> None:\n    assert Topic59PublicationDisposition.NOOP_MAINTENANCE.value == \"noop_maintenance\"\n\n\n@pytest.mark.anyio\nasync def test_valid_maintenance_precedes_claim_and_transport(\n    tmp_path: Path, monkeypatch: pytest.MonkeyPatch,\n) -> None:\n    # Given\n    fixture = arm_maintenance(tmp_path, monkeypatch)\n\n    # When\n    observation = await publish_with_tripwires(fixture)\n\n    # Then\n    assert observation.result.disposition is Topic59PublicationDisposition.NOOP_MAINTENANCE\n    assert observation.result.message_id is None\n    assert observation.result.maintenance_audit_digest is not None\n    assert (\n        observation.claim_calls,\n        observation.record_calls,\n        observation.send_calls,\n        observation.edit_calls,\n        observation.network_calls,\n    ) == (0, 0, 0, 0, 0)\n    assert not fixture.ledger.exists()\n'''\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nadd_patch() { p=\"$1\"; c=$(cat); n=$(printf '%s\\n' \"$c\" | wc -l); { printf '%s\\n' '--- /dev/null' \"+++ b/$p\" \"@@ -0,0 +1,$n @@\"; printf '%s\\n' \"$c\" | sed 's/^/+/' ; } | /tmp/nutricoach-t12-bin/apply_patch; }\nadd_patch tests/cron/test_physique_inline_card_maintenance.py <<'PY'\nfrom __future__ import annotations\n\nfrom dataclasses import dataclass\n\nfrom cron.physique_inline_card import (\n    LaunchResult,\n    ScheduledLaunchStatus,\n    scheduled_launch_record,\n    scheduled_tick_is_maintenance,\n)\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n\n\n@dataclass(frozen=True, slots=True)\nclass ScheduledResult:\n    success: bool\n    error: str | None\n    raw_response: NutritionScheduledTickOutcome | None\n\n\ndef test_typed_tick_outcome_becomes_truthful_scheduler_record() -> None:\n    # Given\n    tick = ScheduledResult(True, None, NutritionScheduledTickOutcome(\"noop_maintenance\"))\n\n    # When\n    maintenance = scheduled_tick_is_maintenance(tick)\n    record = scheduled_launch_record(LaunchResult(maintenance_noop=maintenance))\n\n    # Then\n    assert maintenance is True\n    assert record.status is ScheduledLaunchStatus.MAINTENANCE\n    assert record.success is True\n    assert record.error is None\n    assert record.status.value == \"maintenance no-op completed\"\n\n\ndef test_normal_success_remains_sent() -> None:\n    # Given / When\n    record = scheduled_launch_record(LaunchResult(sent=True))\n\n    # Then\n    assert record.status is ScheduledLaunchStatus.SENT\n    assert record.success is True\n    assert record.error is None\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py tests/cron/test_physique_inline_card.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('cron/physique_inline_card.py');o=p.read_text();n=o.replace('''    success: bool\n    error: str | None\n    raw_response: NutritionScheduledTickOutcome | None\n''','''    @property\n    def success(self) -> bool: ...\n\n    @property\n    def error(self) -> str | None: ...\n\n    @property\n    def raw_response(self) -> NutritionScheduledTickOutcome | None: ...\n''')\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nadd_patch() { p=\"$1\"; c=$(cat); n=$(printf '%s\\n' \"$c\" | wc -l); { printf '%s\\n' '--- /dev/null' \"+++ b/$p\" \"@@ -0,0 +1,$n @@\"; printf '%s\\n' \"$c\" | sed 's/^/+/' ; } | /tmp/nutricoach-t12-bin/apply_patch; }\nadd_patch tests/gateway/nutrition_weekly_maintenance_hold_mutations.py <<'PY'\n\"\"\"Typed hold-binding mutations for maintenance rejection tests.\"\"\"\n\nfrom __future__ import annotations\n\nfrom dataclasses import dataclass\nfrom datetime import date, datetime\n\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import Topic59MaintenanceHoldV1\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\n    MaintenanceFixture,\n    write_bound_hold,\n)\n\n\n@dataclass(frozen=True, slots=True)\nclass HoldBinding:\n    candidate: str\n    config: str\n    route: str\n    customer: str\n    slot: str\n    day: date\n    not_before: datetime\n    expires_at: datetime\n\n    @classmethod\n    def exact(cls, fixture: MaintenanceFixture) -> HoldBinding:\n        hold = fixture.hold\n        return cls(\n            candidate=hold.candidate_digest,\n            config=hold.config_digest,\n            route=hold.route_digest,\n            customer=hold.customer_identity_digest,\n            slot=hold.card_slot,\n            day=hold.kst_day,\n            not_before=hold.not_before,\n            expires_at=hold.expires_at,\n        )\n\n\ndef bind_hold(fixture: MaintenanceFixture, binding: HoldBinding) -> None:\n    hold = Topic59MaintenanceHoldV1(\n        hold_id=fixture.hold.hold_id,\n        package_digest=fixture.hold.package_digest,\n        candidate_digest=binding.candidate,\n        config_digest=binding.config,\n        route_digest=binding.route,\n        customer_identity_digest=binding.customer,\n        card_slot=binding.slot,\n        kst_day=binding.day,\n        not_before=binding.not_before,\n        expires_at=binding.expires_at,\n    )\n    write_bound_hold(fixture, hold)\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/gateway/nutrition_weekly_maintenance_adversarial_support.py');o=p.read_text();n=o\nn=n.replace('from dataclasses import dataclass, replace\\nfrom datetime import date, datetime, timedelta\\n','from dataclasses import replace\\nfrom datetime import timedelta\\n')\nn=n.replace('    Topic59MaintenanceHoldV1,\\n','')\nn=n.replace('    write_bound_hold,\\n','')\nn=n.replace('from tests.gateway.nutrition_weekly_maintenance_support import (\\n','from tests.gateway.nutrition_weekly_maintenance_hold_mutations import (\\n    HoldBinding, bind_hold as _bind,\\n)\\nfrom tests.gateway.nutrition_weekly_maintenance_support import (\\n')\nstart=n.index('\\n\\n@dataclass(frozen=True, slots=True)\\nclass HoldBinding:')\nend=n.index('\\n\\ndef apply_case(',start)\nn=n[:start]+n[end:]\nstart=n.index('\\n\\ndef _bind(')\nend=n.index('\\n\\ndef _create_valid_audit(',start)\nn=n[:start]+n[end:]\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_hold_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/cron/test_physique_inline_card_maintenance.py cron/physique_inline_card.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py tests/cron/test_physique_inline_card.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('gateway/platforms/nutrition_weekly_operations.py');o=p.read_text();n=o.replace('from typing import Protocol\\n','from typing import Protocol, assert_never\\n').replace('                case Topic59MaintenanceDecisionKind.DENY:\\n                    return Topic59PublicationResult(\\n                        Topic59PublicationDisposition.REFUSED, projection.logical_key,\\n                        reason=Topic59IncidentReason.MAINTENANCE_REJECTED,\\n                    )\\n', '                case Topic59MaintenanceDecisionKind.DENY:\\n                    return Topic59PublicationResult(\\n                        Topic59PublicationDisposition.REFUSED, projection.logical_key,\\n                        reason=Topic59IncidentReason.MAINTENANCE_REJECTED,\\n                    )\\n                case _ as unreachable:\\n                    assert_never(unreachable)\\n')\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_operations.py cron/physique_inline_card.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_hold_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_hold_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_physique_inline_card_maintenance.py tests/cron/test_scheduler.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\nmain=Path('tests/gateway/nutrition_weekly_maintenance_adversarial_support.py');o=main.read_text();n=o\nn=n.replace('from dataclasses import replace\\n','from dataclasses import dataclass, replace\\n').replace('from datetime import timedelta\\n','from datetime import date, datetime, timedelta\\n')\nn=n.replace('from tests.gateway.nutrition_weekly_maintenance_hold_mutations import (\\n    HoldBinding, bind_hold as _bind,\\n)\\n','')\nn=n.replace('    Topic59MaintenanceDecisionKind,\\n','    Topic59MaintenanceDecisionKind, Topic59MaintenanceHoldV1,\\n')\nn=n.replace('    change_group,\\n','    change_group, write_bound_hold,\\n')\ninsert='''\n\n@dataclass(frozen=True, slots=True)\nclass HoldBinding:\n    candidate: str\n    config: str\n    route: str\n    customer: str\n    slot: str\n    day: date\n    not_before: datetime\n    expires_at: datetime\n\n    @classmethod\n    def exact(cls, fixture: MaintenanceFixture) -> HoldBinding:\n        hold = fixture.hold\n        return cls(\n            hold.candidate_digest, hold.config_digest, hold.route_digest,\n            hold.customer_identity_digest, hold.card_slot, hold.kst_day,\n            hold.not_before, hold.expires_at,\n        )\n\n\ndef _bind(fixture: MaintenanceFixture, binding: HoldBinding) -> None:\n    write_bound_hold(fixture, Topic59MaintenanceHoldV1(\n        hold_id=fixture.hold.hold_id, package_digest=fixture.hold.package_digest,\n        candidate_digest=binding.candidate, config_digest=binding.config,\n        route_digest=binding.route, customer_identity_digest=binding.customer,\n        card_slot=binding.slot, kst_day=binding.day,\n        not_before=binding.not_before, expires_at=binding.expires_at,\n    ))\n'''\nmarker='\\n\\ndef apply_case('\nn=n.replace(marker,insert+marker)\nn=n.replace('            return True\\n','')\nn=n.replace('    return False\\n\\n\\ndef _create_valid_audit','\\n\\ndef _create_valid_audit')\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(main),tofile='b/'+str(main))),end='')\n# Delete the no-longer-used split file through patch.\np=Path('tests/gateway/nutrition_weekly_maintenance_hold_mutations.py');old=p.read_text()\nprint(''.join(difflib.unified_diff(old.splitlines(True),[],fromfile='a/'+str(p),tofile='/dev/null')),end='')\nPY\npython - <<'PY' | /tmp/nutricoach-t12-bin/apply_patch\nfrom pathlib import Path\nimport difflib\np=Path('tests/cron/test_physique_inline_card_maintenance.py');o=p.read_text();n='''from __future__ import annotations\n\nfrom cron.physique_inline_card import (\n    LaunchResult,\n    ScheduledLaunchStatus,\n    scheduled_launch_record,\n)\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\n\n\ndef test_typed_tick_outcome_becomes_truthful_scheduler_record() -> None:\n    # Given\n    tick = NutritionScheduledTickOutcome(\"noop_maintenance\")\n\n    # When\n    record = scheduled_launch_record(LaunchResult(\n        maintenance_noop=tick.disposition == \"noop_maintenance\",\n    ))\n\n    # Then\n    assert record.status is ScheduledLaunchStatus.MAINTENANCE\n    assert record.success is True\n    assert record.error is None\n    assert record.status.value == \"maintenance no-op completed\"\n\n\ndef test_normal_success_remains_sent() -> None:\n    # Given / When\n    record = scheduled_launch_record(LaunchResult(sent=True))\n\n    # Then\n    assert record.status is ScheduledLaunchStatus.SENT\n    assert record.success is True\n    assert record.error is None\n'''\nprint(''.join(difflib.unified_diff(o.splitlines(True),n.splitlines(True),fromfile='a/'+str(p),tofile='b/'+str(p))),end='')\nPY\nawk '!/^[[:space:]]*$/ && !/^[[:space:]]*#/' tests/gateway/nutrition_weekly_maintenance_adversarial_support.py | wc -l\nPYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=dualcoach/profile UV_OFFLINE=1 uv run basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py\n\n---\ncd '/home/cube/projects/richard/traning coach' && replace_patch() { p=\"$1\"; c=$(cat); on=$(wc -l < \"$p\"); nn=$(printf '%s\\n' \"$c\" | wc -l); { printf '%s\\n' \"--- a/$p\" \"+++ b/$p\" \"@@ -1,$on +1,$nn @@\"; sed 's/^/-/' \"$p\"; printf '%s\\n' \"$c\" | sed 's/^/+/' ; } | /tmp/nutricoach-t12-bin/apply_patch; }\nreplace_patch .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json <<'JSON'\n{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-v2\",\n  \"task_id\": \"st_01a05bc2\",\n  \"amendment_task\": \"adversarial-blocker-closure\",\n  \"status\": \"DONE_SOURCE_ONLY\",\n  \"blocker_count\": 0,\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"scope_guards\": {\n    \"git_or_github_actions\": 0,\n    \"network_or_provider_actions\": 0,\n    \"customer_actions\": 0,\n    \"package_preseal_live_profile_credential_root_creations\": 0,\n    \"commits\": 0\n  },\n  \"blocker_closure\": {\n    \"maintenance_lock_wrong_gid\": {\n      \"red\": \"wrong supplementary gid 125 returned noop_maintenance and consumed the hold\",\n      \"green\": \"OwnedMaintenanceDirectory carries the profile uid/gid; lock, active, consuming and audit opens validate both exactly\",\n      \"regression\": \"wrong gid returns deny/filesystem_contract with byte-identical artifact snapshot, claim/send/edit/network zero\"\n    },\n    \"negative_matrix\": {\n      \"parameterized_cases\": 51,\n      \"dedicated_wrong_gid_regression\": 1,\n      \"total_rejections\": 52,\n      \"all_passed\": true,\n      \"categories\": [\n        \"credential missing/empty/malformed/oversized/noncanonical/extra/hash/symlink/hardlink/mode/file-kind/owner\",\n        \"hold empty/malformed/oversized/noncanonical/extra/early/expired/replay\",\n        \"candidate/config/route/customer/card-slot/day binding mismatch\",\n        \"directory symlink/mode/gid/owner\",\n        \"active, lock and audit symlink/hardlink/mode/file-kind/gid/owner\",\n        \"simultaneous active+consuming, partial temp and partial audit\"\n      ],\n      \"per_case_oracle\": {\n        \"decision\": \"deny\",\n        \"publication\": \"refused\",\n        \"claim_calls\": 0,\n        \"record_calls\": 0,\n        \"send_calls\": 0,\n        \"edit_calls\": 0,\n        \"network_calls\": 0,\n        \"message_id\": null,\n        \"maintenance_audit_digest\": null,\n        \"delivery_ledger_created\": false,\n        \"artifact_snapshot_changed\": false\n      }\n    },\n    \"strict_tests\": {\n      \"legacy_maintenance_additions_restored\": [\n        \"tests/gateway/test_nutrition_weekly_operations_topic59.py\",\n        \"tests/cron/test_physique_inline_card.py\"\n      ],\n      \"new_strict_test_and_support_files\": 7,\n      \"branded_projection_types\": true,\n      \"typed_protocol_and_dataclass_fakes\": true,\n      \"public_publication_ledger_injection_seam\": true,\n      \"private_ledger_access\": false,\n      \"untyped_lambdas\": false,\n      \"Any_cast_ignore_noqa\": false,\n      \"sleeps_or_polling\": false\n    },\n    \"hash_inventory\": \"complete for all 11 runtime propagation files and every retained changed/new strict test/support file\"\n  },\n  \"verification\": {\n    \"wrong_gid_red_green\": \"RED reproduced, GREEN 1 passed\",\n    \"full_negative_matrix\": \"52 passed\",\n    \"focused_maintenance\": \"61 passed in 0.76s\",\n    \"affected_suite\": \"240 passed in 6.92s\",\n    \"ruff\": \"PASS all 11 runtime files and retained changed/new tests/support\",\n    \"ty\": \"PASS all typed runtime and retained changed/new tests/support\",\n    \"basedpyright_fresh\": \"0 errors, 0 warnings, 0 notes across all typed runtime and retained changed/new tests/support\",\n    \"lsp\": \"All established changed files and six of seven strict new test/support files report no diagnostics. The persistent server retained a stale pre-merge snapshot for nutrition_weekly_maintenance_adversarial_support.py; document symbols showed current local HoldBinding while diagnostics referenced the deleted split import. Fresh basedpyright over the exact current file set is the clean equivalent.\",\n    \"compileall\": \"PASS\",\n    \"import_smoke\": \"PASS\",\n    \"no_excuse\": \"PASS: no violations in 11 strict core/test files\",\n    \"ast_escape_hatch_scan\": \"PASS: no Any/cast/ignore/noqa/broad catch/sleep/skip/xfail in maintenance core or strict tests\",\n    \"generated_bytecode_after_cleanup\": 0,\n    \"patch_backup_or_reject_files_after_cleanup\": 0\n  },\n  \"manual_zero_call_qa\": {\n    \"same_day_dispositions\": [\"noop_maintenance\", \"noop_maintenance\"],\n    \"audit_count\": 1,\n    \"delivery_ledger_unchanged_same_day\": true,\n    \"current_day_send_calls\": 0,\n    \"current_day_edit_calls\": 0,\n    \"network_calls\": 0,\n    \"tomorrow_disposition\": \"sent\",\n    \"tomorrow_fake_send_calls\": 1,\n    \"scheduler_processed\": true,\n    \"scheduler_mark_job_run\": [true, null],\n    \"scheduler_status\": \"maintenance no-op completed\"\n  },\n  \"privacy\": {\n    \"audit_has_card_text\": false,\n    \"audit_has_raw_customer_key\": false,\n    \"audit_has_raw_telegram_identity\": false,\n    \"sent\": false,\n    \"delivered\": false,\n    \"message_id\": null,\n    \"provider_receipt\": null,\n    \"provider_calls\": 0,\n    \"network_calls\": 0\n  },\n  \"runtime_hashes\": {\n    \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n    \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9df3f5f368e16fa6019674620a1fa06ba767ac13babd130b0ea79655ab7cdb60\",\n    \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"1affe722d322de8d4e7ae40920dfbcd25a5915008c732193123241eb4e26e5fa\",\n    \"gateway/platforms/nutrition_weekly_operations.py\": \"4a3f27b30d0c639ce6b0020e5f81a386bae22b3a0a5568a497d0a8b4dcbc3fe6\",\n    \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\": \"c75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6\",\n    \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n    \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n    \"gateway/platforms/telegram_weekly_host_dispatch.py\": \"6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88\",\n    \"gateway/platforms/telegram.py\": \"5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7\",\n    \"cron/physique_inline_card.py\": \"16788d449f33b8e0f6c0e8a5db55d1455b3ee694a984307283b07a6b9db29b67\",\n    \"cron/scheduler.py\": \"07fddef7d2df68e2ddee243f5c0901eb15054f91a642dcd96723a139e30f461f\"\n  },\n  \"test_and_support_hashes\": {\n    \"tests/gateway/nutrition_weekly_maintenance_support.py\": \"810ab4768633142b11b9889f08a79789dde79001ae82f7cb7bc6bc1b1213df5d\",\n    \"tests/gateway/nutrition_weekly_maintenance_fs_mutations.py\": \"619b6188e3df38613bd166e4c372b46424888a164d069a25ab4d07a07e611d7f\",\n    \"tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\": \"8cef1f9a7bcccecab843f1c767d870087f57b1d36ce41f48d6f2d5cddc919e25\",\n    \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\": \"4100ab82d11b78a78cffceb6c1150c6ffc448d8fa5b4b97ec8a5b27cc3b4cab7\",\n    \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\": \"bd6fc29371c02c8f627f60d8879ccf77a0596c6e5ed13b91938f6212d2364664\",\n    \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\": \"89f21c1535039ce58e7bc404727fe806a6976bdef6708fa2a31b292e836be7fe\",\n    \"tests/cron/test_physique_inline_card_maintenance.py\": \"4ce999edcfb4949c6df077026c3dd5282b80ffecc0e268786f442a325c1e357e\",\n    \"restored/tests/gateway/test_nutrition_weekly_operations_topic59.py\": \"d0535437501dc31c7a14de07dab1f27eb96a3d8c27efcf113101827b7055661a\",\n    \"restored/tests/cron/test_physique_inline_card.py\": \"931215dab7c03e4cf1eec8e9da96a5895e8ba119c99843aa18036ddd3eaaab02\"\n  },\n  \"pure_loc\": {\n    \"nutrition_weekly_maintenance_contract.py\": 137,\n    \"nutrition_weekly_maintenance_io.py\": 107,\n    \"nutrition_weekly_maintenance_store.py\": 214,\n    \"nutrition_weekly_operations.py\": 158,\n    \"nutrition_weekly_dispatch_result.py\": 14,\n    \"nutrition_weekly_dispatcher.py\": 250,\n    \"telegram_weekly_host_dispatch.py\": 217,\n    \"physique_inline_card.py\": 154,\n    \"nutrition_weekly_maintenance_support.py\": 231,\n    \"nutrition_weekly_maintenance_fs_mutations.py\": 51,\n    \"nutrition_weekly_maintenance_adversarial_support.py\": 237,\n    \"test_nutrition_weekly_topic59_maintenance.py\": 85,\n    \"test_nutrition_weekly_topic59_maintenance_failures.py\": 70,\n    \"test_nutrition_weekly_dispatcher_maintenance.py\": 30,\n    \"test_physique_inline_card_maintenance.py\": 21,\n    \"inherited_large_files\": [\"gateway/platforms/telegram.py\", \"cron/scheduler.py\"]\n  },\n  \"done_claim\": {\n    \"claim\": \"All four adversarial blockers are closed in source with no package or live effects.\",\n    \"single_responsibility\": \"PASS\",\n    \"boundary_purity\": \"PASS: canonical frozen Pydantic authority/hold/audit documents\",\n    \"variant_and_binding_coverage\": \"PASS: 52 deterministic rejection cases plus valid, crash, concurrency and next-day controls\",\n    \"escape_hatches\": \"PASS\",\n    \"defensive_layer\": \"PASS: ownership and filesystem checks remain at the openat boundary\",\n    \"tests\": \"PASS: wrong lock gid, every negative class, zero-call publication and truthful cron status are locked\",\n    \"parameter_bloat\": \"No new production parameter object is a throwaway wrapper\",\n    \"redundant_verification\": \"Only contract-required durable write readback remains\",\n    \"negative_naming\": \"PASS\",\n    \"logging\": \"NOT_TOUCHED\"\n  }\n}\nJSON\npython -m json.tool .omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime.json >/dev/null","truncated":true,"truncatedBy":"bytes","totalLines":2161,"totalBytes":112890,"outputLines":1005,"outputBytes":51156,"lastLinePartial":false,"firstLineExceedsLimit":false,"maxLines":2000,"maxBytes":51200},"fullOutputPath":"/home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-2509c34c535cbad0.log"},"isError":false,"timestamp":1788249090645}}
{"type":"message","id":"36cbef9e","parentId":"ec01c047","timestamp":"2026-09-01T07:51:52.946Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning parallel test runs with diagnostics**","startedAt":1788249092478,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a968404651487d0a45497aa6a286f81\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloQJn_3rg2J87HFo6oEGleUNN0GNB2tMz5Ew2Ib79afFu7Em8luRaiNXbtVHsY_yCi5_nOQAjwOInTH2q1buTO3euh3PXxrwQc1nEUtiAJ_oV4Fs2IMUuMVaQXAjN4CWDSZM7VeJSbZkWMLCHhK-mVHPgCWf2CAhs8sqn1bZ_Dqi25tr7x_jN9iSTfG7eB7bR99lmPL3UR8bCWzGfBdv43FZj4iJ1Y_90rKTGncj3GjqTdr_m2kp--8rstT85xg7LFiUe3KseTR5F1B3_qlc9GweS0QtxO3BGGm_jyxSx5Ic36NSkwJWhKkyR1FwcjSdiH8aqoEE0l_fPNX0VbAiKWJIj8bugpmb-E-35poAr_dGTdLrSed7Qtq1rDvFA_cW7Z9hTEzDNraIY53v5-_4OgFV9rawDrJPITMV6mgt83Men3mhvNL1qscyKYgowiL2_in-po2diodg4PuGZOmbV5ET0RmNL2RRTMwhh1SngFckdhebpO1CxlE-ZWPRvcU_pCjki1D-CZyTazIWYoN7ncF6MbTf-CfZ29H7fPpL4Ik7c7BhRgWFiqmBRzyIU-jbcN7KiAy3W4B-pitike7syw9Op2kkx20LbCZBDlW5C397fgxcDgV1L9iIyxkcc8rIw23R0rATTT9Ey_SJpKnRvz7Lfao7EyXDUAtpKRsHTkWsvcXe7Fq4hOOrfMl1Go8fJ9ZcEQUojFKueQ--AX5czmZI06QDtV4CBcKrGoFgdFgZBuXfgeUNsVgBycldr10I8JJHZaD54BQnFTNjFevt6PxmKTpW5H4Hh9D0COR0RbNi5_s6bmj9WGlt856cN5nY5xTWWFBGHANCaBFADXucFvYqFdBsMylvWL1kQg3CHtps33wplBpgKjWkJQpCX0KSpkVvO0FNz31FbmPqtwHgVArl0J4cPPAhp6oWlGneP4kFv-n8jQ_jbzCL44E_niF0lTuSnlFlQo1HPRRb1f4tbIxFiG6tEp1tWDk0svl8KbjZQxMug9Hc_RsQR07_fXJzR1jAgiG0ZxUEf_OgmUkWnfXxLsUS2gs11y8HYfbWCCmybOPwVBeqMcffTGBPOfQb000fZ-bdF9c-1X8z6s1LOCjXIDGrG67UtKwURK_wXVInkiVcwARKXroHdjcV4Br_BowlhdWFLluPCGeyCWOfP_Y2ke1nmIV-DvBF9zAZWNj0YLtIf40AHLqWJdTm-iQf9MM-Mg6nHcZFRpYNinaue_xkwAI-XDi1FaihgZ5jibnfUdA-6EhB6i_3_yM_LdEEp9qdTSK6Jq41I9ub0JrXH4KlnQSyvtoAH8B0ekyYP0GpW7mLMPC3ItJ29FzbFxXSx1mt-I6Ht50Z6at48qGqwc70G1OSWv7hpakn-dVBUiXw_oQ6OcBWWbiYJPUwKlsxD0KMzk13cq6CQTH7hhkLc_QeVgIM0GBApT5okXh8KSQ9I9Hdz9sprrc8JiHSwoyjnvbzvFVCrCZZm_EOdPaVeBj_o0O5gehlBE0G7wwCzR8zDkuAW754QPlfkbALT7hIiHujte6LnIVBUVLTBk_E30scgr2Vmz4Y4w62-19Bl-S4YRMhvbrQDtC26P2N28BCu1LOxEffOwyfiosfAPkWive5O1ZDeE1ycjhiqwKxlea4uyPNL_1SfiTf57WtzMkRAuWdosj8DuoJl8z1lCzl1VDZiCeDAItVMKzSZYQCPXgPpjSQU6md3b84oqQQA74mOdvDEil3EH10eFzwxcMvITRplH-mvvKmCmaHENsMQNkGRVCwSGIMXWGyVsFTotrHWYs95y8Lz2XKvxlclUspF70xNDEhp5Fp7aKm4Pj7c3Lw9gKLoVgaP6B3Doo0lfq4H5BDgQYyg_MULImkwZvjvEx--L08lfyYGnZsGrzQWyLUyOvk2wNpTwXnlX9M6-SwYIP0Pz07vqqgZ0FWWk1S80PucI_1QRfq-zUNvNiSZY1YoyEoHVz9UBStMRReuK3sz0L6kFMgtcPPzfQALmgPiJBANIqE7wBemZQ0XqdTDQ4QJ30=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning parallel test runs with diagnostics**\"}]}","endedAt":1788249097201},{"type":"text","text":"The amended receipt’s 11 runtime hashes and nine retained/restored test hashes all match disk, and collection confirms 51 parameterized negative cases plus the dedicated wrong-GID regression. I’m now running the exact 61/240 suites and fresh strict analyzers independently.","textSignature":"{\"v\":1,\"id\":\"msg_046f5546d6e20d23016a9684091d8887d0aa2031369e1681e1\",\"phase\":\"commentary\"}"},{"type":"toolCall","id":"call_XSwV1ZtgJ5Gjjk88LpmAFbRK|fc_046f5546d6e20d23016a968418bc3c87d09582ab5d6df35f2a","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py","timeout":120}},{"type":"toolCall","id":"call_Fsxw1KFAuJefMRvnWl7cpmZ2|fc_046f5546d6e20d23016a968418bc4c87d0adc2a1ab53b77d11","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/pytest -q tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/gateway/test_nutrition_weekly_operations_topic59_failures.py tests/gateway/test_nutrition_weekly_operations_topic59_r2.py tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py tests/cron/test_physique_inline_card.py tests/cron/test_physique_inline_card_maintenance.py tests/cron/test_scheduler.py","timeout":120}},{"type":"toolCall","id":"call_rzYgvhA5asKiIUdRGznZ6BrI|fc_046f5546d6e20d23016a968418bc5887d0a595895b425f16c7","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=\"$PWD/dualcoach/profile\" basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py --pythonpath .venv/bin/python --level warning","timeout":180}},{"type":"toolCall","id":"call_VsXn4i4UtYlSUzq1n2U49RLj|fc_046f5546d6e20d23016a968418bc6087d09c61bc9117c29543","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py","timeout":180}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":14248,"output":1130,"cacheRead":209408,"cacheWrite":0,"reasoning":117,"totalTokens":224786,"cost":{"input":0.07124000000000001,"output":0.0339,"cacheRead":0.10470399999999999,"cacheWrite":0,"total":0.209844}},"stopReason":"toolUse","timestamp":1788249090703,"responseId":"resp_046f5546d6e20d23016a968403334087d09f4db411a32e4bb7","rawStopReason":"completed"}}
{"type":"message","id":"7990704c","parentId":"36cbef9e","timestamp":"2026-09-01T07:52:00.845Z","message":{"role":"toolResult","toolCallId":"call_XSwV1ZtgJ5Gjjk88LpmAFbRK|fc_046f5546d6e20d23016a968418bc3c87d09582ab5d6df35f2a","toolName":"bash","content":[{"type":"text","text":".............................................................            [100%]\n61 passed in 0.90s\n"}],"isError":false,"timestamp":1788249120845}}
{"type":"message","id":"fbf7ab34","parentId":"7990704c","timestamp":"2026-09-01T07:52:00.845Z","message":{"role":"toolResult","toolCallId":"call_Fsxw1KFAuJefMRvnWl7cpmZ2|fc_046f5546d6e20d23016a968418bc4c87d0adc2a1ab53b77d11","toolName":"bash","content":[{"type":"text","text":"........................................................................ [ 30%]\n........................................................................ [ 60%]\n........................................................................ [ 90%]\n........................                                                 [100%]\n240 passed in 7.48s\n"}],"isError":false,"timestamp":1788249120845}}
{"type":"message","id":"2269f0e1","parentId":"fbf7ab34","timestamp":"2026-09-01T07:52:00.845Z","message":{"role":"toolResult","toolCallId":"call_rzYgvhA5asKiIUdRGznZ6BrI|fc_046f5546d6e20d23016a968418bc5887d0a595895b425f16c7","toolName":"bash","content":[{"type":"text","text":"  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15832:21 - error: \"file_obj\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15832:38 - error: \"get_file\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15833:21 - error: \"image_bytes\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15833:41 - error: \"download_as_bytearray\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15834:21 - error: \"image_ext\"의 형식을 부분적으로 알 수 없습니다.\n    ‘image_ext’의 유형이 ‘str | Unknown’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15834:111 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.\n    인수 형식이 \"LiteralString | Unknown\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15836:68 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15836:86 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"cache_image_from_bytes\" 함수의 \"ext\" 매개 변수에 해당합니다.\n    인수 형식이 \"str | Unknown\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15848:54 - error: \"startswith\"의 형식을 부분적으로 알 수 없습니다.\n    ‘startswith’의 유형이 ‘((prefix: str | tuple[str, ...], start: SupportsIndex | None = None, end: SupportsIndex | None = None, /) -> bool) | Unknown’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15848:121 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다.\n    인수 형식이 \"str | Unknown\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15851:46 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15853:65 - error: Argument type is Any\n    인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다. (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15855:37 - error: \"_photo_batch_key\"의 형식을 부분적으로 알 수 없습니다.\n    ‘_photo_batch_key’의 유형이 ‘(event: MessageEvent, msg: Unknown) -> str’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15855:66 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"_photo_batch_key\" 함수의 \"msg\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15859:32 - error: \"mime_type\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15861:49 - error: \"mime_type\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15861:49 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15863:32 - error: \"mime_type\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15868:25 - error: 호출 식의 결과가 ‘str’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15869:49 - error: \"mime_type\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15869:49 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"get\" 함수의 \"key\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15872:21 - error: \"file_obj\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15872:38 - error: \"get_file\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15873:21 - error: \"video_bytes\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15873:41 - error: \"download_as_bytearray\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15874:64 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15874:82 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"cache_video_from_bytes\" 함수의 \"ext\" 매개 변수에 해당합니다.\n    인수 형식이 \"str | Unknown\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15895:77 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.\n    인수 형식이 \"str | Unknown\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15900:17 - error: \"file_obj\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15900:34 - error: \"get_file\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15901:17 - error: \"doc_bytes\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15901:35 - error: \"download_as_bytearray\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15902:35 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15903:68 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"cache_document_from_bytes\" 함수의 \"filename\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | str\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15914:25 - error: \"display_name\"의 형식을 부분적으로 알 수 없습니다.\n    ‘display_name’의 유형이 ‘Unknown | str’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15915:66 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"sub\" 함수의 \"string\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | str\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15930:34 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15932:53 - error: Argument type is Any\n    인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다. (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15954:9 - error: \"prior_task\"의 형식을 부분적으로 알 수 없습니다.\n    ‘prior_task’의 유형이 ‘Task[Unknown] | None’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15954:22 - error: \"_media_group_tasks\"의 형식을 부분적으로 알 수 없습니다.\n    ‘_media_group_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15954:22 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Overload[(key: str, default: None = None, /) -> (Task[Unknown] | None), (key: str, default: Task[Unknown], /) -> Task[Unknown], (key: str, default: _T@get, /) -> (Task[Unknown] | _T@get)]’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15956:13 - error: 호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15958:9 - error: \"_media_group_tasks\"의 형식을 부분적으로 알 수 없습니다.\n    ‘_media_group_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15971:13 - error: \"_media_group_tasks\"의 형식을 부분적으로 알 수 없습니다.\n    ‘_media_group_tasks’의 유형이 ‘Dict[str, Task[Unknown]]’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15971:13 - error: \"pop\"의 형식을 부분적으로 알 수 없습니다.\n    ‘pop’의 유형이 ‘Overload[(key: str, /) -> Task[Unknown], (key: str, default: Task[Unknown], /) -> Task[Unknown], (key: str, default: _T@pop, /) -> (Task[Unknown] | _T@pop)]’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15971:13 - error: 호출 식의 결과가 ‘Task[Unknown] | None’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15973:37 - error: 매개 변수 \"msg\"의 형식을 알 수 없습니다. (reportUnknownParameterType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15973:42 - error: 형식 식에는 변수를 사용할 수 없습니다. (reportInvalidTypeForm)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15982:13 - error: \"get_cached_description\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get_cached_description’의 유형이 ‘(file_unique_id: str) -> (dict[Unknown, Unknown] | None)’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15989:9 - error: \"sticker\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15989:19 - error: \"sticker\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15990:9 - error: \"emoji\"의 형식을 부분적으로 알 수 없습니다.\n    ‘emoji’의 유형이 ‘Unknown | Literal['']’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15990:17 - error: \"emoji\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15991:9 - error: \"set_name\"의 형식을 부분적으로 알 수 없습니다.\n    ‘set_name’의 유형이 ‘Unknown | Literal['']’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15991:20 - error: \"set_name\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15994:12 - error: \"is_animated\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15994:35 - error: \"is_video\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15995:59 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"build_animated_sticker_injection\" 함수의 \"emoji\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Literal['']\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15999:9 - error: \"cached\"의 형식을 부분적으로 알 수 없습니다.\n    ‘cached’의 유형이 ‘dict[Unknown, Unknown] | None’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15999:41 - error: \"file_unique_id\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:15999:41 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"get_cached_description\" 함수의 \"file_unique_id\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16002:17 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"build_sticker_injection\" 함수의 \"description\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16002:40 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16002:40 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"build_sticker_injection\" 함수의 \"emoji\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16002:68 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16002:68 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"build_sticker_injection\" 함수의 \"set_name\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16004:61 - error: \"file_unique_id\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16004:61 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16009:13 - error: \"file_obj\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16009:30 - error: \"get_file\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16010:13 - error: \"image_bytes\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16010:33 - error: \"download_as_bytearray\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16011:56 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"__new__\" 함수의 \"o\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16019:13 - error: Type of \"result\" is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16021:16 - error: Type of \"get\" is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16022:17 - error: Type of \"description\" is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16022:31 - error: Type of \"get\" is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16023:43 - error: \"file_unique_id\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16023:43 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"cache_sticker_description\" 함수의 \"file_unique_id\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16023:67 - error: Argument type is Any\n    인수가 \"cache_sticker_description\" 함수의 \"description\" 매개 변수에 해당합니다. (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16023:80 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"cache_sticker_description\" 함수의 \"emoji\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Literal['']\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16023:87 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"cache_sticker_description\" 함수의 \"set_name\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Literal['']\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16024:54 - error: Argument type is Any\n    인수가 \"build_sticker_injection\" 함수의 \"description\" 매개 변수에 해당합니다. (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16024:67 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"build_sticker_injection\" 함수의 \"emoji\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Literal['']\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16024:74 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"build_sticker_injection\" 함수의 \"set_name\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Literal['']\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16029:21 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"build_sticker_injection\" 함수의 \"emoji\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Literal['']\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16029:28 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"build_sticker_injection\" 함수의 \"set_name\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Literal['']\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16035:17 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"build_sticker_injection\" 함수의 \"emoji\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Literal['']\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16035:24 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"build_sticker_injection\" 함수의 \"set_name\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Literal['']\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16052:17 - error: \"config\"의 형식을 부분적으로 알 수 없습니다.\n    ‘config’의 유형이 ‘Any | dict[Unknown, Unknown]’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16054:13 - error: \"dm_topics\"의 형식을 부분적으로 알 수 없습니다.\n    ‘dm_topics’의 유형이 ‘Unknown | Any’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16055:17 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Any | Overload[(key: Unknown, default: None = None, /) -> (Unknown | None), (key: Unknown, default: Unknown, /) -> Unknown, (key: Unknown, default: _T@get, /) -> (Unknown | _T@get)]’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16055:17 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Unknown | Any’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16055:17 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Unknown | Any’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16055:17 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Unknown | Any’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16070:21 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Any\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16070:48 - error: \"chat_entry\"의 형식을 부분적으로 알 수 없습니다.\n    ‘chat_entry’의 유형이 ‘Unknown | Any’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16072:17 - error: \"chat_entry\"의 형식을 부분적으로 알 수 없습니다.\n    ‘chat_entry’의 유형이 ‘Unknown | Any’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16073:17 - error: \"cid\"의 형식을 부분적으로 알 수 없습니다.\n    ‘cid’의 유형이 ‘Unknown | Any’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16073:23 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Unknown | Any’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16076:21 - error: \"t\"의 형식을 부분적으로 알 수 없습니다.\n    ‘t’의 유형이 ‘Unknown | Any’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16076:26 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Unknown | Any’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16077:21 - error: \"tid\"의 형식을 부분적으로 알 수 없습니다.\n    ‘tid’의 유형이 ‘Unknown | Any’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16077:27 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Unknown | Any’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16078:21 - error: \"name\"의 형식을 부분적으로 알 수 없습니다.\n    ‘name’의 유형이 ‘Unknown | Any’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16078:28 - error: \"get\"의 형식을 부분적으로 알 수 없습니다.\n    ‘get’의 유형이 ‘Unknown | Any’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16082:62 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"__new__\" 함수의 \"x\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Any\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16085:55 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"info\" 함수의 \"args\" 매개 변수에 해당합니다.\n    인수 형식이 \"Unknown | Any\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16090:59 - error: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요. (reportDeprecated)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16090:77 - error: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요. (reportDeprecated)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16090:86 - error: 이 형식은 Python 3.9부터 사용되지 않습니다. 대신 \"dict\"을(를) 사용하세요. (reportDeprecated)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16090:96 - error: Type `Any` is not allowed (reportExplicitAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16111:29 - error: Type of \"t\" is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16112:32 - error: Type of \"get\" is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16113:40 - error: Return type is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16125:29 - error: Type of \"t\" is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16126:32 - error: Type of \"get\" is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16127:40 - error: Return type is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16146:20 - error: 이 형식은 Python 3.10부터 사용되지 않습니다. 대신 \"| None\"을(를) 사용하세요. (reportDeprecated)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16218:13 - error: Type of \"group_topics_config\" is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16218:34 - error: ‘list’ 제네릭 클래스에 대한 형식 인수가 필요합니다. (reportMissingTypeArgument)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16219:17 - error: \"chat_entry\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16220:24 - error: \"get\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16220:24 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16221:25 - error: \"topic\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16221:34 - error: \"get\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16222:25 - error: \"tid\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16222:31 - error: \"get\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16223:52 - error: 인수 형식을 알 수 없습니다.\n    인수가 \"__new__\" 함수의 \"object\" 매개 변수에 해당합니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16224:29 - error: \"chat_topic\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16224:42 - error: \"get\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16225:29 - error: \"topic_skill\" 유형을 알 수 없습니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16225:43 - error: \"get\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16253:24 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"build_source\" 함수의 \"chat_topic\" 매개 변수에 해당합니다.\n    인수 형식이 \"str | Any | Unknown | None\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16270:34 - error: Argument type is Any\n    인수가 \"getattr\" 함수의 \"o\" 매개 변수에 해당합니다. (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16272:17 - error: Type of \"reply_to_text\" is Any (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16287:41 - error: \"lookup\"의 형식을 부분적으로 알 수 없습니다.\n    ‘lookup’의 유형이 ‘(chat_id: Unknown, message_id: Unknown) -> (str | None)’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16294:44 - error: \"resolve_channel_prompt\"의 형식을 부분적으로 알 수 없습니다.\n    ‘resolve_channel_prompt’의 유형이 ‘(config_extra: dict[Unknown, Unknown], channel_id: str, parent_id: str | None = None) -> (str | None)’입니다. (reportUnknownVariableType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16311:24 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"__init__\" 함수의 \"auto_skill\" 매개 변수에 해당합니다.\n    인수 형식이 \"Any | Unknown | None\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16324:16 - error: \"_bot\"의 형식을 부분적으로 알 수 없습니다.\n    ‘_bot’의 유형이 ‘Unknown | None’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16327:19 - error: \"_bot\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16327:19 - error: \"set_message_reaction\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16345:16 - error: \"_bot\"의 형식을 부분적으로 알 수 없습니다.\n    ‘_bot’의 유형이 ‘Unknown | None’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16348:19 - error: \"_bot\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16348:19 - error: \"set_message_reaction\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16358:15 - error: “on_processing_start“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다. (reportImplicitOverride)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16365:13 - error: 호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16365:38 - error: Argument type is Any\n    인수가 \"_set_reaction\" 함수의 \"chat_id\" 매개 변수에 해당합니다. (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16365:47 - error: Argument type is Any\n    인수가 \"_set_reaction\" 함수의 \"message_id\" 매개 변수에 해당합니다. (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16367:15 - error: “on_processing_complete“ 메서드가 override로 표시되지 않았지만 “BasePlatformAdapter“ 클래스에서 메서드를 재정의하고 있습니다. (reportImplicitOverride)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16387:13 - error: 호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16387:41 - error: Argument type is Any\n    인수가 \"_clear_reactions\" 함수의 \"chat_id\" 매개 변수에 해당합니다. (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16387:50 - error: Argument type is Any\n    인수가 \"_clear_reactions\" 함수의 \"message_id\" 매개 변수에 해당합니다. (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16389:13 - error: 호출 식의 결과가 ‘bool’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16390:17 - error: Argument type is Any\n    인수가 \"_set_reaction\" 함수의 \"chat_id\" 매개 변수에 해당합니다. (reportAny)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram.py:16391:17 - error: Argument type is Any\n    인수가 \"_set_reaction\" 함수의 \"message_id\" 매개 변수에 해당합니다. (reportAny)\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:22:14 - error: Type annotation for attribute `enabled` is required because this class is not decorated with `@final` (reportUnannotatedClassAttribute)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:23:14 - error: Type annotation for attribute `fail` is required because this class is not decorated with `@final` (reportUnannotatedClassAttribute)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:39:14 - error: Type annotation for attribute `success` is required because this class is not decorated with `@final` (reportUnannotatedClassAttribute)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:40:14 - error: Type annotation for attribute `error` is required because this class is not decorated with `@final` (reportUnannotatedClassAttribute)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:91:66 - error: 매개 변수 \"monkeypatch\"의 형식을 알 수 없습니다. (reportUnknownParameterType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:91:66 - error: ‘monkeypatch’ 매개 변수에 대한 형식 주석이 없습니다. (reportMissingParameterType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:95:5 - error: \"setattr\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:96:5 - error: \"setattr\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:96:62 - error: 매개 변수 \"_job_id\"의 형식을 알 수 없습니다. (reportUnknownLambdaType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:96:71 - error: 매개 변수 \"_output\"의 형식을 알 수 없습니다. (reportUnknownLambdaType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:97:5 - error: \"setattr\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:97:59 - error: 매개 변수 \"_job_id\"의 형식을 알 수 없습니다. (reportUnknownLambdaType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:97:68 - error: 매개 변수 \"success\"의 형식을 알 수 없습니다. (reportUnknownLambdaType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:97:77 - error: 매개 변수 \"error\"의 형식을 알 수 없습니다. (reportUnknownLambdaType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:97:96 - error: 인수 형식을 부분적으로 알 수 없습니다.\n    인수가 \"append\" 함수의 \"object\" 매개 변수에 해당합니다.\n    인수 형식이 \"tuple[Unknown, Unknown]\"입니다. (reportUnknownArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:98:5 - error: \"setattr\" 유형을 알 수 없습니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:98:54 - error: 매개 변수 \"_job\"의 형식을 알 수 없습니다. (reportUnknownLambdaType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:100:17 - error: \"run_one_job\"의 형식을 부분적으로 알 수 없습니다.\n    ‘run_one_job’의 유형이 ‘(job: dict[Unknown, Unknown], *, adapters: Unknown | None = None, loop: Unknown | None = None, verbose: bool = False) -> bool’입니다. (reportUnknownMemberType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:113:50 - error: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n    형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n      ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n        \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n          형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, ScheduledCardResult]\"에 할당할 수 없습니다.\n            ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, ScheduledCardResult]’ 형식과 호환되지 않습니다.\n      \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:115:9 - error: 호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:130:49 - error: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n    형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n      ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n        \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n          형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, ScheduledCardResult]\"에 할당할 수 없습니다.\n            ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, ScheduledCardResult]’ 형식과 호환되지 않습니다.\n      \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:131:50 - error: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n    형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n      ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n        \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n          형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, ScheduledCardResult]\"에 할당할 수 없습니다.\n            ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, ScheduledCardResult]’ 형식과 호환되지 않습니다.\n      \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:133:9 - error: 호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:148:49 - error: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n    형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n      ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n        \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n          형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, ScheduledCardResult]\"에 할당할 수 없습니다.\n            ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, ScheduledCardResult]’ 형식과 호환되지 않습니다.\n      \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:149:50 - error: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n    형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n      ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n        \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n          형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, ScheduledCardResult]\"에 할당할 수 없습니다.\n            ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, ScheduledCardResult]’ 형식과 호환되지 않습니다.\n      \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:151:9 - error: 호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:168:13 - error: \"AsyncFakeCardTransport\" 형식의 인수를 \"launch_scheduled_card\" 함수에서 \"_AsyncCardAdapter | None\" 형식의 \"adapter\" 매개 변수에 할당할 수 없습니다.\n    형식 \"AsyncFakeCardTransport\"은 형식 \"_AsyncCardAdapter | None\"에 할당할 수 없습니다.\n      ‘AsyncFakeCardTransport’은(는) ‘_AsyncCardAdapter’ 프로토콜과 호환되지 않습니다.\n        \"send_inline_card\"은(는) 호환되지 않는 형식입니다.\n          형식 \"(card: str) -> CoroutineType[Any, Any, AsyncFakeCardTransport]\"은 형식 \"(card: str) -> Coroutine[None, None, ScheduledCardResult]\"에 할당할 수 없습니다.\n            ‘CoroutineType[Any, Any, AsyncFakeCardTransport]’ 함수 반환 형식은 ‘Coroutine[None, None, ScheduledCardResult]’ 형식과 호환되지 않습니다.\n      \"AsyncFakeCardTransport\"은 \"None\"에 할당할 수 없습니다. (reportArgumentType)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card.py:174:9 - error: 호출 식의 결과가 ‘Handle’ 형식이므로 사용되지 않습니다. 의도적인 경우 변수 ‘_’에 할당하세요. (reportUnusedCallResult)\n/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py:24:5 - error: 가져오기 \"WeeklyOperationsAuthorityReceipt\"에 액세스하지 않았습니다. (reportUnusedImport)\n  /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_operations_topic59.py:25:5 - error: 가져오기 \"WeeklyOperationsOwner\"에 액세스하지 않았습니다. (reportUnusedImport)\n4300 errors, 0 warnings, 0 notes\n\n[Showing lines 6767-7100 of 7100 (50.0KB limit). Full output: /home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-f02442bd9d2ef3e4.log]\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1788249120845}}
{"type":"message","id":"c25968a0","parentId":"2269f0e1","timestamp":"2026-09-01T07:52:00.845Z","message":{"role":"toolResult","toolCallId":"call_VsXn4i4UtYlSUzq1n2U49RLj|fc_046f5546d6e20d23016a968418bc6087d09c61bc9117c29543","toolName":"bash","content":[{"type":"text","text":"      |\n11006 |                     if not callable(refresh) or not refresh():\n11007 |                         raise RuntimeError(\"activation notice registry unavailable\")\n11008 |                     customer = coordinator.customer(receipt.customer_key)\n      |                                ^^^^^^^^^^^^^^^^^^^^\n11009 |                     destination = getattr(getattr(customer, \"spec\", None), \"telegram\", None)\n11010 |                     if (\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `~None` has no attribute `customer_transport_allowed`\n     --> gateway/platforms/telegram.py:11014:32\n      |\n11012 |                         or self._nutrition_schedule_destination(destination)\n11013 |                         != receipt.destination\n11014 |                         or not coordinator.customer_transport_allowed(\n      |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n11015 |                             receipt.customer_key,\n11016 |                             destination,\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[invalid-argument-type]: Argument to function `reserve_customer_task_delivery` is incorrect\n     --> gateway/platforms/telegram.py:11392:21\n      |\n11390 |                 prepared = reserve_customer_task_delivery(\n11391 |                     profile_root,\n11392 |                     task,\n      |                     ^^^^ Expected `CustomerScheduleTask`, found `WeeklyOperationsTask`\n11393 |                     body,\n11394 |                     destination_pin,\n      |\ninfo: Function defined here\n    --> dualcoach/profile/checkin_cli/customer_schedule.py:1368:5\n     |\n1368 | def reserve_customer_task_delivery(\n     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n1369 |     profile_root: Path,\n1370 |     task: CustomerScheduleTask,\n     |     -------------------------- Parameter declared here\n1371 |     body: str,\n1372 |     destination: object,\n     |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[unresolved-attribute]: Attribute `spec` is not defined on `None` in union `CustomerRuntime | None`\n     --> gateway/platforms/telegram.py:11441:21\n      |\n11439 |                 current_customer = coordinator.customer(task.customer_key)\n11440 |                 current_destination = (\n11441 |                     current_customer.spec.telegram\n      |                     ^^^^^^^^^^^^^^^^^^^^^\n11442 |                     if task.kind == \"daily\"\n11443 |                     else coordinator.owner\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `get` is incorrect\n     --> gateway/platforms/telegram.py:11686:37\n      |\n11684 |         for name in names:\n11685 |             if isinstance(summary, Mapping):\n11686 |                 value = summary.get(name)\n      |                                     ^^^^ Expected `Never`, found `str`\n11687 |             else:\n11688 |                 value = getattr(summary, name, None)\n      |\ninfo: Matching overload defined here\n    --> stdlib/typing.pyi:1790:9\n     |\n1788 |     # Mixin methods\n1789 |     @overload\n1790 |     def get(self, key: _KT, /) -> _VT_co | None:\n     |         ^^^       -------- Parameter declared here\n1791 |         \"\"\"D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.\"\"\"\n     |\ninfo: Non-matching overloads for bound method `get`:\ninfo:   (self, key: _KT@Mapping, default: _VT_co@Mapping, /) -> _VT_co@Mapping\ninfo:   [_T](self, key: _KT@Mapping, default: _T, /) -> _VT_co@Mapping | _T\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `get` is incorrect\n     --> gateway/platforms/telegram.py:11735:31\n      |\n11733 |             low = next(\n11734 |                 (\n11735 |                     value.get(name)\n      |                               ^^^^ Expected `Never`, found `Literal[\"min\", \"low\", \"start\", \"minimum\"]`\n11736 |                     for name in (\"min\", \"low\", \"start\", \"minimum\")\n11737 |                     if value.get(name) is not None\n      |\ninfo: Matching overload defined here\n    --> stdlib/typing.pyi:1790:9\n     |\n1788 |     # Mixin methods\n1789 |     @overload\n1790 |     def get(self, key: _KT, /) -> _VT_co | None:\n     |         ^^^       -------- Parameter declared here\n1791 |         \"\"\"D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.\"\"\"\n     |\ninfo: Non-matching overloads for bound method `get`:\ninfo:   (self, key: _KT@Mapping, default: _VT_co@Mapping, /) -> _VT_co@Mapping\ninfo:   [_T](self, key: _KT@Mapping, default: _T, /) -> _VT_co@Mapping | _T\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `get` is incorrect\n     --> gateway/platforms/telegram.py:11737:34\n      |\n11735 |                     value.get(name)\n11736 |                     for name in (\"min\", \"low\", \"start\", \"minimum\")\n11737 |                     if value.get(name) is not None\n      |                                  ^^^^ Expected `Never`, found `Literal[\"min\", \"low\", \"start\", \"minimum\"]`\n11738 |                 ),\n11739 |                 None,\n      |\ninfo: Matching overload defined here\n    --> stdlib/typing.pyi:1790:9\n     |\n1788 |     # Mixin methods\n1789 |     @overload\n1790 |     def get(self, key: _KT, /) -> _VT_co | None:\n     |         ^^^       -------- Parameter declared here\n1791 |         \"\"\"D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.\"\"\"\n     |\ninfo: Non-matching overloads for bound method `get`:\ninfo:   (self, key: _KT@Mapping, default: _VT_co@Mapping, /) -> _VT_co@Mapping\ninfo:   [_T](self, key: _KT@Mapping, default: _T, /) -> _VT_co@Mapping | _T\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `get` is incorrect\n     --> gateway/platforms/telegram.py:11743:31\n      |\n11741 |             high = next(\n11742 |                 (\n11743 |                     value.get(name)\n      |                               ^^^^ Expected `Never`, found `Literal[\"max\", \"high\", \"end\", \"maximum\"]`\n11744 |                     for name in (\"max\", \"high\", \"end\", \"maximum\")\n11745 |                     if value.get(name) is not None\n      |\ninfo: Matching overload defined here\n    --> stdlib/typing.pyi:1790:9\n     |\n1788 |     # Mixin methods\n1789 |     @overload\n1790 |     def get(self, key: _KT, /) -> _VT_co | None:\n     |         ^^^       -------- Parameter declared here\n1791 |         \"\"\"D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.\"\"\"\n     |\ninfo: Non-matching overloads for bound method `get`:\ninfo:   (self, key: _KT@Mapping, default: _VT_co@Mapping, /) -> _VT_co@Mapping\ninfo:   [_T](self, key: _KT@Mapping, default: _T, /) -> _VT_co@Mapping | _T\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `get` is incorrect\n     --> gateway/platforms/telegram.py:11745:34\n      |\n11743 |                     value.get(name)\n11744 |                     for name in (\"max\", \"high\", \"end\", \"maximum\")\n11745 |                     if value.get(name) is not None\n      |                                  ^^^^ Expected `Never`, found `Literal[\"max\", \"high\", \"end\", \"maximum\"]`\n11746 |                 ),\n11747 |                 None,\n      |\ninfo: Matching overload defined here\n    --> stdlib/typing.pyi:1790:9\n     |\n1788 |     # Mixin methods\n1789 |     @overload\n1790 |     def get(self, key: _KT, /) -> _VT_co | None:\n     |         ^^^       -------- Parameter declared here\n1791 |         \"\"\"D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.\"\"\"\n     |\ninfo: Non-matching overloads for bound method `get`:\ninfo:   (self, key: _KT@Mapping, default: _VT_co@Mapping, /) -> _VT_co@Mapping\ninfo:   [_T](self, key: _KT@Mapping, default: _T, /) -> _VT_co@Mapping | _T\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `get` is incorrect\n     --> gateway/platforms/telegram.py:11770:31\n      |\n11768 |             low = next(\n11769 |                 (\n11770 |                     value.get(name)\n      |                               ^^^^ Expected `Never`, found `Literal[\"min\", \"low\", \"start\", \"minimum\"]`\n11771 |                     for name in (\"min\", \"low\", \"start\", \"minimum\")\n11772 |                     if value.get(name) is not None\n      |\ninfo: Matching overload defined here\n    --> stdlib/typing.pyi:1790:9\n     |\n1788 |     # Mixin methods\n1789 |     @overload\n1790 |     def get(self, key: _KT, /) -> _VT_co | None:\n     |         ^^^       -------- Parameter declared here\n1791 |         \"\"\"D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.\"\"\"\n     |\ninfo: Non-matching overloads for bound method `get`:\ninfo:   (self, key: _KT@Mapping, default: _VT_co@Mapping, /) -> _VT_co@Mapping\ninfo:   [_T](self, key: _KT@Mapping, default: _T, /) -> _VT_co@Mapping | _T\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `get` is incorrect\n     --> gateway/platforms/telegram.py:11772:34\n      |\n11770 |                     value.get(name)\n11771 |                     for name in (\"min\", \"low\", \"start\", \"minimum\")\n11772 |                     if value.get(name) is not None\n      |                                  ^^^^ Expected `Never`, found `Literal[\"min\", \"low\", \"start\", \"minimum\"]`\n11773 |                 ),\n11774 |                 None,\n      |\ninfo: Matching overload defined here\n    --> stdlib/typing.pyi:1790:9\n     |\n1788 |     # Mixin methods\n1789 |     @overload\n1790 |     def get(self, key: _KT, /) -> _VT_co | None:\n     |         ^^^       -------- Parameter declared here\n1791 |         \"\"\"D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.\"\"\"\n     |\ninfo: Non-matching overloads for bound method `get`:\ninfo:   (self, key: _KT@Mapping, default: _VT_co@Mapping, /) -> _VT_co@Mapping\ninfo:   [_T](self, key: _KT@Mapping, default: _T, /) -> _VT_co@Mapping | _T\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `get` is incorrect\n     --> gateway/platforms/telegram.py:11778:31\n      |\n11776 |             high = next(\n11777 |                 (\n11778 |                     value.get(name)\n      |                               ^^^^ Expected `Never`, found `Literal[\"max\", \"high\", \"end\", \"maximum\"]`\n11779 |                     for name in (\"max\", \"high\", \"end\", \"maximum\")\n11780 |                     if value.get(name) is not None\n      |\ninfo: Matching overload defined here\n    --> stdlib/typing.pyi:1790:9\n     |\n1788 |     # Mixin methods\n1789 |     @overload\n1790 |     def get(self, key: _KT, /) -> _VT_co | None:\n     |         ^^^       -------- Parameter declared here\n1791 |         \"\"\"D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.\"\"\"\n     |\ninfo: Non-matching overloads for bound method `get`:\ninfo:   (self, key: _KT@Mapping, default: _VT_co@Mapping, /) -> _VT_co@Mapping\ninfo:   [_T](self, key: _KT@Mapping, default: _T, /) -> _VT_co@Mapping | _T\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `get` is incorrect\n     --> gateway/platforms/telegram.py:11780:34\n      |\n11778 |                     value.get(name)\n11779 |                     for name in (\"max\", \"high\", \"end\", \"maximum\")\n11780 |                     if value.get(name) is not None\n      |                                  ^^^^ Expected `Never`, found `Literal[\"max\", \"high\", \"end\", \"maximum\"]`\n11781 |                 ),\n11782 |                 None,\n      |\ninfo: Matching overload defined here\n    --> stdlib/typing.pyi:1790:9\n     |\n1788 |     # Mixin methods\n1789 |     @overload\n1790 |     def get(self, key: _KT, /) -> _VT_co | None:\n     |         ^^^       -------- Parameter declared here\n1791 |         \"\"\"D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.\"\"\"\n     |\ninfo: Non-matching overloads for bound method `get`:\ninfo:   (self, key: _KT@Mapping, default: _VT_co@Mapping, /) -> _VT_co@Mapping\ninfo:   [_T](self, key: _KT@Mapping, default: _T, /) -> _VT_co@Mapping | _T\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[unresolved-import]: Cannot resolve imported module `source_collector.source_review`\n     --> gateway/platforms/telegram.py:11979:18\n      |\n11977 |             if package_text not in sys.path:\n11978 |                 sys.path.insert(0, package_text)\n11979 |             from source_collector.source_review import SourceReviewQueue\n      |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n11980 |\n11981 |             return SourceReviewQueue(profile_root / \"data\", profile_root / \"knowledge\")\n      |\ninfo: Searched in the following paths during module resolution:\ninfo:   1. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/dualcoach/profile (extra search path specified on the CLI or in your config file)\ninfo:   2. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined (first-party code)\ninfo:   3. vendored://stdlib (stdlib typeshed stubs vendored by ty)\ninfo:   4. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib/python3.12/site-packages (site-packages)\ninfo:   5. /home/cube/projects/richard/.worktrees/nutricoach-v150-combined/.venv/lib64/python3.12/site-packages (site-packages)\ninfo: make sure your Python environment is properly configured: https://docs.astral.sh/ty/modules/#python-environment\ninfo: rule `unresolved-import` is enabled by default\n\nerror[unresolved-attribute]: Object of type `object` has no attribute `answer`\n     --> gateway/platforms/telegram.py:12044:19\n      |\n12042 |         \"\"\"Apply a signed-in owner's bounded review action without exposing queue details.\"\"\"\n12043 |         if not self._accepts_physique_source_review(query, message):\n12044 |             await query.answer(text=\"이 검토 카드는 소유자 전용입니다.\")\n      |                   ^^^^^^^^^^^^\n12045 |             return\n12046 |         parsed = _SOURCE_REVIEW_CALLBACK_RE.fullmatch(data)\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `object` has no attribute `answer`\n     --> gateway/platforms/telegram.py:12048:19\n      |\n12046 |         parsed = _SOURCE_REVIEW_CALLBACK_RE.fullmatch(data)\n12047 |         if parsed is None:\n12048 |             await query.answer(text=\"유효하지 않은 검토 버튼입니다.\")\n      |                   ^^^^^^^^^^^^\n12049 |             return\n12050 |         queue = self._get_physique_source_review_queue()\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `object` has no attribute `answer`\n     --> gateway/platforms/telegram.py:12052:19\n      |\n12050 |         queue = self._get_physique_source_review_queue()\n12051 |         if queue is None:\n12052 |             await query.answer(text=\"검토 큐를 불러올 수 없습니다.\")\n      |                   ^^^^^^^^^^^^\n12053 |             return\n12054 |         now = datetime.now(timezone.utc).astimezone(ZoneInfo(\"Asia/Seoul\")).isoformat()\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `object` has no attribute `answer`\n     --> gateway/platforms/telegram.py:12062:23\n      |\n12060 |             candidate = queue.candidate_by_prefix(prefix)\n12061 |             if candidate is None:\n12062 |                 await query.answer(text=\"이미 처리됐거나 찾을 수 없는 자료입니다.\")\n      |                       ^^^^^^^^^^^^\n12063 |                 return\n12064 |             if action == \"a\":\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `object` has no attribute `answer`\n     --> gateway/platforms/telegram.py:12071:19\n      |\n12069 |                 completed_text = \"⏸ 이 자료는 보류했습니다. 코칭 근거에 사용하지 않습니다.\"\n12070 |         if result.approved_count == 0 and result.deferred_count == 0:\n12071 |             await query.answer(text=\"이미 처리된 자료입니다.\")\n      |                   ^^^^^^^^^^^^\n12072 |             return\n12073 |         await query.answer(text=\"처리했습니다.\")\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `object` has no attribute `answer`\n     --> gateway/platforms/telegram.py:12073:15\n      |\n12071 |             await query.answer(text=\"이미 처리된 자료입니다.\")\n12072 |             return\n12073 |         await query.answer(text=\"처리했습니다.\")\n      |               ^^^^^^^^^^^^\n12074 |         await query.edit_message_text(text=completed_text, reply_markup=None)\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `object` has no attribute `edit_message_text`\n     --> gateway/platforms/telegram.py:12074:15\n      |\n12072 |             return\n12073 |         await query.answer(text=\"처리했습니다.\")\n12074 |         await query.edit_message_text(text=completed_text, reply_markup=None)\n      |               ^^^^^^^^^^^^^^^^^^^^^^^\n12075 |\n12076 |     async def send_physique_checkin_launcher(self) -> SendResult:\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Attribute `split` is not defined on `None` in union `str | None`\n     --> gateway/platforms/telegram.py:12111:30\n      |\n12109 |             )\n12110 |             for opening in (morning, workout):\n12111 |                 session_id = opening.callback_data.split(\":\", 3)[1]\n      |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n12112 |                 bridge.bind_launcher_message(session_id, str(sent.message_id))\n12113 |             return SendResult(success=True, message_id=str(sent.message_id))\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nwarning[unused-type-ignore-comment]: Unused blanket `type: ignore` directive\n     --> gateway/platforms/telegram.py:13340:85\n      |\n13338 |                 resolved_text: Optional[str] = None\n13339 |                 try:\n13340 |                     from tools.clarify_gateway import _entries as _clarify_entries  # type: ignore\n      |                                                                                     ^^^^^^^^^^^^^^\n13341 |                     entry = _clarify_entries.get(clarify_id)\n13342 |                     if entry and entry.choices and 0 <= idx < len(entry.choices):\n      |\nhelp: Remove the unused suppression comment\n13337 |                 # has been cleaned up (race with timeout / session reset).\n13338 |                 resolved_text: Optional[str] = None\n13339 |                 try:\n      -                     from tools.clarify_gateway import _entries as _clarify_entries  # type: ignore\n13340 +                     from tools.clarify_gateway import _entries as _clarify_entries\n13341 |                     entry = _clarify_entries.get(clarify_id)\n13342 |                     if entry and entry.choices and 0 <= idx < len(entry.choices):\n13343 |                         resolved_text = entry.choices[idx]\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_voice`\n     --> gateway/platforms/telegram.py:13609:25\n      |\n13607 |                     )\n13608 |                     msg = await self._send_with_dm_topic_reply_anchor_retry(\n13609 |                         self._bot.send_voice,\n      |                         ^^^^^^^^^^^^^^^^^^^^\n13610 |                         {\n13611 |                             \"chat_id\": int(chat_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_audio`\n     --> gateway/platforms/telegram.py:13635:25\n      |\n13633 |                     )\n13634 |                     msg = await self._send_with_dm_topic_reply_anchor_retry(\n13635 |                         self._bot.send_audio,\n      |                         ^^^^^^^^^^^^^^^^^^^^\n13636 |                         {\n13637 |                             \"chat_id\": int(chat_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_media_group`\n     --> gateway/platforms/telegram.py:13774:21\n      |\n13773 |                 await self._send_with_dm_topic_reply_anchor_retry(\n13774 |                     self._bot.send_media_group,\n      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^\n13775 |                     {\n13776 |                         \"chat_id\": int(chat_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_photo`\n     --> gateway/platforms/telegram.py:13832:21\n      |\n13830 |             with open(image_path, \"rb\") as image_file:\n13831 |                 msg = await self._send_with_dm_topic_reply_anchor_retry(\n13832 |                     self._bot.send_photo,\n      |                     ^^^^^^^^^^^^^^^^^^^^\n13833 |                     {\n13834 |                         \"chat_id\": int(chat_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_document`\n     --> gateway/platforms/telegram.py:13928:21\n      |\n13926 |             with open(file_path, \"rb\") as f:\n13927 |                 msg = await self._send_with_dm_topic_reply_anchor_retry(\n13928 |                     self._bot.send_document,\n      |                     ^^^^^^^^^^^^^^^^^^^^^^^\n13929 |                     {\n13930 |                         \"chat_id\": int(chat_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_video`\n     --> gateway/platforms/telegram.py:13976:21\n      |\n13974 |             with open(video_path, \"rb\") as f:\n13975 |                 msg = await self._send_with_dm_topic_reply_anchor_retry(\n13976 |                     self._bot.send_video,\n      |                     ^^^^^^^^^^^^^^^^^^^^\n13977 |                     {\n13978 |                         \"chat_id\": int(chat_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_photo`\n     --> gateway/platforms/telegram.py:14028:17\n      |\n14026 |             )\n14027 |             msg = await self._send_with_dm_topic_reply_anchor_retry(\n14028 |                 self._bot.send_photo,\n      |                 ^^^^^^^^^^^^^^^^^^^^\n14029 |                 {\n14030 |                     \"chat_id\": int(chat_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_photo`\n     --> gateway/platforms/telegram.py:14065:21\n      |\n14063 |                 )\n14064 |                 msg = await self._send_with_dm_topic_reply_anchor_retry(\n14065 |                     self._bot.send_photo,\n      |                     ^^^^^^^^^^^^^^^^^^^^\n14066 |                     {\n14067 |                         \"chat_id\": int(chat_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_animation`\n     --> gateway/platforms/telegram.py:14112:17\n      |\n14110 |             )\n14111 |             msg = await self._send_with_dm_topic_reply_anchor_retry(\n14112 |                 self._bot.send_animation,\n      |                 ^^^^^^^^^^^^^^^^^^^^^^^^\n14113 |                 {\n14114 |                     \"chat_id\": int(chat_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_chat_action`\n     --> gateway/platforms/telegram.py:14145:23\n      |\n14143 |                 _is_dm_topic = bool(metadata and metadata.get(\"telegram_dm_topic_reply_fallback\"))\n14144 |                 message_thread_id = self._message_thread_id_for_typing(_typing_thread)\n14145 |                 await self._bot.send_chat_action(\n      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^\n14146 |                     chat_id=int(chat_id),\n14147 |                     action=\"typing\",\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `send_chat_action`\n     --> gateway/platforms/telegram.py:14156:31\n      |\n14154 |                 if _is_dm_topic and message_thread_id is not None:\n14155 |                     try:\n14156 |                         await self._bot.send_chat_action(\n      |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^\n14157 |                             chat_id=int(chat_id),\n14158 |                             action=\"typing\",\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `get_chat`\n     --> gateway/platforms/telegram.py:14177:26\n      |\n14176 |         try:\n14177 |             chat = await self._bot.get_chat(int(chat_id))\n      |                          ^^^^^^^^^^^^^^^^^^\n14178 |             \n14179 |             chat_type = \"dm\"\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `username`\n     --> gateway/platforms/telegram.py:14713:30\n      |\n14711 |         if not text or not self._bot or not getattr(self._bot, \"username\", None):\n14712 |             return text\n14713 |         username = re.escape(self._bot.username)\n      |                              ^^^^^^^^^^^^^^^^^^\n14714 |         cleaned = re.sub(rf\"(?i)@{username}\\b[,:\\-]*\\s*\", \"\", text).strip()\n14715 |         return cleaned or text\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor | None` has no attribute `set_my_commands`\n     --> gateway/platforms/telegram.py:15105:23\n      |\n15103 |                 menu_commands, _ = telegram_menu_commands(max_commands=MAX_COMMANDS_PER_SCOPE)\n15104 |                 bot_commands = [BotCommand(name, desc) for name, desc in menu_commands]\n15105 |                 await self._bot.set_my_commands(bot_commands, scope=BotCommandScopeChat(chat_id=chat_id))\n      |                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n15106 |                 self._forum_command_registered.add(chat_id)\n15107 |                 logger.info(\"[%s] Lazy-registered %d commands for forum chat %s\", self.name, len(bot_commands), chat_id)\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `_effective_update_message` is incorrect\n     --> gateway/platforms/telegram.py:15149:50\n      |\n15147 |     ) -> None:\n15148 |         \"\"\"Reserve contact updates before any generic ingress can see them.\"\"\"\n15149 |         message = self._effective_update_message(update)\n      |                                                  ^^^^^^ Expected `Update`, found `_IngressUpdate`\n15150 |         if message is not None:\n15151 |             if self._channel_inbox_reserves_ingress(cast(ChannelInboxMessage, message)):\n      |\ninfo: Method defined here\n     --> gateway/platforms/telegram.py:15111:9\n      |\n15109 |                 logger.warning(\"[%s] Forum command lazy-registration failed: %s\", self.name, e)\n15110 |\n15111 |     def _effective_update_message(self, update: Update) -> Optional[Message]:\n      |         ^^^^^^^^^^^^^^^^^^^^^^^^^       -------------- Parameter declared here\n15112 |         \"\"\"Return the message-like payload for every Telegram message ingress.\"\"\"\n15113 |         for field in (\n      |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `_effective_update_message` is incorrect\n     --> gateway/platforms/telegram.py:15161:50\n      |\n15159 |     ) -> None:\n15160 |         \"\"\"Reserve edited messages; edited content never replays a workflow.\"\"\"\n15161 |         message = self._effective_update_message(update)\n      |                                                  ^^^^^^ Expected `Update`, found `_IngressUpdate`\n15162 |         if message is not None:\n15163 |             if self._channel_inbox_reserves_ingress(cast(ChannelInboxMessage, message)):\n      |\ninfo: Method defined here\n     --> gateway/platforms/telegram.py:15111:9\n      |\n15109 |                 logger.warning(\"[%s] Forum command lazy-registration failed: %s\", self.name, e)\n15110 |\n15111 |     def _effective_update_message(self, update: Update) -> Optional[Message]:\n      |         ^^^^^^^^^^^^^^^^^^^^^^^^^       -------------- Parameter declared here\n15112 |         \"\"\"Return the message-like payload for every Telegram message ingress.\"\"\"\n15113 |         for field in (\n      |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `_effective_update_message` is incorrect\n     --> gateway/platforms/telegram.py:15173:50\n      |\n15171 |     ) -> None:\n15172 |         \"\"\"Reserve channel posts before the ordinary message routes.\"\"\"\n15173 |         message = self._effective_update_message(update)\n      |                                                  ^^^^^^ Expected `Update`, found `_IngressUpdate`\n15174 |         if message is not None:\n15175 |             if self._channel_inbox_reserves_ingress(cast(ChannelInboxMessage, message)):\n      |\ninfo: Method defined here\n     --> gateway/platforms/telegram.py:15111:9\n      |\n15109 |                 logger.warning(\"[%s] Forum command lazy-registration failed: %s\", self.name, e)\n15110 |\n15111 |     def _effective_update_message(self, update: Update) -> Optional[Message]:\n      |         ^^^^^^^^^^^^^^^^^^^^^^^^^       -------------- Parameter declared here\n15112 |         \"\"\"Return the message-like payload for every Telegram message ingress.\"\"\"\n15113 |         for field in (\n      |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `_effective_update_message` is incorrect\n     --> gateway/platforms/telegram.py:15185:50\n      |\n15183 |     ) -> None:\n15184 |         \"\"\"Reserve edited channel posts before the ordinary message routes.\"\"\"\n15185 |         message = self._effective_update_message(update)\n      |                                                  ^^^^^^ Expected `Update`, found `_IngressUpdate`\n15186 |         if message is not None:\n15187 |             if self._channel_inbox_reserves_ingress(cast(ChannelInboxMessage, message)):\n      |\ninfo: Method defined here\n     --> gateway/platforms/telegram.py:15111:9\n      |\n15109 |                 logger.warning(\"[%s] Forum command lazy-registration failed: %s\", self.name, e)\n15110 |\n15111 |     def _effective_update_message(self, update: Update) -> Optional[Message]:\n      |         ^^^^^^^^^^^^^^^^^^^^^^^^^       -------------- Parameter declared here\n15112 |         \"\"\"Return the message-like payload for every Telegram message ingress.\"\"\"\n15113 |         for field in (\n      |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `_effective_update_message` is incorrect\n     --> gateway/platforms/telegram.py:15202:46\n      |\n15200 |         them into a single MessageEvent before dispatching.\n15201 |         \"\"\"\n15202 |         msg = self._effective_update_message(update)\n      |                                              ^^^^^^ Expected `Update`, found `_IngressUpdate`\n15203 |         if not msg or not msg.text:\n15204 |             return\n      |\ninfo: Method defined here\n     --> gateway/platforms/telegram.py:15111:9\n      |\n15109 |                 logger.warning(\"[%s] Forum command lazy-registration failed: %s\", self.name, e)\n15110 |\n15111 |     def _effective_update_message(self, update: Update) -> Optional[Message]:\n      |         ^^^^^^^^^^^^^^^^^^^^^^^^^       -------------- Parameter declared here\n15112 |         \"\"\"Return the message-like payload for every Telegram message ingress.\"\"\"\n15113 |         for field in (\n      |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[unresolved-attribute]: Object of type `WizardReply` has no attribute `text`\n     --> gateway/platforms/telegram.py:15215:38\n      |\n15213 |             if nutrition is not None:\n15214 |                 transition = nutrition.withdraw_customer(self._nutrition_address(msg))\n15215 |                 await msg.reply_text(transition.reply.text)\n      |                                      ^^^^^^^^^^^^^^^^^^^^^\n15216 |                 return\n15217 |         if await self._handle_nutrition_onboarding_text(update, msg):\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `handle_text` is incorrect\n     --> gateway/platforms/telegram.py:15252:67\n      |\n15250 |                     bridge=resolved.bridge,\n15251 |                     kind=IngressKind.TEXT,\n15252 |                     commit=lambda: nutrition.handle_text(address, msg.text),\n      |                                                                   ^^^^^^^^ Expected `str`, found `str | None`\n15253 |                 )\n15254 |                 if stepper_disposition is not TelegramCheckinIngressDisposition.NOT_APPLICABLE:\n      |\ninfo: Element `None` of this union is not assignable to `str`\ninfo: Method defined here\n    --> gateway/platforms/nutrition_coaching.py:3964:9\n     |\n3962 |         return CustomerTransition(reply)\n3963 |\n3964 |     def handle_text(self, address: IncomingAddress, text: str) -> CustomerTransition:\n     |         ^^^^^^^^^^^                                 --------- Parameter declared here\n3965 |         resolved = self.resolve(address)\n3966 |         if resolved is None:\n     |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `_observe_unmentioned_group_message` is incorrect\n     --> gateway/platforms/telegram.py:15381:80\n      |\n15379 |         if not self._should_process_message(msg):\n15380 |             if self._should_observe_unmentioned_group_message(msg):\n15381 |                 self._observe_unmentioned_group_message(msg, MessageType.TEXT, update_id=update.update_id)\n      |                                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^ Expected `int | None`, found `object`\n15382 |             return\n15383 |         await self._ensure_forum_commands(update.message)\n      |\ninfo: Method defined here\n     --> gateway/platforms/telegram.py:14950:9\n      |\n14948 |         return f\"{existing}\\n\\n{note}\"\n14949 |\n14950 |     def _observe_unmentioned_group_message(\n      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n14951 |         self,\n14952 |         message: Message,\n14953 |         msg_type: MessageType,\n14954 |         update_id: Optional[int] = None,\n      |         ------------------------------- Parameter declared here\n14955 |         event: Optional[MessageEvent] = None,\n14956 |     ) -> None:\n      |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[unresolved-attribute]: Object of type `_IngressUpdate` has no attribute `message`\n     --> gateway/platforms/telegram.py:15383:43\n      |\n15381 |                 self._observe_unmentioned_group_message(msg, MessageType.TEXT, update_id=update.update_id)\n15382 |             return\n15383 |         await self._ensure_forum_commands(update.message)\n      |                                           ^^^^^^^^^^^^^^\n15384 |\n15385 |         event = self._build_message_event(msg, MessageType.TEXT, update_id=update.update_id)\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[invalid-argument-type]: Argument to bound method `_build_message_event` is incorrect\n     --> gateway/platforms/telegram.py:15385:66\n      |\n15383 |         await self._ensure_forum_commands(update.message)\n15384 |\n15385 |         event = self._build_message_event(msg, MessageType.TEXT, update_id=update.update_id)\n      |                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^ Expected `int | None`, found `object`\n15386 |         event.text = self._clean_bot_trigger_text(event.text)\n15387 |         await self._cache_replied_media(msg, event)\n      |\ninfo: Method defined here\n     --> gateway/platforms/telegram.py:16142:9\n      |\n16140 |             )\n16141 |\n16142 |     def _build_message_event(\n      |         ^^^^^^^^^^^^^^^^^^^^\n16143 |         self,\n16144 |         message: TelegramMessage,\n16145 |         msg_type: MessageType,\n16146 |         update_id: Optional[int] = None,\n      |         ------------------------------- Parameter declared here\n16147 |     ) -> MessageEvent:\n16148 |         \"\"\"Build a MessageEvent from a Telegram message.\n      |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-assignment]: Object of type `str | None` is not assignable to attribute `text` of type `str`\n     --> gateway/platforms/telegram.py:15386:9\n      |\n15385 |         event = self._build_message_event(msg, MessageType.TEXT, update_id=update.update_id)\n15386 |         event.text = self._clean_bot_trigger_text(event.text)\n      |         ^^^^^^^^^^\n15387 |         await self._cache_replied_media(msg, event)\n15388 |         event = self._apply_telegram_group_observe_attribution(event)\n      |\ninfo: rule `invalid-assignment` is enabled by default\n\nerror[invalid-assignment]: Object of type `str | None` is not assignable to attribute `text` of type `str`\n     --> gateway/platforms/telegram.py:15474:9\n      |\n15473 |         event = self._build_message_event(msg, MessageType.COMMAND, update_id=update.update_id)\n15474 |         event.text = self._clean_bot_trigger_text(event.text)\n      |         ^^^^^^^^^^\n15475 |         await self._cache_replied_media(msg, event)\n15476 |         event = self._apply_telegram_group_observe_attribution(event)\n      |\ninfo: rule `invalid-assignment` is enabled by default\n\nerror[invalid-assignment]: Object of type `str | None` is not assignable to attribute `text` of type `str`\n     --> gateway/platforms/telegram.py:15685:21\n      |\n15683 |                 _event = self._build_message_event(_m, _observe_type, update_id=update.update_id)\n15684 |                 if _m.caption:\n15685 |                     _event.text = self._clean_bot_trigger_text(_m.caption)\n      |                     ^^^^^^^^^^^\n15686 |                 await self._cache_observed_media(_m, _event)\n15687 |                 self._observe_unmentioned_group_message(\n      |\ninfo: rule `invalid-assignment` is enabled by default\n\nerror[invalid-assignment]: Object of type `str | None` is not assignable to attribute `text` of type `str`\n     --> gateway/platforms/telegram.py:15698:13\n      |\n15696 |         # Add caption as text\n15697 |         if msg.caption:\n15698 |             event.text = self._clean_bot_trigger_text(msg.caption)\n      |             ^^^^^^^^^^\n15699 |         \n15700 |         # Handle stickers: describe via vision tool with caching\n      |\ninfo: rule `invalid-assignment` is enabled by default\n\nerror[unresolved-attribute]: Attribute `lower` is not defined on `None` in union `str | None`\n     --> gateway/platforms/telegram.py:15784:28\n      |\n15782 |                 if getattr(file_obj, \"file_path\", None):\n15783 |                     for candidate in SUPPORTED_VIDEO_TYPES:\n15784 |                         if file_obj.file_path.lower().endswith(candidate):\n      |                            ^^^^^^^^^^^^^^^^^^^^^^^^\n15785 |                             ext = candidate\n15786 |                             break\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Attribute `emoji` is not defined on `None` in union `Sticker | None`\n     --> gateway/platforms/telegram.py:15990:17\n      |\n15989 |         sticker = msg.sticker\n15990 |         emoji = sticker.emoji or \"\"\n      |                 ^^^^^^^^^^^^^\n15991 |         set_name = sticker.set_name or \"\"\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Attribute `set_name` is not defined on `None` in union `Sticker | None`\n     --> gateway/platforms/telegram.py:15991:20\n      |\n15989 |         sticker = msg.sticker\n15990 |         emoji = sticker.emoji or \"\"\n15991 |         set_name = sticker.set_name or \"\"\n      |                    ^^^^^^^^^^^^^^^^\n15992 |\n15993 |         # Animated and video stickers can't be analyzed as static images\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Attribute `is_animated` is not defined on `None` in union `Sticker | None`\n     --> gateway/platforms/telegram.py:15994:12\n      |\n15993 |         # Animated and video stickers can't be analyzed as static images\n15994 |         if sticker.is_animated or sticker.is_video:\n      |            ^^^^^^^^^^^^^^^^^^^\n15995 |             event.text = build_animated_sticker_injection(emoji)\n15996 |             return\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Attribute `is_video` is not defined on `None` in union `Sticker | None`\n     --> gateway/platforms/telegram.py:15994:35\n      |\n15993 |         # Animated and video stickers can't be analyzed as static images\n15994 |         if sticker.is_animated or sticker.is_video:\n      |                                   ^^^^^^^^^^^^^^^^\n15995 |             event.text = build_animated_sticker_injection(emoji)\n15996 |             return\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Attribute `file_unique_id` is not defined on `None` in union `Sticker | None`\n     --> gateway/platforms/telegram.py:15999:41\n      |\n15998 |         # Check the cache first\n15999 |         cached = get_cached_description(sticker.file_unique_id)\n      |                                         ^^^^^^^^^^^^^^^^^^^^^^\n16000 |         if cached:\n16001 |             event.text = build_sticker_injection(\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Attribute `file_unique_id` is not defined on `None` in union `Sticker | None`\n     --> gateway/platforms/telegram.py:16004:61\n      |\n16002 |                 cached[\"description\"], cached.get(\"emoji\", emoji), cached.get(\"set_name\", set_name)\n16003 |             )\n16004 |             logger.info(\"[Telegram] Sticker cache hit: %s\", sticker.file_unique_id)\n      |                                                             ^^^^^^^^^^^^^^^^^^^^^^\n16005 |             return\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Attribute `get_file` is not defined on `None` in union `Sticker | None`\n     --> gateway/platforms/telegram.py:16009:30\n      |\n16007 |         # Cache miss -- download and analyze\n16008 |         try:\n16009 |             file_obj = await sticker.get_file()\n      |                              ^^^^^^^^^^^^^^^^\n16010 |             image_bytes = await file_obj.download_as_bytearray()\n16011 |             cached_path = cache_image_from_bytes(bytes(image_bytes), ext=\".webp\")\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Attribute `file_unique_id` is not defined on `None` in union `Sticker | None`\n     --> gateway/platforms/telegram.py:16023:43\n      |\n16021 |             if result.get(\"success\"):\n16022 |                 description = result.get(\"analysis\", \"a sticker\")\n16023 |                 cache_sticker_description(sticker.file_unique_id, description, emoji, set_name)\n      |                                           ^^^^^^^^^^^^^^^^^^^^^^\n16024 |                 event.text = build_sticker_injection(description, emoji, set_name)\n16025 |             else:\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `set_message_reaction`\n     --> gateway/platforms/telegram.py:16327:19\n      |\n16325 |             return False\n16326 |         try:\n16327 |             await self._bot.set_message_reaction(\n      |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n16328 |                 chat_id=int(chat_id),\n16329 |                 message_id=int(message_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[unresolved-attribute]: Object of type `TelegramTextEditor & ~AlwaysFalsy` has no attribute `set_message_reaction`\n     --> gateway/platforms/telegram.py:16348:19\n      |\n16346 |             return False\n16347 |         try:\n16348 |             await self._bot.set_message_reaction(\n      |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n16349 |                 chat_id=int(chat_id),\n16350 |                 message_id=int(message_id),\n      |\ninfo: rule `unresolved-attribute` is enabled by default\n\nerror[invalid-argument-type]: Argument to function `launch_scheduled_card` is incorrect\n   --> tests/cron/test_physique_inline_card.py:113:50\n    |\n111 |     transport = AsyncFakeCardTransport()\n112 |     try:\n113 |         result = launch_scheduled_card(tmp_path, transport, loop, _morning())\n    |                                                  ^^^^^^^^^ Expected `_AsyncCardAdapter | None`, found `AsyncFakeCardTransport`\n114 |     finally:\n115 |         loop.call_soon_threadsafe(loop.stop)\n    |\ninfo: Function defined here\n   --> cron/physique_inline_card.py:126:5\n    |\n126 | def launch_scheduled_card(\n    |     ^^^^^^^^^^^^^^^^^^^^^\n127 |     home: Path,\n128 |     adapter: _AsyncCardAdapter | None,\n    |     --------------------------------- Parameter declared here\n129 |     loop: asyncio.AbstractEventLoop | None,\n130 |     now: datetime,\n    |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to function `launch_scheduled_card` is incorrect\n   --> tests/cron/test_physique_inline_card.py:130:49\n    |\n128 |     transport = AsyncFakeCardTransport()\n129 |     try:\n130 |         first = launch_scheduled_card(tmp_path, transport, loop, _morning(), SOURCE_REVIEW_CARD)\n    |                                                 ^^^^^^^^^ Expected `_AsyncCardAdapter | None`, found `AsyncFakeCardTransport`\n131 |         second = launch_scheduled_card(tmp_path, transport, loop, _morning(), SOURCE_REVIEW_CARD)\n132 |     finally:\n    |\ninfo: Function defined here\n   --> cron/physique_inline_card.py:126:5\n    |\n126 | def launch_scheduled_card(\n    |     ^^^^^^^^^^^^^^^^^^^^^\n127 |     home: Path,\n128 |     adapter: _AsyncCardAdapter | None,\n    |     --------------------------------- Parameter declared here\n129 |     loop: asyncio.AbstractEventLoop | None,\n130 |     now: datetime,\n    |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to function `launch_scheduled_card` is incorrect\n   --> tests/cron/test_physique_inline_card.py:131:50\n    |\n129 |     try:\n130 |         first = launch_scheduled_card(tmp_path, transport, loop, _morning(), SOURCE_REVIEW_CARD)\n131 |         second = launch_scheduled_card(tmp_path, transport, loop, _morning(), SOURCE_REVIEW_CARD)\n    |                                                  ^^^^^^^^^ Expected `_AsyncCardAdapter | None`, found `AsyncFakeCardTransport`\n132 |     finally:\n133 |         loop.call_soon_threadsafe(loop.stop)\n    |\ninfo: Function defined here\n   --> cron/physique_inline_card.py:126:5\n    |\n126 | def launch_scheduled_card(\n    |     ^^^^^^^^^^^^^^^^^^^^^\n127 |     home: Path,\n128 |     adapter: _AsyncCardAdapter | None,\n    |     --------------------------------- Parameter declared here\n129 |     loop: asyncio.AbstractEventLoop | None,\n130 |     now: datetime,\n    |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to function `launch_scheduled_card` is incorrect\n   --> tests/cron/test_physique_inline_card.py:148:49\n    |\n146 |     transport = AsyncFakeCardTransport()\n147 |     try:\n148 |         first = launch_scheduled_card(tmp_path, transport, loop, _morning(), NUTRITION_TICK_CARD)\n    |                                                 ^^^^^^^^^ Expected `_AsyncCardAdapter | None`, found `AsyncFakeCardTransport`\n149 |         second = launch_scheduled_card(tmp_path, transport, loop, _morning(), NUTRITION_TICK_CARD)\n150 |     finally:\n    |\ninfo: Function defined here\n   --> cron/physique_inline_card.py:126:5\n    |\n126 | def launch_scheduled_card(\n    |     ^^^^^^^^^^^^^^^^^^^^^\n127 |     home: Path,\n128 |     adapter: _AsyncCardAdapter | None,\n    |     --------------------------------- Parameter declared here\n129 |     loop: asyncio.AbstractEventLoop | None,\n130 |     now: datetime,\n    |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to function `launch_scheduled_card` is incorrect\n   --> tests/cron/test_physique_inline_card.py:149:50\n    |\n147 |     try:\n148 |         first = launch_scheduled_card(tmp_path, transport, loop, _morning(), NUTRITION_TICK_CARD)\n149 |         second = launch_scheduled_card(tmp_path, transport, loop, _morning(), NUTRITION_TICK_CARD)\n    |                                                  ^^^^^^^^^ Expected `_AsyncCardAdapter | None`, found `AsyncFakeCardTransport`\n150 |     finally:\n151 |         loop.call_soon_threadsafe(loop.stop)\n    |\ninfo: Function defined here\n   --> cron/physique_inline_card.py:126:5\n    |\n126 | def launch_scheduled_card(\n    |     ^^^^^^^^^^^^^^^^^^^^^\n127 |     home: Path,\n128 |     adapter: _AsyncCardAdapter | None,\n    |     --------------------------------- Parameter declared here\n129 |     loop: asyncio.AbstractEventLoop | None,\n130 |     now: datetime,\n    |\ninfo: rule `invalid-argument-type` is enabled by default\n\nerror[invalid-argument-type]: Argument to function `launch_scheduled_card` is incorrect\n   --> tests/cron/test_physique_inline_card.py:168:13\n    |\n166 |         result = launch_scheduled_card(\n167 |             tmp_path,\n168 |             transport,\n    |             ^^^^^^^^^ Expected `_AsyncCardAdapter | None`, found `AsyncFakeCardTransport`\n169 |             loop,\n170 |             _morning(),\n    |\ninfo: Function defined here\n   --> cron/physique_inline_card.py:126:5\n    |\n126 | def launch_scheduled_card(\n    |     ^^^^^^^^^^^^^^^^^^^^^\n127 |     home: Path,\n128 |     adapter: _AsyncCardAdapter | None,\n    |     --------------------------------- Parameter declared here\n129 |     loop: asyncio.AbstractEventLoop | None,\n130 |     now: datetime,\n    |\ninfo: rule `invalid-argument-type` is enabled by default\n\nFound 284 diagnostics\n\n[Showing lines 3936-5030 of 5030 (50.0KB limit). Full output: /home/cube/.cache/senpi/run.1o9Pb8vG/pi-bash-dbaf797678e03681.log]\n\nCommand exited with code 1"}],"details":{},"isError":true,"timestamp":1788249120845}}
{"type":"message","id":"4ae95015","parentId":"c25968a0","timestamp":"2026-09-01T07:52:48.879Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Clarifying runtime and test inclusion criteria**\n\n**Verifying strict diagnostics on exact runtime subset**","startedAt":1788249130472,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a96842a620887d0a4e6ed9990cbdeed\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloQ34paaYHnlU_JyTyHAvf8OPm-O0nRBLyRQDDtMJajfWYCSezbSNBcrYDlg9t4wm4T3TnoyGgm_tlVpRxFS52JzHZ3Ax84Q-Rhm0nTvkmQLCRz2VEms2Ry3oeNjz5od960YKIFwAGiS-xs9WWXF8QlQ15e65WFMAIfNgXGgnkZ0k-sOkCOOrLvServg5e1oRUd-p_H8IKvENAQg9bJe-z2geoEme7cxqF-mvYMPjN9royKDfxN95IgivQAclNE9D-Yh3_wlP6oCLAtyzuY4WZ3uliIvjp3jvCf476gw2Y9t1ifTX_8ccLoWcGuoAwkG57KFNjcwd6M8mJi1F097Jfgc8BhlVOWbgk1oEyFh_U6Ldf7LRaMkvJB22UU50KqiGQa73fyC2ju9EQQ9D9YMYV3zFNgQZOCGqifHNQ7dsICHaxSDScr_7AjSVK6glHYQy8camcIYSFBj_ISL0wfLB0KgxkWl-dHo7mK_Nj55mgXS2gkBxA2POgH2ogLgxJTNaWAmWhy5IwS_ZXEOTMQU5_rQOIuutQfNihglSv0Svf8-WrFpBWMUIhNUuSiGOldRoXD9avqUGJSDl9ai3boCL6Ir8TJKALIPBvpV1nlrtPTtEzTR8ZUtbIn4eYiJ1gbkXX9dcQqgkLbxtiEsPiPrSM6wpJoP3nrIf9187gKPnUBmp_RpjR2Wc4zs_6ApHz041z4iypDeX14zJI3yXFGEjiFk8RV12j36r1MOhSWpLi5Y8FyCG8VVsTx01_gi1B1GLxqwDBCTq2f0bWaFFVW9joZN01-TPRip5Hdrvy-HgyfOX0GlKCFzJeCNt5olP-kMOuc3xZBqsbt_sdJYYhWQZweRp3ghCJ6KA7W0KA9sSmkMdiIQp-WJzY-RVyY51mF933Qj5nA5zqg2TchKUZ_0OAQ2tjC6DyGuzGGk1vN4G1H-9cqGKa19FgfNeEMMJntVMgHPo8H6o3BWy5EusEtUIBKNKNKyb8RwPszxrgC1ODANHbX95eezNLqJOubVomogBWejKsV_sDaLJtgjggLXYhHqlKkNbzTA2M4gprdcF-i73Amo8piS98kuXgmrueG7O-btLcgblMm6TmgguEwi9ee3v9ZTaA6j68wqLjFejWUJGxnTByGDKVkZ5y-1jDpDhH8S75hNnIOX1to_LpydXj9GCWHwJSBMmlOltzfLc13Gop7uqWYA7pzAKFTbWcvcJf4SYM8nxxZ0lH9AVGIYrJuAXd6d-OQGpc8EcaTU3aBzi7QJ0vKETnX1IK8NBH7RCRC2TC5D2XQslzvinYiTlKLDV268aNyrgnCMWuLERibTsntdD73iS6X1GZY0dYn37uoWQdCn4TsPvOmi6B7xRjWM099uLv3Dx9yxPvV86X2gdQEy-ZwCrIxIuy3oecwFrshh3Q6Qi4KZUI-3l2Fbh-5BsxUJBVI-JiUdcf0pzVqd-kHUoDPe7h9YdlA_81AZnzqmMRpqZFQv7Zqqs9n7l8ENmeGt3P612ICSAzNsa4GSjt4ZY1ExpWfaCPxHFRWW7W7ZmHRhRyQZtQFf4d9VKPzJQMo6l5FJpFnLp2VYrem_nVEkbRJhQ8jfW_o6l21qWN-m972i3XQbhH8UZgk-udU8GS7wQG9T2TvBykfiEN5IrM9idBDL5-y0TTljVxTo-3OiLuBQ6J8GxKvjPc_qdkBaAXvQ_8T4ApyHfmcvZJR8oD4QgPPDB2wAOQlNf_CubDW2No8vudY8hH1JcLsC7ZCSZ-y9uij8q9aUX8C9I8DHPvIEFBvPG1TZCeIFgZdCiwuivvwDw7UVcCGyqYfjDJTDnxTkr4iiiE_dJAosx2qq4a7w7Nu9TiFP0mYVPeo7oOaMRhSRc0Q7u_o5Lq9ZURfoD3D1DaNj-rMBbRJWudDUaUQfsmAcayaXdUzQd-fpQsjKnoIi-uv0fFM0m4Lw1awmhbNkFRL1cNlSAqe_5qV2uNXnatSxmRCZRCWuenm_R9VSIJhklAydAx9w2ztYfYm2H_fcyNvq1-05ke8Ud8mpr5UoxipL9BFp0V6T6RZnKwIODkCi5kjt3l-HkgJh2fzoySlvxIE2lGrShT0uwryQpAbV6sFrt1gK7XOA4qDTu6DzbmumRhLhhgeONu9_sbb3r0SJf8G96pCtRqFzxpVNobRyWKqfEANnwrmGyAM5gR5rUh8w6pHNkYHAk_1q4TaXXuibbUkUNcjWo9k-N9pDP91g2DwLsE1zceeK3cBcB_34lCnlwyLC5LI33d_Dv1zpnenyRYjHvF8pvjrFUiHI-KWja1z1-dGG0ztSN9ilOL-6juDUrgVgCUXE_Ot9AtXI224sWAtXtMpoJ2ISZSTiPtUJrnmxiOxl42Gy5WK28BOIsYmiXeiJ-5aRNEoiSA7MHyrUwPe0JS9m_BRJtACgy_up4Tm4IvF7Rgz-dsARRWFu1Qca3NyluZTxzdwQyds_HKTfyfhGof7gl9EnAhqCAGx7rlQ2vbaxskXQEkdAgtvYlJF--L-m1Q1BhLjzOY4bsfDGfCbu6KAa1vnWKtIC2k07CC5lDOvt5JYzz-AVaQu4rom1B3IvH5wTZbAi7fD_bfvV7bwf02DYPzr85F2B1z13Q5SImZ5jtFubFi1_b8rtQmiufA-CA4YbrU6RThqilXFjx8U7bBFkTkg4QTfGjxtNaF6GKxiuvVuiOt5SrxMpFA3Z1C3ovb23MSrKdPvv1mB3QLXTCyZhyqcFXXgYvQKuwzUZ8STIz_rZEEBz0tp8UQKBN76o4OCPYrhevkjlDbdJxBvEtS_OKA_IyCk8pJAkikzp3SXC0i7oKame3rFVMzkFUKEp88835OVn2nQiKp-SwJsvqdQPHjBf22XOwVrbNPDHodNkAV0sfxSXrDioN58c_DFH2UWuekcu7V3c9miaKrsN1vJcew9pHz8k1J1pKz_LfyYz40PO8_j_PFH_RLk-Pk_hicdSmRufyJI1uzBwiPtdUqt4mQJshysb7hFNrmCneR2fMy6s7kUxcJeDHRAJXTZjnEJACuC45bi_pkV5-I1ZCHt0e95mRLOSKjI_DfBMjyb8Jzg3ZLJUYjmbxZ7cxBuGQ7K4Z7DstPp61XvslCkaBO-XzptKhQhWaBQUCHE0eWf0W49HrS4NK0SCoF0rIgPjce2rth4U4HEa7aJskhKjeyFbXWbO0jdxRDaKfaIRWf_k13mDof_csbNw8AlHNNCFKrVLkkWytWNjuG6EBRn14C0dwqPchHJQ_NdFcHdwjKWkMWA9F3HYoLcMhHFSLs9WmEhfE8_WRRrYkwg-5iwzu60dkx4i2vUUaxmCdbLAy3Bi5h20F8nub2j8EoGa74Qgr3fTNqUywWR7dO-KCeZZC_ZTUJSWFArbuWdf1bYS7Nuap6DsOFkirUtwLVeMs_PeqcpwJqyII46PalDo_hmU3BI2Gm6xgXv8thV6LstPcFEpRXqHkFODbwxHzUKNslIH3jCeZR3ATKDn0vCMRbQ7W_3KfeX6GaxL-eWGPL_8Y1VaigFf2DbCyOeK2U8GEyeFiVcQ2sFuy_IG1YnnsDMBtHqG2LwgwKXFSviLWH3QD-qmH5d6iezvOK3Xg4aSFlZYD7JcDMgmXMK6g9l45D3MU4_aZdmXkynna9GnnGDK1Wz_YgJ9wXQZtju934SJrFU2C3w5oOnoDD6d0XMMf3fPg85iGPImSOQlcPyWNM2Nh45yK7yst1LARzNW_6j1WPpi4-6Lvv1ghVr5Pjudv8VnYiNIMmBAnG3YpWGOZl8keJ-w6Z9dQTyYdM44a4N_-6L1XoCG76F7tU_bz_tRP4ad5XWnBHGGU4tKEBZf0Fg4VD1LRAV-qpU5zFeA6rujxKdRU5IxliX80hdlxg==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Clarifying runtime and test inclusion criteria**\"},{\"type\":\"summary_text\",\"text\":\"**Verifying strict diagnostics on exact runtime subset**\"}]}","endedAt":1788249143106},{"type":"thinking","thinking":"**Planning custom wrong gid testing with tripwires**","startedAt":1788249143106,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a968437054087d0b648126c8b4652f3\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloQ65xVVbeEB60I2S-gGuyXJR2hpVFXkpEdBMOjSFtUBrjcih3wCQCzk40PD4n5jpp3CvFIDim8hGwYVLv0k_AnxFeUzOq864LopPrTdOHZvRofSJHT4A70kuj_IlSWuiqUetR10gIvIx1KRcNeMTfzh4SULk9rhQRCbSLCZwTid9aWd4-wL7xUrLvVs21uDMxNFtySTWUvte-muYgX0Py1T2RsK9enJs60pbAbVSgC9Ekhh54RcErjVwye_wqSOrxrTTiummyUv-xHAw_JNptumFqtvGpJbOrwPP16suSLe3uoFoK2UfF2EYuenPdX7Fme_b2ryt72A6uZ10i2Y3N8cxVnIySe8ZoWpPuzomu5b2S3kZFnuMdpjV4ubWd1aiV7ZdNIKPL_AKbdbRfMK8R9MapRWWv68VkB1qlKv8YK_bZXfbefJDlFZLgIAzd5PdOgFKu0B8cFVo4PlvFz07Rx4YZLXCuiH1BWXlfTpriM5Fue6sZxVM8Ai3hmGos6xy6MxB3MuAUZzhhYLDrU1be4RShga_z6gH0QWlWcu_608s2US6U3ojzj7Z0vvLIuwHCyWnb8PBQ7xzkx-NUWeK-D_ps26m3_KB7xnNrQgrB0wZPfs-Qm45dbUKdZnLub_7-coGtDRUlsWjMJQ-40bOcBRZBs5pufOySCBUH2V5yT0AioviaFVuM6J2fAQS_1dnw0Z8ZiRl5l846zMyC4nNpkOO8_AuD1SOSN7DBa8HfLjhklxElHj7HAT6IH1uStaNRAC2u-W3cjiaN20PYHwBcywITU8WKE84nqZgfS9kj7UksTZLRfpopN9a-NTC6UztJrs08keVfsPcZ06xXKVsG-ztbLJGGp61bWGmbyIEmZ6hFKzAaPR2PfFhudhJ7yn-fnXYTkJ4lVg3l9E4mJz6ucwfS1iKfU4_ykFa9P2SUC5qI5geM2lvKN1F77kr7-34qJowKsdmVjLlexYyz490OS6xw_CbXMvzC67y_Eamd4GoxabklUtXposcnGLJguhQ9oBOJX7MT4zKEhTa29iQ6n-uE-6OzNBxCe5uuygt0yI5jHciyP9l2sJCEo1e_qrCUrhxfaodUrB04hlVHbw_ESZCHOcw0-pYp-g7tRofT4HL2OI-eoTI9TUUjAdB8qw7grlfYs1kRK9bRy3IMK9EWIVQOXB_0LGe3YEbWJx6SfK6qKGp3uBwMz25e86EFbzi1xYt7zYnR1mJuGh6LTRsAqEMvSAQzovS8L2ge0xVPlJmVkYKhHakCwEOYeTkEzG5tuFX856wgHQP22FkFTzJR5cX_Bh7n6UkG_UsVzUOrW2v6iUsNet2jO-BeR4eunTnBo_uXD2ss1l1zbN_z03bUu459xixu8FubMrC9Au9wjDT2lSr2nprdyOTHhiuJkWyMWh_C4FB6rr2y0nB9qbO8_vaAIBL87lC4Df9dQo2wuQhQlJm44doHv5Hb1dPtVpusTKvH6EBj7o8IzGjpx1Q7t-4qfsJuikcgec6yRS8ZnLkVo2Tt7CsShk9lr95tTeZbRFfwEKc5NXi_xSfTYBi01kxRf1hE1OOBsue_jnL6yjc9EiwzlbHeQQGu4C0PQu-lqOCe3muKyRP1HxEYSjMxxrYjjhK7DIThUHbVVtZRs33r08ICEiwJ4_ZbiTQZIUgnkIdRwbGsM1QeWzXhBeGkunSd3Gd1AU98COyy8-kLtHT-S4l7T9AbbkyLPGG5Ap5UfvrcE4BiCJ-jJBK-xF-ZB8dNpdsj7KGDo7BFc3uCiRZ0NSVEdU7ZCdLR6ZPZGbuo791UcAkeHcIhwprvcdrQP0eFoCsqbBDfd-t1l-Y5RHwJPqGCcC6KVzABTEvC6Lt9ka333_ihRfobnI29k_EGLH8TQuSDjTaJLG96LuVdmLTfjQ2iTYhlDgtRJgn0RoTSBUmGepiQj8ar9oOcIV4HiQtBfm8RsVfDpijKL1Q59W_NRKSr0TG8f55ECvZBI4GpW9aJxd-5iKStNU1Uugoxc2UnyKFOkDq3JIZ-gNRJoJ5q7XD8UHdOOXtbSLUd17ck5-KGHsn2g2_aKjrkTOlXAE1aczsza69ra0vj4Y6F-DgZQXxzXBw32JQ8XuKTV1fZUnOaiNLN09lJvmxnCRURFaAzHiymFou3zFlbYY_Ioh410tFnQWv6Nmy2qpqKS7xHNUbmzHFMGcnKt2YgnWo7dBUJTfG8ON7qXQkMP5YB2EMkA=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning custom wrong gid testing with tripwires**\"}]}","endedAt":1788249146984},{"type":"text","text":"The exact 61 and 240 suites pass. Whole-file checking of inherited `telegram.py`, `scheduler.py`, and restored legacy tests reproduces their known baseline diagnostics, so I’m separating that from the amended strict set and checking the exact changed strict files plus changed regions, as required by the delta-only scope.","textSignature":"{\"v\":1,\"id\":\"msg_046f5546d6e20d23016a96843ae64c87d08a54e2fc11d9765e\",\"phase\":\"commentary\"}"},{"type":"toolCall","id":"call_LoISTeUwT12HpalGSO4kDQkA|fc_046f5546d6e20d23016a968450b7e487d09e94df9b538431a3","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=\"$PWD/dualcoach/profile\" basedpyright gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py --pythonpath .venv/bin/python --level warning","timeout":180}},{"type":"toolCall","id":"call_QtcvnXOuYEnbamVUVgmmYEBi|fc_046f5546d6e20d23016a968450b7f487d0b50427ec25fc47ce","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/ty check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py","timeout":180}},{"type":"toolCall","id":"call_7nLBqVUsajeVignZjZ40HmMX|fc_046f5546d6e20d23016a968450b80087d081305d2a980091da","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && .venv/bin/ruff check gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py && PYTHONDONTWRITEBYTECODE=1 python -m py_compile gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py","timeout":180}},{"type":"toolCall","id":"call_Jc3RHy8b4dKGPGpy2DHkZl5t|fc_046f5546d6e20d23016a968450b80887d08eda5a337dcc398b","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && python - <<'PY'\nimport ast,json\nfrom pathlib import Path\nfiles=[Path(x) for x in '''gateway/platforms/nutrition_weekly_maintenance_contract.py\ngateway/platforms/nutrition_weekly_maintenance_io.py\ngateway/platforms/nutrition_weekly_maintenance_store.py\ngateway/platforms/nutrition_weekly_operations.py\ncron/physique_inline_card.py\ntests/gateway/nutrition_weekly_maintenance_support.py\ntests/gateway/nutrition_weekly_maintenance_fs_mutations.py\ntests/gateway/nutrition_weekly_maintenance_adversarial_support.py\ntests/gateway/test_nutrition_weekly_topic59_maintenance.py\ntests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\ntests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\ntests/cron/test_physique_inline_card_maintenance.py'''.splitlines()]\nissues=[]\nfor p in files:\n s=p.read_text();t=ast.parse(s)\n for n in ast.walk(t):\n  if isinstance(n,ast.Name) and n.id=='Any':issues.append((str(p),n.lineno,'Any'))\n  if isinstance(n,ast.Call) and isinstance(n.func,ast.Name) and n.func.id=='cast':issues.append((str(p),n.lineno,'cast'))\n  if isinstance(n,ast.ExceptHandler) and isinstance(n.type,ast.Name) and n.type.id in {'Exception','BaseException'}:issues.append((str(p),n.lineno,'broad-catch'))\n  if isinstance(n,ast.Lambda):issues.append((str(p),n.lineno,'lambda'))\n for ln,line in enumerate(s.splitlines(),1):\n  if any(x in line for x in ('# type: ignore','# noqa','time.sleep(','asyncio.sleep(','pytest.skip','pytest.mark.xfail','._ledger')):issues.append((str(p),ln,'text-rule'))\nprint(json.dumps({'files':len(files),'issues':issues},sort_keys=True))\nPY","timeout":30}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":28091,"output":2063,"cacheRead":222720,"cacheWrite":0,"reasoning":510,"totalTokens":252874,"cost":{"input":0.14045500000000002,"output":0.06189,"cacheRead":0.11136,"cacheWrite":0,"total":0.313705}},"stopReason":"toolUse","timestamp":1788249120897,"responseId":"resp_046f5546d6e20d23016a9684217f4887d0b01ed9880de61525","rawStopReason":"completed"}}
{"type":"message","id":"130127c3","parentId":"4ae95015","timestamp":"2026-09-01T07:52:49.940Z","message":{"role":"toolResult","toolCallId":"call_LoISTeUwT12HpalGSO4kDQkA|fc_046f5546d6e20d23016a968450b7e487d09e94df9b538431a3","toolName":"bash","content":[{"type":"text","text":"0 errors, 0 warnings, 0 notes\n"}],"isError":false,"timestamp":1788249169940}}
{"type":"message","id":"5188d8e5","parentId":"130127c3","timestamp":"2026-09-01T07:52:49.940Z","message":{"role":"toolResult","toolCallId":"call_QtcvnXOuYEnbamVUVgmmYEBi|fc_046f5546d6e20d23016a968450b7f487d0b50427ec25fc47ce","toolName":"bash","content":[{"type":"text","text":"All checks passed!\n"}],"isError":false,"timestamp":1788249169940}}
{"type":"message","id":"841a0361","parentId":"5188d8e5","timestamp":"2026-09-01T07:52:49.940Z","message":{"role":"toolResult","toolCallId":"call_7nLBqVUsajeVignZjZ40HmMX|fc_046f5546d6e20d23016a968450b80087d081305d2a980091da","toolName":"bash","content":[{"type":"text","text":"All checks passed!\n"}],"isError":false,"timestamp":1788249169940}}
{"type":"message","id":"05b3b69b","parentId":"841a0361","timestamp":"2026-09-01T07:52:49.940Z","message":{"role":"toolResult","toolCallId":"call_Jc3RHy8b4dKGPGpy2DHkZl5t|fc_046f5546d6e20d23016a968450b80887d08eda5a337dcc398b","toolName":"bash","content":[{"type":"text","text":"{\"files\": 12, \"issues\": [[\"gateway/platforms/nutrition_weekly_operations.py\", 93, \"text-rule\"], [\"gateway/platforms/nutrition_weekly_operations.py\", 124, \"text-rule\"], [\"gateway/platforms/nutrition_weekly_operations.py\", 137, \"text-rule\"], [\"tests/gateway/nutrition_weekly_maintenance_fs_mutations.py\", 72, \"lambda\"]]}\n"}],"isError":false,"timestamp":1788249169940}}
{"type":"message","id":"3e2f6cb7","parentId":"05b3b69b","timestamp":"2026-09-01T07:53:08.764Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Clarifying typed lambda usage**","startedAt":1788249171955,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a968453def887d09d080d1e9ed56724\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloRk9-ThMV8PJqto9udAZKSpMEsds_DlkyAy6FB8P2KROBV8M5zXqPlLlBb8P5IyQ3d3sGWpXOZWKuhZpY0IRsRc936T7RwBJ7wg5hmQARphtF1TvV78oa-BR1nLEQPOJMOwT5mtXympHYidbwyQJ8l3TMMBA9vWs7OSAqCH2NI64lv8IK-2Z_4yPfHu2g-I2KPwJzsO8bc9Aeud0tDumJGrnbiWURZKED2j3NwPB1_sjsQMHPtpafP4uWhY-86NAtRiNMJI41FC1RHa9ouuty-Q-9AAIQPKwKSJpCE_ND8yADnSMJB5GZO_JbeOTWWfpxDIcA1AGw7geH__xelJyJfZ1fif_Vzp-uQeJQLR5fTzNF6oMgPZcKCWFbecHj5W-54JH0XSOn2sTPDVp-F4GfSmPq26AErGk37TtLlJZhE3AUG9MFyuwEgGD_xHDrqZxbaAbnxOhQbINBmTqwX-Rw5i1Vi5xzqvcI4kiHgXqbFeZ3JsXq1yQg54_su973o6snUnu_Ggzkzgb00Hr5BmipPS1TS-qfknkPhSUE5DIF3yyzbJny-sKD-DBTsktAjE69fG3VNwamDNEDl06ruid6Mz3Dmw4K_tT7YGJ9MbeDdcp4kUXe90xwcmi1rkw9pPh3crAAXYrMqHIe8DoDKyXnLIL4MC88KQX1CjTrDJPvrUrfms_CjwhqBUhCIhNKtQAQOXpfKYJiLKd0ZAr_SINeRtvvVnF1zI6kD9_9EzDIfz8xAhjrvk_zK1ASeAAfXMWxeKMmMNlk5flPUC_woYWg3Xc6ZuusMQqme5z84qjP7GITFJRJhPQ0ENRVfjI3v04kkhKnfJbGt9wnigJqoH7M58JcolIFc7CsS_S962IGblB1MFcUuMYff1NQXSgKmPjV5pTbQtW99FRaUQ5QkyuqniSn4P-C1hbKfNO6WBWT9nB5ZTWCQPMVkVyXet_ghKqFsQVuMevY3qCMeWKkoqKBGP6V1_-z37Uqz-5qzGN1cdVctN_IMxbKJ4ac8bJmSgARikVfroH2Em6BhtT5-e1LlbVQGwGRinDJR-1M5AeVNc8tBSIQLA8-sS7IIbmHa20zpmn1P2VTlblLc34GtChNgopTGGfMabS8lp7Ubn2x6Rg7yaj1290r1Gku9x1wiE7pDYIk993F7b-fGiSEwZB5tr9b9keQyrjV-2M6K8eDXItu_zMPPnu1D63WUV5Af5guGdRm0aLHyrIr4CvGftzPlHTibQwjwFUvPz4GO4ZvDiyvANYw6NaJC9AgkO8Y1PZ_ZDc_nPX_XxT3kcK15Cm-WRJz_srLFp9noKyoceAh53v6Lir7Dnb1BEw9wrqv-cixrUuXLHGCwzAsjLopSvV9OggGFQQITgiP86LQlNM3EZPo_UcmQt1Xm0fHvLS_eFK3MN2oUFu2MwNWVxcfTsNTHHavV_l1k599mYBtyk-EoRrUtRx6DOonqfZIxpyFkzz5ItLzQrIvqnau56OqX4x_1O-37a8qIVQCS1v4d2WilK-b5PSYQRTlbyERm7Eg2FTv2ep7azzRthApIq-awzJOimrx7U7O-V8OX8UP-E7L9Vrcu22RhbyjtIItuoZyRHmUr84ezXWraetOuSBs8aXvVMW79XOl5UuSwhHKWJELz5PEj90xLhllfghAI9yRQkVeG3c2zLBGNcLehIoFF2G9uOX5lsQlU9FhFbhs8AVX7LKBuJ0nbOywB-ls-eaMvuc-QWkFwl1Or-UsQWF95J0VCQFhIf8yPEsC_SEJNHTMe7IcHkmGx-O-KLSpuFXBBPGG5B22ro_SiZcAxAGwu1rux7LEMZ3DdpTWN7tHyeC8OAtvr3qK9fUrG9lzRCVuJhoB81oDDkb-U0lj6ETc8s_8GDgAd-aDFYC5iurD_VBIvJ-c_RAnAQ0UX0EE8offC9IxGYbxV7vVR4PNZXAeQvEMX9JCvKqb31_9iLjR_YPOZC2tFMeRWAevmdARxi1baQrd4bKf1cf07GKdW1TaorMryPGxKuqZ86BNwspBJP-o5LOO30n73zv84C50kizlYFDQUQTF6ZZ4APs498ZMqLrd0busL3eyRqW6hpzLYYHt1vOuS1OBd5sstQLASHV6Bz_D85\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Clarifying typed lambda usage**\"}]}","endedAt":1788249188640},{"type":"toolCall","id":"call_4NXXYGHZoGHd1xuZ2rJYg5HT|fc_046f5546d6e20d23016a968464896087d0a36346fc602b7389","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_contract.py","severity":"all"}},{"type":"toolCall","id":"call_uM4MQuYFdDvWkg3aEcWICoID|fc_046f5546d6e20d23016a968464897887d084a22db31a7aa04d","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_io.py","severity":"all"}},{"type":"toolCall","id":"call_5vH3VLPLdafC4kLCRsmcr5rI|fc_046f5546d6e20d23016a968464898087d082894f40abe22aa1","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","severity":"all"}},{"type":"toolCall","id":"call_7GOjhK8HZy5IrpDnIgiucbnC|fc_046f5546d6e20d23016a968464898887d099b1a9e878f4b076","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_operations.py","severity":"all"}},{"type":"toolCall","id":"call_nSciQzgX9iAaCZQRlJaiehWk|fc_046f5546d6e20d23016a968464899087d08e0a5baa0c8327d9","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatch_result.py","severity":"all"}},{"type":"toolCall","id":"call_uuH9L4wrKzUyvsRP8RKKPL8n|fc_046f5546d6e20d23016a968464899887d0b2156a7fbb910d3c","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py","severity":"all"}},{"type":"toolCall","id":"call_YN4bjlxME6yRcGfxHqtf9VvO|fc_046f5546d6e20d23016a96846489a087d0b09ceba38ba5d6cd","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","severity":"all"}},{"type":"toolCall","id":"call_z1EmyzJu9BkEhFDg6ZCbkqvR|fc_046f5546d6e20d23016a96846489a887d084dcfe72cf5983af","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/physique_inline_card.py","severity":"all"}},{"type":"toolCall","id":"call_vW7dSpcti5r52RhDXzH5ssCW|fc_046f5546d6e20d23016a96846489b087d09d4140633e0f9def","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/nutrition_weekly_maintenance_support.py","severity":"all"}},{"type":"toolCall","id":"call_iItRWm4fBF17hPz5RkI1ihoB|fc_046f5546d6e20d23016a96846489b887d0b6625807561e1b87","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/nutrition_weekly_maintenance_fs_mutations.py","severity":"all"}},{"type":"toolCall","id":"call_JclPeYS8GtKyjubAdkDcBtst|fc_046f5546d6e20d23016a96846489c087d0af3c8323621f2202","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/nutrition_weekly_maintenance_adversarial_support.py","severity":"all"}},{"type":"toolCall","id":"call_C5zzx9Qp4Eb3uCp0md2lM7pd|fc_046f5546d6e20d23016a96846489c887d0aee3840f75733f39","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","severity":"all"}},{"type":"toolCall","id":"call_MAReujasKtYOgVhI4gFCkvKV|fc_046f5546d6e20d23016a96846489d087d090e692b91ec37442","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","severity":"all"}},{"type":"toolCall","id":"call_zZWSxwTJQFbm2XtLCVWOlpFl|fc_046f5546d6e20d23016a96846489d487d0a930e846bfcff19c","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py","severity":"all"}},{"type":"toolCall","id":"call_R0TCrNuDCXagtBELmf2KYYEc|fc_046f5546d6e20d23016a96846489dc87d0bae0bead3d4d0135","name":"lsp_diagnostics","arguments":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card_maintenance.py","severity":"all"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":2652,"output":926,"cacheRead":250368,"cacheWrite":0,"reasoning":130,"totalTokens":253946,"cost":{"input":0.013260000000000001,"output":0.02778,"cacheRead":0.125184,"cacheWrite":0,"total":0.16622399999999998}},"stopReason":"toolUse","timestamp":1788249169979,"responseId":"resp_046f5546d6e20d23016a96845252d487d08d38c8016ecbc62c","rawStopReason":"completed"}}
{"type":"message","id":"592e1400","parentId":"3e2f6cb7","timestamp":"2026-09-01T07:53:09.447Z","message":{"role":"toolResult","toolCallId":"call_4NXXYGHZoGHd1xuZ2rJYg5HT|fc_046f5546d6e20d23016a968464896087d0a36346fc602b7389","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_contract.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189447}}
{"type":"message","id":"c6eb447c","parentId":"592e1400","timestamp":"2026-09-01T07:53:09.447Z","message":{"role":"toolResult","toolCallId":"call_uM4MQuYFdDvWkg3aEcWICoID|fc_046f5546d6e20d23016a968464897887d084a22db31a7aa04d","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_io.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189447}}
{"type":"message","id":"e7659b2d","parentId":"c6eb447c","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_5vH3VLPLdafC4kLCRsmcr5rI|fc_046f5546d6e20d23016a968464898087d082894f40abe22aa1","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_maintenance_store.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189447}}
{"type":"message","id":"19b98767","parentId":"e7659b2d","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_7GOjhK8HZy5IrpDnIgiucbnC|fc_046f5546d6e20d23016a968464898887d099b1a9e878f4b076","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_operations.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189447}}
{"type":"message","id":"38655730","parentId":"19b98767","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_nSciQzgX9iAaCZQRlJaiehWk|fc_046f5546d6e20d23016a968464899087d08e0a5baa0c8327d9","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatch_result.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189447}}
{"type":"message","id":"42a2a182","parentId":"38655730","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_uuH9L4wrKzUyvsRP8RKKPL8n|fc_046f5546d6e20d23016a968464899887d0b2156a7fbb910d3c","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/nutrition_weekly_dispatcher.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189447}}
{"type":"message","id":"05b919ac","parentId":"42a2a182","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_YN4bjlxME6yRcGfxHqtf9VvO|fc_046f5546d6e20d23016a96846489a087d0b09ceba38ba5d6cd","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/gateway/platforms/telegram_weekly_host_dispatch.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189448}}
{"type":"message","id":"4a4ba63e","parentId":"05b919ac","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_z1EmyzJu9BkEhFDg6ZCbkqvR|fc_046f5546d6e20d23016a96846489a887d084dcfe72cf5983af","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/physique_inline_card.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189448}}
{"type":"message","id":"1aa0b548","parentId":"4a4ba63e","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_vW7dSpcti5r52RhDXzH5ssCW|fc_046f5546d6e20d23016a96846489b087d09d4140633e0f9def","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/nutrition_weekly_maintenance_support.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189448}}
{"type":"message","id":"fa9a363a","parentId":"1aa0b548","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_iItRWm4fBF17hPz5RkI1ihoB|fc_046f5546d6e20d23016a96846489b887d0b6625807561e1b87","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/nutrition_weekly_maintenance_fs_mutations.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189448}}
{"type":"message","id":"553f03fb","parentId":"fa9a363a","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_JclPeYS8GtKyjubAdkDcBtst|fc_046f5546d6e20d23016a96846489c087d0af3c8323621f2202","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/nutrition_weekly_maintenance_adversarial_support.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189448}}
{"type":"message","id":"b5b369af","parentId":"553f03fb","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_C5zzx9Qp4Eb3uCp0md2lM7pd|fc_046f5546d6e20d23016a96846489c887d0aee3840f75733f39","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189448}}
{"type":"message","id":"674784f4","parentId":"b5b369af","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_MAReujasKtYOgVhI4gFCkvKV|fc_046f5546d6e20d23016a96846489d087d090e692b91ec37442","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189448}}
{"type":"message","id":"a577fe6d","parentId":"674784f4","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_zZWSxwTJQFbm2XtLCVWOlpFl|fc_046f5546d6e20d23016a96846489d487d0a930e846bfcff19c","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189448}}
{"type":"message","id":"ac17fa3f","parentId":"a577fe6d","timestamp":"2026-09-01T07:53:09.448Z","message":{"role":"toolResult","toolCallId":"call_R0TCrNuDCXagtBELmf2KYYEc|fc_046f5546d6e20d23016a96846489dc87d0bae0bead3d4d0135","toolName":"lsp_diagnostics","content":[{"type":"text","text":"No diagnostics found"}],"details":{"filePath":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/tests/cron/test_physique_inline_card_maintenance.py","severity":"all","mode":"file","diagnostics":[],"totalDiagnostics":0,"truncated":false},"isError":false,"timestamp":1788249189448}}
{"type":"message","id":"8d994da4","parentId":"ac17fa3f","timestamp":"2026-09-01T07:53:24.823Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Implementing wrong gid tripwire tests**","startedAt":1788249191390,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9684674b2887d0981475bac9525403\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloRphS_cfCD2qUZ3whXXtU2rco3hmGcTbOr2bQbXyZ-pUaqj5fQup1vitA48CYwFo1hPt9uS9x2QzLMxOgH3AXt4jOwhfOnuopYzO5p7gd3p6-0yW2HhEfW9cQRVt4EMzbTPv9wQBsFb9cNkX4PuRflEb22bBChjurMDtjpFZUuhdUrWnlHMaaxhjhK9gmPWJYll8VNdSx2R77WMZgneP-H-ZkPf6Ot1ES2JKS6L8kPVB_kzo20e6ZHFzA37nmmoiBq41b71re0vvhgSKaN-c6CUDIMf3_tLjyZuq_OrK66O7nfp2OdhXYmMo8lsORjNN1IhAy4iHkrTzDmLs3PB4THke4aIxPGF8NN_2BtgaSS7gS86dSXI3R64DGArBfThSBp3v8P0vn08NZyX25Mq6VmDCQEWV3qajScXFNZCUPxCtwSzoa9YmM7nK7s2dEfRsxt8h-U1VZ-16LTBPW14DupwGpVmaqyFxQLX2clRMgj_y2H54aRnnLS-u0TUkd0b1KwBtZcODIsh42lDEgTYALWXIJI43aPRSV8E30HshszrPoU-Xfx-ZDtvw52dWdEY9tWxTjiNuqJJwkYfy3t5fSIfv_1rJs82eyEa9RZqWShMwedF70CMGmfdT4ntjEShgtjO0qG3u7yxHqi0SrSgxtEumUuS7CGECaQ3F2U3Z-Ig0JZrRz8la86vYmaPYsSmyMai-oX-BhJwz6c4AlZVxSVcj-7IFnrPSgr-6UfRDcwXjncJrqWVbFeljTadxDkMsQp2051dhL-S4F0Dv1m6bP7qmc1VOG8cJEGEPSdWGKzziGVuX0RwuH72UOboiuG-3m2qC-pMzv5E63cUEt6GAAJ6sL93984rNcOXEz9Iup_1Qc-043yuP7KdE5DrCjucWvPFUyClK0JvWDlb9ESNtzfOP5vt_P2W2PhHaYlRwM27wRn1o2HXPw4oJ8IfR5UrRXg2NeTJKoaVTTpe8qVlSzkdDbWdfYXk5XdrmM-rnPdiRX2txP1blpHSig75sRMMk5_qS-FamRJscDktS3k-6-sBCkUXO7vn-poNlm2sHMmlmlGmZrd_w2IErgUOsOJEvXuLvU4Do7OWuotELWB22PEgCEu9pA0zBBR8qROVRitgSiXFZ-XJT3gR9bJKDXpEP4MnkDC5__atc86zU5tGTMjMN9x5grP0ro5xeK-sei23dX9pbuh0SoVLYwIbrL5h-N6GwXJbGq034vd6RFDBkMEF0OU6HkGZ18nTg2K2SS_4yOLMs3tWKawyU5hmM2wmVA8jlOZ-uf9EwnF6rGSGsUbfIxGBGLqQMPzAS_pO8YoFVB9VuiiMHtOeOrY8oOqnmGvZm9StkjqSrc6NlulMj-nZlce35jPReaTb5hpoqBWr78FUbbMdkgHyjbsF0-k5kuWOmSF2AJAMlAV37Iubb262IpgP2e5TtcsmSd-5J1GDG54FC5VNcJpyhkEnSO3SQ_D9FjbVlD_em14SCVn2v3OPMsd9p1-lWUVapzjnKLi9Mp6jUO5gI92LAeRyZpLXY66vWaWWYh6RcCXoH2wHknkI93RCZ_OWLz895dxUxgZ73b_ViPxnP1iGdJxqKRXUxqGWzNiYMoe3FZ8P2DurjPYMrBIpgL-zvX4O6IgX49oTZqU9SDjGNFee9aIxzj3UNGmnBtiA28MQTqfcDlGZDWraKIAL9qvIQjhVBYoK97c_qPKus0ZJylF_U54S5xBw8a_bDQI2wPMa_92mPo5jZJwaWnS9WUbdOz53RkdXgW6XgYLtQJvQ_XtYhUa2cXeygNLk-4dYJ2GJXe1uM6ruqsIGTaYDAcebiG41x_0eJ36aM3oIz40_FEpznwEZE3vwl-8B-gT9ZUqlEGK4riw15fccsrHIQZUX1xxITBUg7G32Dug=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Implementing wrong gid tripwire tests**\"}]}","endedAt":1788249194047},{"type":"toolCall","id":"call_9jLyhU3bVUjAp7U35HaVWmBn|fc_046f5546d6e20d23016a968469f67087d0bf310a05bc4d714c","name":"bash","arguments":{"command":"cat > /tmp/r71b_delta_gid.py <<'PY'\nimport asyncio, hashlib, json\nfrom pathlib import Path\nfrom tempfile import TemporaryDirectory\nimport pytest\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import Topic59MaintenanceDecisionKind,Topic59MaintenanceFailure\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59PublicationDisposition\nfrom tests.gateway.nutrition_weekly_maintenance_support import arm_maintenance,change_group,publish_with_tripwires\n\ndef snapshot(root:Path):\n out=[]\n for p in sorted(root.rglob('*')):\n  st=p.lstat();raw=p.read_bytes() if p.is_file() else b''\n  out.append((str(p.relative_to(root)),st.st_mode,st.st_uid,st.st_gid,st.st_nlink,hashlib.sha256(raw).hexdigest()))\n return out\nresults={}\nwith TemporaryDirectory() as td:\n mp=pytest.MonkeyPatch()\n try:\n  f=arm_maintenance(Path(td),mp);change_group(f.maintenance/'maintenance.lock');before=snapshot(f.profile)\n  decision=Topic59MaintenanceGate.for_profile(f.profile).evaluate(f.projection,f.now)\n  obs=asyncio.run(publish_with_tripwires(f));after=snapshot(f.profile)\n  results['wrong_gid']={'decision':decision.kind.value,'reason':decision.reason.value if decision.reason else None,'artifacts_byte_and_metadata_unchanged':before==after,'claim':obs.claim_calls,'record':obs.record_calls,'send':obs.send_calls,'edit':obs.edit_calls,'network':obs.network_calls,'publication':obs.result.disposition.value,'message_id':obs.result.message_id,'audit_digest':obs.result.maintenance_audit_digest,'ledger_exists':f.ledger.exists(),'audit_exists':f.audit.exists()}\n finally:mp.undo()\nwith TemporaryDirectory() as td:\n mp=pytest.MonkeyPatch()\n try:\n  f=arm_maintenance(Path(td),mp);before_hold=f.hold_bytes\n  obs=asyncio.run(publish_with_tripwires(f))\n  results['same_gid_control']={'publication':obs.result.disposition.value,'claim':obs.claim_calls,'record':obs.record_calls,'send':obs.send_calls,'edit':obs.edit_calls,'network':obs.network_calls,'message_id':obs.result.message_id,'audit_digest_present':obs.result.maintenance_audit_digest is not None,'hold_bytes_before':hashlib.sha256(before_hold).hexdigest(),'audit_exists':f.audit.exists()}\n finally:mp.undo()\nprint(json.dumps(results,sort_keys=True))\nPY\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python /tmp/r71b_delta_gid.py","timeout":60}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":1742,"output":746,"cacheRead":252416,"cacheWrite":0,"reasoning":92,"totalTokens":254904,"cost":{"input":0.00871,"output":0.02238,"cacheRead":0.126208,"cacheWrite":0,"total":0.157298}},"stopReason":"toolUse","timestamp":1788249189485,"responseId":"resp_046f5546d6e20d23016a968465d71487d0a9a2ed53ffd10564","rawStopReason":"completed"}}
{"type":"message","id":"f8f41033","parentId":"8d994da4","timestamp":"2026-09-01T07:53:25.050Z","message":{"role":"toolResult","toolCallId":"call_9jLyhU3bVUjAp7U35HaVWmBn|fc_046f5546d6e20d23016a968469f67087d0bf310a05bc4d714c","toolName":"bash","content":[{"type":"text","text":"{\"same_gid_control\": {\"audit_digest_present\": true, \"audit_exists\": true, \"claim\": 0, \"edit\": 0, \"hold_bytes_before\": \"3ec59c99603a153376c299470473396777b7d12110ce9c323befff9d67693c58\", \"message_id\": null, \"network\": 0, \"publication\": \"noop_maintenance\", \"record\": 0, \"send\": 0}, \"wrong_gid\": {\"artifacts_byte_and_metadata_unchanged\": true, \"audit_digest\": null, \"audit_exists\": false, \"claim\": 0, \"decision\": \"deny\", \"edit\": 0, \"ledger_exists\": false, \"message_id\": null, \"network\": 0, \"publication\": \"refused\", \"reason\": \"filesystem_contract\", \"record\": 0, \"send\": 0}}\n"}],"isError":false,"timestamp":1788249205050}}
{"type":"message","id":"72fac327","parentId":"f8f41033","timestamp":"2026-09-01T07:53:57.940Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Reconstructing amended scheduled script**\n\n**Running updated projector and scheduler code**","startedAt":1788249208271,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9684782f5487d0b671b331dff9f0ea\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloR91IHlhqDee34sdzbDb1GtwjoloxPMqsUw2XpIDtz8qd7lclYhHKSLe0JDmqGXSVFRJZVG1G1QyGPew5dkZqIr5i5gHzpwCC-48FHEo_hgXqvBGTmdnLGThvIbGYfmymtVEN5r1lYhsw9qbNpbN2mMfHD7HsPtsJRH06U9jZW9rWYw6YZHf4TMcAMeTyr1rK3GglrgGBZ3e7qkpWIP-eiqglxo5fUNZN-YvcFxEYJtfgyiyh2Oh92K9OIgUqktrDMwk4sSdaftqf1EurhODVxwFhcpntwVu6W8lhvVEEvJ0L2BvNklF3SzResQlhGerLQxe180PXD3eBwlb3HDqcHMsvCIEAQZlUB_EFXm-d0hV8I8FBaMEa22Lty3EdprAMgt43ySQl6rtLur4owMILcgSfmaJ62mCeLXG8E6Tdtfsn21nLw8hK8nl-C_hzfncSmoVjQBX-tnDAGTnSBgRt8gMEyM8l1fryH_MbzIHorJINXg8fnG4CS32S_KQAP0-mkju64OAbvmKSYvLeY75WQ2aXAD1Zxjvcx60Kro3bRmcWSS2OJn8XgjYcMX0AYaiVIMLuZKSGXfWXL1GN_TE6CGD_dLM5RyyTQszjsTWFZgiR3Og23GSNTMiFBJnjYFFHLoYy1cNFjugGD6fs5aXlwnTbCTn_q8uUTnlAZALRXW2fW9LNvCcVnqxmCQlksXh1aKWSx9qvcVtiLPT2uAVXXDpjhG96AO7Unw0RoycI3bMJp0eUhCK2zsSHt1H8MkjQdF8XaNXHRnJE4E8X-3QBuHbxYnrkkVgzsuGdWbCo4ShF8IvXb17aB2EbMRS-3sT71xCYm3hqLJ8IH-JnhiOSgIyhV786peLdNhLPB5ZltRFik1K8ZUwbPV8E-ZUY3sjGGlAS2OYq94w8ksF-XJSk8ayZV48MZtMiW7qMZarCCz6D5Eg7lKfls1VcoLqjsup0Vlxtn8cqpI8BmsNt6mgIjFz-W_QemYKfjYDkPeyc5QsINvN__60lckkMuc08FAyBcTJXMw5jzu_IOSPE6klMJfUJjoWZpUppsiB84ccHUUSk3bcuiPSkUriTH77m5sAMMdwujeTUIsSrtyiU7_1oFGKLiZ7vjA23Zk5v7dKDYl3TNX8VXE6OhV7nQSe5oLX41NX_b_PU8AOXcb8LQ30j3PfqNgD5RIcO0CKZ1nCxIH9B6Oz3moksyEvF45sTwyI2mpyiR3OH81DcQAhE0CwDj6AAsUN_NcYH37kIX9objIGErNT2XooW6yjmR3iSIqAIh1f8D_BKiH9j5jpZxKtEmBuwNvsIFWuvASsCQBAAz5lrTnV6KyiTbEkoAWHO89NsT1feHv4HtQKEmmC_5ZlqKT24T4ameJGPcnOU5Iwa48jx_PQvuwEGVIP3Cgoe5zZzLdQNx8Hha8gRWYvQ2zMx-T-FIWriMYfh2f_6_oDK6nfC5CMViZeVCPtRZciNQu5gxlEL6ZE_2GbLgRnrYvj29xfd3EdWgQ3jisg08DRSxruRSoUA9oaDFsEjdtOnpi9ASCnkcaxMLFA6E1WWDYdLkGDG3saL6vE_DzjKsFUESpC7MFDfnpupHyp_e9NZfxvBK0Wg_5eP16UzaDeiec7OnQ8Lrza-PPFl1fsjazQ3IeA6rC71wmH_Hd_0kW5IcSMGm5BIANmOqWBryRwllpxVphAVY_nqQ0PZ8lTFC3hxX9kmRzVdW-IUMCYYtsXGDfUw21alTxgJZxk9beab8FKwcGV2tzssJ3hm06PI_pI-bfAeCWawaMNG3_Qan7EC-XgrKZAd1B1EBnnTCCQJO-IYbJ3ZTdJBApM75BdT2fMoULDfjOXJcxNuLwxI0_BihXhzUIFgUWCR34PyfwW-aGugI2jC4CyOcF_rdTbq4V3tH-PahIiesbo9IeLG26olXH682CEgBdOB24eR9zOEcIHtgEVxTADJvycDXQoDw25xCWGYWm0uIIy_hOMLJq__efdnklZkbkiMTxgtTnT3CnFd3fsn5lcLLYEdqWTxHaurRxmtSayfKxwxDBIuK87BRkWD5BuuW-bSAqMmJCZ6VLY1MR6x9Qq17bH8d5BXaq7lfmGZ_8zgA8jLUJaUuyW5eAMDRb3zxfAXD9Scxd1HsjbvDSlPcYYQfW49g0GcebKR-V75Ye9q9Fv3jYRskO71yuZ1msNGErmdfF2MYXS1fU5w32_qS2gYtNV9meHdCjNYGe17FkWkpcpwgw8qhu2a_y8IjFlAO-FzsjwtzDSg_Psp-1FgMgk5nIYwHNJ4lpVa9yq-2lmJHf417LNCxuJ-LZNz3K\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Reconstructing amended scheduled script**\"},{\"type\":\"summary_text\",\"text\":\"**Running updated projector and scheduler code**\"}]}","endedAt":1788249213759},{"type":"toolCall","id":"call_kWvvBvvQmXn4x3wRVJkvAO2C|fc_046f5546d6e20d23016a96847dac8c87d0aab67e8d82d97c3d","name":"bash","arguments":{"command":"cat > /tmp/r71b_delta_manual.py <<'PY'\nfrom __future__ import annotations\nimport asyncio, hashlib, json, os, socket, tempfile, threading\nfrom dataclasses import dataclass, replace\nfrom datetime import date, timedelta\nfrom pathlib import Path\nfrom gateway.config import Platform\nfrom gateway.platforms.nutrition_weekly_maintenance_contract import Topic59MaintenanceAuthorityV1,Topic59MaintenanceHoldV1,canonical_document\nfrom gateway.platforms.nutrition_weekly_maintenance_store import Topic59MaintenanceGate\nfrom gateway.platforms.nutrition_weekly_operations import Topic59DayCardProjector\nfrom gateway.platforms.nutrition_weekly_operations_ledger import Topic59PublicationLedger\nfrom gateway.platforms.nutrition_weekly_operations_models import project_topic59_day_card\nfrom gateway.platforms.telegram_weekly_host_dispatch import NutritionScheduledTickOutcome\nfrom cron.physique_inline_card import NUTRITION_TICK_CARD,launch_scheduled_card\nfrom cron import scheduler\nfrom tests.gateway.test_nutrition_weekly_operations_topic59 import _request,_Transport,Topic59DayState\n@dataclass\nclass TypedResult:\n success:bool=True\n error:str|None=None\n raw_response:NutritionScheduledTickOutcome|None=NutritionScheduledTickOutcome('noop_maintenance')\nclass Adapter:\n def __init__(self):self.calls=0\n def is_inline_card_enabled(self,card):return card==NUTRITION_TICK_CARD\n async def send_inline_card(self,card):self.calls+=1;return TypedResult()\ndef projection(req):\n route=req.config.review_route;assert route is not None\n return project_topic59_day_card(req.card,config_digest=req.config.digest,route_key=route.key)\nwith tempfile.TemporaryDirectory() as td:\n root=Path(td);p=root/'profile';c=root/'credentials';p.mkdir(mode=0o700);req=_request(date(2026,8,20),Topic59DayState.SUBMITTED);proj=projection(req);now=req.runtime.now\n hold=Topic59MaintenanceHoldV1(hold_id='3'*64,package_digest='4'*64,candidate_digest=proj.candidate_digest,config_digest=proj.config_digest,route_digest=proj.route_digest,customer_identity_digest=proj.customer_identity_digest,card_slot=proj.card_slot,kst_day=proj.kst_day,not_before=now,expires_at=now+timedelta(minutes=5));hb=canonical_document(hold);auth=Topic59MaintenanceAuthorityV1(package_digest='4'*64,hold_sha256=hashlib.sha256(hb).hexdigest(),hold=hold)\n m=p/'data/topic59-maintenance-r71b';m.mkdir(parents=True,mode=0o700);m.chmod(0o700)\n for n,b in [('hold.json',hb),('maintenance.lock',b'')]:q=m/n;q.write_bytes(b);q.chmod(0o600)\n c.mkdir(mode=0o700);q=c/'nutricoach-topic59-maintenance-r71b.json';q.write_bytes(canonical_document(auth));q.chmod(0o400);os.environ['CREDENTIALS_DIRECTORY']=str(c)\n ledger=p/'data/weekly-operations-topic59.jsonl';led=Topic59PublicationLedger(ledger)\n for day in (date(2026,8,18),date(2026,8,19)):_=led.claim(projection(_request(day,Topic59DayState.SUBMITTED)))\n before=ledger.read_bytes();t=_Transport();projector=Topic59DayCardProjector(ledger,Topic59MaintenanceGate.for_profile(p));first=asyncio.run(projector.publish(req,t));audit=(m/'skip-audit.json').read_bytes();stat=(m/'skip-audit.json').stat();second=asyncio.run(projector.publish(req,t));unchanged=ledger.read_bytes()==before and audit==(m/'skip-audit.json').read_bytes() and stat.st_mtime_ns==(m/'skip-audit.json').stat().st_mtime_ns\n loop=asyncio.new_event_loop();thread=threading.Thread(target=loop.run_forever);thread.start();adapter=Adapter();real_socket=socket.socket;network=[0]\n def blocked(*a,**k):network[0]+=1;raise AssertionError('socket reached')\n socket.socket=blocked\n try:launched=launch_scheduled_card(p,adapter,loop,now,NUTRITION_TICK_CARD)\n finally:socket.socket=real_socket\n runs=[];outputs=[];old=(scheduler.mark_job_run,scheduler.save_job_output,scheduler.get_hermes_home,scheduler._hermes_now);scheduler.mark_job_run=lambda _id,ok,error:runs.append((ok,error));scheduler.save_job_output=lambda _id,out:outputs.append(out) or root/'out';scheduler.get_hermes_home=lambda:p;scheduler._hermes_now=lambda:now;socket.socket=blocked\n try:processed=scheduler.run_one_job({'id':'qa','inline_card':NUTRITION_TICK_CARD},adapters={Platform.TELEGRAM:adapter},loop=loop)\n finally:socket.socket=real_socket;scheduler.mark_job_run,scheduler.save_job_output,scheduler.get_hermes_home,scheduler._hermes_now=old;loop.call_soon_threadsafe(loop.stop);thread.join(timeout=2);loop.close()\n tomorrow_req=replace(req,card=replace(req.card,kst_day=date(2026,8,21)),runtime=replace(req.runtime,now=req.runtime.now+timedelta(days=1)));tomorrow=asyncio.run(projector.publish(tomorrow_req,t));payload=json.loads(audit);privacy=not any(v.encode() in audit for v in [req.runtime.customer_key,req.runtime.owner_user_id,req.runtime.owner_chat_id,req.card.render()]) and payload['sent'] is False and payload['delivered'] is False and payload['message_id'] is None and payload['provider_receipt'] is None\n print(json.dumps({'same_day':[first.disposition.value,second.disposition.value],'same_day_unchanged':unchanged,'audit_count':len(list(m.glob('skip-audit.json'))),'historical_prefix_unchanged':ledger.read_bytes().startswith(before),'send_current':0,'edit_current':0,'network':network[0],'launch':{'noop':launched.maintenance_noop,'sent':launched.sent,'error':launched.error},'scheduler':{'processed':processed,'mark':runs,'status':outputs[0].split('Status: ',1)[1].strip()},'tomorrow':tomorrow.disposition.value,'tomorrow_send':len(t.sent),'tomorrow_edit':len(t.edited),'privacy':privacy},sort_keys=True))\nPY\ncd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python /tmp/r71b_delta_manual.py","timeout":120}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":1666,"output":1643,"cacheRead":253440,"cacheWrite":0,"reasoning":142,"totalTokens":256749,"cost":{"input":0.00833,"output":0.04929,"cacheRead":0.12672,"cacheWrite":0,"total":0.18434}},"stopReason":"toolUse","timestamp":1788249205094,"responseId":"resp_046f5546d6e20d23016a96847598e887d08d37d09ec86a8f65","rawStopReason":"completed"}}
{"type":"message","id":"bb6ebf52","parentId":"72fac327","timestamp":"2026-09-01T07:53:58.229Z","message":{"role":"toolResult","toolCallId":"call_kWvvBvvQmXn4x3wRVJkvAO2C|fc_046f5546d6e20d23016a96847dac8c87d0aab67e8d82d97c3d","toolName":"bash","content":[{"type":"text","text":"{\"audit_count\": 1, \"edit_current\": 0, \"historical_prefix_unchanged\": true, \"launch\": {\"error\": null, \"noop\": true, \"sent\": false}, \"network\": 0, \"privacy\": true, \"same_day\": [\"noop_maintenance\", \"noop_maintenance\"], \"same_day_unchanged\": true, \"scheduler\": {\"mark\": [[true, null]], \"processed\": true, \"status\": \"maintenance no-op completed\"}, \"send_current\": 0, \"tomorrow\": \"sent\", \"tomorrow_edit\": 0, \"tomorrow_send\": 1}\n"}],"isError":false,"timestamp":1788249238229}}
{"type":"message","id":"86a8e8c2","parentId":"bb6ebf52","timestamp":"2026-09-01T07:54:21.807Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning selective pyc cleanup**\n\n**Identifying pycache files by modification time**","startedAt":1788249239937,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a968497d98087d09432bc461ef7d3eb\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloSthKD2UMOWFoJfzIWLcngWhFUWvOK-RkACxr7XNlfyBAs7mDiwJLePYCIcW5k_6KPgIrzWKOdpadSu4rPHEWBoHiZUtPBk07-3QJ3gL6y68Wp2v8CSOPBbHEGqvSvXf8FIvS8ZUv8drzZhyWsvadbzhRPsbemDE-ZO2QC1QWaOkOJeBQyJBk3HHhrjNW6OmsdNvy2IXUT7Jdi_HcgtdCxNiPzWkjr6MakXpwDM8UW8a-Sfzp_lvIed9Br8HfTWn0GfGCLdPI4sdb7c2c3mgfABeVeAa5f_ibobrzyYGiIa8KYbjmlARuN6_zQeJu-SLB4hD-r7QDBSGgFjO6NnpS0UspQTDEBbR36FZpxjY6NnjjzEt5WSZTNJ9TH0yrijU11AxZjSy3SL6-bT2mAx_sVyx0mU7JzfRJX9JXuyA4fYQBHtc8sJmOD3_vRjDZSDl4mFU9HnKf3bkvnL-4-UD3IYs3bFNKJVVXVhzQtXPqzG83POTf-V2WNvRp5ghX9SErwpzBDcMFzgSR90AippEXQUgUlnsvhSXfx5-ybukLHLCEabQ5tTHYcMS0_BwWEzUYFPk4ujRCi4wQXnn2Gf93VeGxyK2hN-_maYbPA4w8nC3BZYHNn7LFTvhr1Qsm-lkNI4jzf51R5e7YNykXN5jCgVSQ8Dd7j0ooAHeHGV3oAoO-7RHv3x5TWCb-dw_nWUU3CMAu4OQ_HUE1_OOjZKObRgmB5UbNhMubT0hSB7otleR2wBQI-auVf-g_lWqrNDuyXdOfPOeATRqyZZ51ME3Wiy0BGsr0GC7DNkum7zIfSfUeeWJnogaWBpU279e6QIUZ6LCROA81IfSIPRC-Q2oRvBQqp50nht6sP-3z7nT0uZ0zGWjgzEGY65_FNhCH9mQNrNvPYZrera1ScTkPMnzvaU-fJ8kDCOlZKnEtAwiCcPxqO7fqjfoM79avDlq2yDd24u5jPwZnlg_NFW3xogPURqywisQeu9GPkWd98YGA4qR5ATj8NuAecvCyZGZqhJNBe-BwwGPPckWLEULiJJktRHUXYB5JdYtsyKsjl4HInOz6O0tJbc--G9aT6wSvMUgSkI36jRfscCsLqt4cK_dvIUFfXe5EZoFecoj4n403Zj5VdCyTwlnpyypBb6jM5SW4VnYOXbZCXI3eAoDIVEVMUKjzu4-v4uB0JirMFmzJnkMc1DwudChHazizBumMPSckVA-5vAGjZl8QxhEY9ADFCDxqK-EvSCNnJDWzBBsygiGEowhQg1V1AY62WlZEfcqBQ7eCUh0ArgesFelHkw4SYVksDQskif3I8Pey2E3ECKSskR22irLk8IXAw1qTf_yu0WJBMJ-j_zWyLhq4tM-5c3aTLoVgvSbAGlg8fP1dSejPwPMm1Pxof4jv6qLa-RFheG5PylQrLmEsiJfyXecM-frs_ovpUBxT8tm9l_-TRL-CfDrk1Hc26gxWboslMWK_iDt_cZydkd1rDpzxS-a0rh8vHBnxFaaPDJInIsTShyQ3oKTyTd5E_bA6KOz4MbJzUIVkuKsLYx7e_gEfWHzMO2yST86_tRx53JuZlBbRPaOFpYMXhcWdw3VHFghMAfC9v8T-5uOS7aHW-bB0vY02E0tN1BBND9CsiyyU7qQPsTssWntXGf214dpf-HAGCghfNjCe5uuqALBBdjvJqtq-ZqUrN-RxzjGW36xoEnGSx4Ls_JImiyvSj0TXo9w7S2zTENyqVrToxsUpYxxtGn62rnodaoA-ghoQHVk5r7YcfKzc84bSDq1BSEoYRkKmd2wEZF68_Peqfwn0yQLPEHZDBk4NCrUvSlE2RFILzOj47qYdT5svLhTxpcePvKzmWa0C395LPj5QW5lXAVeTP33XhDDbvxWO322JiaFWHl-xwfTA9tuW3teifpKK1EHyZZzy7blABZ1ys93rObLuEYYEhjreODYKnYZSB153SW84nWOlM12x-6kZm3YPBtLXB-iTOrsskqjdm2JWR_h4P8vHog_ApBgH5FivcDrCuuETqjc-7oaK6eRDueucEqz6h-HwrdFQ7qJy0wXKEZXecjqjCGltqVXTYXoHuNv5TyyUm32JxbeSxsgb48S4UEefqjbdjhk43GgZEI9jrvooxHbBO4eRg7GqseosdI77YK-Am-mthE04OB_4TkL-BqyXs_ICB1D7GxuQHtF0dUz1VJdNLGZZoZZ2haM6tgq4jBzbiYgPHl_z1gDY_ZYD6rtLLZR6Zq2tKKJ1Sl1cWY34J1x6yRsJQnqKd7sqR8DhdT9q-mW-TMqFrdSJz_xeu4ZfszDbsIymgpWcOa_riCfGAxlGNDMFfOtPqIZmAkN_DsipTXa3b0qhu5VuLghRmi15exTXx4Vz9UtewEAKww0hT9KcDYhExSP6Dnpg1-PE3RmI4rQHJtt1a21uZ5oMrQFdUpqIwOJ9b9uXt6mWoQNwQNlWV0p0eoHc1TGKukqkSid-MY2MdIMJUYmmSxeQj3eq9mFQbnz7NlF4jlAvrQ7lZjUvnZR-BKZ4KoGLjMcBr94NQQbp_xCaytFM-j-TiequlTC9lBEMreesq7iWKdj3LhCiO0s0xQnIn-s9Jz8QqDijUVvDEF07P9TxPtgEeRkFD3HfbD69JG4RIQKmLgspZmbnuRSQ==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning selective pyc cleanup**\"},{\"type\":\"summary_text\",\"text\":\"**Identifying pycache files by modification time**\"}]}","endedAt":1788249261686},{"type":"toolCall","id":"call_m3GEZ4wMxa7GxbzDpeC80IZ9|fc_046f5546d6e20d23016a9684ad989c87d09336e9cbe3ad4524","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && rg -n '\\bAny\\b|\\bcast\\(|#\\s*(type:\\s*ignore|noqa)|except\\s+(Exception|BaseException)|(^|[^A-Za-z])(?:time|asyncio)\\.sleep\\(|pytest\\.(skip|xfail)|pytest\\.mark\\.(skip|xfail)|\\._ledger|lambda' gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py cron/physique_inline_card.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py || true","timeout":30}},{"type":"toolCall","id":"call_aI96SfpzORnp20Fdu2xIEHW5|fc_046f5546d6e20d23016a9684ad98a887d0a28dfc01f6ac66cc","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=\"$PWD/dualcoach/profile\" .venv/bin/python - <<'PY'\nimport gateway.platforms.nutrition_weekly_maintenance_contract\nimport gateway.platforms.nutrition_weekly_maintenance_io\nimport gateway.platforms.nutrition_weekly_maintenance_store\nimport gateway.platforms.nutrition_weekly_operations\nimport gateway.platforms.nutrition_weekly_dispatch_result\nimport gateway.platforms.nutrition_weekly_dispatcher\nimport gateway.platforms.telegram_weekly_host_dispatch\nimport cron.physique_inline_card\nimport tests.gateway.nutrition_weekly_maintenance_support\nimport tests.gateway.nutrition_weekly_maintenance_fs_mutations\nimport tests.gateway.nutrition_weekly_maintenance_adversarial_support\nprint('IMPORT_SMOKE_PASS')\nPY","timeout":60}},{"type":"toolCall","id":"call_b1WPrMTCLeVyueLvy0mt3jSv|fc_046f5546d6e20d23016a9684ad98b087d0b904ec18294c8c7c","name":"bash","arguments":{"command":"date -Iseconds; cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && find gateway/platforms cron tests -type f -name '*.pyc' -newermt '2026-09-01 16:49:00' -printf '%TY-%Tm-%TdT%TH:%TM:%TS %p\\n' | sort; find . -type f \\( -name '*.rej' -o -name '*.orig' \\) -newermt '2026-09-01 16:49:00' -print","timeout":30}},{"type":"toolCall","id":"call_sRJsf3V8e5Tq1R77plwUjSq8|fc_046f5546d6e20d23016a9684ad98bc87d0869ce3be7318db33","name":"bash","arguments":{"command":"for p in '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-candidate' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-transaction-preseal-v15-runtime-authority-r71b-maintenance' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/preflight-v15-runtime-authority-r71b-maintenance' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-authorization-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-executions-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance' '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-rehearsal'; do test ! -e \"$p\" && test ! -L \"$p\" || { echo \"PRESENT $p\"; exit 1; }; done; echo PACKAGE_LIVE_ROOTS_UNTOUCHED_ABSENT","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":2427,"output":1209,"cacheRead":254464,"cacheWrite":0,"reasoning":241,"totalTokens":258100,"cost":{"input":0.012135000000000002,"output":0.036270000000000004,"cacheRead":0.12723199999999998,"cacheWrite":0,"total":0.175637}},"stopReason":"toolUse","timestamp":1788249238273,"responseId":"resp_046f5546d6e20d23016a9684969e8487d092d7d3e7e50b53f1","rawStopReason":"completed"}}
{"type":"message","id":"9b444368","parentId":"86a8e8c2","timestamp":"2026-09-01T07:54:22.175Z","message":{"role":"toolResult","toolCallId":"call_m3GEZ4wMxa7GxbzDpeC80IZ9|fc_046f5546d6e20d23016a9684ad989c87d09336e9cbe3ad4524","toolName":"bash","content":[{"type":"text","text":"tests/gateway/nutrition_weekly_maintenance_fs_mutations.py:72:    for child in sorted(path.iterdir(), key=lambda item: item.name):\ngateway/platforms/nutrition_weekly_dispatcher.py:136:    store = cast(_InitializableWeeklyStore, cast(object, customer.store))\ngateway/platforms/nutrition_weekly_dispatcher.py:201:    for task in sorted(tasks, key=lambda item: item.kind == \"cutoff\"):\ngateway/platforms/nutrition_weekly_dispatcher.py:217:        is_current = lambda: _same_snapshot(\ngateway/platforms/nutrition_weekly_dispatcher.py:251:        lambda: _current_bound_summary(\ngateway/platforms/nutrition_weekly_dispatcher.py:258:            host, lambda: _same_snapshot(host, coordinator, owner, current, now)\ngateway/platforms/nutrition_weekly_operations.py:93:        self._ledger: Topic59PublicationLedgerPort = (\ngateway/platforms/nutrition_weekly_operations.py:124:            action = self._ledger.claim(projection)\ngateway/platforms/nutrition_weekly_operations.py:137:            state = self._ledger.record(action, outcome)\n"}],"isError":false,"timestamp":1788249262175}}
{"type":"message","id":"414570ea","parentId":"9b444368","timestamp":"2026-09-01T07:54:22.175Z","message":{"role":"toolResult","toolCallId":"call_aI96SfpzORnp20Fdu2xIEHW5|fc_046f5546d6e20d23016a9684ad98a887d0a28dfc01f6ac66cc","toolName":"bash","content":[{"type":"text","text":"IMPORT_SMOKE_PASS\n"}],"isError":false,"timestamp":1788249262175}}
{"type":"message","id":"5eae728d","parentId":"414570ea","timestamp":"2026-09-01T07:54:22.175Z","message":{"role":"toolResult","toolCallId":"call_b1WPrMTCLeVyueLvy0mt3jSv|fc_046f5546d6e20d23016a9684ad98b087d0b904ec18294c8c7c","toolName":"bash","content":[{"type":"text","text":"2026-09-01T16:54:21+09:00\n2026-09-01T16:52:48.9332023900 gateway/platforms/__pycache__/nutrition_weekly_maintenance_contract.cpython-312.pyc\n2026-09-01T16:52:48.9340648000 gateway/platforms/__pycache__/nutrition_weekly_maintenance_io.cpython-312.pyc\n2026-09-01T16:52:48.9350808290 gateway/platforms/__pycache__/nutrition_weekly_maintenance_store.cpython-312.pyc\n2026-09-01T16:52:48.9358367170 gateway/platforms/__pycache__/nutrition_weekly_operations.cpython-312.pyc\n2026-09-01T16:52:48.9361526340 gateway/platforms/__pycache__/nutrition_weekly_operations_publication_contract.cpython-312.pyc\n2026-09-01T16:52:48.9363537540 gateway/platforms/__pycache__/nutrition_weekly_dispatch_result.cpython-312.pyc\n2026-09-01T16:52:48.9378435590 gateway/platforms/__pycache__/nutrition_weekly_dispatcher.cpython-312.pyc\n2026-09-01T16:52:48.9389348410 gateway/platforms/__pycache__/telegram_weekly_host_dispatch.cpython-312.pyc\n2026-09-01T16:52:49.0141601540 gateway/platforms/__pycache__/telegram.cpython-312.pyc\n2026-09-01T16:52:49.0155442790 cron/__pycache__/physique_inline_card.cpython-312.pyc\n2026-09-01T16:52:49.0219862400 cron/__pycache__/scheduler.cpython-312.pyc\n2026-09-01T16:52:49.0229974510 tests/gateway/__pycache__/nutrition_weekly_maintenance_support.cpython-312.pyc\n2026-09-01T16:52:49.0234365700 tests/gateway/__pycache__/nutrition_weekly_maintenance_fs_mutations.cpython-312.pyc\n2026-09-01T16:52:49.0243003520 tests/gateway/__pycache__/nutrition_weekly_maintenance_adversarial_support.cpython-312.pyc\n2026-09-01T16:52:49.0247917400 tests/gateway/__pycache__/test_nutrition_weekly_topic59_maintenance.cpython-312.pyc\n2026-09-01T16:52:49.0251295490 tests/gateway/__pycache__/test_nutrition_weekly_topic59_maintenance_failures.cpython-312.pyc\n2026-09-01T16:52:49.0253229640 tests/gateway/__pycache__/test_nutrition_weekly_dispatcher_maintenance.cpython-312.pyc\n2026-09-01T16:52:49.0254716550 tests/cron/__pycache__/test_physique_inline_card_maintenance.cpython-312.pyc\n"}],"isError":false,"timestamp":1788249262175}}
{"type":"message","id":"1da29e77","parentId":"5eae728d","timestamp":"2026-09-01T07:54:22.175Z","message":{"role":"toolResult","toolCallId":"call_sRJsf3V8e5Tq1R77plwUjSq8|fc_046f5546d6e20d23016a9684ad98bc87d0869ce3be7318db33","toolName":"bash","content":[{"type":"text","text":"PACKAGE_LIVE_ROOTS_UNTOUCHED_ABSENT\n"}],"isError":false,"timestamp":1788249262175}}
{"type":"message","id":"9802dcc0","parentId":"1da29e77","timestamp":"2026-09-01T07:54:44.880Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Verifying unchanged dispatcher hashes**\n\n**Cleaning up bytecode and verifying test artifacts**\n\n**Rerunning Ruff compile and hashing**","startedAt":1788249264397,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9684b0503887d09135bc5448352af3\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloS9T8AKXFRgSAFLiuAEevC_Bj08tgmoUx66c2HTqUDUeKbh5Mv2HJV_eS8iVLWtIGNGhlchVa_wKOZo_e3I_dEBuBfQVD7qh_Nu9lwrUbRXZA3SNwYcFqjXrua-WrrZs4rLTFWAFPkpnzg7ofD6iYQIhZwKUhwS9ks7Q0lCVCpwEJrGWyY7tkZP-lUCqYf-_BDygM0_3hKnFqMgDiBT9hS8VWtWMQbL8yPM8V4naKInfmoFA_vfENZkJCxX5xpt1s7gwHe5yffBUR-IFvZVX6qsq08Gtaiiq8ixYuYiccbrCO8O_WEWqt_XMYkHh3v44oRCZCvivelWMZvQtgnmcxOCT5qKjLF0NTl45xBR7mW_VG0sTtJUZcR49bastzEJ7Jnrrhf_D4VrMryZR1p1qyCvEyuqjz-tp-e8wu0oh2ryYgeey9tBXc_XTmNDC3zqBsMprMlFJ9kEJ96ZAJmrcXGyrl3dOXJDdI7dUWUy6oSWKeyTOWHq1jSd0rpkZTs8SMnP1M_tuqJR4dWC0p5TwffFUldY9-7geDWOS6hUV0tE9Udi9Jv0YQFIZ0RA15S782Y-_rzxkXw3gkD01y-7PSY-KIEJwHWR5qoAdBZn_DEpxY18zP-7MlgmoBkGKCULMIotL9jY6ZeZ5vTm-aBG2IGW_HDW_q2pciz99FK2OjHP9IwQPMPpcFbPMfWjGCncPfvb2t-4mRXzvEQzJCKWz--Sj-6f-4wZRoYWG9RKtaZY_VXE55kh5b3Z0f_pQZthbPYe0e5CwIrh5aaVUqeP-wtrZD4P9s-Sx6q33RrEnZnsNyQbCiseHsycaQwQRIQREGLR7SXEc7sLN31mMEtviij38lRsODldIdwkplZk18F4Ods6z2oD7Mih63jh3O-GN_aJNaE2W49KkK2Vm0sepnnXIBV9u3squP6mssvm7hIjK5BVtmCUi7joC24yrxHoFxI7xpL9m2l5ol9NB4fqgvVxq_E8Jq2d7nE5i_KrQ7GKcjL9GAXMpvYbI6s0Rhmbe7vAXrsMJ1KKmJXaPPfyFNM82k1ZUtV1krFdldVo0D0pFsztCU6fSOT7IJI0EycGdm-k92GiDL02UNvbP0XCiTLaIzUnRgwZFXsl4TMu16NHX7BEKqMqbItUGUxS4HpOkqpiEnJsdUSNG7KkjbZCOcTz0AIM3JMLMuCNYYNTK9kUbL4fo1YSRzHHexviJ4gNCcQg4b8dkQNNR5xxaxGWuivNfeqQgdqVG-UaO57YrQn4rXg5Zmc7_48D59HWLBbKekhFBwD_38yrL0B7y-5qJPblC19IYli0bVcoPVq0GUprwRtGxySo4v190WRDFXFdf8VHHJTfbbg0Un0-Zx85UU7VHsoS7ihxS1syjLDEWLOXbuH1H48xEKSKZ4RPvwXkRqh2ITk-_Sk7IN7vA3OVBpr1GWtL8NBlvY8CyuFibxvoeauypB-PbqJo5oJhzBgjDtSJGwaegwRWqdckmls_wlmC23ZbuJgO04eEJcCsf-sbSBoFUD3bNzYyvJX-M-ybLYbgit_8evPZ5i8oloyERxBMTmq92uz8qXRZByrmfvSdnGtUZNloJOqSlMSeTPPEmeCV5u9D-sOfVjmDGhvJ3Iom_-8qslLAoOb8kP3llnhQ3Qx3vLVOz06HyDrsq-Izplej0KT0hegqkWKTRqK2IvgZkLQidnBHrWzFP0z7Liu-8qdxIPRquIe-r0MW8EOtEcAZnPgOAYuWnNj-5yUUDGk8nUQFRg9FS8cYmbHQlUmvazJu1PkOsGUaNMO7CZ_R3F23G3lG_YVkkMuzsIQtDWSBPZjWD-tGqLmhFL6OmthofThAS-nfl1P0u-oabD-NcWs_XGvDpZgWRdJDEVhCddwg-u1HSc2nYjL449sIEJsa3cF8xfDjsnUIU8VuSmWZBBHFPQ5sSFV1TIE4AfreASCOy53jpqcE0BbA_wnAsEv5AC-YIsXVFoLWT5K7UoDqSpvlRl3ZFZ3F90edm50xCHrdRl7W968arfYcDxA3GAEGA3pfqBmDmMO10XgbUeFf8p4zKC550sFQ7NnPmSTrvnAiysPf1k-ITnvi8GUvaMXO9wdxre9f5lgCGgQ9jH6mJYFXdu2WL_zWmgmeNWII3Jnxq9WOb2PcdUCObnVhyFKLElG60cZbVB8idFak8ORL4r-qdZ15mo0Z9xK_dPzZZFt4OM5ULba8P3I409fnnylM1tfZqLgvtiYfkB9Gv2XzeSUIMYUd3p8tYwXJhA9RyvfGIwyDJkH9jLzLqEpYjMqiZtypgi2Ei5UUeTHWaW-L-SA882qaroU5AAI7uLk82vFRcvqBFwDNmCdPj8qEIPZMht0o0CnL0kWviNYKVAshS2Nj0ALHQStwNbKohfwILZK4HvpkyAGw-5Kyb_739cMGNXXi3_-BP8yqpaOm7NAyyMaBVh3fex9xveU6G_5sBDw2ea6dGqc8QC27CvU_d4zglmEGRmo10qF2Q0_XnDHXikP-76laJ3mBe_EVvq9WXIUOKnNpncTgsQ25inA2Is31m2KlJCmdTJbsUyQ1owhERK0-L65B2roOk9AVFTv0x6IbI_RcpkO4ZXxqpZ4CNWnI0YY5njKv7ojBEafVqQ43y5rx1VoT6H4m7gZP9uFIEpJbvCSOte-TUgQyb0s92AStWtU8Q-uGy7dNTlBssKM30-oOD7HNbxo4zQRzZaHvnYJu5gB7-aPf_c9wnxElXL73HDKeLaDFohK6Bg38KGckFSsA_5qenIH-I4iWrsirnUyAO6tvRP8s-LgheBcApHsFgeL-zRt78x_mraAudIFKUnXw_ffF3NKQDm30wk6oyGDSfXvzSdsRg0PqL-BfDqYVxyg8aaqHAUNPS6IKzMj0PSvxNY1zAHqrJ42rsCO5Nv0sH3Y4jIHidTa1fnZUGcXkLDGmFZeqrGzlwUF9lShuMiRxx8v7B6vNOo6ndWre7CgGhBtk_tiKTs0zEJWAyEH_Ox99EARooa0Um-iqVp2ZlE0anGbJ97Yiel7GciYnniP46eNnsBSjgZDegiaFp9OMzHvFj1MIwNDhNB-WX2VpWOCymHqZy8BLB7X9XxrefVB4OXvO4aUFUE6savD-4rJbmbp9CVBWig5WTZQzU2Par1uwJkXTZWvFxU2QQwo9gR6-3_1QHL5yBFVTHJYaL4sEqrJrAnzv84pKUQYJsj8lAgjAWTupIt4nTH2uDT7iXmtNEf5tUwDtU7XQ_yvpXcHoKi6LTNbBPwRnzOhOoLe68x-FRetLQop3l9HQWrOHwNH55KIgrbbN453NTTdB0L0RSs_pFOZ2Ea3dx7tpFdPjGs7VoXwfCjyLuyqjf26394u9GQjL-xzPDSxZbx7H3jYH0SHLog4ijfK-lzUsEi8SCwF3Nal6BhcALBw3b3cveoehcLTWnQSay-zzXc58jQgvZS576JsuuQoigqY1j8bdG_sZaApf5ORwTBKheiQB_nR29GCvGBrex3e5eXo9EcJQUx9qe_UteMevlu1bVz2b99_cPahxfogwegtgq-JeRFBwvmYpQmmqpel8COVsUdXvQ56gHl17RyexwNuvGyTlraLWGRjqCkDtMyVMAf3qv0qZ8u99D3v-znIuHgp5kSCVMfdW6m7zqYogjgTjCghF5REYi3IGYqtoJ9LsKapL0MP9s99Hb882zk43pVodX2aWPnyBMHTA9KAR7S1IUEN90s8Uq_CKKCHmuMRb7yaD8rDX5Jk_FvC94MZ7IM8AQIIdcmW8hlCtkSIp0g28fgv8GbyhM-fHPuNtE1djUQDvTukbhdxf3U2uNauhdmrmGJO3IiqK-2xM7FaUmXG4vYWyVpOC2sFkbEbUpMKh14HQHbvhpvL9ZsK5SYFiy1vD0i3dp1iOshUWXg8XdiRg2hJuLkK_Z0u3HoxJH3QSJwCVO16JImH7BslciUOZflkTDc4Zwqeb620dv8N5qUHBFkuB_DraKXdXJbhzBCzhVTpVRAFdfAPjI-tWz8rTwwQW7CYaMLtv58lt_ZXZb7uIXPiyHiIbEovzCjUIy--zSml_EEPUoZK7B379fIbZBs65cCe7Fl5UQ3PtgiU5EJlt9f914UbnipTqjq6YY2uC6ZCzCqwqbhgOpVVhQNTKIrYB_aY3oKFu8mz9zncZ-ruNEDPpl824dQno1NqMXkNfJxdETzyocEVlFXDfnb4nArlE97VOHZE5qbuEgoyBkAI40vgcHhtAIeeptAMOrpbOOR00Gjw8dqqzvH6C7h3VSsgojQHoxDw=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Verifying unchanged dispatcher hashes**\"},{\"type\":\"summary_text\",\"text\":\"**Cleaning up bytecode and verifying test artifacts**\"},{\"type\":\"summary_text\",\"text\":\"**Rerunning Ruff compile and hashing**\"}]}","endedAt":1788249277702},{"type":"toolCall","id":"call_hEDUq1p9P0EH2040gocDD59g|fc_046f5546d6e20d23016a9684bd9ce487d0bc5cc9c4f8e8bea8","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && rm -f \\\ngateway/platforms/__pycache__/nutrition_weekly_maintenance_contract.cpython-312.pyc \\\ngateway/platforms/__pycache__/nutrition_weekly_maintenance_io.cpython-312.pyc \\\ngateway/platforms/__pycache__/nutrition_weekly_maintenance_store.cpython-312.pyc \\\ngateway/platforms/__pycache__/nutrition_weekly_operations.cpython-312.pyc \\\ngateway/platforms/__pycache__/nutrition_weekly_operations_publication_contract.cpython-312.pyc \\\ngateway/platforms/__pycache__/nutrition_weekly_dispatch_result.cpython-312.pyc \\\ngateway/platforms/__pycache__/nutrition_weekly_dispatcher.cpython-312.pyc \\\ngateway/platforms/__pycache__/telegram_weekly_host_dispatch.cpython-312.pyc \\\ngateway/platforms/__pycache__/telegram.cpython-312.pyc \\\ncron/__pycache__/physique_inline_card.cpython-312.pyc \\\ncron/__pycache__/scheduler.cpython-312.pyc \\\ntests/gateway/__pycache__/nutrition_weekly_maintenance_support.cpython-312.pyc \\\ntests/gateway/__pycache__/nutrition_weekly_maintenance_fs_mutations.cpython-312.pyc \\\ntests/gateway/__pycache__/nutrition_weekly_maintenance_adversarial_support.cpython-312.pyc \\\ntests/gateway/__pycache__/test_nutrition_weekly_topic59_maintenance.cpython-312.pyc \\\ntests/gateway/__pycache__/test_nutrition_weekly_topic59_maintenance_failures.cpython-312.pyc \\\ntests/gateway/__pycache__/test_nutrition_weekly_dispatcher_maintenance.cpython-312.pyc \\\ntests/cron/__pycache__/test_physique_inline_card_maintenance.cpython-312.pyc; rm -f /tmp/r71b_delta_gid.py /tmp/r71b_delta_manual.py; test -z \"$(find gateway/platforms cron tests -type f -name '*.pyc' -newermt '2026-09-01 16:49:00' -print -quit)\"; test ! -e /tmp/r71b_delta_gid.py; test ! -e /tmp/r71b_delta_manual.py; echo CLEANUP_PASS","timeout":30}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":2572,"output":974,"cacheRead":256512,"cacheWrite":0,"reasoning":434,"totalTokens":260058,"cost":{"input":0.012860000000000002,"output":0.02922,"cacheRead":0.12825599999999998,"cacheWrite":0,"total":0.170336}},"stopReason":"toolUse","timestamp":1788249262215,"responseId":"resp_046f5546d6e20d23016a9684ae8ad087d08668c02c545c1d9d","rawStopReason":"completed"}}
{"type":"message","id":"1cdedc4c","parentId":"9802dcc0","timestamp":"2026-09-01T07:54:44.906Z","message":{"role":"toolResult","toolCallId":"call_hEDUq1p9P0EH2040gocDD59g|fc_046f5546d6e20d23016a9684bd9ce487d0bc5cc9c4f8e8bea8","toolName":"bash","content":[{"type":"text","text":"CLEANUP_PASS\n"}],"isError":false,"timestamp":1788249284906}}
{"type":"message","id":"20f269ce","parentId":"1cdedc4c","timestamp":"2026-09-01T07:55:02.301Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Planning evidence replacement with hashing**","startedAt":1788249286736,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9684c6a48c87d0b5ba658ccfa69ec2\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloTHOy5KPrX2ZA28kpNLaFqn8GSjYJMZMeAd60deWFp9Mc3ZBohfs9pkVVhLcnnYEWEUxdGon77Oe81P8cPtSJeHQwt-bQvxc8ry5YrGYr3TQSlOPKLzN6txK1e2o7mb-pQ0JWNLxcbaisokwMuuMUpgwhUaOTDaYZCzzl-kaKGi8W9PbbJY8YS3vIhrZh48w355_JG1Iu3IxDvmV9H8sKYe4H_JbS51oUkgt7WXJ7YmPqbi37WKG-hw_2cR7aY7ea7lHn5N_553mhb6LFyYrNp-mdr-drS1K3B9dIzIhR6B_u57XfHCD2k-26KMCSdF3hWqxyyW9tmxloL_FUFOESCEwwWr1oZO8F77MvorqbS7J84-DKfzFmf2qeWavqjjxZfTQFroijPn-wrhMsKD9BbSLxoBmpDZlw94FmVCg2idfkCw_pj6r6vyim6aJoEBmyzUPcstyb29TETFxALqOtX4CaaIeQ-cqplzi5bvizFk4KmaEDNr_fUhP04QeUpyKSdak69e5F-2FNSfHkcy_fGRMyzKu0B6NHz9Sv94Ws2aakAdPrQBa3Cky4P-tBcBSSLTpugraZhTFq_PDfWX6NOQgw6FOxcKXiM4WQVUNBIAKEPvi5r-p8HdYufqUM1MP6ZdiqyXlD2JrU8PtXADU0cyDTkr_gV0lg_gUz2OJip1HNztLkTxL1-BJiH8AWs0B8iDK-0IAq7jEfuzKj76dIBEAQDP71XIH5FuMqJMm6iex0JRNLicmFWDuSQZr9Ji9iX7VSnVkLVnKYCi9RWhwVGniqYZAtq0rgSBEMQYA8e1vAa8ItN9PCGo0rNaHBifUp3sjUsQAZbj0OC903D-soT_wfegKtTDDp_qtOaFewsm01eU3ph0QLyfqG0PvbO6AFZrOXUXUhWfGNpsIljYfIEBQQh-XHRhOqdMW1smSVyGyxIR9KWeL0tgTnkzwBB-awjh2OuvbwuziCRfiJNtxmoV6s_UESR62MvX6DVLADIW07y1FKWdxlmlj5ygBt499oQgUc2nv0kIHIvLp2omAdEtrOmTNq6ohrggFiezCM6-B96riBt22rZpMPXqqv8lp_r2iIRPfg_zw3Lzk8cHMDRe4gcC5LWliJ-a3kd4le-T8yC3qslnO9K5xrX2dO_k34_6_udtCG9Iiaqq0a_GHMJBur7FpVx8mnbGbSILRtmGJ0SbMhpss3le1w09pYJsqcJGN1j51quFg6aNzssts6n-xWBCyKAKg9Yqjtx8MAFCoA0vGnTL_FRSVLYiL2il8gw8e-aFOD4U-i92_hDNokOYq3ecBfcDEj3SaP5eFOPkDFWQ2loFHnjInFwOOSi_Oeiuo7NK2f0ikbbP7UhuljujWe847b8WeIP_7C__8OjMkM5XacBLYzMlahFtzoa6H84ErYb52LKtbCfQr4L2FM2pgjMtsBUpt_JGvAKORihVLC0=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Planning evidence replacement with hashing**\"}]}","endedAt":1788249287567},{"type":"text","text":"All four delta blockers now close independently: wrong-GID denial is byte-stable and zero-call with a valid same-GID control; 52 deterministic rejects and both 61/240 suites pass; complete hashes match; the exact strict set is clean in fresh basedpyright, ty, and current LSP. I’m replacing the prior needs-fix artifact with the confirmed delta receipt.","textSignature":"{\"v\":1,\"id\":\"msg_046f5546d6e20d23016a9684c77b9487d08ed2c391d8abb740\",\"phase\":\"commentary\"}"},{"type":"toolCall","id":"call_StSjogt2JTudEmHoznrM72pH|fc_046f5546d6e20d23016a9684d616a487d08d5a76b1298821c5","name":"bash","arguments":{"command":"cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && sha256sum gateway/platforms/nutrition_weekly_maintenance_contract.py gateway/platforms/nutrition_weekly_maintenance_io.py gateway/platforms/nutrition_weekly_maintenance_store.py gateway/platforms/nutrition_weekly_operations.py gateway/platforms/nutrition_weekly_operations_publication_contract.py gateway/platforms/nutrition_weekly_dispatch_result.py gateway/platforms/nutrition_weekly_dispatcher.py gateway/platforms/telegram_weekly_host_dispatch.py gateway/platforms/telegram.py cron/physique_inline_card.py cron/scheduler.py tests/gateway/nutrition_weekly_maintenance_support.py tests/gateway/nutrition_weekly_maintenance_fs_mutations.py tests/gateway/nutrition_weekly_maintenance_adversarial_support.py tests/gateway/test_nutrition_weekly_topic59_maintenance.py tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py tests/cron/test_physique_inline_card_maintenance.py tests/gateway/test_nutrition_weekly_operations_topic59.py tests/cron/test_physique_inline_card.py","timeout":30}},{"type":"toolCall","id":"call_XMzhL2cK3mSSkteQEH4pz2Vl|fc_046f5546d6e20d23016a9684d616bc87d0a5f0169c352536f8","name":"bash","arguments":{"command":"date -Iseconds; cd '/home/cube/projects/richard/.worktrees/nutricoach-v150-combined' && printf 'generated_pyc='; find gateway/platforms cron tests -type f -name '*.pyc' -newermt '2026-09-01 16:49:00' | wc -l; printf 'new_patch_artifacts='; find . -type f \\( -name '*.rej' -o -name '*.orig' \\) -newermt '2026-09-01 16:49:00' | wc -l","timeout":20}},{"type":"toolCall","id":"call_yZfHFV49dowPUukebOf6Y3Fh|fc_046f5546d6e20d23016a9684d616c487d0a7068de828110ee4","name":"bash","arguments":{"command":"for p in '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-candidate' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-transaction-preseal-v15-runtime-authority-r71b-maintenance' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/preflight-v15-runtime-authority-r71b-maintenance' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-authorization-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance' '/home/cube/.hermes/migrations/nutricoach-v1.5.0-combined/live-executions-v15/nutricoach-v150-v15-runtime-authority-r71b-maintenance' '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-v150-combined/task-v15r71b-maintenance-rehearsal'; do test ! -e \"$p\" && test ! -L \"$p\" || exit 1; done; echo ROOTS_ABSENT","timeout":20}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":1514,"output":817,"cacheRead":258560,"cacheWrite":0,"reasoning":25,"totalTokens":260891,"cost":{"input":0.00757,"output":0.02451,"cacheRead":0.12928,"cacheWrite":0,"total":0.16136}},"stopReason":"toolUse","timestamp":1788249284955,"responseId":"resp_046f5546d6e20d23016a9684c5547887d0bc618a94a729f1a9","rawStopReason":"completed"}}
{"type":"message","id":"faadb608","parentId":"20f269ce","timestamp":"2026-09-01T07:55:02.366Z","message":{"role":"toolResult","toolCallId":"call_StSjogt2JTudEmHoznrM72pH|fc_046f5546d6e20d23016a9684d616a487d08d5a76b1298821c5","toolName":"bash","content":[{"type":"text","text":"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619  gateway/platforms/nutrition_weekly_maintenance_contract.py\n9df3f5f368e16fa6019674620a1fa06ba767ac13babd130b0ea79655ab7cdb60  gateway/platforms/nutrition_weekly_maintenance_io.py\n1affe722d322de8d4e7ae40920dfbcd25a5915008c732193123241eb4e26e5fa  gateway/platforms/nutrition_weekly_maintenance_store.py\n4a3f27b30d0c639ce6b0020e5f81a386bae22b3a0a5568a497d0a8b4dcbc3fe6  gateway/platforms/nutrition_weekly_operations.py\nc75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6  gateway/platforms/nutrition_weekly_operations_publication_contract.py\n3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2  gateway/platforms/nutrition_weekly_dispatch_result.py\n9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b  gateway/platforms/nutrition_weekly_dispatcher.py\n6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88  gateway/platforms/telegram_weekly_host_dispatch.py\n5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7  gateway/platforms/telegram.py\n16788d449f33b8e0f6c0e8a5db55d1455b3ee694a984307283b07a6b9db29b67  cron/physique_inline_card.py\n07fddef7d2df68e2ddee243f5c0901eb15054f91a642dcd96723a139e30f461f  cron/scheduler.py\n810ab4768633142b11b9889f08a79789dde79001ae82f7cb7bc6bc1b1213df5d  tests/gateway/nutrition_weekly_maintenance_support.py\n619b6188e3df38613bd166e4c372b46424888a164d069a25ab4d07a07e611d7f  tests/gateway/nutrition_weekly_maintenance_fs_mutations.py\n8cef1f9a7bcccecab843f1c767d870087f57b1d36ce41f48d6f2d5cddc919e25  tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\n4100ab82d11b78a78cffceb6c1150c6ffc448d8fa5b4b97ec8a5b27cc3b4cab7  tests/gateway/test_nutrition_weekly_topic59_maintenance.py\nbd6fc29371c02c8f627f60d8879ccf77a0596c6e5ed13b91938f6212d2364664  tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\n89f21c1535039ce58e7bc404727fe806a6976bdef6708fa2a31b292e836be7fe  tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\n4ce999edcfb4949c6df077026c3dd5282b80ffecc0e268786f442a325c1e357e  tests/cron/test_physique_inline_card_maintenance.py\nd0535437501dc31c7a14de07dab1f27eb96a3d8c27efcf113101827b7055661a  tests/gateway/test_nutrition_weekly_operations_topic59.py\n931215dab7c03e4cf1eec8e9da96a5895e8ba119c99843aa18036ddd3eaaab02  tests/cron/test_physique_inline_card.py\n"}],"isError":false,"timestamp":1788249302366}}
{"type":"message","id":"4278d7b0","parentId":"faadb608","timestamp":"2026-09-01T07:55:02.366Z","message":{"role":"toolResult","toolCallId":"call_XMzhL2cK3mSSkteQEH4pz2Vl|fc_046f5546d6e20d23016a9684d616bc87d0a5f0169c352536f8","toolName":"bash","content":[{"type":"text","text":"2026-09-01T16:55:02+09:00\ngenerated_pyc=0\nnew_patch_artifacts=0\n"}],"isError":false,"timestamp":1788249302366}}
{"type":"message","id":"82b8971a","parentId":"4278d7b0","timestamp":"2026-09-01T07:55:02.366Z","message":{"role":"toolResult","toolCallId":"call_yZfHFV49dowPUukebOf6Y3Fh|fc_046f5546d6e20d23016a9684d616c487d0a7068de828110ee4","toolName":"bash","content":[{"type":"text","text":"ROOTS_ABSENT\n"}],"isError":false,"timestamp":1788249302366}}
{"type":"message","id":"36049a1d","parentId":"82b8971a","timestamp":"2026-09-01T07:55:17.183Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Confirming strict file hash consistency**\n\n**Assessing changed scheduler regions manually**","startedAt":1788249306897,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9684dacff887d08b446dfbda87beb4\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloTkfCHEnFMtjJ_gzkGLmq9iTepo_ruIg6Vdm3160ppCc2k7BcBhgvK6mww-MdS3NZFybtUy0rw01lwKde0tR2gd_-KEOCShG-do5K4U7EoEJKxfPyrh74Ztq6VQNLuw1y5POQgVpvEtJJOl3hH2d7C_PQZV3v7SvPFJOQ4iDTZ25dVq2ahPf2dd92CQr2L862LdemlPgFkFHS7e8ZOXLt3KIv9ZIxWdfsPMoLxUy1SOTkSgk17MNtPA19pb67JJNBfpopHQjeQcQs9HK5SJ-MhOxYSYQBcMytnENJt1HjdbN6rLNbkU4IN7TKEz-tVQWZTYJXm9F5lbtWRVyarjvzEJ5WulgpG3XHc7AOWZAnst8evdbBbR0Ab9roXyImUNpfEZu_FD11mqV3zwkvTPEGB4idDU2VCbJpotSE6h4d3NxIUsNvLv0maRVI3Smwkeoqgra8gu_gj4DMmoOrMYTDiyIvH07cNIpIu8Two8YJwlIbWLE27Z_4tFc-bnUapcC2EuwyyQqgX5u4BVoKzueWa0izdfsESNA3us0n4Ehrwp18nm_Bik1zggBeg4tLhEb8DW8azBRU9ENIO8IbYGk7L2vv80CRo-EO7Dn4fAsUA77pS6CSyK9gu18I3uh4QxNc0cCXhYxlxpNSRo9ZYMrcgjuNxAox8V4WObFFOXAps7bdooYEOUssPAI1GPQjqF9y5PA89JWjzGpFKF48vcnES5eIwmzBet8oGA-_J_QvcGyTTei4RF-WWLxSDrbZQ0dDc5jPpY-Xix_sw5LGvFtIRZa3_DFR7SJpMScU93Vcp9YIXNacIrJaNFOm0peVnpOLC6tdlX5X9aS5oIp6lyygsX_qT4cr8LRkPh7h_p_Tja2Y6l-4koR5AM1BKapsgUzdPJucLUX3igJqf79ocoqGhLIp1fb5y-Muf50vkbM_QnpHiKsFf_uW8n8o0itGK3IPb7q-8h3xkXFcFkp12sO1LxJzP87zU9c1_e0yU88FSYoR7lxTdh6mXgOa7BS6g7v5U-4nDY8DWPmuMFM6xFAG4xcog92gnwocD7xCw4D-gnZ1Vj4U6uAPoScEAAl8a5ubw-FSdOwjIa-aYI_tcmm_Dtvf1NNFmJckCgQntpoGNVIR8dW_lP6YzxDrW5ZYz6jh_kR77hVk1IryuJ2MtG7D1OH-yclywT8tldmenMqs5HeUqjWNkNtA5bQjnF9klPrUp7-ZF-_i3BuLi68e1PrXv4XqJi_4mIsLpsdu_hghTtL65I69fwHI20zej3sviqwLMtsrzh8DhDB-3mNCKNrQhZl632fFAMYhDLV-ZrrXW-3WCwmgQkv7pUOkbWYSfz-shT7SBUvmsGppsuiX2jV6N8vmtn4cp8ozRPmfF6AUJ5H2eFKdp4s-wkKphFYUJWC-xWB53ew6LUV09fOcn19qOce0MXzXO3cOJ2nCYg4UD6b8uelbpDoxJOvy4bkAtX_DMPTFLeuF_CkGzjny6WdiOXp4o4-_4k504QIkiwiOaM-8kn4Jb8J4i-BmXLMlxRFUzXG0O48AaZh9kJuboUzL-VIUyj7Rhjnr6w7ODTqH1Ew_t2sVc061-RdmqXCohMMJMpTnNf4qQBDW3hZpAyOzH6jw0omQlNe7Q-1CfYIzJ3lmRjXqKu7uhEXAR5q1AquihxVsES4beD9LAdIuhC3lDLDYAh2nndLnloKvjFUgV9zbDpqcpB9596rTwXJB1IR6D2m73FrwYff9uiaP26SnsXb0ZrCLT9WK5mUUMlWhjST0WK9xFdfac2ep1dUB2bEDmyCEiZlRgNSeNAVwwu_Rbitx-6Cj1VmoZiVx2pHC6s8E7clUpt2O0-X_6AeStK8CLQQtSmhFhgH0t-XGj3gtl8UWVHXXjgx6rWpafSU2NQqnpPyoA0jCN1ZEqq1NWo9gRJ_UqzGPlQHKdoU_BbsnT8Naph0HhaTv4DVRxqiwTpuRKtuesYy1sAoNx-_Kva1B53O9I5fRfgZ7jupIgswKHxsd3VarIKAMKlgDEdhnnAvSlplIIueWKq_LHaxHocpVBYd9QYe0noNMYZNMvbsMZFUExenXIm54wUW25vXTjGflOgrAFdDK_5x-N8SoRbmr-M8hQw_6XYKFVLPl-GbzqAlh1PGac_xExQWzEkCUj_ybjtznfacfydajm75cID-2tz9kQ-76buUuoVhR1DY5bibjC-QdUtD1BRGTH6M3klvZv8yk_V2q6trNqBoBJZrx2kjA2bHxgO_ojE1lmSiSNnZyxswh9UCgaieENfXs65s4imGRBnzZcXwlXsl2cl-T4YHGJ5GmzBH3mio-1PvMZPBaOFshGC6W6L7j30I073wy4lD70_Q6fV70Zu31zvXHmdhwI_7yR1gNXbJQiUkKPA-Ta5mLSEafpO-l_h9VQrH9pYo6JG32mFK9YgQk1jlnHDS_jyZB9XgNhM9pIWiOS2GdxKfo2oybA7b6E0NT1J8hDc1ujtFLd4SUQy2ynHyNB_q1Uwex0bhrqpVuDhst-WWZMgg6OxcKTTg7p15G8Xsk0iTLvH6jv5f_ZRT45b16X9QT1pJVR4RcvrUIvRTAuoRwO_-gWXhNHwubenep_o3fc4mDrJIoRrGAxOpCj-Pv7au8AhdKST_anvcZ6IcWS9HSEVdbqULuYRf3FaikOqPCMoVi0FZSWRtbkvmYoScayX2ctiYX_Tl_sbSPoqTdDWZiQJtHlyWy9EwCUct0KYAynjRIkKkMmWQ8195oS3uWn8L4WaomFR9-GoLhiJXGvIiZx5MwH-96iBbs32Vhr-oiox41aZHfiBQUINudkB-eW_08RHi_s8FA6EAPeemwJtviGwRUGhVekWhjb3SKYh9wiV_0JL5GI5BB96t3kr9lyUSLLbh8KRpc2qzu2Fc5Xf3-qEkw5BADDfFJV4tzvvUgOp6DfO-z2ajjm8AYNXeOBaqt1NgBga7BK2kLMA_B6TsccgoIeG10iBvxUVqary_IH6ULHr1FtCaUdWQwcmyxP2u7Xk1dsoj4J4nlDGrWzqGEWZcbXWO7p5msY7_xzpDrl5KU-y4oHx7EHjxJvWnzzTAtYQuEX9zH2Di9nD22Cw5chFZZ5cBTtgDA0wuIq6hqv6PQifLeKHITV7yU5KsXstt04G7Hl5a5K9AtXeharXxF4TP22Kqxn6xCMvjGHNM6arVgAjcs8c2oDl97I59IQ8I8lfSgEkyw6YPOaEuoo8fPOMs2N59uqpzg55OOVROzSpEIq913iS78qVQSpyBoMERQw5sfNogv6StopfKb8_zkmmCXExsgQuPUeX8XgWU92oQfn9bC3Y5fDT_5znnAlISH-y7uOB6BPN3-0IqFSTgIA129BRdKpY3InpZeqIyo6tjci4leCsq2Q123PrhpPG\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Confirming strict file hash consistency**\"},{\"type\":\"summary_text\",\"text\":\"**Assessing changed scheduler regions manually**\"}]}","endedAt":1788249316904},{"type":"toolCall","id":"call_dDB3yDjUmrUdWe3gQhIqxaHt|fc_046f5546d6e20d23016a9684e4d15887d0b1e2a2c29d831c9f","name":"read","arguments":{"path":"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/cron/scheduler.py","offset":2070,"limit":48}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":2385,"output":370,"cacheRead":259584,"cacheWrite":0,"reasoning":319,"totalTokens":262339,"cost":{"input":0.011925000000000002,"output":0.0111,"cacheRead":0.129792,"cacheWrite":0,"total":0.15281699999999998}},"stopReason":"toolUse","timestamp":1788249302414,"responseId":"resp_046f5546d6e20d23016a9684d6d5d887d0933a9fab503b507b","rawStopReason":"completed"}}
{"type":"message","id":"51f68be1","parentId":"36049a1d","timestamp":"2026-09-01T07:55:17.188Z","message":{"role":"toolResult","toolCallId":"call_dDB3yDjUmrUdWe3gQhIqxaHt|fc_046f5546d6e20d23016a9684e4d15887d0b1e2a2c29d831c9f","toolName":"read","content":[{"type":"text","text":"        if job.get(\"inline_card\") in {\"physique-checkin-morning\", \"physique-source-review\", \"nutrition-coaching-tick\"}:\n            # A stdout-delivered cron job cannot attach Telegram keyboards.\n            # This narrow profile-gated route instead uses the already-live\n            # adapter and claims the KST day before it attempts delivery.\n            from cron.physique_inline_card import launch_scheduled_card\n            from gateway.config import Platform\n\n            adapter = (adapters or {}).get(Platform.TELEGRAM)\n            launched = launch_scheduled_card(\n                get_hermes_home(),\n                adapter,\n                loop,\n                _hermes_now(),\n                job[\"inline_card\"],\n            )\n            from cron.physique_inline_card import scheduled_launch_record\n\n            record = scheduled_launch_record(launched)\n            output = f\"# Physique inline card: {job['inline_card']}\\n\\n\"\n            output += f\"Status: {record.status.value}\\n\"\n            if record.error is not None:\n                output += f\"Reason: {record.error}\\n\"\n            mark_job_run(job[\"id\"], record.success, record.error)\n            output_file = save_job_output(job[\"id\"], output)\n            if verbose:\n                logger.info(\"Output saved to: %s\", output_file)\n            return True\n\n        success, output, final_response, error = run_job(job)\n\n        output_file = save_job_output(job[\"id\"], output)\n        if verbose:\n            logger.info(\"Output saved to: %s\", output_file)\n\n        # Deliver the final response to the origin/target chat.\n        # If the agent responded with [SILENT], skip delivery (but\n        # output is already saved above).  Failed jobs always deliver.\n        deliver_content = final_response if success else _summarize_cron_failure_for_delivery(job, error)\n        # Treat whitespace-only final responses the same as empty\n        # responses: do not deliver a blank message, and let the\n        # empty-response guard below mark the run as a soft failure.\n        should_deliver = bool(deliver_content.strip())\n        if should_deliver and success and SILENT_MARKER in deliver_content.strip().upper():\n            logger.info(\"Job '%s': agent returned %s — skipping delivery\", job[\"id\"], SILENT_MARKER)\n            should_deliver = False\n\n        delivery_error = None\n        if should_deliver:\n\n[248 more lines in file. Use offset=2118 to continue.]"}],"isError":false,"timestamp":1788249317188}}
{"type":"message","id":"2586e28f","parentId":"51f68be1","timestamp":"2026-09-01T07:56:14.173Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Writing evidence schema v2 delta**","startedAt":1788249319173,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a9684e7167c87d082395be376e08241\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloToMYsRH1KooPqKZqpsOLiXHKMfVwhrFfO-RzjyklRmOtaQc-X63XsZhHIBX8HW4FTEGtknc3s6L7kWihKXbOFsGL5c8V3IaoRdVfpYVubMoGbPGBMaMIBpA1InvVvqFMlP7zBpttXGPjaH5Om5C3KBYZRgxBuBLUEO48CkonASOs8TciiXXMyRH8uMYLkfy_yj5yUzNIR4zgvXTSw_ySOz-3e8pccGElWfsE7DIACgSyLNpBH2trhOhLxiOOpOM84dRVgweYraKuEfNpJ03J9o3Ri92ntq-VegfhUIFekM1H7PHFW_bBlen4v5NG6UiP0g-c-Sd4NKVjR9TcnlPzWNHwwTTMrp_cyPigkxuvV7XQoQrlCRIUjYn-GDWcQe4WN0h3Zem_q6aRazzlrYl2X_LumGmQk3FEuFOl7DFFzsIx_JWQuFPd2Ofbw-VOdW6KyncAppkBi3jCLFpMUea2wpm55MkBLUvOtOWIzKFms17JSkbzQaJ-rLMdmBUoKzzwvvrcC--VO2KLbwIHSTF5Yv1hAhIa8b18X4nafPNEY_42MiTc5r16CRWL7KtdjLrLy_Ti4YJJFgNAnN7o77uM6mDnEohWsVfuXQRu5kTGp80dQGzkSAOcuOmfmVxvZ2D6KJw6g6e8OiFFVroWrtj8CtVIM_kZz4IpbQYpj1gCn3YIVNklX_C062a8r9iCaz90KB6wA7nXXssOvBH3gRF_IJ8d_LwX8K69B7dxMqtqxGvB0NmYkp3TKhMknt5pwP5lmlklyUzL_u-QG3_LhKDEzahUA5G7O_0xsuYV02P3MDDiZ2kOrvnjyz_VRgbuD74fYkZfJAacAhvL_Mk8UB7qlsOvHCj2Mkuq4MnPErZ-sbMX8LMblrixpU6MovoFS7z-rOQHY9I8QN5apY2RFDRKFuU6nqnHtHl1L2WaDlaeB7V8aADHaWzy0X--I1i_XAVH86szR2FSApVrE8CWs-xc0OF9Kp733CPses8LWYYauMmf3kU-KMTMoxTbJCk1fCJQhnT_EL22u6pWUd5CyUNfpLlcdm_qA0dC5CgGfxqa-gd_5YRsWBFKPmRxTusjneLOLthC7_mfnZTl7eYJLKokTzoBQRCbPF9ynnDlu7ae67NOvGi3dH0Fz9UQlvaPDxN7MdJpMbSfN64-pD2zCDHaMCW-XOAe9usM2H_V-dcLz-y27EWB-70fob8SeSeFVo3IA0xtiNI3t_L4UgqNLOWgY0Nn43bCfmBVBHtaxdNsjzB3zlMWkPzy5zjwFd-Tah5AXeiJB7LfkZISs_Vgtzt87pDa8utRXKksch9fp3I_X5SAwkzKJb3fYY8qTxDApMCabqbaGtuwwOxjkzk7_ZW92JQLzb6L8NzcjfznQeCPr7iXq47uJoqgneKa32ZpyP50BjmYLEmXRnaSXZ0yZVn-_z-kA3msFpvoxQaldkHzOqsClSlOdEAtVzZWzTgMhEOXJdh0vv58AmZ7wnqxJJqLH7wA==\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Writing evidence schema v2 delta**\"}]}","endedAt":1788249321066},{"type":"toolCall","id":"call_pKsU84s4ikwS4KjKTobyNKRG|fc_046f5546d6e20d23016a9684e8fa9887d0b7d191b72ae1cade","name":"write","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json","content":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-adversarial-v2\",\n  \"task_id\": \"st_01a05bd2\",\n  \"review_mode\": \"delta_only_re_review\",\n  \"reviewed_claim_task_id\": \"st_01a05bc2\",\n  \"captured_at\": \"2026-09-01T16:55:02+09:00\",\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"verdict\": \"confirmed\",\n  \"confidence\": 0.99,\n  \"blocker_count\": 0,\n  \"frozen_prior_approved_scope\": [\n    \"valid hold\",\n    \"crash recovery\",\n    \"concurrency\",\n    \"typed propagation\",\n    \"manual same-day and next-day behavior\"\n  ],\n  \"delta_blocker_closure\": {\n    \"maintenance_lock_wrong_gid\": {\n      \"status\": \"closed\",\n      \"independent_wrong_gid_result\": {\n        \"decision\": \"deny\",\n        \"reason\": \"filesystem_contract\",\n        \"publication\": \"refused\",\n        \"artifacts_byte_and_metadata_unchanged\": true,\n        \"claim_calls\": 0,\n        \"record_calls\": 0,\n        \"send_calls\": 0,\n        \"edit_calls\": 0,\n        \"network_calls\": 0,\n        \"message_id\": null,\n        \"maintenance_audit_digest\": null,\n        \"delivery_ledger_exists\": false,\n        \"audit_exists\": false\n      },\n      \"independent_same_gid_control\": {\n        \"publication\": \"noop_maintenance\",\n        \"audit_exists\": true,\n        \"audit_digest_present\": true,\n        \"claim_calls\": 0,\n        \"record_calls\": 0,\n        \"send_calls\": 0,\n        \"edit_calls\": 0,\n        \"network_calls\": 0,\n        \"message_id\": null\n      },\n      \"source_proof\": \"OwnedMaintenanceDirectory carries the profile uid/gid; _evaluate_locked supplies both to open_file for maintenance.lock, and optional hold/audit reads use the same uid/gid.\"\n    },\n    \"landed_negative_matrix\": {\n      \"status\": \"closed\",\n      \"parameterized_cases\": 51,\n      \"dedicated_wrong_gid_case\": 1,\n      \"total\": 52,\n      \"collection_verified\": true,\n      \"execution\": \"52 passed as part of focused 61\",\n      \"deterministic\": true,\n      \"manual_only\": false,\n      \"categories_verified\": [\n        \"credential missing/empty/malformed/oversized/noncanonical/extra/hash\",\n        \"credential symlink/hardlink/mode/file-kind/owner\",\n        \"hold empty/malformed/oversized/noncanonical/extra/early/expired/replay\",\n        \"candidate/config/route/customer/card-slot/day binding mismatch\",\n        \"maintenance directory symlink/mode/gid/owner\",\n        \"active hold symlink/hardlink/mode/file-kind/gid/owner\",\n        \"lock symlink/hardlink/mode/file-kind/gid/owner\",\n        \"audit symlink/hardlink/mode/file-kind/gid/owner\",\n        \"simultaneous active and consuming\",\n        \"partial atomic temp\",\n        \"partial audit\"\n      ],\n      \"per_case_assertions\": {\n        \"decision\": \"deny\",\n        \"publication\": \"refused\",\n        \"claim_calls\": 0,\n        \"record_calls\": 0,\n        \"send_calls\": 0,\n        \"edit_calls\": 0,\n        \"network_calls\": 0,\n        \"message_id\": null,\n        \"maintenance_audit_digest\": null,\n        \"delivery_ledger_created\": false,\n        \"post_mutation_artifact_snapshot_changed\": false\n      }\n    },\n    \"complete_hash_inventory\": {\n      \"status\": \"closed\",\n      \"runtime_file_count\": 11,\n      \"retained_strict_test_support_file_count\": 7,\n      \"restored_baseline_test_file_count\": 2,\n      \"all_receipt_hashes_match_disk\": true\n    },\n    \"strict_diagnostics\": {\n      \"status\": \"closed\",\n      \"fresh_basedpyright_exact_delta_strict_set\": \"0 errors, 0 warnings, 0 notes\",\n      \"fresh_ty_exact_delta_strict_set\": \"all checks passed\",\n      \"current_lsp_exact_delta_strict_set\": \"15 of 15 files report no diagnostics\",\n      \"stale_server_discrepancy\": false,\n      \"real_changed_region_diagnostics\": 0,\n      \"legacy_context\": \"Whole-file analyzers still report inherited diagnostics in large telegram.py, scheduler.py, and restored baseline tests. Those files' legacy regions are outside this delta; Ruff and manual changed-region inspection are clean, and the amended strict source/test set is independently zero-diagnostic.\",\n      \"escape_hatch_scan\": \"No new Any, cast, ignore, noqa, broad catch, sleep, skip, xfail, private test access, or untyped lambda. Dispatcher casts/lambdas are inherited and its hash is unchanged from the prior reviewed increment; the support key lambda is contextually typed and both strict analyzers are clean.\"\n    }\n  },\n  \"verification\": {\n    \"focused_maintenance\": \"61 passed in 0.90s\",\n    \"affected_topic59_weekly_cron\": \"240 passed in 7.48s\",\n    \"ruff_all_11_runtime_and_retained_or_restored_tests\": \"pass\",\n    \"compile_exact_runtime_and_strict_tests\": \"pass\",\n    \"import_smoke\": \"pass\",\n    \"no_excuse_scan\": \"pass with no new violations\",\n    \"lsp\": \"all exact delta strict files clean\",\n    \"basedpyright\": \"exact delta strict set clean\",\n    \"ty\": \"exact delta strict set clean\"\n  },\n  \"manual_actual_behavior\": {\n    \"surface\": \"actual Topic59DayCardProjector, typed NutritionScheduledTickOutcome, actual launch_scheduled_card, actual run_one_job scheduler branch, socket guard\",\n    \"same_day_dispositions\": [\n      \"noop_maintenance\",\n      \"noop_maintenance\"\n    ],\n    \"same_day_audit_count\": 1,\n    \"same_day_delivery_ledger_unchanged\": true,\n    \"historical_sending_prefix_unchanged\": true,\n    \"current_day_send_calls\": 0,\n    \"current_day_edit_calls\": 0,\n    \"network_calls\": 0,\n    \"launch\": {\n      \"maintenance_noop\": true,\n      \"sent\": false,\n      \"error\": null\n    },\n    \"scheduler\": {\n      \"processed\": true,\n      \"mark_job_run\": [\n        true,\n        null\n      ],\n      \"status\": \"maintenance no-op completed\"\n    },\n    \"tomorrow_disposition\": \"sent\",\n    \"tomorrow_fake_send_calls\": 1,\n    \"tomorrow_edit_calls\": 0,\n    \"privacy_scan\": \"pass\"\n  },\n  \"runtime_hashes\": {\n    \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n    \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9df3f5f368e16fa6019674620a1fa06ba767ac13babd130b0ea79655ab7cdb60\",\n    \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"1affe722d322de8d4e7ae40920dfbcd25a5915008c732193123241eb4e26e5fa\",\n    \"gateway/platforms/nutrition_weekly_operations.py\": \"4a3f27b30d0c639ce6b0020e5f81a386bae22b3a0a5568a497d0a8b4dcbc3fe6\",\n    \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\": \"c75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6\",\n    \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n    \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n    \"gateway/platforms/telegram_weekly_host_dispatch.py\": \"6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88\",\n    \"gateway/platforms/telegram.py\": \"5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7\",\n    \"cron/physique_inline_card.py\": \"16788d449f33b8e0f6c0e8a5db55d1455b3ee694a984307283b07a6b9db29b67\",\n    \"cron/scheduler.py\": \"07fddef7d2df68e2ddee243f5c0901eb15054f91a642dcd96723a139e30f461f\"\n  },\n  \"test_and_support_hashes\": {\n    \"tests/gateway/nutrition_weekly_maintenance_support.py\": \"810ab4768633142b11b9889f08a79789dde79001ae82f7cb7bc6bc1b1213df5d\",\n    \"tests/gateway/nutrition_weekly_maintenance_fs_mutations.py\": \"619b6188e3df38613bd166e4c372b46424888a164d069a25ab4d07a07e611d7f\",\n    \"tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\": \"8cef1f9a7bcccecab843f1c767d870087f57b1d36ce41f48d6f2d5cddc919e25\",\n    \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\": \"4100ab82d11b78a78cffceb6c1150c6ffc448d8fa5b4b97ec8a5b27cc3b4cab7\",\n    \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\": \"bd6fc29371c02c8f627f60d8879ccf77a0596c6e5ed13b91938f6212d2364664\",\n    \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\": \"89f21c1535039ce58e7bc404727fe806a6976bdef6708fa2a31b292e836be7fe\",\n    \"tests/cron/test_physique_inline_card_maintenance.py\": \"4ce999edcfb4949c6df077026c3dd5282b80ffecc0e268786f442a325c1e357e\"\n  },\n  \"restored_baseline_test_hashes\": {\n    \"tests/gateway/test_nutrition_weekly_operations_topic59.py\": \"d0535437501dc31c7a14de07dab1f27eb96a3d8c27efcf113101827b7055661a\",\n    \"tests/cron/test_physique_inline_card.py\": \"931215dab7c03e4cf1eec8e9da96a5895e8ba119c99843aa18036ddd3eaaab02\"\n  },\n  \"scope_and_cleanup\": {\n    \"source_edits_by_reviewer\": 0,\n    \"git_or_github_actions\": 0,\n    \"network_or_provider_actions\": 0,\n    \"customer_actions\": 0,\n    \"package_or_live_actions\": 0,\n    \"fresh_r71b_package_live_roots_absent_before_and_after\": true,\n    \"reviewed_source_hashes_unchanged_during_review\": true,\n    \"temporary_scripts_removed\": 2,\n    \"temporary_fixture_roots_removed\": true,\n    \"generated_bytecode_after_cleanup\": 0,\n    \"new_patch_backup_or_reject_files\": 0,\n    \"only_persistent_review_artifact\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json\"\n  }\n}\n"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":1228,"output":3056,"cacheRead":261632,"cacheWrite":0,"reasoning":37,"totalTokens":265916,"cost":{"input":0.0061400000000000005,"output":0.09168,"cacheRead":0.130816,"cacheWrite":0,"total":0.228636}},"stopReason":"toolUse","timestamp":1788249317233,"responseId":"resp_046f5546d6e20d23016a9684e593ac87d0940e9b7c22517abb","rawStopReason":"completed"}}
{"type":"message","id":"d6cb92af","parentId":"2586e28f","timestamp":"2026-09-01T07:56:14.185Z","message":{"role":"toolResult","toolCallId":"call_pKsU84s4ikwS4KjKTobyNKRG|fc_046f5546d6e20d23016a9684e8fa9887d0b7d191b72ae1cade","toolName":"write","content":[{"type":"text","text":"Successfully wrote 8985 bytes to /home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json"}],"details":{"operation":"update","patch":"--- /home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json\n+++ /home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json\n@@ -1,209 +1,184 @@\n {\n-  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-adversarial-v1\",\n+  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-adversarial-v2\",\n   \"task_id\": \"st_01a05bd2\",\n+  \"review_mode\": \"delta_only_re_review\",\n   \"reviewed_claim_task_id\": \"st_01a05bc2\",\n-  \"captured_at\": \"2026-09-01T16:25:07+09:00\",\n+  \"captured_at\": \"2026-09-01T16:55:02+09:00\",\n   \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n-  \"verdict\": \"needs-fix\",\n+  \"verdict\": \"confirmed\",\n   \"confidence\": 0.99,\n-  \"blocker_count\": 4,\n-  \"blockers\": [\n-    {\n-      \"code\": \"MAINTENANCE_LOCK_WRONG_GID_ACCEPTED\",\n-      \"severity\": \"contract_blocker\",\n-      \"finding\": \"A maintenance.lock owned by the effective UID but by gid 125 instead of the profile gid 1000 is accepted; the gate returns noop_maintenance and consumes the hold. The contract requires lock to be profile-owned and every wrong owner/group case to fail closed.\",\n-      \"source_cause\": \"Topic59MaintenanceGate._evaluate_locked calls _open_file(directory_fd, 'maintenance.lock', 0o600) without the profile gid. nutrition_weekly_maintenance_io.open_file validates gid only when a gid argument is supplied.\",\n-      \"repro\": {\n-        \"control\": {\n-          \"case\": \"hold_wrong_gid\",\n-          \"file_gid\": 125,\n-          \"profile_gid\": 1000,\n-          \"decision\": \"deny\",\n-          \"reason\": \"filesystem_contract\"\n-        },\n-        \"failure\": {\n-          \"case\": \"lock_wrong_gid\",\n-          \"file_gid\": 125,\n-          \"profile_gid\": 1000,\n-          \"decision\": \"noop_maintenance\",\n-          \"reason\": null\n-        }\n+  \"blocker_count\": 0,\n+  \"frozen_prior_approved_scope\": [\n+    \"valid hold\",\n+    \"crash recovery\",\n+    \"concurrency\",\n+    \"typed propagation\",\n+    \"manual same-day and next-day behavior\"\n+  ],\n+  \"delta_blocker_closure\": {\n+    \"maintenance_lock_wrong_gid\": {\n+      \"status\": \"closed\",\n+      \"independent_wrong_gid_result\": {\n+        \"decision\": \"deny\",\n+        \"reason\": \"filesystem_contract\",\n+        \"publication\": \"refused\",\n+        \"artifacts_byte_and_metadata_unchanged\": true,\n+        \"claim_calls\": 0,\n+        \"record_calls\": 0,\n+        \"send_calls\": 0,\n+        \"edit_calls\": 0,\n+        \"network_calls\": 0,\n+        \"message_id\": null,\n+        \"maintenance_audit_digest\": null,\n+        \"delivery_ledger_exists\": false,\n+        \"audit_exists\": false\n       },\n-      \"required_fix\": \"Validate maintenance.lock against the profile uid and gid under the same openat/no-follow contract as active, consuming, and audit files, and add a deterministic regression test.\"\n-    },\n-    {\n-      \"code\": \"RECEIPT_HASH_INVENTORY_INCOMPLETE\",\n-      \"severity\": \"strict_evidence_blocker\",\n-      \"finding\": \"All eight hashes present in the DoneClaim receipt match, but the receipt hashes no tests and omits three propagation files that were modified for this runtime. Therefore the actual changed runtime/test set cannot be hash-matched to the receipt as required.\",\n-      \"omitted_runtime_files\": {\n-        \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\": \"c75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6\",\n-        \"gateway/platforms/telegram_weekly_host_dispatch.py\": \"6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88\",\n-        \"gateway/platforms/telegram.py\": \"5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7\"\n-      },\n-      \"test_hashes_recorded_by_this_review\": {\n-        \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\": \"c4bc83bf5153f47760c794815769f594a2df35135314c9a7ac3678de792d7112\",\n-        \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\": \"e79329824051ca336365c3622cfdab0c2a4d36fe53e2ee55cea6753ceac6d28a\",\n-        \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\": \"b1a400491526427abc8236bb1114765260edeaf2a7b56bf7968e6c5d20201d56\",\n-        \"tests/gateway/test_nutrition_weekly_operations_topic59.py\": \"5dbc476bf1cb7246392dddf96ba02ee48fddc5c0b7cf6c39f0cecc06eb73aaac\",\n-        \"tests/gateway/test_nutrition_weekly_operations_topic59_failures.py\": \"0e3570a667adcceea3099910550dce888daccc556a466b8c40c8af75a122697c\",\n-        \"tests/gateway/test_nutrition_weekly_operations_topic59_r2.py\": \"1eb4967c527c310d3a0333973cf911e48513afc06dc79793a75f2db051e7994e\",\n-        \"tests/gateway/test_nutrition_weekly_operations_topic59_r2_slots.py\": \"1d87c3f528f2af12b143e0b31958f7d54ebc6e71113294b53dfe31c270eaec30\",\n-        \"tests/gateway/test_nutrition_weekly_operations_topic59_telegram.py\": \"358d9365895c4f7caddf0104d47f734ccf78b00eab094f527574423b51f6090d\",\n-        \"tests/gateway/test_nutrition_weekly_dispatcher_epoch2.py\": \"ea943f130b7c923e678eb8066ae20c01997fb124d9351d92f96be45b9b3032d8\",\n-        \"tests/gateway/test_nutrition_weekly_dispatcher_host_matrix.py\": \"a50d4046ffe5236f750ef4237ef8068657a282dbe250c05192c876c4911c6abc\",\n-        \"tests/cron/test_physique_inline_card.py\": \"b9241d89c96293d9625a504f546b1c44ecfb58cabe6b2088f8fec314ea0ae673\",\n-        \"tests/cron/test_scheduler.py\": \"c45b784365292c6572bcab3844dd46b9353f2f5197332ff6850f3752f3eb9b9a\"\n-      }\n-    },\n-    {\n-      \"code\": \"DONECLAIM_NEGATIVE_MATRIX_NOT_IN_TEST_SUITE\",\n-      \"severity\": \"strict_qualification_blocker\",\n-      \"finding\": \"The actual new failure test file contains one case only: artifact without credential. The implementation session transcript confirms no canonical JSON, boundary hash, time, replay, binding, file-kind, mode, nlink, symlink, hardlink, owner/group, audit-tamper, or partial-state matrix was added, despite the DoneClaim describing the maintenance runtime as qualified.\",\n-      \"independent_reproduction\": {\n-        \"matrix_rejects_passed\": 29,\n-        \"matrix_rejects_total\": 29,\n+      \"independent_same_gid_control\": {\n+        \"publication\": \"noop_maintenance\",\n+        \"audit_exists\": true,\n+        \"audit_digest_present\": true,\n         \"claim_calls\": 0,\n+        \"record_calls\": 0,\n         \"send_calls\": 0,\n         \"edit_calls\": 0,\n         \"network_calls\": 0,\n-        \"covered\": [\n-          \"authority noncanonical/malformed/empty/oversized/extra-field/wrong-hold-hash\",\n-          \"hold noncanonical\",\n-          \"early/expired/replayed\",\n-          \"wrong candidate/config/route/customer/card-slot/day\",\n-          \"hold and lock symlink/hardlink/wrong-mode/FIFO\",\n-          \"audit symlink\",\n-          \"maintenance-directory symlink\",\n-          \"simultaneous active+consuming\",\n-          \"partial atomic temp\",\n-          \"artifact without credential\"\n-        ],\n-        \"separate_failure\": \"The wrong-gid lock case did not reject and is blocker MAINTENANCE_LOCK_WRONG_GID_ACCEPTED.\"\n+        \"message_id\": null\n       },\n-      \"required_fix\": \"Land deterministic source tests for the full matrix, including the discovered wrong-gid lock regression, rather than relying on an unrecorded manual oracle.\"\n+      \"source_proof\": \"OwnedMaintenanceDirectory carries the profile uid/gid; _evaluate_locked supplies both to open_file for maintenance.lock, and optional hold/audit reads use the same uid/gid.\"\n     },\n-    {\n-      \"code\": \"CHANGED_TEST_DIAGNOSTICS_FAIL_STRICT_GATE\",\n-      \"severity\": \"strict_diagnostics_blocker\",\n-      \"finding\": \"Fresh basedpyright over the five changed maintenance/propagation test files reports 104 errors. Current LSP reports errors in the new maintenance tests and modified Topic59/cron tests. These are changed-region diagnostics, not the stale new-module import issue.\",\n-      \"stale_import_resolution\": \"The persistent LSP still reports missing imports for nutrition_weekly_maintenance_io and nutrition_weekly_dispatch_result in source files, while a fresh basedpyright process over the targeted runtime source reports 0 errors, 0 warnings, 0 notes. Those source import errors are stale. The test diagnostics reproduce in both current LSP and a fresh basedpyright process and are real.\",\n-      \"examples\": [\n-        \"OpaqueProjectionSlot/OpaqueProjectionDigest arguments supplied as plain str\",\n-        \"untyped monkeypatch parameters and members\",\n-        \"AsyncFakeCardTransport does not satisfy _AsyncCardAdapter\",\n-        \"raw_response inferred as None and later assigned NutritionScheduledTickOutcome\",\n-        \"private _ledger access and untyped claim lambda\"\n-      ]\n-    }\n-  ],\n-  \"evidence\": {\n-    \"receipt_eight_runtime_hashes\": {\n-      \"result\": \"all_match\",\n-      \"hashes\": {\n-        \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n-        \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9dbaf436b2f86c5b2c5464dc930f5624502836373de57032141fe6521d67d67d\",\n-        \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"8f86c5909404071698cd358fad995df1c6d6efb69ddc3c887b501a6da92e4542\",\n-        \"gateway/platforms/nutrition_weekly_operations.py\": \"b0bf727ebb221860be99bb5e83ba7ee5cd3e56677582e54f67aa038f6f27a25e\",\n-        \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n-        \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n-        \"cron/physique_inline_card.py\": \"9ae2ebe23b8a60020ca73563c737934828f562d1affdf43c5d323d7844defce2\",\n-        \"cron/scheduler.py\": \"09a2e8652fdf2b4852bc95dc6f653289f3ea91a9fb73694cd1ee904dc0ca2a95\"\n+    \"landed_negative_matrix\": {\n+      \"status\": \"closed\",\n+      \"parameterized_cases\": 51,\n+      \"dedicated_wrong_gid_case\": 1,\n+      \"total\": 52,\n+      \"collection_verified\": true,\n+      \"execution\": \"52 passed as part of focused 61\",\n+      \"deterministic\": true,\n+      \"manual_only\": false,\n+      \"categories_verified\": [\n+        \"credential missing/empty/malformed/oversized/noncanonical/extra/hash\",\n+        \"credential symlink/hardlink/mode/file-kind/owner\",\n+        \"hold empty/malformed/oversized/noncanonical/extra/early/expired/replay\",\n+        \"candidate/config/route/customer/card-slot/day binding mismatch\",\n+        \"maintenance directory symlink/mode/gid/owner\",\n+        \"active hold symlink/hardlink/mode/file-kind/gid/owner\",\n+        \"lock symlink/hardlink/mode/file-kind/gid/owner\",\n+        \"audit symlink/hardlink/mode/file-kind/gid/owner\",\n+        \"simultaneous active and consuming\",\n+        \"partial atomic temp\",\n+        \"partial audit\"\n+      ],\n+      \"per_case_assertions\": {\n+        \"decision\": \"deny\",\n+        \"publication\": \"refused\",\n+        \"claim_calls\": 0,\n+        \"record_calls\": 0,\n+        \"send_calls\": 0,\n+        \"edit_calls\": 0,\n+        \"network_calls\": 0,\n+        \"message_id\": null,\n+        \"maintenance_audit_digest\": null,\n+        \"delivery_ledger_created\": false,\n+        \"post_mutation_artifact_snapshot_changed\": false\n       }\n     },\n-    \"call_path\": {\n-      \"source_order\": [\n-        \"Topic59DayCardProjector.publish calls reserves_topic59, which validates customer identity, candidate identity, and weekly_operations_is_authorized\",\n-        \"publish validates review_route and computes the exact Topic59Projection\",\n-        \"publish calls Topic59MaintenanceGate.evaluate(projection, runtime.now)\",\n-        \"NOOP_MAINTENANCE returns immediately with logical_key and maintenance_audit_digest\",\n-        \"Topic59PublicationLedger.claim occurs only after the exhaustive maintenance decision match\",\n-        \"transport send/edit occurs only after claim returns a send/edit action\"\n-      ],\n-      \"proof\": \"The focused projector test replaces ledger.claim with an AssertionError and observes noop_maintenance, message_id None, no ledger file, send 0, edit 0. Independent manual execution also preserves a pre-existing four-row historical sending ledger byte prefix through both same-day ticks.\"\n+    \"complete_hash_inventory\": {\n+      \"status\": \"closed\",\n+      \"runtime_file_count\": 11,\n+      \"retained_strict_test_support_file_count\": 7,\n+      \"restored_baseline_test_file_count\": 2,\n+      \"all_receipt_hashes_match_disk\": true\n     },\n-    \"affected_matrix\": {\n-      \"command_scope\": \"new maintenance tests; all Topic59 base/failure/r2/r2-slots/Telegram suites; dispatcher epoch2/host matrix; cron inline-card/scheduler\",\n-      \"result\": \"189 passed in 6.59s\"\n-    },\n-    \"manual_actual_bridge\": {\n-      \"surface\": \"actual projector -> typed NutritionScheduledTickOutcome -> actual launch_scheduled_card -> actual run_one_job scheduler branch, with socket guard\",\n-      \"same_day_dispositions\": [\"noop_maintenance\", \"noop_maintenance\"],\n-      \"same_day_files_unchanged\": true,\n-      \"audit_count\": 1,\n-      \"historical_sending_rows\": 4,\n-      \"historical_prefix_unchanged\": true,\n-      \"current_day_send_calls\": 0,\n-      \"current_day_edit_calls\": 0,\n-      \"network_calls\": 0,\n-      \"launch_result\": {\"maintenance_noop\": true, \"sent\": false, \"error\": null},\n-      \"scheduler\": {\"processed\": true, \"mark_job_run\": [true, null], \"status\": \"maintenance no-op completed\"},\n-      \"tomorrow_disposition\": \"sent\",\n-      \"tomorrow_fake_send_calls\": 1,\n-      \"tomorrow_edit_calls\": 0\n-    },\n-    \"privacy\": {\n-      \"result\": \"pass\",\n-      \"audit_has_card_text\": false,\n-      \"audit_has_raw_customer_key\": false,\n-      \"audit_has_raw_telegram_user_or_chat_id\": false,\n+    \"strict_diagnostics\": {\n+      \"status\": \"closed\",\n+      \"fresh_basedpyright_exact_delta_strict_set\": \"0 errors, 0 warnings, 0 notes\",\n+      \"fresh_ty_exact_delta_strict_set\": \"all checks passed\",\n+      \"current_lsp_exact_delta_strict_set\": \"15 of 15 files report no diagnostics\",\n+      \"stale_server_discrepancy\": false,\n+      \"real_changed_region_diagnostics\": 0,\n+      \"legacy_context\": \"Whole-file analyzers still report inherited diagnostics in large telegram.py, scheduler.py, and restored baseline tests. Those files' legacy regions are outside this delta; Ruff and manual changed-region inspection are clean, and the amended strict source/test set is independently zero-diagnostic.\",\n+      \"escape_hatch_scan\": \"No new Any, cast, ignore, noqa, broad catch, sleep, skip, xfail, private test access, or untyped lambda. Dispatcher casts/lambdas are inherited and its hash is unchanged from the prior reviewed increment; the support key lambda is contextually typed and both strict analyzers are clean.\"\n+    }\n+  },\n+  \"verification\": {\n+    \"focused_maintenance\": \"61 passed in 0.90s\",\n+    \"affected_topic59_weekly_cron\": \"240 passed in 7.48s\",\n+    \"ruff_all_11_runtime_and_retained_or_restored_tests\": \"pass\",\n+    \"compile_exact_runtime_and_strict_tests\": \"pass\",\n+    \"import_smoke\": \"pass\",\n+    \"no_excuse_scan\": \"pass with no new violations\",\n+    \"lsp\": \"all exact delta strict files clean\",\n+    \"basedpyright\": \"exact delta strict set clean\",\n+    \"ty\": \"exact delta strict set clean\"\n+  },\n+  \"manual_actual_behavior\": {\n+    \"surface\": \"actual Topic59DayCardProjector, typed NutritionScheduledTickOutcome, actual launch_scheduled_card, actual run_one_job scheduler branch, socket guard\",\n+    \"same_day_dispositions\": [\n+      \"noop_maintenance\",\n+      \"noop_maintenance\"\n+    ],\n+    \"same_day_audit_count\": 1,\n+    \"same_day_delivery_ledger_unchanged\": true,\n+    \"historical_sending_prefix_unchanged\": true,\n+    \"current_day_send_calls\": 0,\n+    \"current_day_edit_calls\": 0,\n+    \"network_calls\": 0,\n+    \"launch\": {\n+      \"maintenance_noop\": true,\n       \"sent\": false,\n-      \"delivered\": false,\n-      \"message_id\": null,\n-      \"provider_receipt\": null,\n-      \"provider_calls\": 0,\n-      \"network_calls\": 0\n+      \"error\": null\n     },\n-    \"tooling\": {\n-      \"ruff_changed_runtime_and_tests\": \"pass\",\n-      \"ty_targeted_runtime_with_profile_path\": \"pass\",\n-      \"basedpyright_targeted_runtime\": \"0 errors, 0 warnings, 0 notes\",\n-      \"basedpyright_changed_tests\": \"104 errors, 0 warnings, 0 notes\",\n-      \"compileall\": \"pass\",\n-      \"import_smoke\": \"pass\",\n-      \"lsp_runtime\": \"established modules clean; persistent server has stale missing-import errors for new modules; cron/scheduler.py and telegram.py retain extensive legacy diagnostics\",\n-      \"lsp_changed_tests\": \"fail with changed-region diagnostics\",\n-      \"ast_text_scan\": \"No Any, ignore, noqa, broad catch, sleep, skip, xfail, or weakened assertion was introduced in the focused maintenance modules. The two cast calls in dispatcher line 136 predate this increment.\",\n-      \"pure_loc\": {\n-        \"nutrition_weekly_maintenance_contract.py\": 137,\n-        \"nutrition_weekly_maintenance_io.py\": 99,\n-        \"nutrition_weekly_maintenance_store.py\": 208,\n-        \"nutrition_weekly_dispatch_result.py\": 14,\n-        \"nutrition_weekly_operations.py\": 146,\n-        \"nutrition_weekly_dispatcher.py\": 250\n-      }\n+    \"scheduler\": {\n+      \"processed\": true,\n+      \"mark_job_run\": [\n+        true,\n+        null\n+      ],\n+      \"status\": \"maintenance no-op completed\"\n     },\n-    \"scope_guards\": {\n-      \"git_or_github_actions\": 0,\n-      \"network_or_provider_actions\": 0,\n-      \"customer_actions\": 0,\n-      \"source_edits_by_reviewer\": 0,\n-      \"package_preseal_live_profile_credential_root_creations\": 0,\n-      \"fresh_r71b_package_live_roots_absent_before_and_after\": true,\n-      \"reviewed_source_hashes_unchanged_during_review\": true\n-    }\n+    \"tomorrow_disposition\": \"sent\",\n+    \"tomorrow_fake_send_calls\": 1,\n+    \"tomorrow_edit_calls\": 0,\n+    \"privacy_scan\": \"pass\"\n   },\n-  \"repro\": {\n-    \"primary\": [\n-      \"Create a valid profile/credential/hold fixture owned by uid/gid 1000 with maintenance directory 0700 and files 0600/credential 0400.\",\n-      \"Change only maintenance.lock gid to supplementary group 125.\",\n-      \"Set CREDENTIALS_DIRECTORY to the fixture credential directory.\",\n-      \"Evaluate Topic59MaintenanceGate against the exact bound projection at not_before.\",\n-      \"Observed: noop_maintenance and terminal audit creation; expected: DENY(filesystem_contract), zero state changes.\"\n-    ],\n-    \"source_locator\": [\n-      \"gateway/platforms/nutrition_weekly_maintenance_store.py:_evaluate_locked\",\n-      \"gateway/platforms/nutrition_weekly_maintenance_io.py:open_file\"\n-    ]\n+  \"runtime_hashes\": {\n+    \"gateway/platforms/nutrition_weekly_maintenance_contract.py\": \"f77384718fc9af8212e52a4f15f5dcff2cced0fe0ec4a8c0abc0d3ef0735a619\",\n+    \"gateway/platforms/nutrition_weekly_maintenance_io.py\": \"9df3f5f368e16fa6019674620a1fa06ba767ac13babd130b0ea79655ab7cdb60\",\n+    \"gateway/platforms/nutrition_weekly_maintenance_store.py\": \"1affe722d322de8d4e7ae40920dfbcd25a5915008c732193123241eb4e26e5fa\",\n+    \"gateway/platforms/nutrition_weekly_operations.py\": \"4a3f27b30d0c639ce6b0020e5f81a386bae22b3a0a5568a497d0a8b4dcbc3fe6\",\n+    \"gateway/platforms/nutrition_weekly_operations_publication_contract.py\": \"c75a8858d93a824957755be148e9ddd6eca52cd4459ef3494965865829ad52c6\",\n+    \"gateway/platforms/nutrition_weekly_dispatch_result.py\": \"3e537d9a8f7afd6cb3fb16b51fd5911e67eb5413e43ff839f7c71e6fa80fe6f2\",\n+    \"gateway/platforms/nutrition_weekly_dispatcher.py\": \"9d1a4ec3756fef57f6837f71a9bdcea42ea8ee6d557a9f0d7927394d088ca16b\",\n+    \"gateway/platforms/telegram_weekly_host_dispatch.py\": \"6e5999940ec311ad2f2563fd2534a05ca5dbed62726aca4bfad27d6d1bbc3f88\",\n+    \"gateway/platforms/telegram.py\": \"5a8845e9e764f868f4e7509233309a0ed7c4c6419584f847977ba6000eb6f4f7\",\n+    \"cron/physique_inline_card.py\": \"16788d449f33b8e0f6c0e8a5db55d1455b3ee694a984307283b07a6b9db29b67\",\n+    \"cron/scheduler.py\": \"07fddef7d2df68e2ddee243f5c0901eb15054f91a642dcd96723a139e30f461f\"\n   },\n-  \"cleanup\": {\n-    \"temporary_scripts_removed\": [\n-      \"/tmp/r71b_adversarial_matrix.py\",\n-      \"/tmp/r71b_manual_bridge.py\"\n-    ],\n-    \"temporary_fixture_roots\": \"TemporaryDirectory contexts removed all synthetic profiles, credentials, ledgers, audits, locks, and outputs.\",\n-    \"worktree_source_modified\": false,\n-    \"package_or_live_roots_modified\": false,\n-    \"network_or_provider_calls\": 0,\n+  \"test_and_support_hashes\": {\n+    \"tests/gateway/nutrition_weekly_maintenance_support.py\": \"810ab4768633142b11b9889f08a79789dde79001ae82f7cb7bc6bc1b1213df5d\",\n+    \"tests/gateway/nutrition_weekly_maintenance_fs_mutations.py\": \"619b6188e3df38613bd166e4c372b46424888a164d069a25ab4d07a07e611d7f\",\n+    \"tests/gateway/nutrition_weekly_maintenance_adversarial_support.py\": \"8cef1f9a7bcccecab843f1c767d870087f57b1d36ce41f48d6f2d5cddc919e25\",\n+    \"tests/gateway/test_nutrition_weekly_topic59_maintenance.py\": \"4100ab82d11b78a78cffceb6c1150c6ffc448d8fa5b4b97ec8a5b27cc3b4cab7\",\n+    \"tests/gateway/test_nutrition_weekly_topic59_maintenance_failures.py\": \"bd6fc29371c02c8f627f60d8879ccf77a0596c6e5ed13b91938f6212d2364664\",\n+    \"tests/gateway/test_nutrition_weekly_dispatcher_maintenance.py\": \"89f21c1535039ce58e7bc404727fe806a6976bdef6708fa2a31b292e836be7fe\",\n+    \"tests/cron/test_physique_inline_card_maintenance.py\": \"4ce999edcfb4949c6df077026c3dd5282b80ffecc0e268786f442a325c1e357e\"\n+  },\n+  \"restored_baseline_test_hashes\": {\n+    \"tests/gateway/test_nutrition_weekly_operations_topic59.py\": \"d0535437501dc31c7a14de07dab1f27eb96a3d8c27efcf113101827b7055661a\",\n+    \"tests/cron/test_physique_inline_card.py\": \"931215dab7c03e4cf1eec8e9da96a5895e8ba119c99843aa18036ddd3eaaab02\"\n+  },\n+  \"scope_and_cleanup\": {\n+    \"source_edits_by_reviewer\": 0,\n+    \"git_or_github_actions\": 0,\n+    \"network_or_provider_actions\": 0,\n+    \"customer_actions\": 0,\n+    \"package_or_live_actions\": 0,\n+    \"fresh_r71b_package_live_roots_absent_before_and_after\": true,\n+    \"reviewed_source_hashes_unchanged_during_review\": true,\n+    \"temporary_scripts_removed\": 2,\n+    \"temporary_fixture_roots_removed\": true,\n+    \"generated_bytecode_after_cleanup\": 0,\n+    \"new_patch_backup_or_reject_files\": 0,\n     \"only_persistent_review_artifact\": \"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json\"\n   }\n }\n"},"isError":false,"timestamp":1788249374185}}
{"type":"message","id":"aac6141d","parentId":"d6cb92af","timestamp":"2026-09-01T07:56:20.694Z","message":{"role":"assistant","content":[{"type":"thinking","thinking":"**Validating JSON hash**","startedAt":1788249377106,"thinkingSignature":"{\"id\":\"rs_046f5546d6e20d23016a96852103dc87d080754aed90a7f191\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqloUk5BEEMLaEsxhrshUlBcNPi60P3u2HYNcTJ4LvdS3GP88biv7xyD-vx9T69nB31alUJsvFeuusvgNWq0TmF3S4wQro4akxQTJ748OKVhAryPNI4j2jmGFOjuAnc-LkHrM4hrT-d-ZgLdkJyp4Y77Qny21LxB79zpuidlVH7DOZlTUkyDltEJzvW4VVMdBNPcLrae7sCjJiPrm85qzRDjPyBxpNocRGDvEuqhpUwKYlKOAmYa3dSTquzG6tlz7V5S_SV0u_8To7ulrs1EubtOK4LwjtyVS-SjEzFz2ciFAvQsYrvJDE3WeUZpYNWY13-Mz7aRR3KrIJCacUgoaXeZypFoeIhmwZqvgegrCPpExhdxmMqZmQuBK5KwVtyjwT_wA4kax0YCHFjbA-Wy1woB1Xh7nqNXinJrpWhG8P1uQVNFvFCeGUUB0306lE_WlldeK_mxXQYFIzOLDu8VmQwbVMFkF456th-J0OYJpERm6rWuPa_hjpRqqeMtZy-s9fQrbbXsqQ7BVTn_jsyL-gZ3JcTH5_m3qkzEpt4xLN5u3QpS_MVySzFo73vl9MqCJk2CzyowxIT82JKUrPQYbLPIF3F9IYv1P5qiQGoGJ323xYgn3VAxTXfXVdGPr6iWVw4BaFS7xGhQSg4kaESYO0FyghZVPxYGHSr0lVrn75GIvR3aQweU6bDNdx8SyglVxKUhJNZ4IEzyf3oHfRG8AChGg0zbQFvcI2dYQRCejpwuyHptEIz3xv5TFXT76xVxRQgXuECpy9f__fgUySGnwLpkR4D5zG1k5_XxZAtdWO97ZYs1UGZUku1lNVdFRKfPGPoPI1FnFDJGaa-ASL9mqXKQLKCahkevhd8rCxuZo4gQx_t7DREO9adn5A_GBigydbCz_Hkc-eoSgjSVJeFKz9MkFXYj0F1doLD1crV_LXs0TiI4ZWVoxtujvokTJLx3QtMgAqSZCG6BupgRLLCTRRByQaqh5ZPuMmiPSJm7ku2ocq6SFoIcDNTBFoBnyhs_x9bKLqJRAxBHlhsCmmmPDr-I01OMd23iJZsZayu2XxrPRNxB8-ee2DKI6sn1c1JTfsix3mmNxgS5ImB2Upi6EIGKt16kMbTtmmxvKIyz3QYZ5NTuYIkOYSZfmWA5WnaZlemWbdLeMATaHaMvHp4Lgy0a7j2ud9L1Pex7oA_r29oAGik1j-Ru5qGKu7p5_8e7H76hkyMFXTS8k7FSv5PovfkFO55gfYoQP6ZIZyhHaa3DvsmdoZwLAkRx42BeyrnYnzs_ngKOMoFW0ahBbkHeGfLbZwGVqgEMQRPUi0Ena7UtNwzq8=\",\"summary\":[{\"type\":\"summary_text\",\"text\":\"**Validating JSON hash**\"}]}","endedAt":1788249380585},{"type":"toolCall","id":"call_9p0b6DkJ8dUwVIMkgadb9HmE|fc_046f5546d6e20d23016a9685247d5887d0947b6290e2427fa4","name":"bash","arguments":{"command":"python -m json.tool '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json' >/dev/null && sha256sum '/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json'","timeout":20}},{"type":"toolCall","id":"call_TUJuu5tJ8o3G7x5XInNaVU2X|fc_046f5546d6e20d23016a9685247d6c87d092d76abfb050057a","name":"read","arguments":{"path":"/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json","offset":1,"limit":25}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":3315,"output":196,"cacheRead":262656,"cacheWrite":0,"reasoning":9,"totalTokens":266167,"cost":{"input":0.016575000000000003,"output":0.00588,"cacheRead":0.131328,"cacheWrite":0,"total":0.153783}},"stopReason":"toolUse","timestamp":1788249374229,"responseId":"resp_046f5546d6e20d23016a96851eaa9c87d09e592aae469344de","rawStopReason":"completed"}}
{"type":"message","id":"2da59b3f","parentId":"aac6141d","timestamp":"2026-09-01T07:56:20.740Z","message":{"role":"toolResult","toolCallId":"call_9p0b6DkJ8dUwVIMkgadb9HmE|fc_046f5546d6e20d23016a9685247d5887d0947b6290e2427fa4","toolName":"bash","content":[{"type":"text","text":"c9ce2e232186460bbbd376b9af0a0f2c8e6bc3af7369b4cd51755a5a8032c43e  /home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json\n"}],"isError":false,"timestamp":1788249380740}}
{"type":"message","id":"6b1d575e","parentId":"2da59b3f","timestamp":"2026-09-01T07:56:20.740Z","message":{"role":"toolResult","toolCallId":"call_TUJuu5tJ8o3G7x5XInNaVU2X|fc_046f5546d6e20d23016a9685247d6c87d092d76abfb050057a","toolName":"read","content":[{"type":"text","text":"{\n  \"schema\": \"nutricoach-telegram-checkin-stepper-task-10-r71b-maintenance-runtime-adversarial-v2\",\n  \"task_id\": \"st_01a05bd2\",\n  \"review_mode\": \"delta_only_re_review\",\n  \"reviewed_claim_task_id\": \"st_01a05bc2\",\n  \"captured_at\": \"2026-09-01T16:55:02+09:00\",\n  \"worktree\": \"/home/cube/projects/richard/.worktrees/nutricoach-v150-combined\",\n  \"verdict\": \"confirmed\",\n  \"confidence\": 0.99,\n  \"blocker_count\": 0,\n  \"frozen_prior_approved_scope\": [\n    \"valid hold\",\n    \"crash recovery\",\n    \"concurrency\",\n    \"typed propagation\",\n    \"manual same-day and next-day behavior\"\n  ],\n  \"delta_blocker_closure\": {\n    \"maintenance_lock_wrong_gid\": {\n      \"status\": \"closed\",\n      \"independent_wrong_gid_result\": {\n        \"decision\": \"deny\",\n        \"reason\": \"filesystem_contract\",\n        \"publication\": \"refused\",\n        \"artifacts_byte_and_metadata_unchanged\": true,\n\n[160 more lines in file. Use offset=26 to continue.]"}],"isError":false,"timestamp":1788249380740}}
{"type":"message","id":"38416674","parentId":"6b1d575e","timestamp":"2026-09-01T07:56:26.217Z","message":{"role":"assistant","content":[{"type":"text","text":"I read this as delta re-review completion - all four prior blockers are independently closed.\n\nVerdict: **confirmed**  \nConfidence: **0.99**  \nBlockers: **0**\n\nVerification:\n- Focused: 61 passed\n- Affected: 240 passed\n- Wrong-GID denial and same-GID control passed\n- All hashes matched\n- Exact strict basedpyright, ty, and LSP clean\n- Manual two-noop/tomorrow-send behavior passed\n- Ruff, compile, import, no-excuse, and cleanup passed\n\nEvidence:\n\n`/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-10-r71b-maintenance-runtime-adversarial.json`\n\nSHA-256: `c9ce2e232186460bbbd376b9af0a0f2c8e6bc3af7369b4cd51755a5a8032c43e`","textSignature":"{\"v\":1,\"id\":\"msg_046f5546d6e20d23016a9685265d2487d0a9ee2c25095c6dbf\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.6-sol","usage":{"input":812,"output":208,"cacheRead":265728,"cacheWrite":0,"reasoning":0,"totalTokens":266748,"cost":{"input":0.00406,"output":0.00624,"cacheRead":0.13286399999999998,"cacheWrite":0,"total":0.14316399999999999}},"stopReason":"stop","timestamp":1788249380789,"responseId":"resp_046f5546d6e20d23016a96852528f487d0bf2e139901c19c90","rawStopReason":"completed"}}
