Repository navigation
Run unattended Triage Passes from terminal or EOF input - #1918
Merged
Merged
Conversation
This was referenced Nov 10, 2026
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
thirdshift triage [base <branch>]now triages one eligible backlog issue when stdin is a terminal or empty at EOF, including cron. Reports and explicit issues retain their existing workflow.Failed Triage runs stay counted while
ready-for-human, agent-failedwaits for the Day shift. Skips exit zero, deduplicate Activity log reasons, honour quiet_skips and send no Run notification. Updated glossary, manual, generated manual and all three hand-written site pages.Closes #1893
Evidence
Execution evidence
cargo test --test triage_pass eof_selects_an_issue_and_triages_it_on_the_selected_base -- --exactfailed:thirdshift: triage base <branch> requires an Issue URL or number(exit 2 instead of 0).After: same command passed:
1 passed; 0 failed.cargo test --test triage_pass a_failed_triage_counts_until_the_day_shift_relabels_or_closes_it -- --exactfailed: the next Pass printedtaking agent-failed off #7, which the Day shift took overand skipped for no candidate instead of the Failure limit.After: same command passed:
1 passed; 0 failed.cargo test --test triage_pass --test triage_run --test triage_issue -- --test-threads=3: 45 passed, 3 ignored fixture entry points. Covers terminal/EOF/whitespace input, piped Reports, candidate filters/order, stale/reserved fallback, Command/Failure limits, quiet deduplication, failure cleanup and configured notification delivery.cargo test --locked --test pickup_model -- --nocapture: 4 passed, 1 ignored known literal-property assertion. Claimed-dispatch safety and safeguard mutations passed; the pre-existing pre-Claim dispatch counterexample remains reachable. This is not proof of the literal at-most-one-dispatch property.npm run docs:check --prefix site,cargo fmt --check,git diff --check: passed.NEXTEST_TEST_THREADS=3 CARGO_BUILD_JOBS=4 scripts/affected-tests origin/issue-1695— all 67 site checks passed and Rust test compilation completed in 6m03s. The duplicate local Rust run was intentionally interrupted after same-head CI passed, reusing CI asdocs/testing.mddirects; the interrupted local full run is not claimed as passing.ead7f4aepassed:cargo nextest runreported 3,944 passed, 93 skipped, with no failures. Its step took 17m30s including 1m01s compilation (test execution: 988.378s). Formatting, strict Clippy, site and Console browser checks are green, as are release artifact checks.Seams under test: real CLI admission/input selection and GitHub/origin/notification effects through the existing Scenario tool fakes; retained Activity log, Command log and Session trace behavior. Site browser checks exercise the static rendered pages and generated manual.
Visual evidence
Paired Triage sections at 1440×900 and 390×844. Before captures use the pinned Base branch in a temporary detached worktree; all media is hosted in a secret Gist.
Homepage workflow
1440×900:
390×844:
How it works
1440×900:
390×844:
Architecture
1440×900:
390×844:
User manual
1440×900:
390×844:
Review coverage
thirdshift-code-reviewused issue-1695's fetched origin head,6662e3614888cac3d9526573582b01c577a48e66, as the fixed point. Both independent axes inspected all 20 changed files, including generated HTML hunks. No generated-output exclusions and no unread changed files. Standards raised 2 findings (ADR corrected; optional design suggestion declined); Spec raised 0. The single follow-up for each axis added no findings.Reports and exact counts are retained in
.thirdshift-review-bbxc0t/standards.md,spec.mdandsummary.jsonbeside the Session trace.Unaddressed findings
Standards
src/triage/pass.rs:37,49): retained deliberately.src/pickup.rs:338shares Sweep and failure accounting through the establishedOutsideseam;src/pass.rsalready provides the concreteLaunchAndGitHubandInMemoryadapters. Using that adapter preserves the existing tested policy in one place without introducing another interface solely for this caller.flagsis borrowed to construct that adapter and adds no dispatch behavior or configuration. This is an implementation design choice; no Spec or Day shift decision is deferred.Spec
None.
Security
None.
Security review outcome
No unaddressed introduced findings.
Merge Danger
Door: two-way
Revert restores the prior CLI behavior; no storage migration.
Blast Radius: triage
Scheduled Triage can now claim and update one trusted needs-triage issue per invocation. Shared failure accounting also retains failed Triage issues for Pickup's Failure limit.
Built with codex codex-cli 0.164.0 · gpt-6.1-sol · xhigh