refactor: remove Slack and Discord daemon code (#525)#527
Merged
ALRubinger merged 1 commit intomainfrom May 7, 2026
Merged
Conversation
Removes the Slack and Discord daemon stack: in-process listeners
(`internal/comms/{slack,discord}*.go`), HTTP handlers
(`internal/app/handlers_slack_*`, `slack_agent_client*`), the Slack
OAuth provider (`internal/account/slack_service*.go`), the
in-process Slack source connector (`internal/source/slack/`), and
the system vault (`internal/vault/system*.go`) along with its
config plumbing.
The Slack/Discord stack was built for the cloud messaging gateway
hypothesis; v1 (#493) shipped against Google and v2 (#505) ships
the local Monday catch-up demo, so the daemon-side messaging code
has no validated consumer post-pivot. The system vault was the
companion piece (per archived ADR-0020) — bot tokens for Slack
workspace installs were the only driver — and goes with it.
`internal/comms` keeps the SPI (Listener, OutgoingMessage, the
NotifyQueue and registry) so a future channel implementation has
something to plug into; `StartListeners` is a no-op until one
exists. Draft send now dispatches via the listener registry
generically — with no implementations registered the approve/edit
paths return 503, which is the correct behavior for "comms not
configured."
ADR-0020 is amended in the archive with a superseded note.
Slack-as-outbound-action via the v2 connector (#513) is unaffected
— that runs out of process via the connector model.
Closes #525.
Closes #524 (superseded).
Refs ADR-0002 (core ships only primitives).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
🚅 Deployed to the aileron-pr-527 environment in aileron
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #527 +/- ##
==========================================
+ Coverage 81.98% 82.34% +0.36%
==========================================
Files 235 221 -14
Lines 23989 21908 -2081
==========================================
- Hits 19667 18041 -1626
+ Misses 3147 2758 -389
+ Partials 1175 1109 -66
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
This was referenced May 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Removes the Slack and Discord daemon stack: in-process listeners, HTTP handlers, the Slack OAuth provider, the in-process Slack source connector, and the system vault.
The Slack/Discord stack was built for the cloud messaging gateway hypothesis. v1 (#493) shipped against Google and v2 (#505) ships the local Monday catch-up demo, so the daemon-side messaging code has no validated consumer post-pivot. The system vault was the companion piece (per archived ADR-0020) — Slack workspace bot tokens were its only driver — and goes with it.
Per the issue's intent, the comms SPI (Listener, OutgoingMessage, NotifyQueue, ListenerRegistry) is preserved as a primitive for any future channel implementation;
StartListenersis a no-op until one exists. Draft approve/edit now dispatches via the listener registry generically — with no implementations registered the paths return 503, which is the correct behavior for "comms not configured."ADR-0020 is amended in the archive with a superseded note.
Slack-as-outbound-action via the v2 connector (#513) is unaffected — that runs out of process via the connector model.
What was removed
internal/comms/{slack,discord}*.goand helpers (24 Slack files + 3 Discord files)internal/account/slack_service*.go(Slack OAuth provider)internal/app/handlers_slack_*andslack_agent_client*(HTTP route handlers)internal/source/slack/(in-process Slack source connector)internal/vault/system*.go(system vault implementation)AileronConfignotifications schemaSlackEnabled()/SystemVaultEnabled()and the env-var plumbing ininternal/config/auth.gogithub.com/slack-go/slackandgithub.com/bwmarrin/discordgodependenciesinternal/app/app.gocmd/aileron-enclave/oauth.goWhat stayed
comms.ListenerSPI,IncomingMessage/OutgoingMessage,NotifyQueue,ListenerRegistrycomms.IsVaultRef/comms.ResolveVaultRefhelpersmodel.ConnectedAccountProviderSlackenum value (the v2 connector model still usesslackas a service name)Acceptance
internal/app/app.goandcmd/aileron/github.com/slack-go/slackand Discord deps removed viago mod tidytask lint:go,task build,task test:gocleanTest plan
task lint:gopassestask buildpasses (Go modules + docs)task test:gopasses across all modules (internal,cmd/aileron,cmd/aileron-enclave,cmd/aileron-mcp,cmd/aileron-sh)Closes #525.
Closes #524 (superseded).
Refs ADR-0002 (core ships only primitives).
🤖 Generated with Claude Code