Repository navigation
Interpret the Triage recommendation in one module - #2148
Conversation
Initial and corrected session output, --recommend-only and both publications now cross Recommendation::interpret. Each proposed issue keeps its resolved filing (category, state, held readiness) and each comment its parsed target, so callers no longer zip parallel vectors or patch existing-issue readiness after the GitHub checks. Refs #2147
Publication notes (held readiness, confirmation block, questionnaire) come from one Issue::notes, naming the held state from the filing. Report and existing-issue recording get their own methods, the interpretation inputs are Captured, the cardinality rule is checked once, and Input::issue replaces repeated matches. Adds Report combined diagnostics and permitted existing readiness cases, and points the private-notification index row at the notification's new owner. Refs #2147
|
Delivery completed on agent-authored or reviewed head 296dde2. |
Keep Filing::readiness_held private, test factory-label exclusion only through the CLI, rename a test that claimed an unobservable order, and list the existing-target rule tests in the code-navigation index.
|
Review run. Pushed fixes to issue-2147 at b24e503. Spec axis used the linked closing issues. I reviewed PR #2148 against The Spec is the linked closing issue #2147. Both reviewers read all six changed files, so no follow-up was needed and no changed file was left unread. There is no generated output in this diff, so nothing was excluded. The reports and Standards9 findings, all judgement calls, no hard violations. The reviewer compared the held-readiness wording, the Against documented standards:
Smells:
Spec3 findings, none saying behaviour is wrong. The reviewer checked behaviour against
What I fixed
Unaddressed findingsStandards
Spec
No finding needed the Day shift to decide, so I filed no ValidationRun in this worktree; the PR was open and not a draft before validation.
The extra-command list was empty, so nothing else ran. Logs are in SecurityNo unaddressed introduced findings. Delivery failedpull request changed during Review run |
Summary
Interpret each Triage run's recommendation once, through one private module shared by the initial session, its correction, recommend-only and both publication modes.
The module owns category/state fallback, repository spelling, confirmation blocks, questionnaires, existing-target rules, readiness permission and combined diagnostics. Wire values remain as recommended until publication records actual results. Report readiness without permission stays
needs-triage; existing-issue readiness becomesready-for-human. GitHub effects, publication order, existing categories, partial-publication links and private-finding notices retain their behavior. The domain-to-code index identifies the new owner.Evidence
Execution evidence
This is a behavior-preserving refactor. The before/after assertion demonstrates removal of caller-owned optional resolved state:
Before, at the fixed base
69c8689b:Actual output (exit 1):
After, at
b24e503f, the same assertion against the branch:Actual output (exit 0):
Test seams:
Recommendation::interpret, its publication projections and result recording; thethirdshift triageCLI through the existing fake Harness/GitHub adapters.cargo test --bin thirdshift triage::recommendation::tests: 15 passed; 0 failed. Covers combined category/state rules, both readiness modes, confirmation blocks, questionnaire normalization, combined errors, serialization and notifications.cargo test --test triage_correction --test triage_run --test triage_issue --test triage_spec_regressions --test triage_pass --test issue_1711_retained_home: 73 passed; 0 failed; 12 ignored (subprocess helper entry points). Results by binary: correction 12, Report 33, existing issue 12, Spec regressions 3, Pass 11, retained home 2.b24e503fd39ac173c85af2ab68446d5c703b68b5: Rust coverage gate, overall test gate, site and Console. No equivalent full-suite rerun was made on this already covered head.scripts/affected-tests origin/main; it selected the full Rust suite. Its local sandbox dependency failures were followed by successful CI on the delivered head. This continuation changed no tracked files.Visual evidence
Not applicable: no rendered UI changed.
Review
Independent Standards and Spec reviewers used
thirdshift-code-reviewagainstrefs/remotes/origin/main(69c8689b), reviewing all three branch commits throughb24e503f..thirdshift-review-VDiM9M/standards.mdandspec.md;summary.jsoncontains{"standards":0,"spec":0}in the Session artifacts.Unaddressed findings
The current review raised none. These earlier review decisions remain documented for the whole branch:
Standards
PublishingmirrorsProposals. Retained:Recommendation::publishing, line 202 lends the selected proposal and disjoint mutable comments together to each publication adapter.Proposalsdoes not own the comments. This implements Deepen Triage recommendation interpretation #2147 Decision 4's associated publication projections; repeatedInputmatches were removed.is_factory_label, line 516 andone_line, line 537 belong here under Deepen Triage recommendation interpretation #2147 Decisions 6 (factory-label exclusion) and 11 (notification projection and sanitization). The inconsistent import was fixed.Spec
investigate, line 353 returnsErrbefore returning JSON on publication failure. Failure notifications omit bodies; no user-visible failure output changes. Successful URL/category/state updates retain their effect points. Recording successful effects follows Deepen Triage recommendation interpretation #2147 Decision 10.Recommendation::interpret, line 150 joins two complete, ordered resolutions of the same proposed issues inside construction. Callers receive associated proposals, never independent vectors. The separate category scan preserves the combined-error contract in Deepen Triage recommendation interpretation #2147 Decision 8.None of these decisions defers a call to the Day shift or reopens the Spec; no new triage issue is required.
Security
Reviewed
git diff 69c8689b378ba86623875415db9fd36696532cf5...HEADin guidance mode, including the recommendation module and its triage callers. The repository has noSECURITY.md. The applicable boundaries are ADR 0013 (a Harness is fully trusted and the worktree is the boundary), ADR 0015 (a private-finding notification carries title and link, not a write-up), and ADR 0005 (the Run notification leaves the machine through Resend). Readiness permission, confirmation blocking, factory-label exclusion, same-repository open-comment checks, notification field sanitization, and private-finding notification replacement stay on the existing GitHub write paths. No introduced boundary violation was established.Security review outcome
No unaddressed introduced findings.
Merge Danger
Door: two-way
An internal refactor; reverting restores the previous implementation without a data or configuration migration.
Blast Radius: Triage
Interpretation, recommendation JSON, notifications, issue labels and comments. Existing CLI regressions and exact-head CI cover these paths.
Closes #2147
Built with codex codex-cli 0.167.2 · gpt-6.1-sol · xhigh