Skip to content

feat: configurable integration branch (default main)#8

Merged
memorysaver merged 2 commits into
mainfrom
feat/configurable-integration-branch
Jun 9, 2026
Merged

feat: configurable integration branch (default main)#8
memorysaver merged 2 commits into
mainfrom
feat/configurable-integration-branch

Conversation

@memorysaver

Copy link
Copy Markdown
Owner

What

AEP no longer hardcodes main as the integration branch — the branch feature work is based off, rebased onto, PR'd into, merged into, and where control-plane commits (/dispatch, /design, /wrap archive, story status) land. Every git-touching skill now resolves a $BASE variable.

Motivation: running AEP on a GitFlow repo (develop = integration/staging, main = production-promote-only) breaks at /wrap, which does git checkout main and commits the archive to main. AEP's main only 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, default main.

How — two auto-detected modes

Mode Condition Integration ($BASE) Production
single-branch (default) no develop main main (same)
two-branch develop exists develop (staging) main (promote-only, AEP never touches)

Resolution order: explicit override git config aep.integration-branch → auto-detect developmain. Stored in repo-local git config (shared across worktrees via the common .git/config, no yq dependency, works in the no-product-context single-feature flow). A project grows single→two-branch just by creating develop. Promotion developmain stays the user's CI/PR step, like deploy.

Scope

  • git-ref gains a canonical "Integration Branch" section (modes, resolver, config key).
  • $BASE substituted for hardcoded main/origin/main across design, launch, build, wrap, dispatch, reflect, calibrate, validate, map, envision, autopilot (+ tick-protocol), and the executor backend recipe.
  • /onboard Phase 5 detects the mode and persists aep.integration-branch; /scaffold sets main for fresh repos.
  • glossary + orientation updated; marketplace.json 1.4.0 → 1.5.0 with matching CHANGELOG entry.
  • Default behavior unchanged ($BASE = main). Dogfooded: this repo has no develop, so the resolver returns main.

Verification

  • Resolver tested in a real shell: fresh→main, develop→develop, override→staging, and reads correctly from inside a worktree (worktree-shared git config).
  • grep audit: zero operative hardcoded main left in skills.

🤖 Generated with Claude Code

memorysaver and others added 2 commits June 9, 2026 17:40
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]>
@memorysaver memorysaver merged commit a7b925a into main Jun 9, 2026
2 checks passed
@memorysaver memorysaver deleted the feat/configurable-integration-branch branch June 9, 2026 09:55
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