feat: configurable integration branch (default main)#8
Merged
Conversation
AEP no longer hardcodes `main` as the branch that feature work is based off, rebased onto, PR'd into, and where control-plane commits land. Every git-touching skill now resolves `$BASE` in this order: explicit override (`git config aep.integration-branch`) -> auto-detect `develop` if it exists -> `main`. Two auto-detected modes: - single-branch (no develop): integration = production = main (unchanged default behavior). - two-branch (develop exists): integration = develop (staging); main is promote-only production and AEP never touches it. develop->main promotion stays the user's CI/PR step, like deploy. /onboard Phase 5 detects the mode and persists aep.integration-branch; /scaffold sets main for fresh repos. git-ref gains an "Integration Branch" section. Bumps marketplace.json 1.4.0 -> 1.5.0 with CHANGELOG. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
- set -e safety: add `|| true` to every `BASE=$(git config ...)` first line so the resolver doesn't abort under `set -euo pipefail` when the key is unset (the common single-branch case). - two-branch correctness: replace compact `|| echo main` inline forms with auto-detect (config -> origin/develop -> main) in the autopilot & tick-protocol merge nudges, the launch evaluator diff, and build diagnostics — they no longer rebase/diff against production main in two-branch mode. - no-pin growth path: /onboard and /scaffold no longer pin aep.integration-branch=main; config is override-only for non-standard names, so creating `develop` later upgrades with no reconfiguration. - build Phase 10 PR-create `case` gains a default arm that errors instead of silently creating no PR on unrecognized remotes (GH Enterprise etc). - CHANGELOG: add missing [1.5.0]/[1.4.0] compare links; point Unreleased at v1.5.0. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
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.
What
AEP no longer hardcodes
mainas the integration branch — the branch feature work is based off, rebased onto, PR'd into, merged into, and where control-plane commits (/dispatch,/design,/wraparchive, story status) land. Every git-touching skill now resolves a$BASEvariable.Motivation: running AEP on a GitFlow repo (
develop= integration/staging,main= production-promote-only) breaks at/wrap, which doesgit checkout mainand commits the archive tomain. AEP'smainonly ever played the integration role; AEP has no production-branch concept (deploy is already out of scope). So the fix is to make the integration branch resolvable, defaultmain.How — two auto-detected modes
$BASE)developmainmain(same)developexistsdevelop(staging)main(promote-only, AEP never touches)Resolution order: explicit override
git config aep.integration-branch→ auto-detectdevelop→main. Stored in repo-local git config (shared across worktrees via the common.git/config, noyqdependency, works in the no-product-context single-feature flow). A project grows single→two-branch just by creatingdevelop. Promotiondevelop→mainstays the user's CI/PR step, like deploy.Scope
$BASEsubstituted for hardcodedmain/origin/mainacrossdesign,launch,build,wrap,dispatch,reflect,calibrate,validate,map,envision,autopilot(+ tick-protocol), and the executor backend recipe./onboardPhase 5 detects the mode and persistsaep.integration-branch;/scaffoldsetsmainfor fresh repos.marketplace.json1.4.0 → 1.5.0 with matching CHANGELOG entry.$BASE=main). Dogfooded: this repo has nodevelop, so the resolver returnsmain.Verification
main, develop→develop, override→staging, and reads correctly from inside a worktree (worktree-shared git config).grepaudit: zero operative hardcodedmainleft in skills.🤖 Generated with Claude Code