What's in this release
v1.6.0 makes beads (bd) plus deterministic hook-rendered boards the platform's default work-item tracker layer, replacing the GitHub Projects dependency (epic #574, provenance: downstream report #562 from the reference fork). The architectural center is an inversion: Ready is now computed (bd ready = open + unblocked) rather than a column agents mutate, grooming completes Definition-of-Ready instead of moving cards, and roughly 420 lines of board-hygiene protocol are deleted rather than ported. Around that core ship a 7-condition agent-merge gate with a config-gated second-identity approval (REVIEWER_APPROVAL_LOGIN), a fork migrator with a one-release legacy.githubProjects compatibility flag, a beads-native bootstrap, and adoption docs that encode the reference fork's eight gotchas at point-of-use. The window also carries the Codespaces bootstrap chain, a provider-plugin deploy-status dispatcher for /drain, docs-only CI gating, and a batch of drain/report-issue/agent-loading fixes.
Added
- Board tooling layer (epic #574 E1, #582) — deterministic board renderer (
scripts/render-boards.mjs, with--checkfreshness mode), hook-rendered board projections, permissions wiring, and the/board-refreshcommand. - Pinned bd toolchain (epic #574 E2, #584) — bd pinned at 1.1.0 (
scripts/lib/bd-version.sh),scripts/check-bd.shpin enforcement, andscripts/init-beads.shinit sequence (install → init → hooks), with the known init gotchas (inert git hooks undercore.hooksPath;--skip-agentsboilerplate conflict) encoded indocs/BEADS.md. - Canonical beads vocabulary and mapping (epic #574 E3/E6, #585/#591) — CLAUDE.md "Work-Item Tracking (Beads)" board-model mapping plus critical rules 9 and 10 (beads is the only tracker; bd mechanical hygiene), and the new
docs/BEADS-CONVENTIONS.mdas the single canonical reference for label vocabulary, branch/PR conventions, script conventions, and board semantics. - Agent-merge gate + beads drain (epic #574 E4, #586) — 7-condition gate in
.github/workflows/agent-merge.yml(bead citation,safety:*PR label, full green rollup, open-against-main, no do-not-merge, config-gated second-identity approval viaREVIEWER_APPROVAL_LOGINbound to the PR's current head commit, caller audit), conditions extracted into unit-testedscripts/check-merge-gate.sh;/drainrewrittenbd ready-native with atomicbd update --claim, schema-validated drain state (scripts/write-drain-state.mjs), and the four autonomous-run findings codified. Validated live in PR #590 — the platform's first agent-merged PR. - Fork migrator + GH-Projects compatibility flag (epic #574 E5, #588) — idempotent
scripts/migrate-issues-to-beads.sh(--external-refkeyed, opt-in--close-github), beads-native bootstrap, and thelegacy.githubProjectsflag (config +GEMBAFLOW_LEGACY_GITHUB_PROJECTSActions variable) to stay on GitHub Projects for exactly one release. - Adoption docs (epic #574 E6, #591) — the reference fork's eight adoption gotchas placed at point-of-use, an honest-limits section (no human write UI, cross-repo federation untested, bd 1.x CLI churn countered by the pin), and a DISTRIBUTION sweep of all six epic PRs.
- Codespaces bootstrap chain (#531, #533, #534) —
codespace-postcreate.sh+ devcontainer permissions block + version-stamp lib, the/bootstraporchestrator with.bootstrap-statusinterop and a token redactor, anddocs/codespaces-secrets.mdwith the multi-bot preflight branch. - Deploy-status provider dispatcher (#499) —
scripts/deploy-status/interface.mjsroutes/drainstep 9 through per-plane adapters selected byDRAIN_DEPLOY_PLANE(defaultrender; zero behavior change for existing forks), unblocking non-Render forks. /log-sessionupstream-feedback reflection (#543) — voluntary end-of-session reflection prompt that channels fork friction into upstream reports.
Changed
- The architectural inversion (epic #574 E3, #585) — grooming completes Definition-of-Ready, sets priorities, and wires dependencies; a healthy ready queue is the outcome, and the board is a projection, never a target (anti-Goodhart guardrails in
/groom-backlog). GitHub Issues become an inbox that grooming imports and closes. - Agents and commands rewritten to bd idioms (#585) —
/work-ticket,/groom-backlog,/create-ticket,/doctor,/sprint-status,/check-milestone,/review-pr,/review-to-tickets,/swarm,/log-session,/validate-memory, plusgithub-ticket-worker,agile-backlog-prioritizer,pr-reviewer, andswarm-planner— all insideFRAMEWORK:START/ENDmarkers. - Label authority inverts (#585) — the bead's
safety:*label is the source of truth; the worker copies it onto the PR at creation.Closes #Nis retired in favor ofBead: <id>citations. - Reviewer verdict becomes gate-qualifying (#586) — on repos where the gate's
REVIEWER_APPROVAL_LOGINis set,/review-prrecords GO as a realgh pr review --approvefrom the reviewer identity (verdict recording on the bead is unchanged either way). - CI skips the full fleet on docs-only PRs (#485) — new
_detect-changes.ymlreusable workflow gatesjson-validate,version-parity,build,test, and friends;lintstays deliberately ungated. Skipped jobs still satisfy required status checks. - README trimmed (#550) — promotional video embed removed.
- Housekeeping: v1.5.0 CHANGELOG backfill landed in-window (#487).
Fixed
- Project-level agents load again (#489) — repaired YAML frontmatter that prevented agent registration.
/report-issueaccepts the bare-slug upstream form (#496) —owner/reposhorthand no longer rejected./drainpre-flight Step 0 detects unsubstituted placeholders (#497) — template tokens left in config fail closed before a run starts./drainpre-flight step 4 detects all manual-install artifacts (#498) — every gate/bridge artifact is checked, with a newsetup-safety-labelshelper.
Removed
- Board-hygiene protocol (~420 lines, deleted not ported; #585/#586) — the board-columns spec in
docs/AGENT-WORKFLOW-SUMMARY.md(now a short pointer to the CLAUDE.md mapping), board pre-flight checks from six rewritten commands, the hand-rolledDepends on:topo-sort in/drain(bd readyis blocker-aware, so the queue cannot contain blocked work), and the project-board remote checks in/doctor. projectPAT scope requirement (#585) — including the reviewer-PAT remediation walkthrough (kept as a short historical note) and thegh project listscope probes inscripts/setup-accounts.sh.
Migration notes
For fork maintainers, in order:
- Run
/upgrade— this brings the beads tooling (scripts, commands, agents, hooks, docs) via the normal sync. - Install the pinned bd toolchain: run the bootstrap init, or manually
npm install -g "@beads/bd@1.1.0"thenscripts/init-beads.sh.scripts/check-bd.shenforces the pin. - Migrate your open GitHub issues:
scripts/migrate-issues-to-beads.sh— idempotent (keyed on--external-ref, safe to re-run), and GitHub issues stay open unless you opt in with--close-github. - Or defer for one release: set
legacy.githubProjects: truein.gembaflow-config.jsonand theGEMBAFLOW_LEGACY_GITHUB_PROJECTS=trueActions repository variable to keep the GitHub-Projects path. This path is deprecated on arrival — removal ticket #587 lands next release. - Gate activation is opt-in manual install (workflow files do not sync): copy
.github/workflows/agent-merge.ymlanddrain-merge-bridge.ymlonto your fork's main followingdocs/agent-merge-gate.md, including theREVIEWER_APPROVAL_LOGINdecision (set your reviewer bot's login for the two-identity merge path, or empty string to knowingly skip condition 6 with a loud per-run warning).
Fork-maintained files you must update
- Workflow files are never synced — forks wanting this release's gate, bridge, docs-only CI gating, or board-status behavior must update their own copies of
.github/workflows/agent-merge.yml,drain-merge-bridge.yml,_detect-changes.yml/ci.yml, andauto-board-status.ymlmanually. auto-board-status.ymlnow no-ops by default — it only runs when theGEMBAFLOW_LEGACY_GITHUB_PROJECTSActions variable istrue(plus the board config variables). Forks staying on GitHub Projects for this release must set the variable or PR-merge board automation silently stops.- Agent frontmatter descriptions changed to beads phrasing (#591) — frontmatter lives outside the
FRAMEWORK:START/ENDmarkers, so existing forks keep their own text (the new phrasing appears only on fresh forks). No action required; listed for awareness. - Required CI check names: unchanged.
lint,json-validate,version-parity,build, andtestall keep their names (they only gainedneeds: detectgating, and skipped jobs still count as passing). The newdetectjob is not a required check, and the gate workflow's display name is stillAgent Merge Gate. No ruleset changes needed.
Propagation note
scripts/template-sync.sh and scripts/lib/overrides.sh were not modified in this window (re-verified with git log v1.5.0..main over both paths, matching every epic review). Existing forks pick up everything in this release via /upgrade, with two standing exceptions: workflow files (never synced — see the fork-maintained list above) and agent regions outside the FRAMEWORK:START/END markers (fork-owned by design).