feat: every slack table explains itself; channel status and group handle wired #9

Merged
KofTwentyTwo merged 2 commits from feature/tables-populated-defaults into develop 2026-10-14 22:42:44 +00:00
KofTwentyTwo commented 2026-10-14 22:04:46 +00:00 (Migrated from github.com)

Audit per table

table used by seeded help
slack_workspace OAuth install, readiness, authorizer no: OAuth install yes
slack_connection OAuth connect, authorizer, readiness no: OAuth connect yes
slack_channel authorizer (slackChannelId, slackChannelName), readiness no: host data (Slack IDs) yes
slack_user_group authorizer (slackUsergroupId, channelId, now handle) no: host data yes
slack_template render, validate, SlackTemplates.seed (runtime, insert-only by name) yes (existing runtime seed, extended not replaced) yes
slack_message / _attempt / _interaction outbox, dispatcher, interactivity no: logs yes

Changed

  • Help bundle help/qbit-slack.yaml + SlackHelp (STAND-IN qqq#1198), applied at the end of the producer.
  • Channel fields isPrivate, botIsMember, isArchived, description, checkedAt and slackChannelName were never written. Readiness and a new "Check channels" table action now write them from conversations.info.
  • User group handle was unused. Readiness resolves it via usergroups.list (optional scope); mentions become <!subteam^ID|@handle> (unsafe handles ignored). slackUsergroupId and channelId were already used (inventory was wrong on these).
  • Home readiness empty state says how to install.
  • No Liquibase changelog: the qbit seeds templates at runtime, so no host include is needed.

Tests

SlackTablesGuardrailTest (use, seeded-or-STARTS_EMPTY, help, seed twice + edit survives), SlackChannelStatusTest (channel write-back, Check channels, handle in mention). ./mvnw -o verify green (checkstyle, JaCoCo).

Not done

  • No Setup card: home already has the readiness section; help carries the setup order.
  • No channel discovery/import action.

🤖 Generated with Claude Code

## Audit per table | table | used by | seeded | help | |---|---|---|---| | slack_workspace | OAuth install, readiness, authorizer | no: OAuth install | yes | | slack_connection | OAuth connect, authorizer, readiness | no: OAuth connect | yes | | slack_channel | authorizer (slackChannelId, slackChannelName), readiness | no: host data (Slack IDs) | yes | | slack_user_group | authorizer (slackUsergroupId, channelId, now handle) | no: host data | yes | | slack_template | render, validate, SlackTemplates.seed (runtime, insert-only by name) | yes (existing runtime seed, extended not replaced) | yes | | slack_message / _attempt / _interaction | outbox, dispatcher, interactivity | no: logs | yes | ## Changed - Help bundle `help/qbit-slack.yaml` + `SlackHelp` (STAND-IN qqq#1198), applied at the end of the producer. - Channel fields `isPrivate`, `botIsMember`, `isArchived`, `description`, `checkedAt` and `slackChannelName` were never written. Readiness and a new "Check channels" table action now write them from conversations.info. - User group `handle` was unused. Readiness resolves it via usergroups.list (optional scope); mentions become `<!subteam^ID|@handle>` (unsafe handles ignored). `slackUsergroupId` and `channelId` were already used (inventory was wrong on these). - Home readiness empty state says how to install. - No Liquibase changelog: the qbit seeds templates at runtime, so no host include is needed. ## Tests `SlackTablesGuardrailTest` (use, seeded-or-STARTS_EMPTY, help, seed twice + edit survives), `SlackChannelStatusTest` (channel write-back, Check channels, handle in mention). `./mvnw -o verify` green (checkstyle, JaCoCo). ## Not done - No Setup card: home already has the readiness section; help carries the setup order. - No channel discovery/import action. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.