Skip to content

Include issue and PR titles in run notification emails - #2077

Merged
JacobStephens2 merged 3 commits into
mainfrom
issue-2056
Nov 12, 2026
Merged

JacobStephens2 merged 3 commits into
mainfrom
issue-2056

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Nov 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

captured issue / PR identity and title
  → Run notification keeps its owning Command name
  → email subject + URL and Title in body
  → identical saved copy beside the Command log

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

  • Before: cargo test --test notification_titles review_notification_keeps_the_captured_pr_title -- --exact
    Failed: 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.
  • Before: cargo test --test notification_titles fix_notification_keeps_the_captured_pr_title -- --exact
    Failed: 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.
  • Focused coverage: cargo test --test notification_titles --test fix_base_ci -- --test-threads=3 passed (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 --check and npm run docs:check --prefix site passed.
  • Final validation: CARGO_BUILD_JOBS=2 RUST_TEST_THREADS=3 NEXTEST_TEST_THREADS=3 scripts/affected-tests main passed 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 on 114e07c137c3c7b2ff94a97f4bcb728b8ddd3cdb: all four partitions, the exact coverage gate and the stable test gate passed, following docs/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:

Before desktop
After desktop

Same documentation and state at 390×844:

Before mobile
After mobile

Review coverage

Independent thirdshift-code-review axes used refs/remotes/origin/main (bd9ff6f98a7bc4368cfcd2b239a59e5c43e3903c) as the fixed point. Standards: 0 findings. Spec: 0 findings. Each axis read all 12 changed files, including generated site/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.md and spec.md, with counts in summary.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 at console/tests/fleet.test.cjs:135 (failed job); widening its truncate/write gap to 1.5 s reproduces the same line-141 2 need you versus 3 need you failure with main 1cfa395d, 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

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.
@JacobStephens2 JacobStephens2 added in-progress A Claim: thirdshift has taken this issue and removed in-progress A Claim: thirdshift has taken this issue labels Nov 12, 2026
@JacobStephens2
JacobStephens2 merged commit 287d9a9 into main Nov 12, 2026
44 of 45 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-2056 branch November 12, 2026 04:15
@JacobStephens2 JacobStephens2 mentioned this pull request Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ensure PR or Issue titles are included in email notices (example - review run doesn't or doesn't always do this)

1 participant