Fix #76: the default branch always ships, regardless of CLAUDE.md designation - #115
Closed
laird wants to merge 24 commits into
Closed
Fix #76: the default branch always ships, regardless of CLAUDE.md designation#115laird wants to merge 24 commits into
laird wants to merge 24 commits into
Conversation
…g to N-clean; scope + exercise preflight; swarm cadence)
Design spec for adding a human-gated planning capability to the manager session (brainstorm → spec → critical review → decompose to stories → existing fleet implements), plus renaming /fix→/dev and /fix-loop→/dev-loop with aliases. Reuses existing skills and the decomposed/subtask convention; adds two backlog-aware behaviors to the manager loop. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Critical-design-review round 1 approved the planning-pipeline spec as-is: 0 literal-wrongness findings, 0 forced decisions. Empirically confirmed the two load-bearing hand-off facts (subtask is claimable; decomposed parents are excluded from claiming). Recorded the CDR approval in the spec status and carried the three CIR-deferred items forward as notes B8/B9 (+ existing B5). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…eview-1 to autocoder-planning-pipeline-implementation-plan
Tracks the 2026-07-28 handoff documenting the /fix→/dev rename and peters-toolkit:bugfix integration, plus the still-unaddressed critical review of the planning-pipeline implementation plan. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…aim lock until a terminal outcome
…ver reached the ship branch
…ini/droid markers, stale comments)
…rs.sh (GraphQL replay lands new files 644)
… exclusion, drift repair), marketplace to 3.32.0
…ound/improved/learned per round, verdict chapter)
…e v2 removal Atlassian removed POST /rest/api/2/search from Jira Cloud (HTTP 410, CHANGE-2046). list and any-claimable now use POST /rest/api/3/search/jql with an explicit fields list, nextPageToken pagination (no startAt), and existence-of-first-page instead of the removed total for any-claimable. Issue lifecycle endpoints stay on v2 (not removed; plain-string bodies). The fake serves the new contract, enforces a settable page cap to exercise the token loop, and returns 410 on v2 search so regressions cannot pass. Live verification against real Jira Cloud pending by coordinator.
…text Live smoke showed /rest/api/3/search/jql returns description as an ADF document object, not v2's plain string. The list reshape now walks ADF content nodes collecting text (paragraphs joined with newlines; tolerates null, plain strings, malformed nodes), so body stays a plain string for all consumers. v2 CRUD read paths are untouched (still plain strings). The fake now serves ADF descriptions from v3 search to pin the contract.
…mp autocoder 4.10.1 / marketplace 3.32.1
…-smoke-test.sh; live validation pending an ADO sandbox)
…gents The SKILL.md had no model guidance. Top-level coordinator (scope/grade/fix decisions) uses the deep model; subagents and swarm workers use the balanced model. Mirrors the autocoder manager/worker tier pattern. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… model selection (#110) * feat(autocoder): add model-config startup confirmation and env-var-driven model selection Autocoder agents now resolve model tiers from env vars → .autocoder.json → built-in defaults (claude-opus-5 / claude-sonnet-5 / claude-haiku-4-5 on Claude Code; gemini-2.5-pro / gemini-2.0-flash on Antigravity). On first run with no model config found, the agent presents the defaults and asks the user to confirm or override before proceeding. The confirmed models are exported as MANAGER_MODEL / WORKER_MODEL / FAST_MODEL and referenced in every Task tool call in the workflow so agents actually use them. Also adds skills/autocoder/references/model-config.md documenting the tier system and how to persist overrides via .autocoder.json. Parallel maintenance: plugins/autocoder/commands/fix.md ↔ .agent/workflows/fix.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: bump autocoder to 4.11.0, marketplace to 3.33.0 Reflects model-config startup confirmation and env-var-driven model selection added in the previous commit. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
#112) Switch fix.md and model-config.md from full API model IDs (claude-opus-5) to platform tier shorthand (opus/sonnet/haiku for Claude Code, pro/flash for Gemini). Agents inherit credentials from the running session — no separate API keys needed. Rename skills/harden → skills/improve to reflect the general improvement and validation loop, not just security hardening. Bump autocoder 4.11.0 → 4.12.0, marketplace 3.33.0 → 3.34.0. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…ignation Two worktrees with different CLAUDE.md files returned different verdicts for the same commit — a worker on an integration line with a '**Ship branch**:' designation would report master commits as NOT_SHIPPED. Fix: a commit is considered shipped if it reached the designated ship branch OR the repo's default branch. The default branch is resolved independently of any local CLAUDE.md (via origin/HEAD then gh), so the verdict is consistent regardless of which worktree runs the check. Also handles stale designations: if the named ship branch no longer exists (merged away) but the commit is on the default branch, the script now reports SHIPPED instead of exiting with error code 2. Mirrors verify-shipped.sh into .agent/scripts/ per parallel-maintenance requirement. Adds three pytest cases that verify the new property, the consistent-verdict property, and the #35 non-regression. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This was referenced Aug 17, 2026
laird
added a commit
that referenced
this pull request
Aug 17, 2026
Owner
Author
|
Superseded by #126. This branch was 24 commits behind master (CONFLICTING), mostly carrying already-landed history. The one real fix -- default branch always ships, regardless of CLAUDE.md designation -- is reapplied verbatim on current master in #126. On the #77-dependency note in #76's original filing: this fix doesn't need #77 to land. It makes verify-shipped.sh check the repo's default branch as an additional ship target (resolved independently of CLAUDE.md), so the verdict is correct regardless of which branch is currently designated as the ship branch -- no CLAUDE.md/.envrc edit required either way. |
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.
Closes #76
Problem
verify-shipped.shresolves the ship branch from the local worktree'sCLAUDE.md. Two worktrees with differentCLAUDE.mdfiles returned different verdicts for the same commit:**Ship branch**:integrationA second failure mode: when the designated ship branch no longer exists (merged away and deleted), the script exited with code 2 ("cannot resolve ship branch") — even when the commit was sitting on the default branch.
Fix
A commit is now considered shipped if it reached the designated ship branch or the repo's default branch. The default branch is resolved independently of any local
CLAUDE.md(viagit symbolic-ref refs/remotes/origin/HEAD, thengh repo view) so the verdict is consistent regardless of which worktree runs the check.Stale designations are also handled: if the named ship branch doesn't resolve but the commit IS on the default branch, the script now reports
SHIPPED(with a note) instead of exiting 2.Changes
plugins/autocoder/scripts/verify-shipped.sh: addresolve_default_branch(), computeDEFAULT_BRANCHat startup, check default branch as secondary ship target.agent/scripts/verify-shipped.sh: add mirror (was absent; parallel maintenance requirement)tests/test_verify_shipped.py: three new pytest casesVerification
New cases:
test_default_branch_verdict_when_ship_branch_is_integration— commit on master is SHIPPED even when CLAUDE.md pins integrationtest_verdict_consistent_across_worktrees— both worktrees return exit 0 for the same committest_not_shipped_when_only_on_feature_branch— autocoder: issues are closed when work lands on a side branch that never reaches master #35 non-regression: stranded commit remains NOT_SHIPPEDPre-existing
test_issue_fns.shfailures (11 label-exclusion checks in the gh backend) are unrelated to this change and tracked separately.🤖 Generated with Claude Code