Repository navigation
Include issue and PR titles in run notification emails - #2077
Merged
Merged
Conversation
A pull request or issue title is chosen by its author. Line breaks and other controls in a captured title were copied into the Run notification subject and body, so they could start another field. Those characters become spaces before the title is written.
Merged
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
Review runs (both modes, author selection and conflict notices), Fix runs (including Base CI repair PRs) and Custom processes retain available titles through later failure or interruption. Unavailable metadata keeps the existing subject fallback; completion adds no title lookup. Ticket, Spec and Pickup issue subjects retain their format. Updated and regenerated the manual.
Closes #2056
Evidence
Execution evidence
cargo test --test notification_titles review_notification_keeps_the_captured_pr_title -- --exactFailed: actual subject
[thirdshift] acme/widgets Review run: ready for review; expected[thirdshift] acme/widgets Review run #1 Export widgets with colors: ready for review.After: same command:
test review_notification_keeps_the_captured_pr_title ... ok;1 passed; 0 failed.cargo test --test notification_titles fix_notification_keeps_the_captured_pr_title -- --exactFailed: actual subject
[thirdshift] acme/widgets Fix run: ready for review; expected the captured PR number and title.After: same command:
test fix_notification_keeps_the_captured_pr_title ... ok;1 passed; 0 failed.cargo test --test notification_titles --test fix_base_ci -- --test-threads=3passed (24 tests, 2 ignored fixture entry points). Checks emailed payloads, saved copies, later failures, interruption, unavailable metadata and conflict notices.cargo check --all-targets,cargo clippy --all-targets -- -D warnings,cargo fmt --checkandnpm run docs:check --prefix sitepassed.CARGO_BUILD_JOBS=2 RUST_TEST_THREADS=3 NEXTEST_TEST_THREADS=3 scripts/affected-tests mainpassed all 68 site checks. Its duplicate local Rust run was intentionally interrupted after successful CI for the same head: 913 tests had passed, 3 running tests received SIGINT, and 3,417 remained unrun. The script exited 1 from that cancellation after 1,900.58 seconds, including compilation. Full Rust validation uses CI run 43144054507 on114e07c137c3c7b2ff94a97f4bcb728b8ddd3cdb: all four partitions, the exact coverage gate and the stabletestgate passed, followingdocs/testing.md's instruction to reuse successful CI for the exact head.Test seams: the thirdshift CLI with real Git, fake GitHub and Harnesses, and a local Resend HTTP stand-in; observable outputs are emailed subjects/bodies and saved notification copies.
Visual evidence
Manual notification documentation, same state at 1440×900:
Same documentation and state at 390×844:
Review coverage
Independent
thirdshift-code-reviewaxes usedrefs/remotes/origin/main(bd9ff6f98a7bc4368cfcd2b239a59e5c43e3903c) as the fixed point. Standards: 0 findings. Spec: 0 findings. Each axis read all 12 changed files, including generatedsite/docs/index.html; no generated-output exclusions and no unread changed files. Reports and final files-read lists are retained in.thirdshift-review-34q89u/standards.mdandspec.md, with counts insummary.json.Unaddressed findings
Standards
None.
Spec
None.
Security
None.
Security review outcome
No unaddressed introduced findings.
CI notes
console-test: unrelated existing Fleet fixture write race atconsole/tests/fleet.test.cjs:135(failed job); widening its truncate/write gap to 1.5 s reproduces the same line-1412 need youversus3 need youfailure with main1cfa395d, while atomic replacement with the same delay passes. The test, Console sources, and workflow match main exactly; the unmodified local Console suite passed all 202 tests (none skipped).Merge Danger
Door: two-way
Blast Radius: notifications
Email subjects and bodies gain captured input titles.
Built with codex codex-cli 0.167.1 · gpt-6.1-sol · xhigh