Commit Graph

5340 Commits

Author SHA1 Message Date
beads/witness
b75f5187b6 bd sync: 2026-01-01 16:18:26 2026-01-01 16:18:26 -08:00
beads/refinery
df7dc29e7d bd sync: 2026-01-01 16:11:36 2026-01-01 16:11:36 -08:00
beads/refinery
12e67b0175 bd sync: 2026-01-01 15:50:20 2026-01-01 15:50:20 -08:00
beads/crew/fang
875633a69d bd sync: 2026-01-01 15:35:22 2026-01-01 15:35:22 -08:00
beads/crew/fang
6c8e68195a bd sync: 2026-01-01 15:33:43 2026-01-01 15:33:43 -08:00
beads/crew/emma
09d38de6df feat(create): add --validate flag for template validation (bd-ik1b)
Add opt-in strict mode that fails creation if required sections are
missing. Uses ValidateTemplate() under the hood.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 14:20:29 -08:00
beads/crew/grip
be70972eec feat(cli): add bd lint command for template validation (bd-gn5r)
Checks issues for missing recommended sections based on type:
- bd lint              # Lint all open issues
- bd lint bd-xxx       # Lint specific issue
- bd lint --type bug   # Filter by type
- bd lint --json       # JSON output for CI

Supports both daemon and direct mode. Exit code 1 when warnings found.
Part of opt-in validation epic (bd-ou35).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 14:18:49 -08:00
beads/crew/grip
db93ba0709 feat(validation): add ValidateTemplate() function (bd-615z)
Implements template validation for bd lint and bd create --validate:
- ValidateTemplate() checks description for required sections
- LintIssue() validates an existing issue
- TemplateError provides actionable missing section details
- Case-insensitive, flexible heading matching

Also fixes: close.go missing session parameter in CloseIssue calls

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 12:42:43 -08:00
beads/crew/grip
e6ee7a6912 feat(types): add RequiredSections() method to IssueType (bd-v2mr)
Foundation for opt-in template validation (bd-ou35). Returns recommended
markdown sections per issue type:
- Bug: Steps to Reproduce, Acceptance Criteria
- Task/Feature: Acceptance Criteria
- Epic: Success Criteria
- Others: no requirements

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:28:34 -08:00
gastown/crew/gus
c56cf4e4a7 bd sync: 2026-01-01 11:26:48 2026-01-01 11:26:48 -08:00
gastown/crew/gus
a9e70e3fe5 fix: Add cross-rig routing support to bd close
The close command now properly routes to different beads directories
based on issue ID prefix, matching the behavior of bd show/update.

Changes:
- Check needsRouting() for each ID in both daemon and direct mode
- Handle routed IDs via resolveAndGetIssueWithRouting()
- Close issues in the correct remote store

Fixes bd-3jrb

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:26:18 -08:00
gastown/polecats/nux
5ae088b594 fix: bd update supports cross-rig bead updates via prefix routing (gt-wq1wb)
The bd update command now checks needsRouting() before attempting daemon
RPC resolution. When an issue ID (like hq-eggh5) routes to a different
beads directory, the update bypasses the daemon and uses direct mode with
the routed storage.

This enables polecats in gastown to update HQ beads (hq-* prefix) and
vice versa. The fix mirrors the routing pattern already used by bd show.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:26:18 -08:00
gastown/polecats/slit
8da45ce541 Fix agent ID validation to accept any rig prefix (gt-w0fqg)
The ValidateAgentID function was hardcoded to only accept 'gt-' prefix,
but beads rig uses 'bd-' prefix. Now accepts any valid prefix.

Changes:
- Extract prefix dynamically instead of hardcoding 'gt-'
- Accept IDs like bd-mayor, bd-beads-polecat-pearl
- Update error messages to be prefix-agnostic
- Add test cases for alternative prefixes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:26:18 -08:00
beads/crew/wolf
918eefcf58 bd sync: 2026-01-01 11:18:01 2026-01-01 11:18:01 -08:00
beads/crew/wolf
33cf09ba3b feat: add --pretty flag to bd ready (bd-vjas)
Adds --pretty flag to bd ready for consistency with bd list.
Uses the same displayPrettyList() function to show issues in
a tree format with status/priority symbols.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:17:31 -08:00
obsidian
743a2d98aa chore: remove repo cruft (bd_new, @AGENTS.md)
- Remove bd_new (31MB binary that should never have been tracked)
- Remove @AGENTS.md (duplicate that was already removed but still tracked)
- state.json already in .gitignore and not tracked
- history/EPHEMERAL_MOLECULES_DESIGN.md does not exist

(bd-ov1u)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:14:21 -08:00
gastown/polecats/nux
628ab911a0 fix: bd update supports cross-rig bead updates via prefix routing (gt-wq1wb)
The bd update command now checks needsRouting() before attempting daemon
RPC resolution. When an issue ID (like hq-eggh5) routes to a different
beads directory, the update bypasses the daemon and uses direct mode with
the routed storage.

This enables polecats in gastown to update HQ beads (hq-* prefix) and
vice versa. The fix mirrors the routing pattern already used by bd show.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:14:20 -08:00
gastown/polecats/slit
eb0cc50ce6 Fix agent ID validation to accept any rig prefix (gt-w0fqg)
The ValidateAgentID function was hardcoded to only accept 'gt-' prefix,
but beads rig uses 'bd-' prefix. Now accepts any valid prefix.

Changes:
- Extract prefix dynamically instead of hardcoding 'gt-'
- Accept IDs like bd-mayor, bd-beads-polecat-pearl
- Update error messages to be prefix-agnostic
- Add test cases for alternative prefixes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:14:20 -08:00
beads/witness
24fdccf3c3 bd sync: 2026-01-01 11:14:01 2026-01-01 11:14:01 -08:00
beads/crew/emma
363c5a3819 fix: bd sync fails with exit 128 in bare repo worktrees (GH#827)
Two fixes for bare repo worktree setups:

1. fork_protection.go: Use git.GetGitDir() instead of hardcoding .git
   In worktrees, .git is a file containing gitdir path, not a directory.
   Using GetGitDir() handles this correctly.

2. sync_git.go: Simplify gitHasBeadsChanges to use absolute paths
   The previous code used git -C main-repo-root status, but in bare
   repo worktrees GetMainRepoRoot() returns the parent of the bare repo
   which is not a valid working tree. Using absolute paths without -C
   lets git find the repo from cwd, which always works.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:05:05 -08:00
beads/crew/fang
95f14fa827 fix: bd --no-db dep tree now shows complete tree (GH#836)
The memory storage GetDependencyTree was missing the root node at depth 0,
causing --no-db mode to only show dependencies without the root issue.

Fixed by:
- Adding root node at depth 0 before listing dependencies
- Setting ParentID on child nodes for proper tree rendering

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:03:46 -08:00
beads/crew/emma
edc0fea02f fix: restore last-touched to gitignore template (GH#838)
The last-touched file was accidentally removed from GitignoreTemplate
in commit 310d374 (GH#814 fix). This restores it and adds it to
requiredPatterns so bd doctor will detect outdated gitignores.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 10:58:16 -08:00
cbarber
7a9db35c79 Fix shebang env (#817)
* fix: use /usr/bin/env to PATH search sh (nixos compatiblity)

* fix: reconcile repo hooks with template /usr/bin/env change
2026-01-01 10:54:22 -08:00
beads/crew/emma
829c8d1caf feat: add --notes flag to bd create command (GH#830)
Add --notes flag to bd create command, enabling agents to set notes
during issue creation instead of requiring a separate update command.

Motivation: AI agents repeatedly tried to use --notes with bd create.
Context is fresh at creation time - forcing a two-step process means
context loss or workflow interruption.

Changes:
- cmd/bd/flags.go: Added --notes flag to common issue flags
- cmd/bd/create.go: Read and pass notes in both RPC and direct modes
- cmd/bd/update.go: Removed duplicate --notes flag definition
- internal/rpc/protocol.go: Added Notes field to CreateArgs
- internal/rpc/server_issues_epics.go: Process Notes in handleCreate
- cmd/bd/create_notes_test.go: Comprehensive test coverage
- website/docs/cli-reference/issues.md: Documentation

Also adds gitignore entries for Augment AI and .beads/redirect.

Co-authored-by: Leon Letto <lettol@vmware.com>
2026-01-01 10:53:59 -08:00
beads/crew/wolf
66a220e06c bd sync: 2026-01-01 10:53:17 2026-01-01 10:53:17 -08:00
Jordan Hubbard
aa2ea48bf2 feat: add FreeBSD release builds (#832)
* feat: add FreeBSD release builds

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* chore: allow manual release dispatch

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* fix: stabilize release workflow on fork

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* fix: clean zig download artifact

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* fix: use valid zig target for freebsd arm

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* fix: disable freebsd arm release build

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* fix: switch freebsd build to pure go

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* fix: skip release publishing on forks

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* fix: satisfy golangci-lint for release PR

---------

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-01 10:51:51 -08:00
Peter Chanthamynavong
f3f713d77a fix(fork-protection): only apply protection to actual beads forks (#823) (#828)
The fork protection logic incorrectly treated all repos where
origin != steveyegge/beads as forks, including user's own projects
that just use beads as a tool.

Changes:
- Add isForkOfBeads() that scans ALL remotes for steveyegge/beads
- Only apply protection when a beads-related remote exists
- Add git config opt-out: `git config beads.fork-protection false`
  (per-clone, never tracked, matches beads.role pattern)

Test coverage for 8 scenarios plus edge cases for config values.
2026-01-01 10:51:22 -08:00
beads/crew/dave
00d0eb0192 fix: add gosec annotations to doctor/gitignore.go (GH#832)
Adds #nosec G204 annotations to exec.Command calls that use
hardcoded paths. Fixes pre-existing lint failure exposed by PR #832.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Executed-By: beads/crew/dave
Rig: beads
Role: crew
2026-01-01 10:49:47 -08:00
Peter Chanthamynavong
9801102aa2 fix(daemon): Use syncbranch.IsConfigured() for autoPull (#837)
* test(daemon): Prove autoPull reads sync.branch from SQLite

- Verify daemon reads sync.branch from SQLite config source
- Show config.yaml sync-branch is ignored (YAML-only key)
- Add skipped tracer bullet test for issue #831

Coverage: daemon autoPull config resolution

* fix(daemon): Use syncbranch.IsConfigured() for autoPull

Problem:
- Daemon's periodic sync never activated when sync-branch configured in config.yaml
- autoPull check only read sync.branch from SQLite, missing YAML-only configuration

Solution:
- Replace SQLite-only check with syncbranch.IsConfigured()
- Update test to validate correct detection of YAML-configured sync branch

Impact:
- Periodic sync now activates correctly when sync-branch is configured in config.yaml
- Fixes daemon hanging issue for users with YAML-only configuration
2026-01-01 10:48:14 -08:00
Gero Hillebrandt
a1f706d17a fix: prevent nil context panic in multi-repo hydration (#840) 2026-01-01 10:46:56 -08:00
beads/crew/wolf
a71e21c416 bd sync: 2026-01-01 10:46:34 2026-01-01 10:46:34 -08:00
Steve Yegge
274761a30d bd sync: 2025-12-31 16:04:54 2025-12-31 16:04:54 -08:00
Steve Yegge
0704f9ea97 bd sync: 2025-12-31 14:24:09 2025-12-31 14:24:09 -08:00
beads/crew/fang
5e8a834b38 fix: bd sync now follows .beads/redirect for worktree path (bd-e2q9, bd-kvus)
When .beads/redirect exists, bd sync was using GetRepoRoot(cwd) to find
the git worktree location. This failed because the worktree should be
in the same repo as the beads directory, not the current working directory.

Fix: Use getRepoRootFromPath(beadsDir) to derive the repo root from
the actual beads location after following the redirect.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:32:17 -08:00
beads/crew/fang
2a77921e61 bd sync: 2025-12-31 13:32:06 2025-12-31 13:32:06 -08:00
gastown/polecats/nux
e6b5e58c17 bd sync: 2025-12-31 13:22:59 2025-12-31 13:22:59 -08:00
beads/crew/dave
b362b36824 feat: add session_id field to issue close/update mutations (bd-tksk)
Adds closed_by_session tracking for entity CV building per Gas Town
decision 009-session-events-architecture.md.

Changes:
- Add ClosedBySession field to Issue struct
- Add closed_by_session column to issues table (migration 034)
- Add --session flag to bd close command
- Support CLAUDE_SESSION_ID env var as fallback
- Add --session flag to bd update for status=closed
- Display closed_by_session in bd show output
- Update Storage interface to include session parameter in CloseIssue

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Executed-By: beads/crew/dave
Rig: beads
Role: crew
2025-12-31 13:14:15 -08:00
beads/crew/fang
7c9b975436 feat: add display guards for large molecules in bd mol current (bd-vln0)
For molecules with >100 steps, shows summary instead of full step list:
- Counts children first using efficient GetMoleculeProgress query
- Shows progress summary with pointer to bd mol progress
- Add --limit flag to cap output (e.g., --limit 50)
- Add --range flag for specific ranges (e.g., --range 1-50)

Also closes epic bd-5nu1 (mega-molecule progress support).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:08:41 -08:00
beads/crew/fang
f3224278a8 fix: use lightweight molecule discovery in bd mol progress
Replace findInProgressMolecules (which loads full subgraphs) with
findInProgressMoleculeIDs (which only returns IDs). This ensures
auto-discovery is efficient for mega-molecules.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:04:19 -08:00
beads/crew/emma
21de43538d fix: eliminate 5+ second delays from stale daemon.lock files (bd-htwx)
Root cause: When a bd daemon crashes, its daemon.lock file remains with
the old PID. If that PID gets reused by an unrelated process, the code
would wait 5 seconds for a socket that will never appear.

Fix: Use flock-based check as authoritative source for daemon liveness.
The OS releases flocks when a process dies, so this is immune to PID reuse.

Changes:
- handleExistingSocket: Check daemon flock before waiting for socket
- acquireStartLock: Verify daemon lock is held before waiting
- handleStaleLock: Use flock check to detect stale startlocks
- lockfile/process_*.go: Add pid <= 0 check to prevent false positives
  (PID 0 signals process group on Unix, not a specific process)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:03:49 -08:00
beads/crew/grip
e2121a2e07 fix(refile): address code review feedback
- Warn if source issue is already closed
- Copy all issue fields (SourceRepo, Ephemeral, MolType, RoleType, Rig)
- Log warnings on label copy failures instead of silently ignoring
- Schedule auto-flush when source is local store
- Remove stale comment

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 13:01:20 -08:00
beads/crew/wolf
54d15252fa Add BEADS_NO_AUTO_STAGE opt-out for pre-commit auto-staging (GH#826)
Users with conflicting git hooks (e.g., hooks that read the staging
area like GGA) can now set BEADS_NO_AUTO_STAGE=1 to disable auto-staging
and get check-and-block behavior instead.

Default behavior unchanged - auto-staging still works for most users.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 12:58:54 -08:00
gastown/crew/joe
e53ef575b3 bd sync: 2025-12-31 12:57:57 2025-12-31 12:57:57 -08:00
gastown/crew/joe
b15b9ba973 bd sync: 2025-12-31 12:51:11 2025-12-31 12:51:11 -08:00
beads/crew/fang
0a96b10bba feat: add bd mol progress command for efficient molecule monitoring (bd-8xnf)
Adds a new `bd mol progress` command that shows molecule progress using
indexed queries instead of loading all steps into memory. This makes it
suitable for mega-molecules with millions of steps.

Features:
- Efficient SQL-based counting via idx_dependencies_depends_on_type index
- Progress display: completed / total (percentage)
- Current step identification
- Rate calculation from closure timestamps
- ETA estimation
- JSON output support

New storage interface method: GetMoleculeProgress(ctx, moleculeID)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 12:35:41 -08:00
mayor
585d0d607f bd sync: 2025-12-31 12:35:04 2025-12-31 12:35:04 -08:00
mayor
c493ed0ab7 bd sync: 2025-12-31 12:35:01 2025-12-31 12:35:01 -08:00
beads/crew/grip
297b3af233 beads sync: close bd-1eak 2025-12-31 12:34:57 -08:00
beads/crew/grip
3593ba8d66 feat: add bd refile command to move issues between rigs (bd-1eak)
Implements `bd refile <source-id> <target-rig>` which:
- Gets source issue via routing
- Creates new issue in target rig with same content
- Closes source with "Refiled to <new-id>"
- Appends "(Refiled from <old-id>)" to description

Target rig accepts rig names (beads), prefixes (bd-), or prefix shorthand (bd).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 12:34:18 -08:00
mayor
18fbab6a38 bd sync: conflict resolution
Executed-By: mayor
Role: mayor
2025-12-31 12:33:42 -08:00