Beads - A memory upgrade for your coding agent
This report presents the forensic synthetic code analysis of gastownhall/beads, a Go project with 25,283 GitHub stars. SynthScan v2.0 examined 611,949 lines of code across 2224 source files, recording 1146 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 2.9 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1146 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .golangci.yml | 21 | # Mechanical enforcement of the Storage Boundary in | COMMENT |
| LOW | beads.go | 21 | COMMENT | |
| LOW | cmd/bd/shared_server_cfgnil_test.go | 21 | // through to embeddeddolt.Open. With a leftover embedded data directory present | COMMENT |
| LOW | cmd/bd/graph_apply.go | 141 | COMMENT | |
| LOW | cmd/bd/close.go | 601 | // resolveCloseTargets resolves a batch of partial issue IDs for `bd close`, | COMMENT |
| LOW | cmd/bd/storage_chain.go | 1 | package main | COMMENT |
| LOW | cmd/bd/proxied_server.go | 221 | // } | COMMENT |
| LOW | cmd/bd/proxied_server.go | 241 | // } | COMMENT |
| LOW | cmd/bd/proxied_server.go | 261 | // if email == "" { | COMMENT |
| LOW | cmd/bd/hooks.go | 41 | COMMENT | |
| LOW | cmd/bd/hooks.go | 181 | // appending at the bottom. | COMMENT |
| LOW | cmd/bd/hooks.go | 421 | return false | COMMENT |
| LOW | cmd/bd/hooks.go | 981 | // | COMMENT |
| LOW | cmd/bd/hooks.go | 1401 | COMMENT | |
| LOW | cmd/bd/hooks.go | 1441 | } | COMMENT |
| LOW | cmd/bd/auto_import_upgrade_test.go | 61 | // stages the imported issues in the Dolt working set without an | COMMENT |
| LOW | cmd/bd/export_auto.go | 641 | gitDir = filepath.Join(filepath.Dir(path), gitDir) | COMMENT |
| LOW | cmd/bd/memory_embedded_test.go | 261 | COMMENT | |
| LOW | cmd/bd/shared_server_integration_test.go | 41 | // container via testcontainers, initializes numDirs project directories, | COMMENT |
| LOW | cmd/bd/show.go | 441 | SetLastTouchedID(args[0]) | COMMENT |
| LOW | cmd/bd/bootstrap.go | 141 | // Resolve non-interactive mode: flag > env var > CI env > terminal detection. | COMMENT |
| LOW | cmd/bd/bootstrap.go | 641 | } | COMMENT |
| LOW | cmd/bd/store_factory.go | 61 | // Read-only commands must not be bricked by the #4259 | COMMENT |
| LOW | cmd/bd/dolt.go | 161 | HasPersistedRemote() bool | COMMENT |
| LOW | cmd/bd/dolt.go | 741 | if isDoltLocalOnly() { | COMMENT |
| LOW | cmd/bd/dolt.go | 761 | // - dolt_mode=server with a non-local host (Hosted Dolt, remote shared | COMMENT |
| LOW | cmd/bd/dolt.go | 961 | fmt.Printf("Killed %d orphan dolt server(s): %v\n", len(killed), killed) | COMMENT |
| LOW | cmd/bd/mol.go | 1 | package main | COMMENT |
| LOW | cmd/bd/purge.go | 21 | // messaging without copying 200 lines of boilerplate. | COMMENT |
| LOW | cmd/bd/nocow_linux.go | 21 | // read-modify-write-recompress of the existing compressed extent. Setting | COMMENT |
| LOW | cmd/bd/nocow_linux.go | 61 | uintptr(unix.FS_IOC_SETFLAGS), | COMMENT |
| LOW | cmd/bd/sandbox_unix.go | 1 | //go:build unix | COMMENT |
| LOW | cmd/bd/linear.go | 401 | // (children are sometimes pushed before parents have an external_ref), | COMMENT |
| LOW | cmd/bd/linear.go | 1301 | // dependencies into Linear's parent issue field. Idempotent — no API call | COMMENT |
| LOW | cmd/bd/backup_auto.go | 21 | } | COMMENT |
| LOW | cmd/bd/test_repo_beads_guard_test.go | 21 | // helpers (build binaries, isolated HOMEs) that previously called | COMMENT |
| LOW | cmd/bd/test_repo_beads_guard_test.go | 61 | // Isolate config discovery from the repo's tracked `.beads/config.yaml`. | COMMENT |
| LOW | cmd/bd/init_safety_test.go | 561 | // bound its scope to verify "refusal clears" — not full bootstrap | COMMENT |
| LOW | cmd/bd/search_test.go | 81 | // NOT parallel: see TestSearchCommand_MissingQueryShowsHelp comment (cobra OutOrStdout race). | COMMENT |
| LOW | cmd/bd/test_helpers_pure_test.go | 41 | // from multiple goroutines (writes to a shared global map without synchronization). | COMMENT |
| LOW | cmd/bd/auto_import_upgrade.go | 21 | // fallbackImporter is the function maybeAutoImportJSONL invokes for stores | COMMENT |
| LOW | cmd/bd/auto_import_upgrade.go | 61 | } | COMMENT |
| LOW | cmd/bd/sandbox_windows.go | 1 | //go:build windows | COMMENT |
| LOW | cmd/bd/markdown.go | 141 | // | COMMENT |
| LOW | cmd/bd/import_shared.go | 421 | // explicit recovery paths: `bd bootstrap` and `bd init --from-jsonl`. | COMMENT |
| LOW | cmd/bd/list_tree.go | 21 | // If allDeps is nil, falls back to dotted ID hierarchy (e.g., "parent.1") | COMMENT |
| LOW | cmd/bd/gomodcache_rehome_test.go | 1 | package main | COMMENT |
| LOW | cmd/bd/where_test.go | 401 | // TestFindOriginalBeadsDir_BeadsDirEnvWithoutRedirectFallsThrough guards | COMMENT |
| LOW | cmd/bd/routed.go | 41 | COMMENT | |
| LOW | cmd/bd/routed.go | 141 | Path string `json:"path"` // Relative path to rig directory from town root | COMMENT |
| LOW | cmd/bd/stdio_race_guard_test.go | 41 | // (in code, not comments), it must NOT call any method name in | COMMENT |
| LOW | cmd/bd/tips.go | 181 | commandTipIDsShown[tipID] = struct{}{} | COMMENT |
| LOW | cmd/bd/dep_test.go | 1341 | t.Errorf("Expected dep-1 depth=5, got %d", node.Depth) | COMMENT |
| LOW | cmd/bd/dep_test.go | 1361 | // TRACER BULLET FINDING (Phase 1): | COMMENT |
| LOW | cmd/bd/main_errors.go | 41 | // isWispOperation returns true if the command operates on ephemeral wisps. | COMMENT |
| LOW | cmd/bd/init_safety.go | 1 | package main | COMMENT |
| LOW | cmd/bd/init_safety.go | 21 | // Exit codes for init-safety refusals. Stable values so CI scripts can | COMMENT |
| LOW | cmd/bd/init_safety.go | 41 | // observed the remote state and read the user's flag intent. | COMMENT |
| LOW | cmd/bd/init_safety.go | 61 | // or wrong token). Refuse with `ExitDestroyTokenMissing`. The | COMMENT |
| LOW | cmd/bd/init_safety.go | 81 | // FromJSONL selects local JSONL as the init source instead of remote | COMMENT |
| 388 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cmd/bd/shared_server_integration_test.go | 119 | // ── Init project directories ──────────────────────────────────────── | COMMENT |
| MEDIUM | cmd/bd/shared_server_integration_test.go | 154 | // ── Fan out client workloads ──────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 77 | // ── Issue mutations ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 146 | // ── Dependency mutations ──────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 166 | // ── Label mutations ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 186 | // ── Comment mutations ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 198 | // ── Transaction support ───────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 220 | // ── Internal helpers ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 251 | // ── Hook tracking transaction ─────────────────────────────────────── | COMMENT |
| MEDIUM | …/storage/dolt/pull_branch_tracking_integration_test.go | 38 | // ── Remote server ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/storage/dolt/pull_branch_tracking_integration_test.go | 66 | // ── Local DoltStore ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/storage/dolt/pull_branch_tracking_integration_test.go | 82 | // ── Confirm the bug scenario is present ──────────────────────────────────── | COMMENT |
| MEDIUM | …/storage/dolt/pull_branch_tracking_integration_test.go | 101 | // ── Verify the fix: pullWithAutoResolve succeeds via fallback ────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 96 | // ── Issue CRUD ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 242 | // ── Dependencies ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 310 | // ── Labels ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 350 | // ── Work queries ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 389 | // ── Comments & events ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 426 | // ── Statistics ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 445 | // ── Configuration ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | internal/telemetry/storage.go | 486 | // ── Transactions ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | internal/telemetry/storage.go | 495 | // ── Wisp queries ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | internal/telemetry/storage.go | 504 | // ── Streaming iterators ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 580 | // ── Count* aggregates ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 624 | // ── MergeSlot ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 654 | // ── Metadata slots ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 677 | // ── Lifecycle ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .beads/formulas/beads-release.formula.toml | 58 | # ============================================================================= | STRING |
| MEDIUM | .beads/formulas/beads-release.formula.toml | 60 | # ============================================================================= | STRING |
| MEDIUM | .beads/formulas/beads-release.formula.toml | 617 | # ============================================================================= | STRING |
| MEDIUM | .beads/formulas/beads-release.formula.toml | 619 | # ============================================================================= | STRING |
| MEDIUM | .beads/formulas/beads-release.formula.toml | 648 | # ============================================================================= | STRING |
| MEDIUM | .beads/formulas/beads-release.formula.toml | 650 | # ============================================================================= | STRING |
| MEDIUM | .beads/formulas/beads-release.formula.toml | 767 | # ============================================================================= | STRING |
| MEDIUM | .beads/formulas/beads-release.formula.toml | 769 | # ============================================================================= | STRING |
| MEDIUM⚡ | …rations/beads-mcp/tests/test_mcp_server_integration.py | 713 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | …rations/beads-mcp/tests/test_mcp_server_integration.py | 715 | # ============================================================================= | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/server.py | 85 | # ============================================================================= | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/server.py | 87 | # ============================================================================= | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/server.py | 335 | # ============================================================================= | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/server.py | 337 | # ============================================================================= | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/server.py | 767 | # ============================================================================= | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/server.py | 769 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | integrations/beads-mcp/src/beads_mcp/models.py | 35 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | integrations/beads-mcp/src/beads_mcp/models.py | 37 | # ============================================================================= | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/models.py | 120 | # ============================================================================= | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/models.py | 122 | # ============================================================================= | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/models.py | 331 | # ============================================================================= | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/models.py | 333 | # ============================================================================= | COMMENT |
| MEDIUM | examples/formulas/gh-issue-to-pr.formula.toml | 55 | # ── Variables ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/formulas/gh-issue-to-pr.formula.toml | 92 | # ── Steps ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/formulas/gh-pr-review.formula.toml | 58 | # ── Variables ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | examples/formulas/gh-pr-review.formula.toml | 80 | # ── Steps ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/bump-version.sh | 2 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/bump-version.sh | 4 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/bump-version.sh | 26 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/update-nix-vendorhash.sh | 4 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/update-nix-vendorhash.sh | 6 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/update-nix-vendorhash.sh | 23 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/cross-version-smoke-test.sh | 4 | # ============================================================================= | COMMENT |
| 85 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/bd/gate_discover.go | 116 | // Step 3: Match runs to gates | COMMENT |
| LOW | cmd/bd/gate_discover.go | 138 | // Step 4: Update gate with discovered run ID | COMMENT |
| LOW | cmd/bd/init_team.go | 26 | // Step 1: Check if we're in a git repository | COMMENT |
| LOW | cmd/bd/init_team.go | 45 | // Step 2: Check for protected main branch | COMMENT |
| LOW | cmd/bd/init_team.go | 108 | // Step 3: Configure team settings | COMMENT |
| LOW | cmd/bd/init_team.go | 123 | // Step 4: Summary | COMMENT |
| LOW | cmd/bd/init_contributor.go | 52 | // Step 1: Detect fork relationship | COMMENT |
| LOW | cmd/bd/init_contributor.go | 82 | // Step 2: Check push access to origin | COMMENT |
| LOW | cmd/bd/init_contributor.go | 110 | // Step 3: Configure planning repository | COMMENT |
| LOW | cmd/bd/init_contributor.go | 205 | // Step 4: Configure contributor routing | COMMENT |
| LOW | cmd/bd/init_contributor.go | 248 | // Step 5: Summary | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 134 | // Step 1: Validate repositories exist | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 139 | // Step 2: Build initial candidate set C using filters | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 155 | // Step 3: Expand set to M (migration set) based on --include | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 161 | // Step 4: Check for orphaned dependencies | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 171 | // Step 5: Build migration plan | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 174 | // Step 6: Display plan | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 179 | // Step 7: Execute migration if not dry-run | COMMENT |
| LOW | cmd/bd/import_prefix_test.go | 31 | // Step 0: Build the bd binary | COMMENT |
| LOW | cmd/bd/import_prefix_test.go | 44 | // Step 1: Setup a database with a specific prefix | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 61 | // Step 2: A JSONL record minted by a DIFFERENT tracker (foreign prefix) | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 68 | // Step 3: Import must succeed with no special flag | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 74 | // Step 4: Verify the issue landed under its original id | COMMENT |
| LOW | cmd/bd/mol_ready_gated.go | 126 | // Step 1: Find all closed gate beads | COMMENT |
| LOW⚡ | cmd/bd/mol_ready_gated.go | 143 | // Step 2: Get ready work to check which steps are ready | COMMENT |
| LOW⚡ | cmd/bd/mol_ready_gated.go | 153 | // Step 3: Get hooked molecules to filter out | COMMENT |
| LOW | cmd/bd/mol_ready_gated.go | 177 | // Step 4: For each closed gate, collect all dependents that are ready, | COMMENT |
| LOW | cmd/bd/main_test.go | 31 | // Step 1: Create an open issue in the database | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 48 | // Step 2: Update via UpdateIssue with closed status (closed_at managed automatically) | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 57 | // Step 3: Verify the issue is now closed with correct closed_at | COMMENT |
| LOW | cmd/bd/main_test.go | 82 | // Step 1: Create a closed issue in the database | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 100 | // Step 2: Update via UpdateIssue with open status (closed_at managed automatically) | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 109 | // Step 3: Verify the issue is now open with null closed_at | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2122 | // Step 1: Check should detect outdated | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2128 | // Step 2: Fix should update the redirect target | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2133 | // Step 3: Re-check should pass | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2139 | // Step 4: No .gitignore in redirect-only dir (the original bug) | COMMENT |
| LOW | engdocs/RULES_AUDIT_DESIGN.md | 123 | ### Step 1: Parse Rules | COMMENT |
| LOW | engdocs/RULES_AUDIT_DESIGN.md | 134 | ### Step 2: Keyword Extraction | COMMENT |
| LOW | engdocs/RULES_AUDIT_DESIGN.md | 145 | ### Step 3: Overlap Scoring (Merge Candidates) | COMMENT |
| LOW | engdocs/RULES_AUDIT_DESIGN.md | 160 | ### Step 4: Contradiction Detection | COMMENT |
| LOW | engdocs/RULES_AUDIT_DESIGN.md | 183 | ### Step 5: Compaction (for `bd rules compact`) | COMMENT |
| LOW | tests/regression/scenarios_test.go | 156 | // Step 1: Create rich data in baseline | COMMENT |
| LOW⚡ | tests/regression/scenarios_test.go | 170 | // Step 2: Export from baseline | COMMENT |
| LOW⚡ | tests/regression/scenarios_test.go | 178 | // Step 3: Import into candidate | COMMENT |
| LOW⚡ | tests/regression/scenarios_test.go | 186 | // Step 4: Export from candidate and compare | COMMENT |
| LOW | tests/regression/regression_test.go | 406 | // Step 1: get all issue IDs via bd list (--all includes closed issues, | COMMENT |
| LOW | tests/regression/regression_test.go | 431 | // Step 2: for each ID, run bd show --json and emit one JSONL line | COMMENT |
| LOW | internal/storage/issueops/molecule.go | 35 | // Step 1: Get child issue IDs from dependencies table. | COMMENT |
| LOW | internal/storage/issueops/molecule.go | 57 | // Step 2: Batch-fetch status for all children. | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 14 | // Step 1: Get open epic IDs (single-table scan) | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 38 | // Step 2: Get parent-child dependencies from both tables (bd-w2w) | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 70 | // Step 3: Batch-fetch statuses for all child issues across all epics | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 108 | // Step 4: Batch-fetch all epic issues | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 124 | // Step 5: Build results from cached data | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 215 | // Step 1: Fetch | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 222 | // Step 2: Get commit before merge for change detection | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 225 | // Step 3: Merge peer's branch | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 233 | // Step 4: Handle conflicts | COMMENT |
| LOW | internal/storage/embeddeddolt/federation.go | 270 | // Step 5: Push | COMMENT |
| 40 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …s/beads/skills/beads/resources/INTEGRATION_PATTERNS.md | 193 | def test_refresh_token_returns_new_access_token(): | CODE |
| LOW | npm-package/test/integration.test.js | 263 | async function testClaudeCodeWebSimulation(npmPrefix) { | CODE |
| LOW | integrations/beads-mcp/tests/test_lifecycle.py | 9 | def test_cleanup_handlers_registered(): | CODE |
| LOW | integrations/beads-mcp/tests/test_lifecycle.py | 27 | def test_cleanup_function_safe_to_call_multiple_times(): | CODE |
| LOW | integrations/beads-mcp/tests/test_lifecycle.py | 40 | def test_signal_handler_calls_cleanup(): | CODE |
| LOW | integrations/beads-mcp/tests/test_lifecycle.py | 55 | def test_cleanup_logs_lifecycle_events(caplog): | CODE |
| LOW | integrations/beads-mcp/tests/test_compaction_config.py | 29 | def test_default_compaction_threshold(self): | CODE |
| LOW | integrations/beads-mcp/tests/test_compaction_config.py | 59 | def test_get_compaction_settings_with_defaults(self): | STRING |
| LOW | integrations/beads-mcp/tests/test_compaction_config.py | 80 | def test_get_compaction_settings_with_custom_values(self): | CODE |
| LOW | integrations/beads-mcp/tests/test_compaction_config.py | 98 | def test_get_compaction_settings_validates_threshold_minimum(self): | CODE |
| LOW | integrations/beads-mcp/tests/test_compaction_config.py | 110 | def test_get_compaction_settings_validates_preview_minimum(self): | CODE |
| LOW | integrations/beads-mcp/tests/test_compaction_config.py | 124 | def test_get_compaction_settings_validates_preview_not_greater_than_threshold(self): | CODE |
| LOW | integrations/beads-mcp/tests/test_compaction_config.py | 140 | def test_get_compaction_settings_with_edge_case_values(self): | CODE |
| LOW | integrations/beads-mcp/tests/test_compaction_config.py | 156 | def test_get_compaction_settings_with_large_values(self): | CODE |
| LOW | integrations/beads-mcp/tests/test_compaction_config.py | 176 | def test_environment_variables_documented_in_code(self): | CODE |
| LOW | integrations/beads-mcp/tests/test_compaction_config.py | 184 | def test_environment_variables_documented_in_context_engineering_md(self): | CODE |
| LOW | integrations/beads-mcp/tests/test_subprocess_stdin.py | 37 | async def test_run_command_uses_devnull_stdin(self, bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_subprocess_stdin.py | 50 | async def test_check_version_uses_devnull_stdin(self, bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_subprocess_stdin.py | 64 | async def test_add_dependency_uses_devnull_stdin(self, bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_subprocess_stdin.py | 79 | async def test_quickstart_uses_devnull_stdin(self, bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_subprocess_stdin.py | 93 | async def test_init_uses_devnull_stdin(self, bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_subprocess_stdin.py | 110 | def test_resolve_workspace_root_uses_devnull_stdin(self): | CODE |
| LOW | integrations/beads-mcp/tests/test_subprocess_stdin.py | 129 | def test_tools_resolve_workspace_root_uses_devnull_stdin(self): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 90 | async def test_concurrent_calls_different_projects(self, temp_projects, mock_client_factory): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 128 | async def test_concurrent_calls_same_project_reuse_client(self, temp_projects, mock_client_factory): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 161 | async def test_pool_lock_prevents_race_conditions(self, temp_projects, mock_client_factory): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 202 | def test_canonicalize_with_beads_dir(self, temp_projects): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 210 | def test_canonicalize_symlink_deduplication(self): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 227 | def test_canonicalize_submodule_with_beads(self): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 244 | def test_canonicalize_no_beads_uses_git_toplevel(self): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 261 | def test_resolve_workspace_root_git_repo(self): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 275 | def test_resolve_workspace_root_shared_worktree_prefers_main_repo_with_beads(self): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 292 | def test_resolve_workspace_root_subdir_relative_common_dir_prefers_main_repo(self): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 312 | def test_resolve_workspace_root_not_git(self): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 332 | async def test_no_cross_project_data_leakage(self, temp_projects, mock_client_factory): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 369 | async def test_stress_test_many_parallel_calls(self, temp_projects, mock_client_factory): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 406 | async def test_contextvar_isolated_per_request(self, temp_projects): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 409 | async def get_current_workspace_val() -> str | None: | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 435 | async def test_contextvar_reset_after_call(self, temp_projects): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 447 | async def test_contextvar_fallback_to_env(self, temp_projects): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 475 | async def test_no_workspace_raises_error(self): | CODE |
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 494 | def test_canonicalize_path_cached(self, temp_projects): | CODE |
| LOW⚡ | integrations/beads-mcp/tests/test_bd_client.py | 779 | async def test_validate_routes_to_doctor(bd_client): | CODE |
| LOW⚡ | integrations/beads-mcp/tests/test_bd_client.py | 787 | async def test_validate_fix_all_adds_fix_yes(bd_client): | CODE |
| LOW⚡ | integrations/beads-mcp/tests/test_bd_client.py | 795 | async def test_validate_ignores_checks_arg(bd_client): | CODE |
| LOW⚡ | integrations/beads-mcp/tests/test_bd_client.py | 803 | async def test_detect_pollution_routes_to_doctor(bd_client): | CODE |
| LOW⚡ | integrations/beads-mcp/tests/test_bd_client.py | 811 | async def test_detect_pollution_clean_adds_flags(bd_client): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 41 | async def test_bd_client_initialization(): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 49 | async def test_bd_client_without_db(): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 69 | async def test_run_command_not_found(bd_client): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 92 | async def test_run_command_invalid_json(bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 104 | async def test_run_command_empty_output(bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 173 | async def test_ready_with_issue_type(bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 201 | async def test_ready_invalid_response(bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 237 | async def test_list_issues_invalid_response(bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 272 | async def test_show_invalid_response(bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 313 | async def test_create_with_optional_fields(bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 349 | async def test_create_invalid_response(bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 384 | async def test_update_with_optional_fields(bd_client, mock_process): | CODE |
| LOW | integrations/beads-mcp/tests/test_bd_client.py | 417 | async def test_update_invalid_response(bd_client, mock_process): | CODE |
| 97 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/bd/gate_discover.go | 116 | // Step 3: Match runs to gates | COMMENT |
| LOW | cmd/bd/gate_discover.go | 138 | // Step 4: Update gate with discovered run ID | COMMENT |
| LOW | cmd/bd/init_team.go | 26 | // Step 1: Check if we're in a git repository | COMMENT |
| LOW | cmd/bd/init_team.go | 45 | // Step 2: Check for protected main branch | COMMENT |
| LOW | cmd/bd/init_team.go | 108 | // Step 3: Configure team settings | COMMENT |
| LOW | cmd/bd/init_team.go | 123 | // Step 4: Summary | COMMENT |
| LOW | cmd/bd/init_contributor.go | 52 | // Step 1: Detect fork relationship | COMMENT |
| LOW | cmd/bd/init_contributor.go | 82 | // Step 2: Check push access to origin | COMMENT |
| LOW | cmd/bd/init_contributor.go | 110 | // Step 3: Configure planning repository | COMMENT |
| LOW | cmd/bd/init_contributor.go | 205 | // Step 4: Configure contributor routing | COMMENT |
| LOW | cmd/bd/init_contributor.go | 248 | // Step 5: Summary | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 134 | // Step 1: Validate repositories exist | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 139 | // Step 2: Build initial candidate set C using filters | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 155 | // Step 3: Expand set to M (migration set) based on --include | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 161 | // Step 4: Check for orphaned dependencies | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 171 | // Step 5: Build migration plan | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 174 | // Step 6: Display plan | COMMENT |
| LOW⚡ | cmd/bd/migrate_issues.go | 179 | // Step 7: Execute migration if not dry-run | COMMENT |
| LOW | cmd/bd/import_prefix_test.go | 31 | // Step 0: Build the bd binary | COMMENT |
| LOW | cmd/bd/import_prefix_test.go | 44 | // Step 1: Setup a database with a specific prefix | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 61 | // Step 2: A JSONL record minted by a DIFFERENT tracker (foreign prefix) | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 68 | // Step 3: Import must succeed with no special flag | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 74 | // Step 4: Verify the issue landed under its original id | COMMENT |
| LOW | cmd/bd/mol_ready_gated.go | 126 | // Step 1: Find all closed gate beads | COMMENT |
| LOW⚡ | cmd/bd/mol_ready_gated.go | 143 | // Step 2: Get ready work to check which steps are ready | COMMENT |
| LOW⚡ | cmd/bd/mol_ready_gated.go | 153 | // Step 3: Get hooked molecules to filter out | COMMENT |
| LOW | cmd/bd/mol_ready_gated.go | 177 | // Step 4: For each closed gate, collect all dependents that are ready, | COMMENT |
| LOW | cmd/bd/main_test.go | 31 | // Step 1: Create an open issue in the database | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 48 | // Step 2: Update via UpdateIssue with closed status (closed_at managed automatically) | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 57 | // Step 3: Verify the issue is now closed with correct closed_at | COMMENT |
| LOW | cmd/bd/main_test.go | 82 | // Step 1: Create a closed issue in the database | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 100 | // Step 2: Update via UpdateIssue with open status (closed_at managed automatically) | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 109 | // Step 3: Verify the issue is now open with null closed_at | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2122 | // Step 1: Check should detect outdated | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2128 | // Step 2: Fix should update the redirect target | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2133 | // Step 3: Re-check should pass | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2139 | // Step 4: No .gitignore in redirect-only dir (the original bug) | COMMENT |
| LOW | cmd/bd/doctor/integrity.go | 466 | // So we need to check if the length variation is natural (1→2→3 digits) | COMMENT |
| LOW | tests/regression/scenarios_test.go | 156 | // Step 1: Create rich data in baseline | COMMENT |
| LOW⚡ | tests/regression/scenarios_test.go | 170 | // Step 2: Export from baseline | COMMENT |
| LOW⚡ | tests/regression/scenarios_test.go | 178 | // Step 3: Import into candidate | COMMENT |
| LOW⚡ | tests/regression/scenarios_test.go | 186 | // Step 4: Export from candidate and compare | COMMENT |
| LOW | tests/regression/regression_test.go | 406 | // Step 1: get all issue IDs via bd list (--all includes closed issues, | COMMENT |
| LOW | tests/regression/regression_test.go | 431 | // Step 2: for each ID, run bd show --json and emit one JSONL line | COMMENT |
| LOW | internal/storage/issueops/molecule.go | 35 | // Step 1: Get child issue IDs from dependencies table. | COMMENT |
| LOW | internal/storage/issueops/molecule.go | 57 | // Step 2: Batch-fetch status for all children. | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 14 | // Step 1: Get open epic IDs (single-table scan) | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 38 | // Step 2: Get parent-child dependencies from both tables (bd-w2w) | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 70 | // Step 3: Batch-fetch statuses for all child issues across all epics | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 108 | // Step 4: Batch-fetch all epic issues | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 124 | // Step 5: Build results from cached data | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 215 | // Step 1: Fetch | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 222 | // Step 2: Get commit before merge for change detection | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 225 | // Step 3: Merge peer's branch | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 233 | // Step 4: Handle conflicts | COMMENT |
| LOW | internal/storage/embeddeddolt/federation.go | 270 | // Step 5: Push | COMMENT |
| LOW | internal/storage/dolt/git_remote_test.go | 912 | // Step 1: Source creates data and pushes | COMMENT |
| LOW | internal/storage/dolt/git_remote_test.go | 933 | // Step 2: Bootstrap clone from git remote | COMMENT |
| LOW | internal/storage/dolt/git_remote_test.go | 975 | // Step 3: Clone adds data and pushes back | COMMENT |
| LOW | internal/storage/dolt/git_remote_test.go | 997 | // Step 4: Re-open source and pull — verify bidirectional sync | COMMENT |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cmd/bd/doctor/integrity.go | 100 | // Detect ID format using robust heuristic | COMMENT |
| MEDIUM | cmd/bd/doctor/integrity.go | 431 | // This is more robust than checking a single ID's format, since base36 hash IDs can be all-numeric. | COMMENT |
| MEDIUM⚡ | tests/oracle-a/run-oracle-a.sh | 12 | # The differential is driven by the Rust conformance harness under harness/ | COMMENT |
| MEDIUM⚡ | tests/oracle-a/run-oracle-a.sh | 13 | # (see harness/PROVENANCE.md); the harness is pointed at two Go bd binaries and | COMMENT |
| MEDIUM⚡ | tests/oracle-a/run-oracle-a.sh | 18 | # scenarios, `harness/scenarios/enumerated.json`) — the deep tier (~10-15 min). | COMMENT |
| MEDIUM | tests/oracle-a/run-oracle-a.sh | 152 | # --- 3. build the conformance harness ------------------------------------------------ | COMMENT |
| MEDIUM | tests/oracle-a/run-oracle-a.sh | 224 | # The harness writes failures to a fixed /tmp path that concurrent runs on a | COMMENT |
| MEDIUM | tests/oracle-a/harness/Cargo.toml | 7 | # Standalone conformance harness for Oracle A — the bd refactor-safety | COMMENT |
| MEDIUM | internal/doltserver/doltserver_test.go | 456 | // directly. Makes the contract robust to wording changes in the | COMMENT |
| MEDIUM | internal/linear/synclock.go | 17 | // It combines a PID-annotated lock file with flock for robust mutual exclusion. | COMMENT |
| MEDIUM | internal/utils/id_parser.go | 110 | // Use the hash part as a search query to leverage SQL-level filtering | COMMENT |
| MEDIUM | internal/beads/beads.go | 1172 | // Canonicalize the boundary so the `dir == gitRoot` comparison is robust | COMMENT |
| MEDIUM | integrations/beads-mcp/src/beads_mcp/tools.py | 764 | """Run comprehensive database health checks. | STRING |
| MEDIUM | examples/formulas/gh-pr-review.formula.toml | 86 | description = """Fetch comprehensive PR metadata needed for classification and review. | CODE |
| MEDIUM | examples/formulas/primitives/branch-fanin.formula.toml | 5 | # completes. The smoke harness asserts `deploy` blocks on each of `test`, | COMMENT |
| MEDIUM | examples/formulas/primitives/children-epic.formula.toml | 5 | # blocking dependencies. The smoke harness asserts the parent epic + 2 | COMMENT |
| MEDIUM | examples/formulas/primitives/loop-range.formula.toml | 5 | # titled "Move 1", "Move 2", "Move 3" — the smoke harness asserts those | COMMENT |
| MEDIUM | examples/formulas/primitives/loop-count.formula.toml | 6 | # `process.iter3.work`. The smoke harness asserts those three IDs exist. | COMMENT |
| MEDIUM | examples/formulas/primitives/condition.formula.toml | 7 | # (3 child issues). The smoke harness exercises both branches. | COMMENT |
| MEDIUM | examples/formulas/primitives/gate-timer.formula.toml | 6 | # The smoke harness asserts the gate issue exists with await_type=timer | COMMENT |
| MEDIUM | scripts/run-oracle-p.sh | 26 | # supplies the backend flags the backend-agnostic harness cannot know, plus a | COMMENT |
| MEDIUM | scripts/upgrade-smoke-test.sh | 464 | # data-copy is still covered by the migration-test harness; skip gracefully. | COMMENT |
| MEDIUM⚡ | scripts/migration-test/run.sh | 449 | # Self-test: candidate as both source and target (validates the harness itself) | COMMENT |
| MEDIUM | scripts/migration-test/run.sh | 25 | # ./scripts/migration-test/run.sh --self-test # candidate → candidate (harness validation) | COMMENT |
| LOW⚡ | scripts/migration-test/run.sh | 137 | # First try: just use candidate directly (auto-detect + migrate) | COMMENT |
| MEDIUM | scripts/migration-test/recipes/sqlite_to_current.sh | 143 | # direct upgrade attempt in the harness. | COMMENT |
| MEDIUM | scripts/migration-test/lib/workspace.sh | 7 | # The migration harness runs in isolated temp-dir workspaces, so there is no | COMMENT |
| MEDIUM | .github/workflows/pr.yml | 465 | # Needs the Dolt sql-server image (the protocol harness spins a container). | COMMENT |
| MEDIUM | .github/workflows/main.yml | 902 | # Linux/macOS run comprehensive tests; Windows just verifies binary works | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/bd/bootstrap_embedded_test.go | 118 | cmd = exec.Command("git", "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_embedded_test.go | 142 | cmd = exec.Command("git", "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_embedded_test.go | 184 | gitCmd = exec.Command("git", "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/shared_server_integration_test.go | 581 | {"git", "config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/show_embedded_test.go | 313 | bdUpdate(t, bd, dir, issue.ID, "--status", "in_progress", "--assignee", "test@test.com") | CODE |
| LOW | cmd/bd/init_test.go | 1551 | runGit(mainRepo, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/init_test.go | 2546 | _ = exec.Command("git", "-C", secondDir, "config", "user.email", "test@test.com").Run() | CODE |
| LOW | cmd/bd/linear_test.go | 613 | Name: "John Doe", | CODE |
| LOW | cmd/bd/git_repo_template_test.go | 45 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/init_safety_test.go | 387 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/init_safety_test.go | 449 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/init_safety_test.go | 508 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/init_hooks_test.go | 861 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/init_hooks_test.go | 1138 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/init_hooks_test.go | 1244 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/init_embedded_test.go | 71 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/init_embedded_test.go | 1283 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 291 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 417 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 736 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 810 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 892 | runGitForBootstrapTest(t, rigDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 1025 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 1242 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/dolt_remote_origin_guard_test.go | 254 | runGitCommand(t, dir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/sync_git_test.go | 141 | runGitForSyncTest(t, repoDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/doctor/git_hygiene_test.go | 45 | runGit(t, dir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/doctor/git_hygiene_test.go | 278 | runGit(t, clone, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/doctor/federation_test.go | 521 | runDoctorTestCmd(t, doltDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | cmd/bd/doctor/federation_test.go | 522 | runDoctorTestCmd(t, cliDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | cmd/bd/doctor/git_repo_template_test.go | 42 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/doctor/dolt_e2e_test.go | 240 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/doctor/fix/git_repo_template_test.go | 42 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/doctor/fix/metadata_test.go | 206 | {"git", "config", "user.email", "test@test.com"}, | CODE |
| LOW | internal/ado/tracker_test.go | 472 | "displayName": "Jane Doe", | CODE |
| LOW | internal/ado/tracker_test.go | 504 | if ti.Assignee != "Jane Doe" { | CODE |
| LOW | internal/ado/tracker_test.go | 505 | t.Errorf("Assignee = %q, want %q", ti.Assignee, "Jane Doe") | CODE |
| LOW | internal/ado/tracker_test.go | 564 | "displayName": "Jane Doe", | CODE |
| LOW | internal/ado/tracker_test.go | 567 | wantAssignee: "Jane Doe", | CODE |
| LOW | internal/gitlab/mapping_test.go | 245 | Name: "John Doe", | CODE |
| LOW | internal/gitlab/types_test.go | 30 | "name": "John Doe", | CODE |
| LOW | internal/linear/mapping_test.go | 435 | Assignee: &User{Name: "John Doe", Email: "john@example.com"}, | CODE |
| LOW | internal/linear/mapping_test.go | 551 | Assignee: &User{Name: "Jane Doe", Email: "jane@example.com"}, | CODE |
| LOW | internal/remotecache/cache_test.go | 57 | cmd := exec.Command("dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1152 | runCmd(t, serverDataDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1158 | runCmd(t, testdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1190 | runCmd(t, clientTestdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1211 | CommitterEmail: "test@test.com", | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1252 | runCmd(t, serverDataDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1258 | runCmd(t, testdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1301 | runCmd(t, clientTestdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1321 | CommitterEmail: "test@test.com", | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1403 | runCmd(t, serverDataDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1409 | runCmd(t, testdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1444 | runCmd(t, clientTestdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1467 | CommitterEmail: "test@test.com", | CODE |
| LOW | internal/storage/dolt/remote_migrate_gate_test.go | 126 | cmd := exec.Command("dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/dolt_benchmark_test.go | 1217 | bigText := strings.Repeat("lorem ipsum dolor sit amet consectetur ", 24) // ~936 B | CODE |
| LOW | internal/storage/dolt/dolt_benchmark_test.go | 1217 | bigText := strings.Repeat("lorem ipsum dolor sit amet consectetur ", 24) // ~936 B | CODE |
| LOW | internal/storage/dolt/git_remote_shared_server_test.go | 53 | runCmd(t, sharedDoltDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cmd/bd/branch.go | 22 | bd branch feature-xyz # Create a new branch named feature-xyz`, | CODE |
| MEDIUM | cmd/bd/setup/aider.go | 12 | # This file is marked read-only and cached for efficiency | COMMENT |
| MEDIUM | …grations/beads-mcp/tests/test_workspace_auto_detect.py | 181 | # Create main workspace with actual database | COMMENT |
| MEDIUM | …grations/beads-mcp/tests/test_workspace_auto_detect.py | 241 | # Create main workspace WITHOUT database | COMMENT |
| MEDIUM⚡ | integrations/beads-mcp/tests/test_config.py | 26 | # Create a fake bd executable | COMMENT |
| MEDIUM⚡ | integrations/beads-mcp/tests/test_config.py | 53 | # Create a non-executable file | COMMENT |
| MEDIUM | …rations/beads-mcp/tests/test_mcp_server_integration.py | 344 | # Create a ready issue (no dependencies) | COMMENT |
| MEDIUM | …rations/beads-mcp/tests/test_mcp_server_integration.py | 665 | # Create a fresh temp directory without any beads database | COMMENT |
| MEDIUM | …rations/beads-mcp/tests/test_mcp_server_integration.py | 1027 | # Create a ready issue | COMMENT |
| MEDIUM | …grations/beads-mcp/tests/test_worktree_separate_dbs.py | 91 | # Create a worktree AFTER initializing beads in main | COMMENT |
| MEDIUM | scripts/test-git-remote.sh | 74 | # Create a local git repo as the remote (needs initial commit for dolt push) | COMMENT |
| MEDIUM | scripts/release.sh | 197 | # Create the release molecule (wisp) | COMMENT |
| MEDIUM | scripts/release.sh | 201 | # Create the wisp and capture the output | COMMENT |
| MEDIUM | scripts/upgrade-smoke-test.sh | 196 | # Create an isolated workspace with git init | COMMENT |
| MEDIUM | scripts/upgrade-smoke-test.sh | 215 | # Create an issue with the previous binary, tolerating missing --silent flag. | COMMENT |
| MEDIUM | scripts/migration-test/lib/workspace.sh | 37 | # Create an issue, returning just the ID on stdout. | COMMENT |
| MEDIUM | scripts/migration-test/lib/features.sh | 38 | # Create the canonical dataset for a given version. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | cmd/bd/linear.go | 34 | bd config set linear.api_key "YOUR_API_KEY" | CODE |
| HIGH | cmd/bd/linear.go | 893 | fmt.Println(" bd config set linear.api_key \"YOUR_API_KEY\"") | CODE |
| HIGH | cmd/bd/linear.go | 898 | fmt.Println(" export LINEAR_API_KEY=\"YOUR_API_KEY\"") | CODE |
| HIGH | cmd/bd/linear.go | 1020 | " API key (devs): export LINEAR_API_KEY=... or bd config set linear.api_key \"YOUR_API_KEY\"") | CODE |
| HIGH | internal/linear/tracker.go | 59 | " API key (devs): export LINEAR_API_KEY=... or bd config set linear.api_key \"YOUR_API_KEY\"") | CODE |
| HIGH | docs/CLI_REFERENCE.md | 5157 | bd config set linear.api_key "YOUR_API_KEY" | CODE |
| HIGH | docs/cli-reference/linear.md | 13 | bd config set linear.api_key "YOUR_API_KEY" | CODE |
| HIGH | scripts/generate-newsletter_README.md | 13 | export ANTHROPIC_API_KEY="your-api-key" | CODE |
| HIGH | scripts/generate-newsletter_README.md | 16 | export OPENAI_API_KEY="your-api-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/bd/merge_slot.go | 34 | bd merge-slot check # Check if slot is available | CODE |
| LOW | cmd/bd/init.go | 496 | fmt.Fprintf(os.Stderr, " bd dolt status # Check if this is a server config issue\n\n") | CODE |
| LOW | integrations/beads-mcp/tests/conftest.py | 61 | # Check if test is using bd_client fixture | COMMENT |
| LOW⚡ | integrations/beads-mcp/tests/test_config.py | 36 | # Set BEADS_PATH to just "bd" (command name, not path) | COMMENT |
| LOW | integrations/beads-mcp/tests/test_config.py | 69 | # Set BEADS_DB to non-existent file | COMMENT |
| LOW | …grations/beads-mcp/tests/test_worktree_separate_dbs.py | 293 | # Set context to worktree | COMMENT |
| LOW | examples/bash-agent/agent.sh | 39 | # Check if bd is installed | COMMENT |
| LOW | examples/bash-agent/agent.sh | 46 | # Check if we're in a beads-initialized directory | COMMENT |
| LOW | examples/startup-hooks/bd-version-check.sh | 50 | # Check if bd is installed | COMMENT |
| LOW | examples/startup-hooks/bd-version-check.sh | 55 | # Check if jq is installed (required for JSON manipulation) | COMMENT |
| LOW | scripts/generate-newsletter.py | 240 | # Read the file to extract cobra.Command definitions | COMMENT |
| LOW | scripts/generate-newsletter.py | 570 | # Check if we should use last week or since last release | COMMENT |
| LOW | scripts/install.sh | 186 | # Check if codesign is available | COMMENT |
| LOW | scripts/install.sh | 402 | # Check if install_dir is in PATH | COMMENT |
| LOW | scripts/install.sh | 416 | # Check if Go is installed and meets minimum version | COMMENT |
| LOW | scripts/install.sh | 426 | # Check if Go version is 1.24 or later | COMMENT |
| LOW | scripts/install.sh | 513 | # Check if GOPATH/bin (or GOBIN) is in PATH | COMMENT |
| LOW | scripts/install.sh | 573 | # Check if install_dir is in PATH | COMMENT |
| LOW | scripts/update-nix-vendorhash.sh | 48 | # Check if we're in the repo root | COMMENT |
| LOW | scripts/update-nix-vendorhash.sh | 61 | # Check if Docker is available | COMMENT |
| LOW | scripts/update-nix-vendorhash.sh | 158 | # Check if hash is actually the same | COMMENT |
| LOW⚡ | scripts/upgrade-smoke-test.sh | 323 | # Check if old binary was able to initialize .beads/. | COMMENT |
| LOW | scripts/migration-test/recipes/fix_dash_prefix.sh | 39 | # Check if prefix has dashes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | integrations/beads-mcp/src/beads_mcp/config.py | 45 | Validate BEADS_PATH points to an executable bd binary. Args: v: Path to bd executable (can be comma | STRING |
| HIGH | integrations/beads-mcp/src/beads_mcp/config.py | 83 | Validate BEADS_DIR points to an existing .beads directory. Args: v: Path to .beads directory or Non | STRING |
| HIGH | integrations/beads-mcp/src/beads_mcp/config.py | 112 | Validate BEADS_DB points to an existing database file. Args: v: Path to database file or None | STRING |
| HIGH | integrations/beads-mcp/src/beads_mcp/bd_client.py | 301 | Run bd command and parse JSON output. Args: *args: Command arguments to pass to bd cwd: | STRING |
| HIGH | integrations/beads-mcp/src/beads_mcp/bd_client.py | 495 | Show issue details. Args: params: Issue ID to show Returns: Issue details | STRING |
| HIGH | integrations/beads-mcp/src/beads_mcp/tools.py | 268 | Attempt to reconnect with exponential backoff. Args: canonical: Canonical workspace path max_retrie | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/bd/tips.go | 196 | // Example usage: | COMMENT |
| LOW⚡ | tests/oracle-a/run-oracle-a.sh | 20 | # Usage: | COMMENT |
| LOW | examples/formulas/gh-issue-to-pr.formula.toml | 20 | # Usage: | COMMENT |
| LOW | examples/formulas/gh-pr-review.formula.toml | 27 | # Usage: | COMMENT |
| LOW | scripts/update-nix-vendorhash.sh | 20 | # Usage: | COMMENT |
| LOW | scripts/sign-windows.sh | 14 | # Usage: | COMMENT |
| LOW | scripts/cross-version-smoke-test.sh | 17 | # Usage: | COMMENT |
| LOW | scripts/test-git-remote.sh | 7 | # Usage: | COMMENT |
| LOW | scripts/migrate-sqlite-to-current.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/migrate-jsonl-to-dolt.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/gen-winres.sh | 8 | # Usage: | COMMENT |
| LOW⚡ | scripts/upgrade-smoke-test.sh | 15 | # Usage: | COMMENT |
| LOW | scripts/ci/go-test-shard-packages.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/ci/go-test-shard-names.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/migration-test/run.sh | 21 | # Usage: | COMMENT |
| LOW | .github/scripts/docs-render-check.sh | 11 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 3318 | - **Auto_pull config** (GH#707) - Periodic remote sync in event-driven mode | CODE |
| MEDIUM | CHANGELOG.md | 3430 | - **MCP output control parameters** (PR#667) - Reduce context window usage by up to 97% | CODE |
| MEDIUM | cmd/bd/init_test.go | 231 | // GH#3490: `bd init --init-if-missing` makes init idempotent for scaffold | COMMENT |
| MEDIUM | cmd/bd/init_test.go | 231 | // GH#3490: `bd init --init-if-missing` makes init idempotent for scaffold | COMMENT |
| MEDIUM | docs/multi-agent/multi-repo-migration.md | 481 | - **Multi-Repo Internals:** See [ROUTING.md#multi-repo-hydration](/multi-agent/routing#multi-repo-hydration) | CODE |
| MEDIUM | integrations/beads-mcp/README.md | 3 | MCP server for [beads](https://github.com/gastownhall/beads) issue tracker and agentic memory system. | CODE |
| MEDIUM⚡ | integrations/beads-mcp/src/beads_mcp/models.py | 38 | # These lightweight models reduce context window usage by ~80% for list operations. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integrations/beads-mcp/src/beads_mcp/server.py | 874 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/server.py | 956 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/server.py | 1086 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/server.py | 1154 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/bd_client.py | 961 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/tools.py | 375 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/tools.py | 410 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/tools.py | 454 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/tools.py | 498 | CODE | |
| LOW | examples/python-agent/agent.py | 46 | CODE | |
| LOW | examples/python-agent/agent.py | 69 | CODE | |
| LOW | scripts/generate-newsletter.py | 641 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integrations/beads-mcp/src/beads_mcp/server.py | 286 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/server.py | 636 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/server.py | 1385 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/tools.py | 146 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/workspace.py | 13 | CODE | |
| LOW | scripts/generate-newsletter.py | 156 | CODE | |
| LOW | scripts/generate-newsletter.py | 205 | CODE | |
| LOW | scripts/generate-newsletter.py | 302 | CODE | |
| LOW | scripts/generate-newsletter.py | 337 | CODE | |
| LOW | scripts/generate-newsletter.py | 373 | CODE | |
| LOW | scripts/generate-newsletter.py | 641 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integrations/beads-mcp/src/beads_mcp/server.py | 304 | except Exception: | CODE |
| LOW | integrations/beads-mcp/src/beads_mcp/config.py | 152 | except Exception as e: | CODE |
| LOW | integrations/beads-mcp/src/beads_mcp/tools.py | 141 | except Exception as e: | CODE |
| LOW | integrations/beads-mcp/src/beads_mcp/tools.py | 210 | except Exception as e: | CODE |
| LOW | integrations/beads-mcp/src/beads_mcp/tools.py | 262 | except Exception: | CODE |
| LOW | integrations/beads-mcp/src/beads_mcp/tools.py | 289 | except Exception: | CODE |
| LOW | integrations/beads-mcp/src/beads_mcp/workspace.py | 40 | except Exception as exc: | CODE |
| MEDIUM | examples/python-agent/agent.py | 141 | print(f"Error running bd: {e}", file=sys.stderr) | CODE |
| LOW | scripts/generate-newsletter.py | 759 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | cmd/bd/mol_squash.go | 216 | // This enables agents to provide AI-generated summaries while keeping bd as a pure tool. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ations/beads-mcp/tests/test_multi_project_switching.py | 10 | CODE | |
| LOW | integrations/beads-mcp/src/beads_mcp/workspace.py | 3 | CODE | |
| LOW | scripts/generate-newsletter.py | 34 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integrations/beads-mcp/src/beads_mcp/server.py | 69 | logger = logging.getLogger(__name__) | CODE |
| LOW | integrations/beads-mcp/src/beads_mcp/tools.py | 42 | logger = logging.getLogger(__name__) | CODE |
| LOW | integrations/beads-mcp/src/beads_mcp/workspace.py | 10 | logger = logging.getLogger(__name__) | CODE |