{"repo":"NousResearch/hermes-agent","public_id":"63871","display_label":"Image token estimation for TTFB watchdog and compression","summary":"Members appear to share one theme: estimating token cost of image-heavy content, with one report of the TTFB watchdog's estimate far exceeding API-reported prompt tokens. The other items propose pricing images by a learned, provider-usage-based cost instead of base64 length or a flat constant.","subsystem":"agent","counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":2,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":104757,"merged_at":"2026-09-07T05:34:21+00:00"},"resolution":{"state":"resolved","by":"pr-104757"},"freshness":{"state":"verified","last_verified_at":"2026-09-07T05:34:21+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":63871,"pr_number":104575,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-06T21:19:43+00:00"},{"issue_number":63871,"pr_number":104757,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-07T05:34:21+00:00"},{"issue_number":70328,"pr_number":104575,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-06T21:19:43+00:00"}],"members":[{"kind":"issue","number":63871,"title":"TTFB watchdog token estimator reports ~1.9M tokens while API prompt_tokens stays ~90-175K (extreme-aspect images / large data-URI tool output)","url":null,"state":"closed"},{"kind":"pr","number":63913,"title":"fix(agent): reduce TTFB watchdog token over-estimation for image-heavy turns (#63871)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"922c0d670c","number":0},{"kind":"pr","value":"#104757","number":104757},{"kind":"pr","value":"#76471","number":76471},{"kind":"pr","value":"#104575","number":104575},{"kind":"pr","value":"#63871","number":63871}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":104575,"title":"feat(compression): image token cost learned from the provider's usage, not a flat constant (#70328, supersedes #70463)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/context_compressor.py","agent/image_token_cost.py","agent/model_metadata.py","agent/turn_context.py","agent/turn_usage.py","evals/token_accounting/ab_image_cost_calibration.py","gateway/run_turn.py","tests/agent/test_compressor_image_tokens.py","tests/agent/test_image_token_cost.py","website/docs/developer-guide/context-compression-and-caching.md"]},{"kind":"pr","number":104757,"title":"fix(agent): watchdog estimator prices images at the learned cost, not base64 length (#63871, salvage #76471)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/chat_completion_helpers.py","tests/agent/test_context_estimator_multimodal.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}