Files
Chris Sells d2f87d50de docs(pipeline): pin the CLI docs to the released bd; repair main's broken CLI reference (#4876)
* docs(pipeline): pin the generated CLI docs to the released bd; repair main's CLI reference

The #4874 squash-merge raced the docs-autofix bot: the bot had pushed a
regeneration from main's source onto the PR branch, so the squash landed a
contradictory mix — the release-aligned hand-written docs plus a CLI
reference re-documenting unreleased commands and flags, with docs.json
referencing four pages (heartbeat, migrate-personal, reclaim, unclaim)
whose files do not exist. That broken nav fails the docsync guard on main
and on every branch cut from it. This restores the intended end state of
#4874 and lands the pin that prevents the race from recurring.

- Regenerate the CLI reference from a bd built from the v1.1.0 tag (CI's
  canonical pure-Go build), removing the unreleased commands/flags and
  fixing the dangling nav entries.
- docs/cli-docs.pin names the release tag; scripts/resolve-docs-bd.sh
  builds and caches a canonical pure-Go bd from that tag, fetching the tag
  first in shallow CI checkouts.
- generate-cli-docs.sh, check-doc-flags.sh, and check-cli-docs-drift.sh
  resolve bd through the pin and ignore a supplied binary while pinned
  (BD_DOCS_IGNORE_PIN=1 bypasses), so the drift gates and the autofix bot
  now enforce docs-match-release instead of docs-match-main.
- tools/docsmint detects the pre-overhaul Docusaurus staging layout that
  bd <= v1.1.0 emits and converts it to the generic form before its normal
  Mintlify transform (tested); removable once the pin reaches a release
  whose emitter writes build/cli-docs.
- check-doc-flags.sh: run without timeout(1) on macOS instead of failing
  Check 4.
- Decision record: engdocs/decisions/2026-07-17-docs-release-pin.md; the
  beads-docs skill §8 updated to match.

* lint: annotate gosec G705 false positive in the docsmint legacy bridge

Same class as the existing nav-splice annotation: a developer tool writing
repo Markdown, not a web-output sink.
2026-07-17 18:03:28 -07:00

4.1 KiB

title, description
title description
bd migrate Database migration and data transformation commands.

{/* AUTO-GENERATED: do not edit manually */}

Generated from bd help --doc migrate.

Database migration and data transformation commands.

Without subcommand, checks and updates database metadata to current version.

Subcommands: hooks Plan git hook migration to marker-managed format issues Move issues between repositories schema Apply pending schema migrations (idempotent) sync Set up sync.branch workflow for multi-clone setups

bd migrate [flags]

Flags:

      --dry-run          Show what would be done without making changes
      --inspect          Show migration plan and database state for AI agent analysis
      --json             Output migration statistics in JSON format
      --update-repo-id   Update repository ID (use after changing git remote)
      --yes              Auto-confirm prompts

bd migrate hooks

Analyze git hook files and sidecar artifacts for migration to marker-managed format.

Modes: --dry-run Preview migration operations without changing files --apply Apply migration operations

Examples: bd migrate hooks --dry-run bd migrate hooks --apply bd migrate hooks --apply --yes bd migrate hooks --dry-run --json

bd migrate hooks [path] [flags]

Flags:

      --apply     Apply planned hook migration changes
      --dry-run   Show what would be done without making changes
      --json      Output in JSON format
      --yes       Skip confirmation prompt for --apply

bd migrate issues

Move issues from one source repository to another with filtering and dependency preservation.

This command updates the source_repo field for selected issues, allowing you to:

  • Move contributor planning issues to upstream repository
  • Reorganize issues across multi-phase repositories
  • Consolidate issues from multiple repos

Examples:

Preview migration from planning repo to current repo

bd migrate-issues --from ~/.beads-planning --to . --dry-run

Move all open P1 bugs

bd migrate-issues --from ~/repo1 --to ~/repo2 --priority 1 --type bug --status open

Move specific issues with their dependencies

bd migrate-issues --from . --to ~/archive --id bd-abc --id bd-xyz --include closure

Move issues with label filter

bd migrate-issues --from . --to ~/feature-work --label frontend --label urgent

bd migrate issues [flags]

Flags:

      --dry-run            Show plan without making changes
      --from string        Source repository (required)
      --id strings         Specific issue IDs to migrate (can specify multiple)
      --ids-file string    File containing issue IDs (one per line)
      --include string     Include dependencies: none/upstream/downstream/closure (default "none")
      --label strings      Filter by labels (can specify multiple)
      --priority int       Filter by priority (0-4) (default -1)
      --status string      Filter by status (open/closed/all)
      --strict             Fail on orphaned dependencies or missing repos
      --to string          Destination repository (required)
      --type string        Filter by issue type (bug/feature/task/epic/chore/decision)
      --within-from-only   Only include dependencies from source repo (default true)
      --yes                Skip confirmation prompt

bd migrate schema

Apply pending schema migrations idempotently.

Schema migrations also run automatically on store open, so this subcommand is typically a no-op. It exists to make migration explicit and observable in CI, release gates, and recovery scenarios.

Example: bd migrate schema bd migrate schema --json

bd migrate schema [flags]

Flags:

      --json   Output in JSON format

bd migrate sync

Configure separate branch workflow for multi-clone setups.

This sets the sync.branch config value so that issue data is committed to a dedicated branch, keeping your main branch clean.

Example: bd migrate sync beads-sync

bd migrate sync <branch> [flags]

Flags:

      --dry-run   Show what would be done without making changes
      --json      Output in JSON format