Skip to content

Releases: vibeacademy/gembaflow

v1.5.0

13 Jun 11:06
b64a50c

Choose a tag to compare

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

  • /drain skill + 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), an agent-merge.yml gate workflow, a drain-merge-bridge.yml workflow that closes the workflow_dispatch/workflow_call gap, a drain.md orchestrator skill spec, a 5-state summary renderer (emit-drain-summary.mjs with 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.md is the Layer 4 contract; docs/drain-known-limitations.md is the v1 transparency surface.

  • Bootstrap-time templating mechanism (#478, part of T2)scripts/substitute-config-placeholders.sh (idempotent sed pass; --check mode for CI smoke tests) reads .gembaflow-config.json and 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.md runs the substitution. docs/PLATFORM-GUIDE.md documents the convention. The four-placeholder set is deliberately narrow — fork deploy URLs use $PUBLIC_BASE_URL env var, runtime repo names resolve via gh repo view. Both consumers of the mechanism (work-ticket.md and drain.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 product is unchanged. The platform variant installs six templates derived from vibeacademy/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-issue flag surface improvements (#469, #475, #476, #477) — adds --dry-run (zero api.github.com calls) and --fixture-repo <slug> (retargets gh issue create --repo to a test fixture) for QE iteration without polluting the upstream tracker; both flags mutually exclusive. Adds sync to the component taxonomy. Renames --force-codespaces-token--try-anyway (hidden alias preserved for backward compat). New .github/workflows/auto-close-test-fixtures.yml automatically closes va-worker-authored test-fixture downstream-report issues that match the title prefix — completes the QE-pollution loop closure.

  • /doctor clone-freshness convergence (#472, #484) — both .claude/commands/doctor.md (the skill spec) and scripts/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, no git binary). State-free; never fails the doctor run.

  • /review-to-tickets slash command (#395) + worker→reviewer auto-handoff (#397) + swarm mode for github-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 /swarm runs.

  • 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. /mode is the convenience wrapper.

  • audit-local-customizations.sh + /upgrade integration (#468) — pre-/upgrade audit 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.yml fires on PR-merged events, reads closingIssuesReferences, and moves each closed-issue's board item to Done. Opt-in via three repo variables + one secret (PAT with project scope).

  • DEPRECATED_CHECK_ALIASES mechanism in scripts/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.sh clone-freshness check (#484) — see above; converges shell-driven and slash-command paths.

Changed

  • scripts/template-sync.sh self-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-copies scripts/template-sync.sh and scripts/lib/overrides.sh from 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 /upgrade reads 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-parity CI job split into json-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.sh flag 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.sh is lenient by default — opt-in for strict mode (#467) — divergence now emits WARN and exits 0 unless the fork sets "enforceVersionParity": true in .gembaflow-version.

  • .github/workflows/auto-triage.yml no longer applies the P1 label (#470) — Priority is canonical on the project board, not a repo label. The ## Auto-Triage comment remains as both the operator-facing signal and the idempotency marker. Maintainers can now safely delete the P1/P2/P3 label definitions.

  • Root .gitignore covers framework-generated artifacts (#399).gembaflow-reports/, legacy .agile-flow-reports/, and legacy .agile-flow-version are now ignored. Removes the recurring /upgrade clean-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.md adds a pre-rebrand fork section (#465) — documents the one-line sed patch v1.0.x forks must apply to escape the KeyError: 'tag_name' crash on first /upgrade (root cause: v1.0.x's template-sync.sh uses curl -sf without -L). Belt-and-braces alternative pins UPSTREAM_REPO=vibeacademy/gembaflow to eliminate the redirect at the source.

  • docs/TICKET-FORMAT.md example 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.md documents 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/upstream API that the current scripts/report-issue.sh no longer has. Canonical replacement is scripts/report-issue.test.sh (12 assertions via PATH-shimmed gh, 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.md cross-references all 5 from the "Bootstrap-time templated values" section.

  • Nested-subagent limitation documented in auto-handoff invariants (#398) — both github-ticket-worker.md and pr-reviewer.md now carry a "Known limitation: nested subagent contexts" subsection.

Migration notes

Required action for every fork after /upgrade to v1.5.0:

  1. Manually refresh scripts/template-sync.sh and scripts/lib/overrides.sh ONCE. See "Propagation note" below for the exact commands.

  2. **Branch-protected forks: add json-validate to the required-status-checks l...

Read more

v1.4.0

01 Jun 10:59
d1e0c22

Choose a tag to compare

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

  • /swarm slash 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-planner agent (#389). Produces N differentiated implementation briefs from a single ticket so each /swarm variant 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

29 May 11:06
a98d373

Choose a tag to compare

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.sh now looks up the latest upstream release tag via gh release view and sets .gembaflow-version's version field alongside installedAt on first install. If the lookup fails (no network, no gh auth), bootstrap falls back to the previous behavior and prints a warning recommending /upgrade. As a safety net, scripts/template-sync.sh now detects the fresh-fork placeholder case (version == "0.1.0" with installedAt already 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.sh path. No no-op /upgrade PR.
  • Existing forks (already past initial bootstrap): keep behaving as before — first /upgrade after this release still generates a sync PR that bumps version plus any other framework deltas. Once #371 ships, 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

28 May 14:55
5d0e69c

Choose a tag to compare

Adds the /eli5 slash command to the framework. Minor version bump because this is a user-visible new operator capability.

Added

  • /eli5 slash 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 /eli5 prototype in their own forks (notably vibeacademy/cubrox, where the prototype lived in .claude/commands/eli5.md at commit 3ba35cb) can run /pull-upstream to 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.
  • /eli5 is purely additive.

v1.2.1

28 May 11:30
88f120a

Choose a tag to compare

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's main) — v1.2.1 renamed the CI job typecheckversion-parity. Branch-protection rulesets that mirror upstream's required-status-check name still listing typecheck will block PRs forever — the new workflow reports version-parity, not typecheck. Edit required: rename typecheckversion-parity in your ruleset's required-checks list (or remove typecheck if you don't want the new name required). Applies to both the repo-level ruleset on vibeacademy/gembaflow AND 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 added features/ to syncDirectories, so forks now receive clean upstream features/* files. Forks that have customized their own features/*.{py,feature} files should add the affected paths to .gembaflow-overrides BEFORE running this /upgrade — otherwise the customizations are overwritten.

Fixed

  • template-sync.sh now bumps package.json version alongside .gembaflow-version (#361). Previously, every sync PR landed with red CI because validate-version-parity.sh found the two version sources disagreeing. The fix uses jq (with a python3 fallback) to update package.json only if its version differs from the new release. Idempotent; skipped on non-Node forks. (#365)
  • features/ directory added to syncDirectories (#362). Downstream forks bootstrapped before the rebrand had stale features/* files referencing .agile-flow-version that /upgrade never touched, causing the BDD suite to fail post-sync. Future /upgrade runs now refresh these files. (#364)
  • .claude/agents/*.md now classified as hybrid with FRAMEWORK markers (#363). Previously bootstrap-agents and template-sync.sh silently contradicted each other — every sync wiped out project-specific agent specialization. Now template-sync.sh only updates content between <!-- FRAMEWORK:START --> and <!-- FRAMEWORK:END --> markers; user-supplied specialization outside markers is preserved. (#366)

Changed

  • CI job renamed typecheckversion-parity (#361). The job had been misleadingly named typecheck — it never ran tsc, only the version-parity check. The real TypeScript tsc --noEmit lives in the node job 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 typecheck now needs to be renamed to version-parity in your ruleset. Otherwise sync PRs against your fork will block on a check that no longer exists.

Added

  • bootstrap-agents skill 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 ran bootstrap-agents before this release should re-run it once to gain marker protection. (#366)

Migration notes

After /upgrade against this release:

  • Existing .claude/agents/*.md files without <!-- FRAMEWORK:* --> markers are preserved entirely (preserve-and-warn behavior). The sync PR includes a [!WARNING] callout listing those files and recommending /bootstrap-agents to gain marker protection.
  • features/*.{py,feature} files with .agile-flow-version literals (a leftover from pre-rebrand bootstrap) will be replaced by the clean upstream versions. Forks that have customized their own feature tests should add features/<file> to .gembaflow-overrides to protect them before the sync.
  • Sync PRs land green on CI. The version-parity job verifies .gembaflow-version and package.json agree; template-sync.sh writes 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

27 May 19:27
b1b5075

Choose a tag to compare

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:

  1. Auto-rename your dotfiles (one-time, idempotent):
    • .agile-flow-version.gembaflow-version
    • .agile-flow-meta/.gembaflow-meta/
    • .agile-flow-overrides.gembaflow-overrides
  2. 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 in scripts/report-issue.sh (and 5 other scripts). Forks whose features/*.{py,feature} files still reference .agile-flow-version literals broke 12 BDD scenarios post-/upgrade. Edit required: either delete the affected features/ fixtures and let v1.2.1's expanded syncDirectories (which now includes features/) refresh them on the next sync, or rewrite the literals to .gembaflow-version immediately. gembaflow-site was 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 by template-sync.sh's migration step and the env-compat shim respectively — no manual edit required for those.

Changed

  • Package metadata: package.json name: agile-flow-startergembaflow-starter. pyproject.toml name: agile-flowgembaflow. 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 prefix agile-flow-sync/v…gembaflow-sync/v…. (#348)
  • Env vars now read GEMBAFLOW_* first, fall back to AGILE_FLOW_* with deprecation warning. Helper at scripts/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" (was vibeacademy/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' (was agile-flow) — without this, the template repo would have started running preview/deploy CI on its own PRs after the rename. (#345)

Added

  • upstream field auto-normalized in .gembaflow-version from full URL or bare owner/repo (Phase 0.5 capability, formalized in v1.2.0 docs).
  • Migration step in template-sync.sh that git 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 /upgrade once to trigger the migration step before scripts will function. (#359)

Fixed

  • Pre-push hook: scripts/hooks/pre-push now runs uv run --extra dev pytest and uv run --extra dev ruff check. Without --extra dev, fresh contributors' first push failed with Failed to spawn: pytest. (#350, closes #341)
  • template-cleanliness CI check: removed vibeacademy/agile-flow-gcp test fixture references that tripped \bgcp\b rule; replaced with generic vibeacademy/example-variant. (#348)
  • BDD tests: reports-dir assertions updated to .gembaflow-reports/ so the test suite passes against the renamed dotfiles. (#348, #359)
  • #352 downstream-report — three v1.1.0 bugs (scripts/report-issue.sh hardcoded 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-version had an upstream field, it's preserved (the rename is a git 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 project scope. Remediate with gh 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

26 May 15:35
5c125b3

Choose a tag to compare

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

  • upstream field in .agile-flow-version — Downstream variant forks (e.g. agile-flow-gcp, future agile-flow-aws) can now declare their own upstream repo for /upgrade syncing. Falls back to the hardcoded vibeacademy/agile-flow default when absent. Accepts bare owner/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 With GITHUB_TOKEN Don'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.md with per-scope rationale. Includes a gh auth refresh remediation block for existing reviewer PATs missing the project scope. (#340)

Changed

  • /upgrade (template-sync.sh) is now redirect-safe. The curl call to the GitHub releases API uses -L to follow 301 redirects, so it continues working transparently when an upstream repo is renamed. Adds a vibeacademy/gembaflow fallback 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-workflow now use gh auth status + gh repo view --json nameWithOwner instead of the (since-removed) MCP GitHub server probe. (#339)
  • Account-switch hook (.claude/hooks/ensure-github-account.sh) now routes gh pr review and gh pr comment to the reviewer account in addition to gh pr create → worker. Routing is intentionally narrow: gh issue create, gh issue comment, and gh project item-* are NOT auto-routed (command patterns can't reliably distinguish worker from reviewer context). Slash commands are responsible for explicit gh auth switch when they need a specific account. (#340)
  • Setup script (scripts/setup-accounts.sh) now prints required PAT scopes inline at paste time, including the gh auth refresh upgrade command for existing reviewer PATs. (#340)

Removed

  • .github/workflows/auto-fix.yml — auto-fix-via-GITHUB_TOKEN is fundamentally broken (GitHub deliberately suppresses workflow re-triggers from GITHUB_TOKEN-signed pushes, leaving PRs at BLOCKED until a human pushes a no-op commit). Lint coverage is preserved via the existing ci.yml ruff/eslint jobs; pre-push hooks in scripts/hooks/ provide local-dev auto-fix UX. See Pattern #28 for the full gotcha writeup. (#338)

Fixed

  • Stale doc references to auto-fix.yml in docs/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.md now 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 upstream field to your .agile-flow-version if you're a variant fork (e.g. agile-flow-gcp pointing at vibeacademy/agile-flow-gcp). Forks without the field continue working unchanged against the canonical default.
  • If your reviewer PAT is missing the project scope, follow the remediation block in .claude/README.md (gh auth refresh --user {org}-reviewer --scopes repo,workflow,project,gist,read:org). The verify-bot-permissions.sh test now checks for this scope.
  • Active downstream forks (notably agile-flow-gcp) should run /upgrade against this release before the GitHub repo rename for the gembaflow rebrand. Without it, /upgrade will 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 3agile-flow-gcp updates its .agile-flow-version upstream field to point at itself
  • Phase 4 — dotfile and sync-branch prefix renames
  • Phase 5 — GCP resource naming forward-only update

v1.0.11

23 May 13:13

Choose a tag to compare

Release v1.0.11

v1.0.10

20 May 23:17
97cf6b5

Choose a tag to compare

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

20 May 19:16
ab639aa

Choose a tag to compare

Release v1.0.9