Beads - A memory upgrade for your coding agent
This report presents the forensic synthetic code analysis of gastownhall/beads, a Go project with 26,684 GitHub stars. SynthScan v2.0 examined 966,520 lines of code across 3445 source files, recording 3358 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 4.0 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 3358 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 | RELEASING.md | 561 | # same as a stable release. Date the CHANGELOG section. | COMMENT |
| LOW | .golangci.yml | 21 | rules: | COMMENT |
| LOW | .golangci.yml | 81 | # supplies a ConfigSource" is the Reader slice's acceptance criterion, | COMMENT |
| LOW | .golangci.yml | 101 | # does nothing about a handler taking uw.IssueUseCase() and calling the | COMMENT |
| LOW | .golangci.yml | 141 | # TIME, and `bd label` is the first entry. | COMMENT |
| LOW | .golangci.yml | 161 | # | COMMENT |
| LOW | .golangci.yml | 201 | desc: "these commands do not open a unit of work: the route fork is the accessor (openIssueLifecycle/openI | COMMENT |
| LOW | .golangci.yml | 241 | # leaf reached into issueops for one sentinel and pulled internal/types | COMMENT |
| LOW | .golangci.yml | 261 | # viewer shipped: a bare IssueFilter that leaked gates, wisps, templates and | COMMENT |
| LOW | .golangci.yml | 281 | # internal/httpapi/** every file, no exceptions. Each read handler hands | COMMENT |
| LOW | .golangci.yml | 321 | - (fmt).Fprintln | COMMENT |
| LOW | .golangci.yml | 341 | # it is not fine for the files that do - see the three `text:`-scoped | COMMENT |
| LOW | .golangci.yml | 361 | # HOLE in it and carries the reason that hole exists. 59 of the 389 | COMMENT |
| LOW | .golangci.yml | 381 | - forbidigo | COMMENT |
| LOW | .golangci.yml | 401 | linters: | COMMENT |
| LOW | .golangci.yml | 421 | # issueops.SweepRequest, and cmd/bd/purge_proxied_server.go is down to the | COMMENT |
| LOW | .golangci.yml | 461 | # Bulk movement of issues in, out and across prefixes. export_source is | COMMENT |
| LOW | beads.go | 1 | // Package beads provides a minimal public API for extending bd with custom orchestration. | COMMENT |
| LOW | beads.go | 41 | case configfile.BackendPostgres, configfile.BackendMySQL, configfile.BackendSQLite: | COMMENT |
| LOW | beads.go | 61 | // commit and fail on new blocks/conditional-blocks/parent-child cycles | COMMENT |
| LOW | beads.go | 81 | type CloseIssueResult = storage.CloseIssueResult | COMMENT |
| LOW | beads.go | 101 | // RemoteStore provides dolt remote management and replication operations. | COMMENT |
| LOW | beads.go | 121 | // Reach it via AsEventQuerier. | COMMENT |
| LOW | beads.go | 141 | // id. The batched, target-keyed mirror of GetDependencyRecordsForIssues; same | COMMENT |
| LOW | beads.go | 201 | ) | COMMENT |
| LOW | beads.go | 221 | // DECORATOR CONTRACT: a single direct type-assertion is sufficient — no unwrap. | COMMENT |
| LOW | beads.go | 281 | // metadata.json. Unlike Open, this respects Dolt server mode settings and database | COMMENT |
| LOW | beads.go | 301 | // | COMMENT |
| LOW | beads.go | 521 | ErrFieldTooLong = types.ErrFieldTooLong | COMMENT |
| LOW | claim.go | 1 | package beads | COMMENT |
| LOW | claim.go | 21 | // parsing anything. This shim stays for callers holding a claim error from | COMMENT |
| LOW | claim.go | 61 | } | COMMENT |
| LOW | PROPOSAL-pluggable-storage-backends.md | 281 | // Run is the PRIMARY seam op: one retryable unit of work. The seam owns | COMMENT |
| LOW | issueops/importer.go | 1 | package issueops | COMMENT |
| LOW | issueops/importer.go | 21 | // record wins, which is the classic import's sequential behavior. | COMMENT |
| LOW | issueops/importer.go | 61 | // excluding stale-rejected rows. | COMMENT |
| LOW | issueops/commenter.go | 21 | // issue-to-wisp fallback happens INSIDE, exactly as it does for Reader.Get, | COMMENT |
| LOW | issueops/commenter.go | 41 | // Comment is the stored comment, with the id and created_at the row | COMMENT |
| LOW | issueops/commenter.go | 61 | // it, not a second method here. | COMMENT |
| LOW | issueops/batchcreator.go | 1 | package issueops | COMMENT |
| LOW | issueops/batchcreator.go | 21 | // AN EXPLICIT ID IS CREATE-ONLY, as it is for Lifecycle.Create: an id that | COMMENT |
| LOW | issueops/batchcreator.go | 41 | // cannot, so a forward reference is left unpromised rather than promised | COMMENT |
| LOW | issueops/batchcreator.go | 61 | // It must not be empty, as CloseBatchRequest.Items must not: a write batch | COMMENT |
| LOW | issueops/batchcreator.go | 81 | // because writing outside the workspace's prefix is one decision a caller | COMMENT |
| LOW | issueops/batchcreator.go | 101 | // BatchCreator describes creating many issues as ONE durable act: the write | COMMENT |
| LOW | issueops/batchcreator.go | 121 | // so a durable entry naming one would be the sync artifact ignoring them exists | COMMENT |
| LOW | issueops/batchcreator.go | 141 | // second one is not written yet. | COMMENT |
| LOW | issueops/batchcreator.go | 161 | // | COMMENT |
| LOW | issueops/bootstrapper.go | 1 | package issueops | COMMENT |
| LOW | issueops/bootstrapper.go | 21 | // A TRAILING HYPHEN IS STRIPPED, and nothing else about the value is | COMMENT |
| LOW | issueops/bootstrapper.go | 41 | // It echoes rather than adds, deliberately. There is no "created" flag: this | COMMENT |
| LOW | issueops/bootstrapper.go | 61 | // and fs/git provisioning has exactly one implementation, so a three-backend | COMMENT |
| LOW | issueops/bootstrapper.go | 81 | // Bootstrapping over an unauthenticated surface is also a different risk class | COMMENT |
| LOW | issueops/bootstrapper.go | 101 | // wrong destroys the one it did not mean. | COMMENT |
| LOW | issueops/bootstrapper.go | 121 | // | COMMENT |
| LOW | issueops/cycledetector.go | 1 | package issueops | COMMENT |
| LOW | issueops/cycledetector.go | 21 | COMMENT | |
| LOW | issueops/cycledetector.go | 41 | // | COMMENT |
| LOW | issueops/cycledetector.go | 61 | // empty. | COMMENT |
| LOW | issueops/cycledetector.go | 81 | // ITS LENGTH IS THE TOTAL, and that is the point of carrying unhydratable | COMMENT |
| 2604 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/httpapi/spec/openapi.v0.yaml | 6164 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM | internal/httpapi/spec/openapi.v0.yaml | 6186 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM | internal/httpapi/spec/openapi.v0.yaml | 7151 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM | internal/httpapi/spec/openapi.v0.yaml | 7162 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 174 | // ── Issue mutations ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 272 | // ── Dependency mutations ──────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 310 | // ── Label mutations ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 330 | // ── Comment mutations ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 342 | // ── Transaction support ───────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 384 | // ── Internal helpers ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/hook_decorator.go | 478 | // ── Hook tracking transaction ─────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying.go | 211 | // ── Capability accessors ──────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying.go | 319 | // ── Provider capabilities that are not roles ──────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying.go | 414 | // ── The unit of work ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying.go | 494 | // ── The buffer ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying.go | 613 | // ── Snapshots ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying.go | 718 | // ── Issue use case ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying.go | 1160 | // ── Dependency use case ───────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying.go | 1247 | // ── Label use case ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying.go | 1364 | // ── Comment use case ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying_test.go | 15 | // ── Fakes ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying_test.go | 293 | // ── The contract ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying_parity_test.go | 100 | // ── The unit of work's use cases ──────────────────────────────────── | COMMENT |
| MEDIUM | internal/storage/uow/notifying_parity_test.go | 241 | // ── The provider's capability surface ─────────────────────────────── | 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/storage/dolt/conflicts_integration_test.go | 305 | // ── The BLOCKING merge state (wy-36ilm F12), dolt-backed ──────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 97 | // ── Issue CRUD ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 278 | // ── Dependencies ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 369 | // ── Labels ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 409 | // ── Work queries ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 448 | // ── Comments & events ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 517 | // ── Statistics ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 536 | // ── Configuration ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 577 | // ── Transactions ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 594 | // ── Wisp queries ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 603 | // ── Streaming iterators ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 679 | // ── Count* aggregates ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 723 | // ── MergeSlot ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 753 | // ── Metadata slots ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | internal/telemetry/storage.go | 783 | // ── 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 |
| 94 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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 | 30 | // Step 0: Locate the bd binary — shared once-per-process build (honors | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 35 | // Step 1: Setup a database with a specific prefix | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 52 | // Step 2: A JSONL record minted by a DIFFERENT tracker (foreign prefix) | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 59 | // Step 3: Import must succeed with no special flag | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 65 | // Step 4: Verify the issue landed under its original id | COMMENT |
| LOW | cmd/bd/mol_ready_gated.go | 130 | // Step 1: Find all closed gate beads | COMMENT |
| LOW⚡ | cmd/bd/mol_ready_gated.go | 147 | // Step 2: Get ready work to check which steps are ready | COMMENT |
| LOW⚡ | cmd/bd/mol_ready_gated.go | 157 | // Step 3: Get hooked molecules to filter out | COMMENT |
| LOW | cmd/bd/mol_ready_gated.go | 181 | // 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: Lifecycle transitions use the dedicated close operation. | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 53 | // Step 3: Verify the issue is now closed with correct closed_at | COMMENT |
| LOW | cmd/bd/main_test.go | 78 | // Step 1: Create a closed issue in the database | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 96 | // Step 2: Lifecycle transitions use the dedicated reopen operation. | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 101 | // Step 3: Verify the issue is now open with null closed_at | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2169 | // Step 1: Check should detect outdated | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2175 | // Step 2: Fix should update the redirect target | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2180 | // Step 3: Re-check should pass | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2186 | // 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 | 415 | // Step 1: get all issue IDs via bd list (--all includes closed issues, | COMMENT |
| LOW | tests/regression/regression_test.go | 440 | // 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 | 13 | // Step 1: Get open epic IDs (single-table scan) | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 37 | // Step 2: Get parent-child dependencies from both tables (bd-w2w) | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 69 | // Step 3: Batch-fetch statuses for all child issues across all epics | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 107 | // Step 4: Batch-fetch all epic issues | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 123 | // Step 5: Build results from cached data | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 309 | // Step 1: Fetch | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 316 | // Step 2: Get commit before merge for change detection | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 319 | // Step 3: Merge peer's branch | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 327 | // Step 4: Handle conflicts | COMMENT |
| LOW | internal/storage/embeddeddolt/federation.go | 370 | // Step 5: Push | COMMENT |
| LOW | internal/storage/dolt/git_remote_test.go | 1041 | // Step 1: Source creates data and pushes | COMMENT |
| LOW | internal/storage/dolt/git_remote_test.go | 1062 | // Step 2: Bootstrap clone from git remote | COMMENT |
| 31 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/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 | 30 | // Step 0: Locate the bd binary — shared once-per-process build (honors | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 35 | // Step 1: Setup a database with a specific prefix | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 52 | // Step 2: A JSONL record minted by a DIFFERENT tracker (foreign prefix) | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 59 | // Step 3: Import must succeed with no special flag | COMMENT |
| LOW⚡ | cmd/bd/import_prefix_test.go | 65 | // Step 4: Verify the issue landed under its original id | COMMENT |
| LOW | cmd/bd/mol_ready_gated.go | 130 | // Step 1: Find all closed gate beads | COMMENT |
| LOW⚡ | cmd/bd/mol_ready_gated.go | 147 | // Step 2: Get ready work to check which steps are ready | COMMENT |
| LOW⚡ | cmd/bd/mol_ready_gated.go | 157 | // Step 3: Get hooked molecules to filter out | COMMENT |
| LOW | cmd/bd/mol_ready_gated.go | 181 | // 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: Lifecycle transitions use the dedicated close operation. | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 53 | // Step 3: Verify the issue is now closed with correct closed_at | COMMENT |
| LOW | cmd/bd/main_test.go | 78 | // Step 1: Create a closed issue in the database | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 96 | // Step 2: Lifecycle transitions use the dedicated reopen operation. | COMMENT |
| LOW⚡ | cmd/bd/main_test.go | 101 | // Step 3: Verify the issue is now open with null closed_at | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2169 | // Step 1: Check should detect outdated | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2175 | // Step 2: Fix should update the redirect target | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2180 | // Step 3: Re-check should pass | COMMENT |
| LOW⚡ | cmd/bd/doctor/gitignore_test.go | 2186 | // Step 4: No .gitignore in redirect-only dir (the original bug) | COMMENT |
| LOW | cmd/bd/doctor/integrity.go | 719 | // 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 | 415 | // Step 1: get all issue IDs via bd list (--all includes closed issues, | COMMENT |
| LOW | tests/regression/regression_test.go | 440 | // 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 | 13 | // Step 1: Get open epic IDs (single-table scan) | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 37 | // Step 2: Get parent-child dependencies from both tables (bd-w2w) | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 69 | // Step 3: Batch-fetch statuses for all child issues across all epics | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 107 | // Step 4: Batch-fetch all epic issues | COMMENT |
| LOW | internal/storage/issueops/epic_closure.go | 123 | // Step 5: Build results from cached data | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 309 | // Step 1: Fetch | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 316 | // Step 2: Get commit before merge for change detection | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 319 | // Step 3: Merge peer's branch | COMMENT |
| LOW⚡ | internal/storage/embeddeddolt/federation.go | 327 | // Step 4: Handle conflicts | COMMENT |
| LOW | internal/storage/embeddeddolt/federation.go | 370 | // Step 5: Push | COMMENT |
| LOW | internal/storage/dolt/git_remote_test.go | 1041 | // Step 1: Source creates data and pushes | COMMENT |
| LOW | internal/storage/dolt/git_remote_test.go | 1062 | // Step 2: Bootstrap clone from git remote | COMMENT |
| LOW | internal/storage/dolt/git_remote_test.go | 1111 | // Step 3: Clone adds data and pushes back | COMMENT |
| LOW | internal/storage/dolt/git_remote_test.go | 1137 | // Step 4: Re-open source and pull — verify bidirectional sync | COMMENT |
| LOW | internal/storage/dolt/queries.go | 218 | // Step 1: Get IDs of issues with future defer_until | COMMENT |
| LOW | internal/storage/dolt/queries.go | 243 | // Step 2: Get children of those deferred parents | COMMENT |
| 12 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cmd/bd/export_auto.go | 1310 | // rather than substring-matching: robust to key order/spacing and | COMMENT |
| MEDIUM | cmd/bd/max_rows_test.go | 390 | // raw stdout is a robust enough check for our small fixtures. | COMMENT |
| MEDIUM | cmd/bd/doctor/integrity.go | 103 | // Detect ID format using robust heuristic | COMMENT |
| MEDIUM | cmd/bd/doctor/integrity.go | 684 | // 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 | 490 | // directly. Makes the contract robust to wording changes in the | COMMENT |
| MEDIUM | internal/doltserver/gc_config_test.go | 154 | // sleep, robust to coarse filesystem mtime resolution); both stub scripts | COMMENT |
| MEDIUM | internal/utils/id_parser.go | 122 | // Use the hash part as a search query to leverage SQL-level filtering | COMMENT |
| MEDIUM | internal/beads/beads.go | 1240 | // 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 | 87 | 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/upgrade-smoke-test.sh | 464 | # data-copy is still covered by the migration-test harness; skip gracefully. | COMMENT |
| MEDIUM | scripts/migration-test/historical-dolt-upgrade-test.sh | 584 | # harness. A genuine no-op prints exactly "✓ Schema already at v<N>" on a | COMMENT |
| MEDIUM | .github/workflows/pr.yml | 919 | # Needs the Dolt sql-server image (the protocol harness spins a container). | COMMENT |
| MEDIUM | .github/workflows/pr-risk.yml | 60 | # sql-server started via testcontainers by the shared proxied harness | COMMENT |
| MEDIUM | .github/workflows/pr-risk.yml | 92 | # shared harness itself uses the dolt sql-server container image. | COMMENT |
| MEDIUM | .github/workflows/pr-risk.yml | 103 | # The shared proxied harness requires the image cached locally | COMMENT |
| MEDIUM | .github/workflows/conformance.yml | 4 | # the in-process store corpus and the real-binary CLI harness. | COMMENT |
| MEDIUM | .github/workflows/main.yml | 843 | # sql-server started via testcontainers by the shared proxied harness | COMMENT |
| MEDIUM | .github/workflows/main.yml | 880 | # shared harness itself uses the dolt sql-server container image. | COMMENT |
| MEDIUM | .github/workflows/main.yml | 891 | # The shared proxied harness requires the image cached locally | COMMENT |
| MEDIUM | .github/workflows/main.yml | 1086 | # Linux/macOS run comprehensive tests; Windows just verifies binary works | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cmd/bd/bootstrap_embedded_test.go | 119 | cmd = exec.Command("git", "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_embedded_test.go | 143 | cmd = exec.Command("git", "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_embedded_test.go | 185 | 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/bootstrap_backend_guard_test.go | 179 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/show_embedded_test.go | 316 | 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 | 2541 | _ = 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 | 141 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/init_safety_test.go | 540 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/init_safety_test.go | 602 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/init_safety_test.go | 661 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/test_helpers_pure_test.go | 390 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/init_hooks_test.go | 911 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/init_hooks_test.go | 1188 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/init_hooks_test.go | 1294 | {"config", "user.email", "test@test.com"}, | CODE |
| LOW | cmd/bd/init_embedded_test.go | 1070 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 309 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 489 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 811 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 885 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 967 | runGitForBootstrapTest(t, rigDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 1137 | runGitForBootstrapTest(t, sourceDir, "config", "user.email", "test@test.com") | CODE |
| LOW | cmd/bd/bootstrap_test.go | 1360 | 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 | 244 | {"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/cross_project_test.go | 731 | CommitterEmail: "test@test.com", | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1314 | runCmd(t, serverDataDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1320 | runCmd(t, testdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1352 | runCmd(t, clientTestdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1373 | CommitterEmail: "test@test.com", | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1414 | runCmd(t, serverDataDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1420 | runCmd(t, testdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1463 | runCmd(t, clientTestdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1483 | CommitterEmail: "test@test.com", | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1565 | runCmd(t, serverDataDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1571 | runCmd(t, testdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1606 | runCmd(t, clientTestdbDir, "dolt", "init", "--name", "test", "--email", "test@test.com") | CODE |
| LOW | internal/storage/dolt/git_remote_test.go | 1629 | 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 |
| 12 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 |
| 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 | 4870 | 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 | 2688 | 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 |
| 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 | 207 | // 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-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/repro-be-1he-slow-path/repro.sh | 5 | # Usage: | COMMENT |
| LOW | .github/scripts/docs-render-check.sh | 11 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 5949 | - **Auto_pull config** (GH#707) - Periodic remote sync in event-driven mode | CODE |
| MEDIUM | CHANGELOG.md | 6061 | - **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 |
| MEDIUM | scripts/generate-cli-docs.sh | 146 | # website/; docsmint has consumed them, so drop the scaffolding. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | issueops/dependencyeditor.go | 175 | // is applied once, and the result still echoes every edge as requested. | COMMENT |
| HIGH | cmd/bd/mol_squash.go | 240 | // This enables agents to provide AI-generated summaries while keeping bd as a pure tool. | 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 |
|---|---|---|---|---|
| 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 |