Skip to content

Go prototype: deliver Ticket runs and repair failing heads - #1849

Merged
JacobStephens2 merged 6 commits into
issue-1830from
issue-1833
Nov 6, 2026
Merged

JacobStephens2 merged 6 commits into
issue-1830from
issue-1833

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

Summary

Extend the isolated Go prototype through Delivery and bounded Repairs. Closes #1833.

opening Harness commits
  -> push Issue branch + open/verify draft PR
  -> merge Base branch -> push -> watch full-head checks + statuses
       conflict / red CI -> Repair (maximum five) -> check again
       green / absent CI + mergeable -> ready for review
failed Ticket run -> salvage committed work + draft PR -> end Claim

Run outcomes, Claim transitions, Delivery states and CI states use typed enums; go test rejects incomplete switches, including ones with a default. --repair-limit can lower the maximum. The Rust runner's Check re-run and Abandoned job policies remain outside this prototype slice, as documented in its README.

Evidence

Execution evidence

From prototype/go, with /usr/local/go/bin on PATH:

  • Before: go test ./... -run '^TestDeliveryPublishesGreenHead$' -count=1 failed: Delivery did not publish a PR / pr.json: no such file or directory.
    After: the same command passed (ok, 1.534s).
  • Before: go test ./... -count=1 -run 'TestSpecDelayedCIRegistration|TestSpecFailedPushStillDraftsExistingPR' failed both regressions: ready PR contains "broken"; delayed failing CI was never repaired and want issue-7 -> main, draft=true with isDraft:false (3.500s).
    After: the same command passed (ok, 8.610s). Both tests are retained.
  • Before: go test ./... -count=1 -run '^TestSpecSalvageStillPushesWhenDraftFails$' failed: salvage did not push committed work after draft failed (3.163s).
    After: the same command passed (ok, 4.056s); the test is retained.
  • Final changed-code validation: PATH=/usr/local/go/bin:$PATH scripts/affected-tests 6a7038d1 passed the complete Go suite in 68.63s, including static Linux binary checks, all Delivery/Repair/salvage CLI scenarios and exhaustiveness positive/negative cases. This selects all changes after the initial implementation commit.
  • python3 -m unittest discover -s scripts -p 'test_*.py': 37 passed. go vet ./..., gofmt check, git diff --check, and python3 bundle-skills.py --check: passed.
  • Final PR-base validation: PATH=/usr/local/go/bin:$PATH scripts/affected-tests origin/issue-1830 passed (0.36s, cached Go results). The current remote Base branch is 1bbcc4fc; this PR's diff against it contains only Go paths.
  • The older fixed point used for review also selected predecessor Rust work. Its local run passed Go (34.01s), all 1,657 Rust unit tests (3 ignored), and multiple integration targets before it was intentionally stopped after confirming the actual PR-base diff requires only Go validation. Rust compilation was included in that broader run.
  • Rust CI attempt 1 failed in existing experiments::stop_and_resume_preserve_finished_trials_and_refuse_a_changed_bar at tests/experiments.rs:1682 (retained Trial repository assertion). The exact local command cargo test --test experiments stop_and_resume_preserve_finished_trials_and_refuse_a_changed_bar -- --exact passed (10.21s). git diff --exit-code issue-1830...HEAD -- src tests Cargo.toml Cargo.lock rust-toolchain.toml .config/nextest.toml confirms those inputs are unchanged. The failed CI job was re-run; that retry remains pending. Go prototype, site and Console CI passed.

Testing seams: the compiled CLI against temporary Git repositories and fake gh/Harness executables; the automated exhaustiveness checker against production syntax and incomplete/complete enum fixtures. CLI assertions inspect published commits, PR state, Claim labels, output and exit status.

Review coverage

Independent Standards and Spec reviews used git diff issue-1830...HEAD, pinned to base 305923a8e93a286b6fa546ddfc02fa30abc23f64, including the preceding #1832 work. Standards raised 1 finding; Spec raised 3. All four are addressed. Every behavioral finding was reproduced before fixing it, and its test is retained. Reports and final files-read lists are saved in .thirdshift-review-vbnuLi/{standards.md,spec.md,summary.json} in the worktree.

  • Unread by Standards: prototype/go/review_spec_draft_failure_test.go, retained after its single coverage follow-up. Spec authored and exercised this regression.
  • Confirmed generated exclusion, both axes: prototype/go/factory-skills.json, intentionally not read. Reviewers inspected the literal-snapshot generator, materializer, source declarations and representative unchanged skills/ inputs; snapshot freshness and the live embedded-skills CLI test passed independently.
  • No other unread changed files.

Unaddressed findings

  • Standards: none.
  • Spec: none.
  • Security: none.

Security review outcome

No unaddressed introduced findings.

Merge Danger

Door: two-way

Revert the isolated prototype changes to roll back. Real prototype runs can push branches and change draft/readiness state on GitHub.

Blast Radius: prototype

Production Rust behavior is unchanged. The PR targets issue-1830.

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

A passing check during the registration grace was treated as green, so Delivery marked the pull request ready before a check that registers a moment later could fail. Keep polling through that grace for an empty or passing listing.
A fast successful check was enough to mark the pull request ready while a workflow run on that same commit was still open, or had finished failed without publishing a job. Pending wins until that run completes, and a completed failure stays red.
A fork pull request with the same head branch name was treated as this repository's pull request, so Delivery and salvage stopped before pushing. Skip cross-repository results and open or reuse the same-repository pull request.
Combine Pickup reservations and atomic Claim label updates with Delivery and bounded Repairs. Pass the Repair limit through shared Ticket runs and retain one Harness fixture record per session. Cover Pickup Delivery, CI and conflict Repairs, salvage, and Repair limits with CLI regressions.
@JacobStephens2
JacobStephens2 merged commit da63d90 into issue-1830 Nov 6, 2026
5 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1833 branch November 6, 2026 23:08
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