Skip to content

Fix duplicate issue lines in Triage run notifications - #1989

Merged
JacobStephens2 merged 4 commits into
mainfrom
issue-1988
Nov 11, 2026
Merged

JacobStephens2 merged 4 commits into
mainfrom
issue-1988

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Nov 11, 2026 •

Copy link
Copy Markdown
Owner

Summary

Successful Triage run notifications already contain filed issue links in the Recommendation. Use the publication fallback only when that Recommendation is unavailable, then keep each published issue's exact Issue: record once across questionnaires and retained failure details. Terminal output keeps its existing renderer.

 if Recommendation exists
   append Recommendation notification
-append publication links
+else
+  append publication links
+keep the first Issue record for each published issue

Closes #1988

Evidence

Execution evidence

  • Before: cargo test --test triage_run a_successful_triage_notification_lists_a_filed_issue_once -- --exact --nocapture failed against unpatched dbdd8943 with one recorded email request and two identical issue lines:

    Issue: https://github.com/acme/widgets/issues/8
    Issue: https://github.com/acme/widgets/issues/8
      left: 2
     right: 1
    test result: FAILED. 0 passed; 1 failed
    

    After: The same command passed: 1 passed; 0 failed.

  • Partial publication: cargo test --test triage_run partial_publication_notification_lists_each_filed_issue_once -- --exact --nocapture failed after the initial guard because retained failure analysis repeated each published link: left: 2, right: 1. After deduplication, the same command passed: 1 passed; 0 failed.

  • Questionnaire: cargo test --test triage_run successful_questionnaire_notification_lists_its_filed_issue_once -- --exact --nocapture failed after the initial guard because the Issues and Questionnaire sections both supplied the link: left: 2, right: 1. After deduplication, the same command passed: 1 passed; 0 failed.

  • cargo test --test triage_run: 31 passed; 0 failed; 1 ignored, including terminal trailing-link checks, saved notifications, questionnaires and partial publication.

  • Final-head CI run passed for 0d742d1bad0ee216c57acb0007807bb904b06bee. cargo nextest run: 4185 tests run: 4185 passed (2 slow), 97 skipped in 1319.877s. Formatting, clippy with warnings denied, site checks and Console browser checks also passed.

  • /usr/bin/time -p scripts/affected-tests refs/remotes/origin/main selected the same full Rust suite locally. Per docs/testing.md, the duplicate local run was stopped once CI passed on the identical head: 1602.50s elapsed, including 51.27s compilation. It had reported no test failures before interruption; full-suite validation uses the successful CI result above.

Test seams

  • The real thirdshift triage CLI with the existing fake GitHub and Harness adapters: observe filed issue URLs and terminal output.
  • The Run notification sent to the local Resend stand-in and the saved notification: require exactly one Issue: <url> line per filed issue.

Unaddressed findings

  • Standards: None. The one judgement finding (repeated test assertions) is addressed with assert_notification_links_once.
  • Spec: None. Both acceptance findings were reproduced with the reviewers' exact commands and fixed; both regressions are retained.
  • Security: None. The diff only keeps the first exact published Issue: record in the notification body. It adds no sink, and partial-failure publication links stay on the failure path.

Security review outcome

No unaddressed introduced findings.

Review coverage

Independent Standards and Spec reviews against refs/remotes/origin/main read both changed files (src/notification.rs, tests/triage_run.rs) and their supporting paths. No changed files were left unread by either axis; no generated-output exclusions. Reports and final files-read lists are retained in the Session's .thirdshift-review-MyRB7N/ artifacts. Finding counts include resolved findings: Standards 1 (worst P3), Spec 2 (worst P2), all addressed.

Merge Danger

Door: two-way

Blast Radius: notifications

The change affects Triage run notification text. It removes only repeated exact records for known published issue links, preserving the first record and the questionnaire and failure details.

Built with codex codex-cli 0.164.0 · gpt-6.1-sol · xhigh

@JacobStephens2
JacobStephens2 merged commit 52c9745 into main Nov 11, 2026
16 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1988 branch November 11, 2026 01:41
This was referenced Nov 11, 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.

Triage Run notification lists each filed issue's Issue line twice

1 participant