Repository navigation
ci(release): thread Slack release notices under the start notice - #21
Conversation
Result notices reply in the start notice thread via its ts. Failures are also broadcast to the channel. If the start post never happened, thread_ts is null and notices post to the channel as before.
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Capture and pass the Slack timestamp .github/workflows/publish-to-pypi.yml |
The build job exports the start message timestamp. The notification job uses it when available and sets THREAD_TS to null when it is absent. |
Thread result notices and react after publish .github/workflows/publish-to-pypi.yml |
Failure and success notices reply in the start message thread when its timestamp is available. Failure replies are broadcast. After a successful PyPI publish, the workflow attempts to add a ✅ reaction to the start message and continues if the reaction fails. |
Priority:
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Feature
Sequence Diagram(s)
sequenceDiagram
participant BuildJob
participant Slack
participant NotifyJob
BuildJob->>Slack: Post start notice
Slack-->>BuildJob: Return message timestamp
BuildJob->>NotifyJob: Pass slack-ts
NotifyJob->>Slack: Post result notice in thread when timestamp exists
NotifyJob->>Slack: Add reaction after successful PyPI publish when timestamp exists
Possibly related PRs
- plainlang/plain-parser#16: Creates the workflow notification jobs and the start Slack notice that this change uses for threaded result notices.
Merge Risk: 
Minimal · up to f53af
-
The release notification changes are mergeable with no established functional or operational risk.
Architecture risk: 
Low · up to f53af
-
The changed surface does not map to a changed system, dependency edge, entrypoint, or external dependency.
Changed systems: None identified.
Architecture concerns
No architecture-level concerns identified.Review details
-
Before / after behavior
- observed — Modified behavior in .github/workflows/publish-to-pypi.yml: The build job now exposes the start Slack notice timestamp through the
slack-tsjob output, sourced from theslack-startstep. - observed — Modified behavior in .github/workflows/publish-to-pypi.yml: The start Slack notification step now has the
slack-startID, allowing its timestamp to be referenced by the build job output. - observed — Modified behavior in .github/workflows/publish-to-pypi.yml: The notify job now sets
THREAD_TSfrom the build output, quoting a present timestamp and usingnullwhen it is absent. The added comments specify that notices use the thread when available and fall back to channel posts when it is not. - observed — Modified behavior in .github/workflows/publish-to-pypi.yml: The build-failure Slack notice now includes the thread timestamp and broadcasts the reply when a thread timestamp exists.
- observed — Modified behavior in .github/workflows/publish-to-pypi.yml: The build job now exposes the start Slack notice timestamp through the
-
Pre-merge checks: 
4
-
Full details: Title check
-
Explanation
The title names the main change: Slack release notices now reply in the thread of the start notice. The raw summary confirms the build job exposes the start-notice
slack-ts, and build, upload, PyPI failure, pre-release, and release success notices reply in that thread. The title's scope prefixci(release)matches the edited publish workflow. The title is concise, specific, and does not describe unrelated work. The title does not mention the ✅ reaction, but that is a secondary detail.
-
Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Comment @coderabbitai help to get the list of available commands.
|
@gorandodig @coderabbitai This buries the "success" message inside a thread. Is there a solution that would make the "end result" visible on top-level? |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain
In thread_ts: ${{ env.THREAD_TS }}
reply_broadcast: ${{ env.THREAD_TS != 'null' }}This keeps the result in the thread and also shows a reference to the reply in the channel timeline. Slack supports this through This is the smallest change that makes the final result visible at the top level without losing the thread. You are interacting with an AI system. |
Or we could do a ✅ react on the top-level post instead @coderabbitai |
|
Tip For best results, initiate chat on the files or code changes. @bananaplain Yes. A ✅ reaction on the top-level start message would show success without adding another channel message. Use Slack’s Keep the success details in the thread and keep failure replies broadcast. If no start message exists, keep the current channel-post fallback. One trade-off: the reaction marks the original message, but does not move it to the latest position in the channel. You are interacting with an AI system. |
Success replies stay in the thread, so a reaction marks the top-level message too. It needs the reactions:write scope on the Slack app. The step is non-fatal until that scope is granted.
|
@coderabbitai i think the current branch state is now cute 👍 will approve |
|
Tip For best results, initiate chat on the files or code changes. @bananaplain Glad you’re happy with the result! 👍 You are interacting with an AI system. |
Each release now posts one Slack message. The result notices reply in its thread, using the
tsoutput of the start post.reply_broadcast). Success stays in the thread and adds a ✅ reaction to the start notice. This needs thereactions:writescope on the Slack app; the step is non-fatal until it is granted.thread_tsrenders as YAMLnull. The Slack client drops null fields, so notices post to the channel as before. An empty string would be sent as-is, which is whynullis used.thread_tsis quoted so YAML keeps the timestamp a string rather than a float.Summary by CodeRabbit