Releases: vibeacademy/gembaflow
v1.5.0
What's in this release
Headline pairing: /drain ships AND the upgrade pipeline can actually deliver it. This release lands the four-ticket drain port (T1–T4) plus the keystone self-healing-sync fix (#371) that closes the long-standing upgrade-pipeline gap. Downstream forks that /upgrade to v1.5.0 inherit a working autonomous-merge drain stack, the agent-merge gate, a bootstrap-time templating mechanism, the platform-shape /bootstrap-agents variant, doctor-script convergence, an upgraded /report-issue flag surface, a split-and-honest CI job shape, and — for the first time — a sync mechanism that can deliver future runtime-protected fixes cleanly.
This is the largest release since v1.2.0. 28 PRs ship between v1.4.0 (2026-06-01) and v1.5.0 (2026-06-13).
Added
-
/drainskill + supporting runtime — drain port T1–T4 (#464, #478, #479, #482) — autonomous overnight processing of the Ready column, with a safety-class taxonomy (safety:internal/:reversible/:hot/:flagged), anagent-merge.ymlgate workflow, adrain-merge-bridge.ymlworkflow that closes theworkflow_dispatch/workflow_callgap, adrain.mdorchestrator skill spec, a 5-state summary renderer (emit-drain-summary.mjswith 36 unit tests), provider-specific deploy-status and observability-baseline scripts (render-deploy-status.mjs,sentry-baseline.mjs), and an institutional-knowledge layer covering 7 Patterns and 6 Lessons accumulated during empirical development. Two ADRs (docs/adr/0001-*.md,0002-*.md) document the architectural decisions;docs/drain-customization.mdis the Layer 4 contract;docs/drain-known-limitations.mdis the v1 transparency surface. -
Bootstrap-time templating mechanism (#478, part of T2) —
scripts/substitute-config-placeholders.sh(idempotent sed pass;--checkmode for CI smoke tests) reads.gembaflow-config.jsonand substitutes four canonical placeholders ({{org}},{{board.id}},{{bot.worker}},{{bot.reviewer}}) into shipped skill specs at bootstrap. New step 7 in.claude/commands/bootstrap-workflow.mdruns the substitution.docs/PLATFORM-GUIDE.mddocuments the convention. The four-placeholder set is deliberately narrow — fork deploy URLs use$PUBLIC_BASE_URLenv var, runtime repo names resolve viagh repo view. Both consumers of the mechanism (work-ticket.mdanddrain.md) now ship parameterized. -
/bootstrap-agents --variant platform(#481) — net-new flag that swaps the agent roster for platform-shape projects (frameworks, harnesses, distribution pipelines). Default--variant productis unchanged. The platform variant installs six templates derived fromvibeacademy/gembaflow-meta's calibrated roster:framework-architect,github-ticket-worker,platform-backlog-prioritizer,pr-reviewer,release-engineer,swarm-planner. Memory references parameterized to generic language;docs/SDLC.md§ 2 documents the decision criteria. -
/report-issueflag surface improvements (#469, #475, #476, #477) — adds--dry-run(zeroapi.github.comcalls) and--fixture-repo <slug>(retargetsgh issue create --repoto a test fixture) for QE iteration without polluting the upstream tracker; both flags mutually exclusive. Addssyncto the component taxonomy. Renames--force-codespaces-token→--try-anyway(hidden alias preserved for backward compat). New.github/workflows/auto-close-test-fixtures.ymlautomatically closesva-worker-authored test-fixture downstream-report issues that match the title prefix — completes the QE-pollution loop closure. -
/doctorclone-freshness convergence (#472, #484) — both.claude/commands/doctor.md(the skill spec) andscripts/doctor.sh(the underlying script) now run an early "Verify the clone is current with origin" check. Emits PASS (current), WARN with the commits-behind count and most-recent upstream commit subject (stale), or SKIP with a clear reason (offline, no upstream tracking, not a git repo, nogitbinary). State-free; never fails the doctor run. -
/review-to-ticketsslash command (#395) + worker→reviewer auto-handoff (#397) + swarm mode forgithub-ticket-worker(#392) — closes the loop between review and backlog, automates the green-CI handoff to the PR reviewer, and lets the worker operate in isolated worktrees for/swarmruns. -
Selectable assistant modes for the main Claude session (#409) —
.claude/modes/registry with five framework modes (default,scaffolded,socratic,terse-expert,shipping-coach), each a third-person persona assertion plus behavioral heuristics./modeis the convenience wrapper. -
audit-local-customizations.sh+/upgradeintegration (#468) — pre-/upgradeaudit surfaces every framework-controlled file modified locally since the fork was bootstrapped but NOT in.gembaflow-overrides. Read-only; surfaces the silent-clobber risk before the sync runs. -
Auto-update board status on PR merge (#466) — new
.github/workflows/auto-board-status.ymlfires on PR-merged events, readsclosingIssuesReferences, and moves each closed-issue's board item to Done. Opt-in via three repo variables + one secret (PAT withprojectscope). -
DEPRECATED_CHECK_ALIASESmechanism inscripts/verify-bot-permissions.sh(#402) — when a future release renames a CI check, the rename PR can add a one-line alias entry so forks have a graceful one-release window to update their.github/workflows/ci.yml. -
scripts/doctor.shclone-freshness check (#484) — see above; converges shell-driven and slash-command paths.
Changed
-
scripts/template-sync.shself-heals runtime-protected files after the sync loop (#486, closes #371) — the keystone fix that makes this release adoptable. New post-sync-loop block re-copiesscripts/template-sync.shandscripts/lib/overrides.shfrom the just-downloaded release tarball IF (a) they differ from upstream AND (b) the path is NOT in.gembaflow-overrides. The currently-running script process is in memory; only the on-disk file gets refreshed; the next/upgradereads the refreshed code. Refreshed files ride the sync PR with a new> [!IMPORTANT] Runtime-protected files refreshed (post-run)callout. See "Propagation note" below — existing forks need a one-time manual refresh on first upgrade to v1.5.0. -
version-parityCI job split intojson-validate+version-parity(#471) — the former umbrella bundled two unrelated checks; failed-job names now match their purpose. Fork action required, see "Fork-maintained files you must update" below. -
scripts/report-issue.shflag rename--force-codespaces-token→--try-anyway(#476) — flag name now describes actual behavior; old name preserved as a hidden backward-compat alias. -
validate-version-parity.shis lenient by default — opt-in for strict mode (#467) — divergence now emitsWARNand exits 0 unless the fork sets"enforceVersionParity": truein.gembaflow-version. -
.github/workflows/auto-triage.ymlno longer applies theP1label (#470) — Priority is canonical on the project board, not a repo label. The## Auto-Triagecomment remains as both the operator-facing signal and the idempotency marker. Maintainers can now safely delete theP1/P2/P3label definitions. -
Root
.gitignorecovers framework-generated artifacts (#399) —.gembaflow-reports/, legacy.agile-flow-reports/, and legacy.agile-flow-versionare now ignored. Removes the recurring/upgradeclean-tree precheck failure on every fork that has ever run/report-issue. -
Release notes now require a "Fork-maintained files you must update" section (#401) — establishes the convention being followed in this very document.
Fixed
-
docs/UPGRADING.mdadds a pre-rebrand fork section (#465) — documents the one-linesedpatch v1.0.x forks must apply to escape theKeyError: 'tag_name'crash on first/upgrade(root cause: v1.0.x'stemplate-sync.shusescurl -sfwithout-L). Belt-and-braces alternative pinsUPSTREAM_REPO=vibeacademy/gembaflowto eliminate the redirect at the source. -
docs/TICKET-FORMAT.mdexample uses###headers, not dash-banners (#400) — the Concrete Example's Power-Section markers were--- A. Environment Context ---style which renders as horizontal rules if copied out as a template. Switched to### A. Environment Context. -
docs/report-issue.mddocuments board-canonical priority convention (#403) — the severity field in the report's YAML front matter is informational; priority is canonical on the project board's Priority field.
Removed
scripts/test-report-issue.sh(455 lines) +docs/reports/report-issue-acceptance-template.html(362 lines) retired (#483) — the legacy test file tested a pre-rebrand.gembaflow-meta/upstreamAPI that the currentscripts/report-issue.shno longer has. Canonical replacement isscripts/report-issue.test.sh(12 assertions via PATH-shimmedgh, shipped with #469). The HTML output template is removed alongside since it can no longer be regenerated.
Documentation
-
Drain stack documentation set (#482) — 5 new docs:
docs/adr/0001-*.md,docs/adr/0002-*.md,docs/drain-customization.md,docs/drain-known-limitations.md,docs/drain-institutional-knowledge.md.docs/PLATFORM-GUIDE.mdcross-references all 5 from the "Bootstrap-time templated values" section. -
Nested-subagent limitation documented in auto-handoff invariants (#398) — both
github-ticket-worker.mdandpr-reviewer.mdnow carry a "Known limitation: nested subagent contexts" subsection.
Migration notes
Required action for every fork after /upgrade to v1.5.0:
-
Manually refresh
scripts/template-sync.shandscripts/lib/overrides.shONCE. See "Propagation note" below for the exact commands. -
**Branch-protected forks: add
json-validateto the required-status-checks l...
v1.4.0
What's in this release
v1.4.0 adds /swarm — a new slash command that runs N parallel implementations of one ticket. The swarm-planner agent produces N briefs from a single ticket, then N github-ticket-worker instances run in isolated worktrees, each opening its own PR. The human picks the winner. This is the platform's first parallel-implementation primitive; it ports the chain from gembaflow-meta epic #117.
Added
/swarmslash command (#390). Runs N parallel implementations of one Ready-column ticket, opens one PR per variant, leaves variant selection to the human. See.claude/commands/swarm.md.swarm-planneragent (#389). Produces N differentiated implementation briefs from a single ticket so each/swarmvariant explores a meaningfully different approach (not N identical attempts).- Swarm mode for
github-ticket-worker(#392). The existing ticket worker now accepts a swarm-brief input and runs in isolated-worktree mode so concurrent variants don't trample each other.
Changed
None this release.
Fixed
None this release.
Removed
None this release.
Migration notes
No migration required. /swarm is a new opt-in command; existing /work-ticket flows are unchanged.
Fork-maintained files you must update
None this release.
Propagation note
This release touches only .claude/agents/ and .claude/commands/ — no runtime-protected scripts (scripts/template-sync.sh, scripts/lib/overrides.sh) were modified. Existing forks (gembaflow-gcp, gembaflow-site) pick up /swarm and swarm-planner automatically on next /upgrade. No fresh-fork-only caveat applies.
v1.3.1
Patch release fixing the fresh-fork version stamp gap that produced no-op /upgrade PRs on every new fork.
Fixed
- Fresh forks no longer stage a no-op first
/upgrade(#381).bootstrap.shnow looks up the latest upstream release tag viagh release viewand sets.gembaflow-version'sversionfield alongsideinstalledAton first install. If the lookup fails (no network, noghauth), bootstrap falls back to the previous behavior and prints a warning recommending/upgrade. As a safety net,scripts/template-sync.shnow detects the fresh-fork placeholder case (version == "0.1.0"withinstalledAtalready stamped) and short-circuits: it writes the latest tag into the manifest locally and exits 0 without generating a sync PR. Legitimately-behind forks (e.g.version: 1.2.0) still sync normally. (#382)
Fork-maintained files you must update
None required for this release. v1.3.1 introduces no synced behavior change that's gated on fork-side counterparts being updated:
- No CI check names renamed.
- No backward-compat shims removed.
- No dotfile renames.
- No env var renames.
The fresh-fork fix lives entirely in bootstrap.sh (a one-time script run on initial install) and scripts/template-sync.sh (which has its own propagation behavior — see below).
Propagation note (read this if you maintain a fork)
The template-sync.sh portion of this fix lives in a runtime-protected file (a script can't safely overwrite itself mid-run). Existing forks will NOT pick up the placeholder short-circuit via /upgrade until #371 (self-upgrade gap for runtime-protected scripts) is fixed.
Concretely:
- Fresh forks created from this release onward: get the fix immediately via the
bootstrap.shpath. No no-op/upgradePR. - Existing forks (already past initial bootstrap): keep behaving as before — first
/upgradeafter this release still generates a sync PR that bumpsversionplus any other framework deltas. Once#371ships, runtime-protected scripts will refresh out-of-band and existing forks pick up the short-circuit.
If you want existing forks to benefit immediately, manually refresh scripts/template-sync.sh from this release's tarball (the workaround we documented for #371).
How the pilot went (operator note)
This is the first release cut via /cut-release (vibeacademy/gembaflow-meta PR #109, Phase B.2 of the platform-shape calibration). The pilot exercised the canonical sequence: clean-tree check, commit survey since v1.3.0, H3-subsection release notes, gh release create, CHANGELOG backfill PR, downstream-report comments. Gaps observed in the pilot will be filed as follow-ups to refine the slash command before it becomes the routine entry point for future releases.
v1.3.0
Adds the /eli5 slash command to the framework. Minor version bump because this is a user-visible new operator capability.
Added
/eli5slash command — posts a plain-language comment on a target issue or PR translating dense Agentic-PRD-Lite ticket bodies for non-engineer operators (founders, workshop attendees, stakeholders). Every technical term encountered (JWT, RLS, feature flag, CI gate, webhook, etc.) is treated as a teaching opportunity with an inline definition on first use, rather than assumed-known. Marker-based idempotency: re-running on the same target replaces the prior ELI5 comment, never appends. Optional Mermaid diagram with built-in render-check. Comment-only — never edits the canonical issue/PR body. (#330)
Migration notes
- Operators with the prior
/eli5prototype in their own forks (notablyvibeacademy/cubrox, where the prototype lived in.claude/commands/eli5.mdat commit3ba35cb) can run/pull-upstreamto receive the upstream version. The upstream port intentionally diverges from the cubrox prototype in audience model: cubrox assumed "tech-adjacent operator who knows what an API is," while upstream assumes the operator is NOT an engineer. The "Keep as-is" column from cubrox's translation table is deliberately removed — there is no such column upstream; every term gets a definition.
Audience-model design
The command spec includes worked examples for JWT, RLS, feature flag, CI gate, and webhook showing the expected <term> (<plain-language definition>) pattern. Word-budget guideline: soft 600-word ceiling, with a "Glossary section" escape valve when explanations need more room. The deliberate counter to /review-pr and /work-ticket, which assume an engineer audience.
No breaking changes
- All existing slash commands behave identically to v1.2.1.
- No file rename, no env var change, no protocol change.
/eli5is purely additive.
v1.2.1
Patch release fixing three real bugs hit on first downstream consumption of v1.2.0. All three were filed as [downstream-report] issues on the same day v1.2.0 shipped.
Fork-maintained files you must update
Backfilled 2026-06-02 per the convention added in #373 — the typecheck-rename warning was previously buried inside the "Changed" section. Lifted here for visibility; the original "Changed" entry remains for historical accuracy.
- Branch-protection ruleset on
main(and any fork'smain) — v1.2.1 renamed the CI jobtypecheck→version-parity. Branch-protection rulesets that mirror upstream's required-status-check name still listingtypecheckwill block PRs forever — the new workflow reportsversion-parity, nottypecheck. Edit required: renametypecheck→version-parityin your ruleset's required-checks list (or removetypecheckif you don't want the new name required). Applies to both the repo-level ruleset onvibeacademy/gembaflowAND any org-level ruleset that targets gembaflow-family repos. This bit at least one PR after the v1.4.0 series (see gembaflow#399 on 2026-06-02 — same drift, still unfixed at the org-ruleset level). features/BDD tests — v1.2.1 addedfeatures/tosyncDirectories, so forks now receive clean upstreamfeatures/*files. Forks that have customized their ownfeatures/*.{py,feature}files should add the affected paths to.gembaflow-overridesBEFORE running this/upgrade— otherwise the customizations are overwritten.
Fixed
template-sync.shnow bumpspackage.jsonversion alongside.gembaflow-version(#361). Previously, every sync PR landed with red CI becausevalidate-version-parity.shfound the two version sources disagreeing. The fix usesjq(with apython3fallback) to updatepackage.jsononly if itsversiondiffers from the new release. Idempotent; skipped on non-Node forks. (#365)features/directory added tosyncDirectories(#362). Downstream forks bootstrapped before the rebrand had stalefeatures/*files referencing.agile-flow-versionthat/upgradenever touched, causing the BDD suite to fail post-sync. Future/upgraderuns now refresh these files. (#364).claude/agents/*.mdnow classified ashybridwith FRAMEWORK markers (#363). Previouslybootstrap-agentsandtemplate-sync.shsilently contradicted each other — every sync wiped out project-specific agent specialization. Nowtemplate-sync.shonly updates content between<!-- FRAMEWORK:START -->and<!-- FRAMEWORK:END -->markers; user-supplied specialization outside markers is preserved. (#366)
Changed
-
CI job renamed
typecheck→version-parity(#361). The job had been misleadingly namedtypecheck— it never rantsc, only the version-parity check. The real TypeScripttsc --noEmitlives in thenodejob and is unchanged.⚠ Branch protection action required for consumers: if you have a fork with branch protection that mirrors upstream, the required-status-check named
typechecknow needs to be renamed toversion-parityin your ruleset. Otherwise sync PRs against your fork will block on a check that no longer exists.
Added
bootstrap-agentsskill updated with one-shot migration logic: when run on a legacy agent file (no markers), wraps the framework persona content in markers and appends project specialization after. Forks that ranbootstrap-agentsbefore this release should re-run it once to gain marker protection. (#366)
Migration notes
After /upgrade against this release:
- Existing
.claude/agents/*.mdfiles without<!-- FRAMEWORK:* -->markers are preserved entirely (preserve-and-warn behavior). The sync PR includes a[!WARNING]callout listing those files and recommending/bootstrap-agentsto gain marker protection. features/*.{py,feature}files with.agile-flow-versionliterals (a leftover from pre-rebrand bootstrap) will be replaced by the clean upstream versions. Forks that have customized their own feature tests should addfeatures/<file>to.gembaflow-overridesto protect them before the sync.- Sync PRs land green on CI. The
version-parityjob verifies.gembaflow-versionandpackage.jsonagree;template-sync.shwrites both, so they always do.
Downstream-report status
#352 (the original consolidated downstream-report against v1.1.0) was resolved by v1.2.0. This release picks up the three separate reports filed against v1.2.0 itself by the same consumer (vibeacademy/gembaflow-site): #361, #362, #363.
v1.2.0
The Gemba Flow rebrand release. v1.1.0 was the redirect-safety enabler that let the GitHub repo rename happen transparently; v1.2.0 ships the rest of the rebrand — package names, env vars, dotfile names, all URLs, agent footers, workshop docs.
Migration on first /upgrade
When you run /upgrade against this release, scripts/template-sync.sh will:
- Auto-rename your dotfiles (one-time, idempotent):
.agile-flow-version→.gembaflow-version.agile-flow-meta/→.gembaflow-meta/.agile-flow-overrides→.gembaflow-overrides
- Sync the new framework files (which now reference
.gembaflow-*natively — no dual-read fallback as of v1.2.0).
The migration step prints INFO: migrating <old> -> <new> for each rename. No-ops if you're already on the new names.
If you set AGILE_FLOW_* env vars
AGILE_FLOW_WORKER_ACCOUNT, AGILE_FLOW_REVIEWER_ACCOUNT, AGILE_FLOW_SOLO_MODE still work via the dual-read shim in scripts/lib/env-compat.sh — you'll see a one-line stderr deprecation warning when they're the only thing set. Rename them to GEMBAFLOW_* in your shell rc / Codespaces secrets / devcontainer at your convenience.
Fork-maintained files you must update
Backfilled 2026-06-02 per the convention added in #373 — this section was missing from the original release notes. Reconstructed from the gembaflow-site session journal that surfaced the breakage.
features/BDD tests on forks bootstrapped before the rebrand — v1.2.0 removed the Phase 4 dual-read fallback inscripts/report-issue.sh(and 5 other scripts). Forks whosefeatures/*.{py,feature}files still reference.agile-flow-versionliterals broke 12 BDD scenarios post-/upgrade. Edit required: either delete the affectedfeatures/fixtures and let v1.2.1's expandedsyncDirectories(which now includesfeatures/) refresh them on the next sync, or rewrite the literals to.gembaflow-versionimmediately.gembaflow-sitewas bitten by this on 2026-05-28.- None other. Dotfile renames (
.agile-flow-version→.gembaflow-version, etc.) and env-var renames (AGILE_FLOW_*→GEMBAFLOW_*) are handled bytemplate-sync.sh's migration step and the env-compat shim respectively — no manual edit required for those.
Changed
- Package metadata:
package.jsonname:agile-flow-starter→gembaflow-starter.pyproject.tomlname:agile-flow→gembaflow.description: "Gemba Flow Framework". (#347) - Dotfiles renamed (with auto-migration step on first
/upgrade):.agile-flow-version→.gembaflow-version,.agile-flow-meta/→.gembaflow-meta/,.agile-flow-overrides→.gembaflow-overrides. Sync branch prefixagile-flow-sync/v…→gembaflow-sync/v…. (#348) - Env vars now read
GEMBAFLOW_*first, fall back toAGILE_FLOW_*with deprecation warning. Helper atscripts/lib/env-compat.sh. (#346) - URL references and agent source footers now natively reference
vibeacademy/gembaflow. Old URLs continue to work via GitHub's 301 redirect for legacy clones. (#345) scripts/template-sync.sh:UPSTREAM_REPO="vibeacademy/gembaflow"(wasvibeacademy/agile-flow);FALLBACK_REPO="vibeacademy/agile-flow"defensive belt-and-suspenders. (#345)- Workflow guards in
deploy.yml,preview-deploy.yml,preview-cleanup.yml:if: github.repository != 'vibeacademy/gembaflow'(wasagile-flow) — without this, the template repo would have started running preview/deploy CI on its own PRs after the rename. (#345)
Added
upstreamfield auto-normalized in.gembaflow-versionfrom full URL or bareowner/repo(Phase 0.5 capability, formalized in v1.2.0 docs).- Migration step in
template-sync.shthatgit mvs legacy dotfiles to new names on first sync after upgrade. Kept indefinitely for dormant forks. (#348)
Removed
- Phase 4 dual-read fallback removed across 6 scripts (
template-sync.sh,report-issue.sh,doctor.sh,lib/overrides.sh,validation/validate-version-parity.sh,bootstrap.sh). Net -60 LOC. Forks on.agile-flow-*paths must run/upgradeonce to trigger the migration step before scripts will function. (#359)
Fixed
- Pre-push hook:
scripts/hooks/pre-pushnow runsuv run --extra dev pytestanduv run --extra dev ruff check. Without--extra dev, fresh contributors' first push failed withFailed to spawn: pytest. (#350, closes #341) template-cleanlinessCI check: removedvibeacademy/agile-flow-gcptest fixture references that tripped\bgcp\brule; replaced with genericvibeacademy/example-variant. (#348)- BDD tests: reports-dir assertions updated to
.gembaflow-reports/so the test suite passes against the renamed dotfiles. (#348, #359) #352downstream-report — three v1.1.0 bugs (scripts/report-issue.shhardcoded paths, template-cleanliness violations, BDD assertion mismatch) all resolved on this release.
Upgrade notes
After running /upgrade against this release:
- First-time migration: expect
INFO: migrating .agile-flow-version -> .gembaflow-version(and similar lines) in the sync output. The renames go into the sync PR alongside the framework file updates. - If your
.agile-flow-versionhad anupstreamfield, it's preserved (the rename is agit mv, not a recreate). Downstream variant forks (e.g.gembaflow-gcp) that point at their own upstream continue working. AGILE_FLOW_*env vars: still work, but rename at your convenience to silence the deprecation warning. Future minor release will drop the shim.- Reviewer bot PAT: if you provisioned one before v1.0.11, it may be missing the
projectscope. Remediate withgh auth refresh --user {org}-reviewer --scopes repo,workflow,project,gist,read:org. (See.claude/README.md"Remediation" section.)
Rebrand epic
The agile-flow → Gemba Flow rebrand is now structurally complete: gembaflow-meta#96 (closed). v1.2.0 is the shipping artifact for that work.
v1.1.0
Phase 0.5 of the agile-flow → Gemba Flow rebrand. This release is the critical-path enabler for the upcoming repo rename. Active forks must run /upgrade against this release before the rename happens — without it, /upgrade will silently break the moment the rename's 301 redirect lands.
Added
upstreamfield in.agile-flow-version— Downstream variant forks (e.g.agile-flow-gcp, futureagile-flow-aws) can now declare their own upstream repo for/upgradesyncing. Falls back to the hardcodedvibeacademy/agile-flowdefault when absent. Accepts bareowner/repo, full HTTPS URL, or git URL forms — all normalized internally. (#342, supersedes #204)- Pattern #28 in
docs/PATTERN-LIBRARY.md— "GitHub Actions: Workflow Pushes WithGITHUB_TOKENDon't Re-Trigger CI". Documents the auto-fix workflow gotcha, the lint-as-CI-check resolution, and the PAT-based escape hatch. (#338) - Canonical PAT scope set documented in
.claude/README.mdwith per-scope rationale. Includes agh auth refreshremediation block for existing reviewer PATs missing theprojectscope. (#340)
Changed
/upgrade(template-sync.sh) is now redirect-safe. Thecurlcall to the GitHub releases API uses-Lto follow 301 redirects, so it continues working transparently when an upstream repo is renamed. Adds avibeacademy/gembaflowfallback that triggers only when the primary returns 404, with a single informational stderr line. (#342)- Pre-flight checks in
/create-ticket,/quick-fix,/work-ticket,/bootstrap-workflownow usegh auth status+gh repo view --json nameWithOwnerinstead of the (since-removed) MCP GitHub server probe. (#339) - Account-switch hook (
.claude/hooks/ensure-github-account.sh) now routesgh pr reviewandgh pr commentto the reviewer account in addition togh pr create→ worker. Routing is intentionally narrow:gh issue create,gh issue comment, andgh project item-*are NOT auto-routed (command patterns can't reliably distinguish worker from reviewer context). Slash commands are responsible for explicitgh auth switchwhen they need a specific account. (#340) - Setup script (
scripts/setup-accounts.sh) now prints required PAT scopes inline at paste time, including thegh auth refreshupgrade command for existing reviewer PATs. (#340)
Removed
.github/workflows/auto-fix.yml— auto-fix-via-GITHUB_TOKENis fundamentally broken (GitHub deliberately suppresses workflow re-triggers fromGITHUB_TOKEN-signed pushes, leaving PRs atBLOCKEDuntil a human pushes a no-op commit). Lint coverage is preserved via the existingci.ymlruff/eslint jobs; pre-push hooks inscripts/hooks/provide local-dev auto-fix UX. See Pattern #28 for the full gotcha writeup. (#338)
Fixed
- Stale doc references to
auto-fix.ymlindocs/CI-CD-GUIDE.md,docs/DISTRIBUTION.md,docs/LEAN-PRINCIPLES.md— the workflow table row, dedicated section, distribution table row, and "CI auto-fix" waste-elimination claim are all corrected.LEAN-PRINCIPLES.mdnow correctly identifies pre-push lint hooks (rather than the deleted CI auto-fix) as the waiting-waste mitigation. (#338)
Upgrade notes
After running /upgrade against this release:
- Optionally add an
upstreamfield to your.agile-flow-versionif you're a variant fork (e.g.agile-flow-gcppointing atvibeacademy/agile-flow-gcp). Forks without the field continue working unchanged against the canonical default. - If your reviewer PAT is missing the
projectscope, follow the remediation block in.claude/README.md(gh auth refresh --user {org}-reviewer --scopes repo,workflow,project,gist,read:org). Theverify-bot-permissions.shtest now checks for this scope. - Active downstream forks (notably
agile-flow-gcp) should run/upgradeagainst this release before the GitHub repo rename for the gembaflow rebrand. Without it,/upgradewill silently fail on the rename's 301 redirect.
Rebrand sequence (context)
This is Phase 0.5 of the agile-flow → Gemba Flow rebrand (epic: vibeacademy/agile-flow-meta#96). Subsequent phases, in order:
- Phase 1 — GitHub repo rename (operational, not a PR)
- Phase 2a–2c — URL rewrites in scripts, env var dual-read shim, package metadata
- Phase 3 —
agile-flow-gcpupdates its.agile-flow-versionupstream field to point at itself - Phase 4 — dotfile and sync-branch prefix renames
- Phase 5 — GCP resource naming forward-only update
v1.0.11
Release v1.0.11
v1.0.10
What's Changed
Added
- Codespaces devcontainer - Workshop attendees on any platform can now use GitHub Codespaces with Claude Code extension auto-installed
- test-dirty-fork.sh - Simulate various fork states for upgrade testing (10 scenarios)
- test-upgrade-cycle.sh - Automated upgrade scenario testing harness
Details
- Ubuntu noble base with Python 3.12, Node 20, gh CLI, uv
- Solo mode enabled by default via containerEnv
- Port forwarding for Next.js (3000)
- Graceful fallback if setup-solo-mode.sh doesn't exist
Full Changelog: v1.0.9...v1.0.10
v1.0.9
Release v1.0.9