Skip to content

Run unattended Triage Passes from terminal or EOF input - #1918

Merged
JacobStephens2 merged 2 commits into
issue-1695from
issue-1893
Nov 10, 2026
Merged

JacobStephens2 merged 2 commits into
issue-1695from
issue-1893

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Nov 9, 2026 •

Copy link
Copy Markdown
Owner

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.

terminal / empty stdin
  → Command limit → Sweep → Failure limit
  → needs-triage candidates in pickup.order
  → filter → reserve on origin → recheck → triage in place

Failed Triage runs stay counted while ready-for-human, agent-failed waits 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

  • Before: cargo test --test triage_pass eof_selects_an_issue_and_triages_it_on_the_selected_base -- --exact failed: thirdshift: triage base <branch> requires an Issue URL or number (exit 2 instead of 0).
    After: same command passed: 1 passed; 0 failed.
  • Before: cargo test --test triage_pass a_failed_triage_counts_until_the_day_shift_relabels_or_closes_it -- --exact failed: the next Pass printed taking agent-failed off #7, which the Day shift took over and 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.
  • Final local selector: 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 as docs/testing.md directs; the interrupted local full run is not claimed as passing.
  • CI for ead7f4ae passed: cargo nextest run reported 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:

Before
After

390×844:

Before
After

How it works

1440×900:

Before
After

390×844:

Before
After

Architecture

1440×900:

Before
After

390×844:

Before
After

User manual

1440×900:

Before
After

390×844:

Before
After

Review coverage

thirdshift-code-review used 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.md and summary.json beside the Session trace.

Unaddressed findings

Standards

  • Possible Speculative Generality in the shared failure-accounting interface (optional judgement call, src/triage/pass.rs:37,49): retained deliberately. src/pickup.rs:338 shares Sweep and failure accounting through the established Outside seam; src/pass.rs already provides the concrete LaunchAndGitHub and InMemory adapters. Using that adapter preserves the existing tested policy in one place without introducing another interface solely for this caller. flags is 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

@JacobStephens2
JacobStephens2 merged commit 8aead37 into issue-1695 Nov 10, 2026
16 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1893 branch November 10, 2026 00:32
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.

1 participant