{"content":"[dev-journal] fix: group-task dispatches no longer silently drop on model-layer config failures (HOST-FIX-RFP 2026-09-28, the zhipu incident)\n\nBranch fix/grouptask-silent-drop, commit 4268d9c2.\n\nIncident: a group-task member whose model binding pointed at a provider removed from the catalog ('zhipu') failed every turn in milliseconds, burned the 5-attempt retry ladder, and the trigger was dropped with one delayed alert — the dispatch vanished and chair/member/owner saw nothing for ~30 min (tasks #99/#100).\n\nFixes shipped:\n- D1: the group-task daemon now classifies model-layer config errors (stale provider hint, ambiguous model id, missing base URL/API key, no enabled provider, ModelProtocolUnsupported) and PARKS the trigger instead of dropping it — requeued uncharged, per-(task,bot) model stall probes once per 5 min, a successful turn lifts the stall, and past 24h the charged ladder resumes so the episode still terminates.\n- D4: the FIRST failure immediately alerts the origin session and records a chair host note, deduped by root-cause signature (one alert per broken binding, not per message).\n- D3: a stale route in runDshSessionLocal now settles with a readable, actionable member-facing error (embedding the raw reason so the daemon classifier still matches) instead of the raw resolution string.\n- D2: new startup reconcile (reconcileStaleModelBindings) scans session picks and bot brains against the live provider catalog — auto-rebinds when the model maps to exactly one enabled provider, flags the rest with a one-time [model-binding] transcript notice.\n- D5: docs/design/2026-09-29-model-binding-precedence.md documents the session-pick > bot-brain > fallback-brain > global-default precedence and the deliberately non-silent stale semantics.\n\nTests: 3 new groupTaskDaemon regressions (park/alert/probe/heal, E1d protocol fingerprint, 24h cap termination) + 9 reconcile service cases. Suites green: test:group-tasks 547/547, release-regressions-extra 22/22, targeted cowork/settings 114.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}