Skip to content

Architect run with no Strong candidate: idea issue or already filed - #243

Merged
JacobStephens2 merged 2 commits into
issue-27from
issue-231
Oct 1, 2026
Merged

JacobStephens2 merged 2 commits into
issue-27from
issue-231

Conversation

@JacobStephens2

Copy link
Copy Markdown
Owner

Summary

An Architect run whose Architecture review found no Strong candidate now ends as a success on the issue the review named, instead of failing with "published no plan".

 conclude(final line of the review)
   "Architecture review plan: <url>"
     check the plan, swap needs-triage for ready-for-agent
     stdout: <url>   stderr: plan <url> is ready for an agent          exit 0
   "Architecture review idea: <url>"
-    fail: the Architecture review published no plan                   exit 1
+    no gh call, no label change, no dispatch
+    stdout: <url>   stderr: no Strong candidate: the Architecture
+                            review filed the idea <url>               exit 0
   "Architecture review already filed: <url>"
-    fail: the Architecture review published no plan                   exit 1
+    no gh call, nothing filed or changed
+    stdout: <url>   stderr: no Strong candidate: <url> already covers
+                            the Architecture review's top
+                            recommendation, so it filed nothing       exit 0
   anything else
     fail: the Architecture review ended without the final line its prompt asks for

architect::run returns an Outcome (PlanReady, IdeaFiled, AlreadyFiled) holding the issue it ended on. Its Display is stderr's last line and its URL goes to stdout. The README has a new "No Strong candidate" section, and thirdshift help describes both outcomes. --plan-only stays required until #232.

Seam under test: the thirdshift binary, through tests/architect_run.rs with the fake claude and gh.

Evidence

  • Before: a_review_that_files_an_idea_prints_its_url_and_changes_no_label failed: exit 1, with the Architecture review published no plan: it filed the idea https://github.com/acme/widgets/issues/8. The already-filed test failed the same way.
    After: both pass. The idea test asserts exit 0, the idea's URL alone on stdout, the last stderr line, the label still needs-triage, and one session. The already-filed test asserts the fake GitHub's state is identical before and after.
cargo test --test architect_run   21 passed; 0 failed
cargo test                        27 test binaries, all ok
cargo clippy --all-targets        clean
cargo fmt --check                 clean

Unaddressed findings

Standards

  • Outcome mirrors the private Report (Duplicated Code / Repeated Switches). Report is what the review said and Outcome is what the Architect run did. They diverge in Architect run dispatches its plan as a Spec run or a Run #232, when a plan goes on to a dispatched run.
  • Outcome as a { kind, url } struct to drop url(). The enum keeps each case's meaning on its variant, and url() is one match arm.
  • conclude as a mild Mysterious Name. No clearer name came up; its doc comment says what it ends and on what.
  • The two stderr sentences are spelled out in the code, README and tests (Shotgun Surgery). This is how the repo treats every user-facing line; the reviewer also advised against acting on it.

Spec

  • thirdshift doesn't check the idea issue or the already-filed issue (open, in this repository, created during this run). The Ticket asks for the URL printed with nothing changed, and the parent Spec requires checks only before dispatch. A check would add a gh call and failure modes nobody specified. Worth a decision by the Day shift.
  • No mid-run progress line for the idea path, as the plan path has with "published the plan". The outcome line already names the idea and the case; a second line would repeat it.
  • The one-line architect summary in the README and help usage still says "publish a plan". That is the command's purpose; the "No Strong candidate" section covers the other outcomes.
  • The help text and the missing-final-line message changed, though the Ticket names only the README. Both would have been wrong otherwise: the old message said "naming its plan".

Merge Danger

Door: two-way

Reverting restores the failure on a no-plan report. No data or labels are touched on these paths.

Blast Radius: small

Only thirdshift architect --plan-only. A script that treated exit 0 as "a plan is ready" now also gets exit 0 for an idea issue or an already-filed issue; stderr's last line tells them apart. The missing-final-line failure message is reworded.

Closes #231

🤖 Generated with Claude Code

JacobStephens2 and others added 2 commits October 1, 2026 02:48
…e issue that covers it

A review that reports the idea issue it filed, or the open issue that
already covers its top idea, no longer fails the Architect run. It swaps
no label and dispatches nothing, prints that issue's URL on stdout and
exits 0, with a last line on stderr saying which of the two it was.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the outcome

The already-filed line and the docs say top recommendation, as the
glossary does. The outcome keeps the Issue URL it was read as, the two
no-plan tests share their assertions, and two comments are rewrapped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JacobStephens2
JacobStephens2 merged commit d82ed66 into issue-27 Oct 1, 2026
13 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-231 branch October 1, 2026 03:06
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