fix(slack): enable real channel interaction and joined destination discovery #88
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/slack-channel-capabilities"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Observed causes
Native Karsten token already has correct scopes and actual private channel membership. Slack adapter rejects every new C/G post lacking a thread; message events containing a direct bot mention are dropped unless app_mention also arrives. Proactive posts never engage their new thread. Core also lacks native model-visible messaging (companion Core PR).
Fix
Allow explicit channel-root posts while validating supplied timestamps; accept direct mentions on normal message events with stable Core dedup IDs; persist incoming and own outgoing thread engagement. Add optional generic Channel.messaging contract (inert describe, lifecycle-owned paged users.conversations GET). Preserve ignored unsolicited traffic, bot/subtype filters, workspace/allowlist restrictions, tokens and shutdown drains. Example manifest adds only read scopes needed for membership discovery; existing Karsten already has them.
Verification
95 Plugin tests pass against candidate Core, 43 Slack tests including actual Core lifecycle test. Core full suite 1872 passed/1 skip. New regressions: C/G/D root sends, invalid timestamp/allowlist refusal, message-event mention and dedup, proactive-thread replies, bot membership endpoint (Slack omits is_member). No live message or source rollout claimed yet.
Activation
Operator requested generic fixes and deployment to native Karsten. Install exact merged four-file versioned Slack snapshot, hot-reload at existing safe boundary, verify real message tool/channel sends and Slack readback. Companion Core supplies live capabilities plus native messaging; adapter stays compatible with older Core (automatic replies work, model tool unavailable).
Live rollout and actual-model acceptance completed on native Karsten (work): Core 0.1.236 / 9232c229f216d51ecab899fc430ccacbadf9fa11 + exact standalone Slack snapshot
df51805dfd. All four installed module hashes verified; actual native owner PID and revision match; authenticated API HTTP 200. Actual update-admission POST returned 201 admitted with blockers=[], verification lease released.Actual model discovery run used plugin_message, recognized connected Slack, listed its three actual memberships and described native send support (no send requested). Actual authorized send run used only plugin_message: one new root post in private operator channel, no shell/HTTP/worker. Provider history readback confirms exactly one exact-text bot post. A second actual model invocation with identical requestId/text returned the same persisted delivered receipt; provider post count remained one. This is transport acceptance/readback, not human-read or exactly-once provider semantics.
43 Slack tests also pass on the actual Darwin host (no skips). Integrated local Core full suite 1880 passed/1 existing skip; Plugins suite 95 passed; both exact PR-head CI checks green before normal merge. Incoming normal-message mentions, dedup and engaged follow-ups are regression tested; no human Slack event was fabricated and no live human-message round-trip is claimed.
Initial hot replacement left Core cleanup-unverified; operator-authorized maintenance reconciled process ownership, preserved waiting/paused tasks and used graceful SIGTERM without inventing an admission lease. The regular native owner subsequently activated 0.1.236 through normal admission. Tokens/app/memberships/admins/history unchanged; current live token already had directory scopes. Generic public contracts/docs shipped, no per-agent credential workaround.
Private detailed receipts on work: ~/.local/share/vanillacore-karsten/slack-channel-{rollout,maintenance,model-verification,send-verification}.json and slack-channel-native-tests.log. Local manifest: ~/.cache/hayate-maintenance/slack-channel-rollout/summary.json.