Repository navigation
The Spec PR owns its rules, tested in-process behind a seam, and the Delivery writes "Built with" through its own - #410
Merged
Merged
Conversation
…ilt with" through its own (#409) The Spec PR's rules reach GitHub and the progress lines only through a private `Outside` seam: the real adapter calls the same GitHub functions as before; an in-memory one drives the rules in-process. The Delivery's route writes the "Built with" line as a step after the push, through its existing `Outside`, now with the pull request's body. Two end-to-end tests the in-process ones now cover go. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e Delivery's does, one behaviour per test Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
The Spec PR's rules reach GitHub and the progress lines only through a private seam, and the Delivery writes the "Built with" line as a step of its own route, through its existing
Outside.Route::steps (src/delivery.rs) catch up? → opening session → push + write "Built with" (outside.pull_request / pr_body / set_pr_body; a failure is a warning) before_ready (a Run: nothing; a Spec run: the Spec PR puts its checklist back) mark the PR ready → Repair loop → after the mergeThe before-ready closure in
Delivery::deliverno longer calls GitHub itself. The same GitHub requests go out in the same order, with the same progress lines, warnings and pull request bodies.Evidence
gh.After: new in-process tests:
spec_run::spec_pr::testshas 11 tests: resume converts only a ready open PR, landing opens a draft or writes the checklist, show is a no-op or only warns, and put back fails when there is no PR or the set fails.delivery::testshas 3 new tests: "Built with" is written after the push and before the before-ready step, nothing is set when the line is already there, and a failed read or write is a warning that still marks the PR ready.no_pr_failsnow also checks that no body is read.tests/spec_run.rs:a_spec_review_that_keeps_the_markers_has_the_checklist_replaced_between_themanda_checklist_update_github_refuses_is_only_a_warning.cargo test: all pass (461 unit, every integration suite).cargo clippy --all-targets: clean.Merge Danger
Door: two-way
A refactor with the same requests and output, so a revert undoes it cleanly.
Blast Radius: small
It touches the Spec run's Spec PR and every Delivery's "Built with" write. A mistake there would show as a missing or misplaced line in a pull request's body. The kept end-to-end tests (the Spec PR opening, the checklist put back after the "Built with" line, and the "Built with" tests for the Harness choice and Codex) still pin it.
Unaddressed findings
Standards
OutsideandOnGitHubarepub(super), not private. The issue decides thatSpecPris generic over its adapter, not boxed. That forces the bound and the default type to be visible tospec_run, and the module itself is private tospec_run. The doc comment says so.spec,branchandbaseare held in bothSpecPrandOnGitHub. The issue has the real adapter hold the Spec and branch. The rules still need them for the opened body's text and the opening progress line.Failsvariants inInMemory. The issue asks for an adapter that "can fail any one call", so every call can be made to fail.Route::steps. The issue decides this explicitly: requests stay unchanged for the end-to-end fakes.Spec
InMemoryfails every call of a kind, not the nth call. That covers every listed case. "The Spec PR just opened is not found" comes from aNoneread, not a failure, so a separateopened_is_lostflag models it.Closes #409
🤖 Generated with Claude Code