instagram: say why a publish failed, and stop retrying a closed door master
Meta blocked publishing on @menuband.app on 2026-08-31. The lane retried every hour for 32 hours -- re-rendering, re-uploading 31 MB to Spaces, and being told "Fatal" -- because two things were missing. `call()` in ig.mjs threw away the half of Meta's error that means something. A reel that will not publish reports `Fatal (code -1/2207032)`, while the reason a person can act on rides in `error_user_title` / `error_user_msg`. Those are surfaced now, along with `fbtrace_id` -- the first thing Meta asks for about a failure whose message says nothing. Thirty-two failures all read as one indistinguishable word, and that cost a day of guessing. The clockwork counted nothing, so nothing escalated. It now keeps a tally of consecutive publish failures and holds the lane after three (MENUBAND_CLOCKWORK_BREAKER to change, `menuband-clockwork clear` to reset). A held run does no work, so it neither clears the tally nor inflates it -- only real attempts move the number, and a success resets it. A lane that cannot publish should go quiet, not get louder. Verified against an isolated state dir: counts 1/2/3, holds on the fourth without touching the checkout, leaves the tally at 3, and clear reports the prior count. Claude-Session: https://claude.ai/code/session_01X62vT9M1iQXjNTF1jMcpN5