Skip to content

Treat blank Triage questionnaires as absent - #2135

Merged
JacobStephens2 merged 4 commits into
mainfrom
issue-2052
Nov 12, 2026
Merged

JacobStephens2 merged 4 commits into
mainfrom
issue-2052

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Nov 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

parse each proposed issue
  blank questionnaire → absent
  needs-info → require non-empty questions
  other states → omit questionnaire

Normalize before state validation so empty questionnaires need no correction turn. Add a ready-for-agent example without questionnaire and regenerate the prompts page. As #2052 explicitly requires, ready-for-human now omits questionnaires too; its issue body carries the decision or operator action. Update the prompts, questionnaire skill and user documentation to agree.

Closes #2052

Evidence

Execution evidence

  • Before: cargo test --test triage_run blank_questionnaires_are_absent_without_a_correction -- --exact
    test blank_questionnaires_are_absent_without_a_correction ... FAILED
    Triage recommendation invalid after one correction. Initial validation error:
    the Triage questionnaire is required only for needs-info or ready-for-human issues: Handle an empty cache
    left: Some(1)
    right: Some(0)
    
    After: the same command passes: 1 passed; 0 failed. It covers null, empty strings, ASCII/Unicode whitespace and per-issue state overrides, and asserts exactly one Harness session.
  • cargo test --test triage_run --test triage_correction --test triage_issue --test triage_spec_regressions: 57 passed, 8 fixture entry points ignored. Includes rejection of non-empty questionnaires outside needs-info, rejection of blank needs-info questions, and publication/notification checks.
  • UPDATE_PROMPTS=1 cargo test prompts_page: 14 passed; generated outputs updated. npm run docs:check --prefix site and cargo fmt --check passed.
  • RUST_TEST_THREADS=3 /usr/bin/time -p scripts/affected-tests refs/remotes/origin/main: 69 site tests passed (52.16 s), 1,837 Rust unit tests passed, and 326 Console integration tests passed, along with the completed CLI suites. The selector chose cargo test because nextest is unavailable. The local broad run was interrupted after 1,023.35 s, including incremental compilation, when experiment fixtures inherited interactive terminal stdin and waited for input; this is not a local full-suite pass.
  • All five reported experiment failures and the two cases still waiting at interruption passed individually with stdin closed, using cargo test --test experiments <case> -- --exact --nocapture < /dev/null. No source change was needed. The waiting-line case failed alone with the agent never started after 120.38 s with terminal stdin, then passed in 10.84 s with stdin closed.
  • Full CI passed on 8be3a86cfa898ac48e34c3f5d891e2c0c343f86b, including all four Rust partitions and their coverage gate, site and Console browser tests, release smoke, and Linux artifact builds. Reused that exact-head full Rust result instead of starting another broad local run.
Passing isolated experiment cases
a_trial_waiting_line_keeps_a_long_trials_stage_working
code_graders::interrupted_check_cleans_up_without_a_score_and_experiment_resumes
host::an_experiment_waits_visibly_for_a_live_ticket_and_skips_passes_until_it_ends
host::stop_during_the_host_wait_interrupts_cleanly_and_resume_waits_again
host::waiting_experiments_take_turns_after_the_live_ticket_ends
host::a_ticket_started_by_hand_runs_and_warns_about_the_live_experiment
host::every_pass_skips_a_live_experiment_on_another_repository_before_github_or_sessions

Visual evidence

Paired Chromium captures show the expanded Triage skill's recommendation examples at identical positions and viewports. Both rendered examples parse as JSON; the new ready-for-agent example has no questionnaire. The captures were visually inspected.

Viewport Before capture After capture
Desktop 1440×900 /tmp/before-desktop.y6F3Tx.png /tmp/after-desktop.FWnfrH.png
Mobile 390×844 /tmp/before-mobile.zUHS6y.png /tmp/after-mobile.LNoS7p.png

Capture publication is unavailable: gh gist create returned HTTP 404 and explicitly reported that the GitHub token needs the gist scope. No raw Gist URLs could be produced; the exact capture paths remain in this Session. No evidence media was added to the repository branch.

Test seams

  • The thirdshift triage CLI with a fake Harness and GitHub: recommendation stdout, issue publication, Run notification and the number of Harness sessions.
  • Generated prompts: source synchronization plus browser rendering of the Triage skill's recommendation examples.

Review coverage

Independent thirdshift-code-review Standards and Spec reviews used git diff refs/remotes/origin/main...HEAD, fixed at d6e961c4c517e0858b29a827028c3c2191c63140. Each reviewed all 18 changed files, including generated output. Standards: 0 findings. Spec: 0 findings. Unread changed files: none. Generated-output exclusions: none.

Unaddressed findings

Standards

None.

Spec

None.

Security

None.

Security review outcome

No unaddressed introduced findings.

Merge Danger

Door: two-way

Revert the parser, guidance and generated documentation together; no stored-data migration.

Blast Radius: Triage

Questionnaires belong only to needs-info, including when a per-issue state overrides the overall recommendation. ready-for-human recommendations with non-empty questionnaires are now rejected, as required by #2052.

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

CI notes

  • console-test failure: intermittent 390px remote review-explicit: visible PR target assertion at console/tests/working-targets.test.cjs:83; the test, Console/rendering/logging code, dependencies and CI workflow are unchanged in the branch diff against main, and local cargo build --locked, node --test console/tests/working-targets.test.cjs (1 passed), and npm test --prefix console (205 passed, 0 failed/skipped; 133.24 s) all passed on unchanged head dd0fc21a; no unrelated code changes.

@JacobStephens2 JacobStephens2 added the in-progress A Claim: thirdshift has taken this issue label Nov 12, 2026
Preserve blank-questionnaire normalization and needs-info-only guidance while adopting repository categories in both Triage modes and category correction. Regenerate prompts and the manual from merged sources.

Validation: prompt generation, formatting, site and Console browser suites passed. The affected-test run stopped at an intermittent setup cleanup assertion; its isolated rerun, the complete setup suite and all remaining Rust targets passed without code changes.
@JacobStephens2
JacobStephens2 merged commit 2efc641 into main Nov 12, 2026
24 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-2052 branch November 12, 2026 19:56
@JacobStephens2 JacobStephens2 removed the in-progress A Claim: thirdshift has taken this issue label 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.

Treat empty-string Triage questionnaire as absent and show a ready-for-agent example in thirdshift-triage

1 participant