feat: stage Grokbots Discord rooms through Relay - #2732
feat: stage Grokbots Discord rooms through Relay#2732jasonqlwilliams-alt wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f5cfe30afd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| || die 'route input must be one JSON object' | ||
|
|
||
| platform=$(printf '%s' "$payload" | jq -r ' | ||
| def explicit: (.platform // .reply_platform // .target_platform // .source_platform // .provider // "") | ascii_downcase; |
There was a problem hiding this comment.
Reuse the canonical Relay platform precedence
Captain, when a compatibility payload carries both reply_platform and platform, fmx_extract_reply_context prioritizes reply_platform, but this expression prioritizes platform; for example, {reply_platform:"discord",platform:"x"} is canonically a Discord request yet this command rejects it, preventing an otherwise valid room message from reaching its seat. Reuse the canonical extractor or mirror its first-nonempty field ordering.
AGENTS.md reference: AGENTS.md:L543-L547
Useful? React with 👍 / 👎.
kunchenguid
left a comment
There was a problem hiding this comment.
Speaking as Kun's firstmate:
VISION verdict: resist. firstmate is the command layer, not a Discord or Relay product, and not a chat workshop. This change hardcodes one crew's Grokbots roster (Jason, Eleusis, Flux, Continuum, Rakazo, a named Discord click path, server name Grokbots Rooms) into the shared captain-agnostic surface, and it hooks that roster into the existing fmx-respond mention path rather than leaving it as a captain-local adapter.
Class: default-behavior. Discord Relay mention handling is already the live respond path. The Grokbots grammar and eight-seat map are not an opt-in slash skill and not a per-home flag. Anyone with Discord Relay who writes fleet: is routed to Eleusis.
The helper itself is hermetic: no network, no credentials, symlink inputs refused, request_id constrained. That is not enough. The distro must stay generic. A captain-specific Discord room plan belongs in that home, not in README, docs, bin, and fmx-respond of the shared template.
Not merge-eligible. CI is empty pending first-time fork approval; not a captain-flag.
2026-08-21 go-live capability auditProved live
Wake latencyNo designed or fixture value is being reported as live latency.
The event path to measure after activation is Discord mention event -> Relay Test postPrepared but not posted live: One remaining Jason sitting
Proved by tests only
No merge is requested. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d1022b196f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| 6. Use the authenticated dashboard's Discord install control, choose `Continuum server`, and inspect the authorization screen before approving it. | ||
| 7. Approve only the scopes and permissions in the least-privilege list below. | ||
| 8. Return to Discord, open the `GROKBOTS` category permissions, add the installed myfirstmate bot role, and allow the listed room permissions only. | ||
| 9. Return to the myfirstmate dashboard and copy the pairing token directly into `/home/jason/kun-agent-workspace/.env` with a local editor as `FMX_PAIRING_TOKEN=<token>`. |
There was a problem hiding this comment.
Write the pairing token to the active home
Captain, when FM_HOME points anywhere other than /home/jason/kun-agent-workspace, following this activation step writes the pairing token into the wrong instance. Bootstrap reads the active firstmate home's .env, as documented in docs/configuration.md, so the subsequent session remains inert despite the operator completing the prescribed setup; direct the operator to $FM_HOME/.env (or otherwise identify the active home) instead.
AGENTS.md reference: AGENTS.md:L49-L50
Useful? React with 👍 / 👎.
Summary
fleet,continuum-guest, eight seat mailboxes, and one thread per jobEvidence boundary
Proved by hermetic tests:
Still explicitly owner-gated and unknown:
No Discord sign-in, server mutation, bot installation, OAuth approval, pairing-token access, live post, Rakazo start, or account action was performed.
Validation
tests/fm-discord-rooms.test.sh: passtests/fm-x-mode.test.sh: passtests/fm-documentation-audiences.test.sh: passbin/fm-doc-audience-check.sh: passbin/fm-test-run.sh --check-coverage: pass, 152 tests coveredbash -n bin/fm-discord-rooms.sh tests/fm-discord-rooms.test.sh: passThe complete local lint command could not run because this worktree lacks pinned ShellCheck 0.11.0 and actionlint 1.7.12.
The test-runner self-test additionally lacks Ruby for parsing the workflow YAML.
Those are environment dependency gaps, not hidden green results.