You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Mattermost model picker is LIVE production code on HEAD (2026-04-19) and continues working despite the deletions that #2337 predicted would force its removal.
Evidence that #2337's removal premise is falsified
#2337 listed the picker under "Discord/Mattermost model-picker UI cascade (commands-models.ts deletion)" — the stated rationale was that the picker depended on handleModelsCommand / buildModelsProviderData from the Pi-era commands-models.ts stub, so gutting the stub meant gutting the picker.
The Mattermost picker has been stable since. It sources provider data from its own path, not from handleModelsCommand / buildModelsProviderData.
git grep -n "handleModelsCommand\|buildModelsProviderData" extensions/mattermost/ returns zero hits — the picker never actually depended on those symbols.
Conclusion: the coupling claim in #2337 was wrong. The picker's inclusion in the cascade was based on a premise that doesn't hold. Removing a working user-facing feature on a falsified premise is not justified.
Default: Keep + verify
Absent a fresh product rationale, the picker stays. It's a working user-facing feature serving Mattermost channels.
#2337's cascade scoped this picker for deletion based on a coupling claim that was falsified by #2373's real-world execution. Resolution in either direction — Keep (with verification + documentation) or Gut (with fresh rationale) — unblocks closing #2337. Part of #2337.
Status
The Mattermost model picker is LIVE production code on HEAD (2026-04-19) and continues working despite the deletions that #2337 predicted would force its removal.
Evidence that #2337's removal premise is falsified
#2337 listed the picker under "Discord/Mattermost model-picker UI cascade (
commands-models.tsdeletion)" — the stated rationale was that the picker depended onhandleModelsCommand/buildModelsProviderDatafrom the Pi-eracommands-models.tsstub, so gutting the stub meant gutting the picker.What actually happened:
commands-models.tswas deleted in gut: eliminate callers and delete ~14 EXCLUDE-STUB files in src/auto-reply/ #2373 (merged 2026-04-16).handleModelsCommand/buildModelsProviderData.git grep -n "handleModelsCommand\|buildModelsProviderData" extensions/mattermost/returns zero hits — the picker never actually depended on those symbols.Conclusion: the coupling claim in #2337 was wrong. The picker's inclusion in the cascade was based on a premise that doesn't hold. Removing a working user-facing feature on a falsified premise is not justified.
Default: Keep + verify
Absent a fresh product rationale, the picker stays. It's a working user-facing feature serving Mattermost channels.
Files still live (reference)
extensions/mattermost/src/mattermost/model-picker.tsextensions/mattermost/src/mattermost/model-picker.test.tsextensions/mattermost/src/mattermost/monitor.ts(lines 56, 495, 778-887)extensions/mattermost/src/mattermost/slash-http.ts(lines 30-32, 387)AC under Keep (default path)
/modelin Mattermost, confirm picker renders, confirm selection applies.extensions/mattermost/README.mdor as an inline note where relevant.pnpm check+pnpm testgreen.Alternative: Gut (requires fresh product rationale)
The original #2337 rationale (stub coupling) is dead. Gutting now requires a standalone product case such as:
If product decides to gut on fresh grounds, the cascade is ~700 LoC:
extensions/mattermost/src/mattermost/model-picker.{ts,test.ts}— 515 LoCmonitor.ts(lines 56, 495, 778-887) — ~150 LoCslash-http.ts(lines 30-32, 387) — ~5 LoCsrc/plugin-sdk/mattermost.tsAC under Gut (if fresh rationale provided)
pnpm check/pnpm testgreen.git grep -rn "model-picker\|ModelPicker" extensions/mattermost/ src/plugin-sdk/mattermost.tsreturns zero.Relation to #2337
#2337's cascade scoped this picker for deletion based on a coupling claim that was falsified by #2373's real-world execution. Resolution in either direction — Keep (with verification + documentation) or Gut (with fresh rationale) — unblocks closing #2337. Part of #2337.