Skip to content

Comments

feat: make metadata queryable from list, search, and query DSL#1908

Merged
steveyegge merged 1 commit intosteveyegge:mainfrom
turian:feat/metadata-queryable
Feb 22, 2026
Merged

feat: make metadata queryable from list, search, and query DSL#1908
steveyegge merged 1 commit intosteveyegge:mainfrom
turian:feat/metadata-queryable

Conversation

@turian
Copy link
Contributor

@turian turian commented Feb 20, 2026

Summary

  • Add SQL-level metadata filtering to bd list and bd search using Dolt's JSON_EXTRACT/JSON_UNQUOTE with parameterized queries
  • New CLI flags: --metadata-field key=value (repeatable, AND semantics) and --has-metadata-key key (existence check)
  • Add metadata.<key> = "<value>" support to bd query DSL (both filter and predicate modes)
  • Strict key validation (ValidateMetadataKey) prevents JSON path injection

Details

Implements the queryability layer for the metadata system (GH#1406). This builds on the existing types.Issue.Metadata JSON column and the visibility work in #1905.

Files changed (8):

  • internal/types/types.go — Add MetadataFields and HasMetadataKey to IssueFilter
  • internal/storage/metadata.go — Add ValidateMetadataKey() with strict regex
  • internal/storage/dolt/queries.go — Generate WHERE clauses using JSON_EXTRACT/JSON_UNQUOTE with ? params
  • cmd/bd/list.go — Add --metadata-field and --has-metadata-key flags
  • cmd/bd/search.go — Add same flags
  • internal/query/evaluator.go — Add metadata. prefix handling in filter and predicate modes
  • cmd/bd/metadata_filter_test.go — 7 Dolt integration tests + 14 key validation unit tests
  • internal/query/query_test.go — 5 evaluator metadata tests + predicate evaluation tests

Test plan

  • TestSearchIssues_MetadataFieldMatch — single key=value filter returns matching issue
  • TestSearchIssues_MetadataFieldNoMatch — non-matching value returns empty
  • TestSearchIssues_HasMetadataKey — existence check filters correctly
  • TestSearchIssues_MultipleMetadataFieldsANDed — multiple fields use AND semantics
  • TestSearchIssues_MetadataFieldInvalidKey — SQL injection attempt rejected
  • TestSearchIssues_HasMetadataKeyInvalidKey — invalid key rejected
  • TestSearchIssues_NoMetadataDoesNotMatch — issues without metadata don't match
  • TestValidateMetadataKey — 14 cases (valid keys, empty, spaces, hyphens, digits-first, SQL injection, JSON path chars, newlines)
  • TestEvaluatorMetadataQueries — 5 DSL query cases including AND
  • TestMetadataPredicateEvaluation — predicate mode with JSON parsing
  • Full build passes (go build ./...)

🤖 Generated with Claude Code

@codecov-commenter
Copy link

codecov-commenter commented Feb 20, 2026

❌ 115 Tests Failed:

Tests completed Failed Passed Skipped
3391 115 3276 154
View the top 3 failed test(s) by shortest run time
github.com/steveyegge/beads/cmd/bd/doctor::TestCategorizeDoltExtras_AllEphemeral
Stack Traces | 0s run time
=== RUN   TestCategorizeDoltExtras_AllEphemeral
    migration_validation_test.go:410: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCategorizeDoltExtras_AllEphemeral (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCategorizeDoltExtras_AllForeign
Stack Traces | 0s run time
=== RUN   TestCategorizeDoltExtras_AllForeign
    migration_validation_test.go:348: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCategorizeDoltExtras_AllForeign (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCategorizeDoltExtras_MixedEphemeralAndForeign
Stack Traces | 0s run time
=== RUN   TestCategorizeDoltExtras_MixedEphemeralAndForeign
    migration_validation_test.go:382: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCategorizeDoltExtras_MixedEphemeralAndForeign (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCategorizeDoltExtras_NoExtras
Stack Traces | 0s run time
=== RUN   TestCategorizeDoltExtras_NoExtras
    migration_validation_test.go:433: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCategorizeDoltExtras_NoExtras (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_ClosedIssuesExcluded
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_ClosedIssuesExcluded
    validation_test.go:46: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_ClosedIssuesExcluded (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_DeletedExcluded
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_DeletedExcluded
    validation_test.go:244: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_DeletedExcluded (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_DifferentDesignNotDuplicate
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_DifferentDesignNotDuplicate
    validation_test.go:143: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_DifferentDesignNotDuplicate (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_GastownCustomThreshold
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_GastownCustomThreshold
    validation_test.go:416: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_GastownCustomThreshold (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_GastownOverThreshold
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_GastownOverThreshold
    validation_test.go:369: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_GastownOverThreshold (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_GastownUnderThreshold
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_GastownUnderThreshold
    validation_test.go:318: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_GastownUnderThreshold (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_MixedOpenClosed
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_MixedOpenClosed
    validation_test.go:190: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_MixedOpenClosed (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_MultipleDuplicateGroups
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_MultipleDuplicateGroups
    validation_test.go:515: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_MultipleDuplicateGroups (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_NonGastownMode
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_NonGastownMode
    validation_test.go:464: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_NonGastownMode (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_OpenDuplicatesDetected
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_OpenDuplicatesDetected
    validation_test.go:95: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_OpenDuplicatesDetected (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckDuplicateIssues_ZeroDuplicatesNullHandling
Stack Traces | 0s run time
=== RUN   TestCheckDuplicateIssues_ZeroDuplicatesNullHandling
    validation_test.go:579: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckDuplicateIssues_ZeroDuplicatesNullHandling (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckStaleClosedIssues_DisabledLargeCount
Stack Traces | 0s run time
=== RUN   TestCheckStaleClosedIssues_DisabledLargeCount
    maintenance_cgo_test.go:143: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckStaleClosedIssues_DisabledLargeCount (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckStaleClosedIssues_DisabledSmallCount
Stack Traces | 0s run time
=== RUN   TestCheckStaleClosedIssues_DisabledSmallCount
    maintenance_cgo_test.go:124: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckStaleClosedIssues_DisabledSmallCount (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckStaleClosedIssues_EnabledNoneCleanable
Stack Traces | 0s run time
=== RUN   TestCheckStaleClosedIssues_EnabledNoneCleanable
    maintenance_cgo_test.go:172: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckStaleClosedIssues_EnabledNoneCleanable (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckStaleClosedIssues_EnabledWithCleanable
Stack Traces | 0s run time
=== RUN   TestCheckStaleClosedIssues_EnabledWithCleanable
    maintenance_cgo_test.go:157: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckStaleClosedIssues_EnabledWithCleanable (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckStaleClosedIssues_MixedPinnedAndStale
Stack Traces | 0s run time
=== RUN   TestCheckStaleClosedIssues_MixedPinnedAndStale
    maintenance_cgo_test.go:199: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckStaleClosedIssues_MixedPinnedAndStale (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor::TestCheckStaleClosedIssues_PinnedExcluded
Stack Traces | 0s run time
=== RUN   TestCheckStaleClosedIssues_PinnedExcluded
    maintenance_cgo_test.go:187: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCheckStaleClosedIssues_PinnedExcluded (0.00s)
github.com/steveyegge/beads/cmd/bd::TestAgentHeartbeatWithRouting
Stack Traces | 0s run time
=== RUN   TestAgentHeartbeatWithRouting
    agent_routing_test.go:260: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestAgentHeartbeatWithRouting (0.00s)
github.com/steveyegge/beads/cmd/bd::TestAgentShowWithRouting
Stack Traces | 0s run time
=== RUN   TestAgentShowWithRouting
    agent_routing_test.go:349: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestAgentShowWithRouting (0.00s)
github.com/steveyegge/beads/cmd/bd::TestAgentStateWithRouting
Stack Traces | 0s run time
=== RUN   TestAgentStateWithRouting
    agent_routing_test.go:47: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestAgentStateWithRouting (0.00s)
github.com/steveyegge/beads/cmd/bd::TestBeadsDirOverrideSkipsRouting
Stack Traces | 0s run time
=== RUN   TestBeadsDirOverrideSkipsRouting
    agent_routing_test.go:450: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestBeadsDirOverrideSkipsRouting (0.00s)
github.com/steveyegge/beads/cmd/bd::TestCheckDatabaseVersionFreshClone
Stack Traces | 0s run time
=== RUN   TestCheckDatabaseVersionFreshClone
    doctor_test.go:423: Expected warning status for fresh clone, got error
    doctor_test.go:426: Expected fresh clone message, got No dolt database found
--- FAIL: TestCheckDatabaseVersionFreshClone (0.00s)
github.com/steveyegge/beads/cmd/bd::TestCheckDatabaseVersionJSONLMode
Stack Traces | 0s run time
=== RUN   TestCheckDatabaseVersionJSONLMode
    doctor_test.go:398: Expected warning status for Dolt fresh clone, got error
    doctor_test.go:401: Expected fresh clone message, got No dolt database found
--- FAIL: TestCheckDatabaseVersionJSONLMode (0.00s)
github.com/steveyegge/beads/cmd/bd::TestCompactSuite
Stack Traces | 0s run time
=== RUN   TestCompactSuite
    compact_test.go:19: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCompactSuite (0.00s)
github.com/steveyegge/beads/cmd/bd::TestConfigCommands
Stack Traces | 0s run time
=== RUN   TestConfigCommands
    config_test.go:213: Failed to create test database: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestConfigCommands (0.00s)
github.com/steveyegge/beads/cmd/bd::TestConfigNamespaces
Stack Traces | 0s run time
=== RUN   TestConfigNamespaces
    config_test.go:213: Failed to create test database: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestConfigNamespaces (0.00s)
github.com/steveyegge/beads/cmd/bd::TestCreateIssueFromFormValues
Stack Traces | 0s run time
=== RUN   TestCreateIssueFromFormValues
    create_form_test.go:163: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCreateIssueFromFormValues (0.00s)
github.com/steveyegge/beads/cmd/bd::TestCreateWithNotes
Stack Traces | 0s run time
=== RUN   TestCreateWithNotes
    create_notes_test.go:19: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestCreateWithNotes (0.00s)
github.com/steveyegge/beads/cmd/bd::TestDepListCrossRigRouting
Stack Traces | 0s run time
=== RUN   TestDepListCrossRigRouting
    dep_test.go:1357: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestDepListCrossRigRouting (0.00s)
github.com/steveyegge/beads/cmd/bd::TestDependencySuite
Stack Traces | 0s run time
=== RUN   TestDependencySuite
    dep_test.go:22: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestDependencySuite (0.00s)
github.com/steveyegge/beads/cmd/bd::TestDuplicatesIntegration
Stack Traces | 0s run time
=== RUN   TestDuplicatesIntegration
    duplicates_test.go:272: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestDuplicatesIntegration (0.00s)
github.com/steveyegge/beads/cmd/bd::TestEpicCommand
Stack Traces | 0s run time
=== RUN   TestEpicCommand
    epic_test.go:18: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEpicCommand (0.00s)
github.com/steveyegge/beads/cmd/bd::TestEpicEligibleForClose
Stack Traces | 0s run time
=== RUN   TestEpicEligibleForClose
    epic_test.go:134: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEpicEligibleForClose (0.00s)
github.com/steveyegge/beads/cmd/bd::TestFormValuesIntegration
Stack Traces | 0s run time
=== RUN   TestFormValuesIntegration
    create_form_test.go:540: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestFormValuesIntegration (0.00s)
github.com/steveyegge/beads/cmd/bd::TestInitCommand
Stack Traces | 0s run time
=== RUN   TestInitCommand
=== RUN   TestInitCommand/init_with_default_prefix
Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused

The Dolt server may not be running. Try:
  gt dolt start    # If using Gas Town
  bd dolt start    # If using Beads directly

Beads requires a running dolt sql-server. Start one with:
  gt dolt start    (if using Gas Town)
  dolt sql-server  (standalone)
github.com/steveyegge/beads/cmd/bd::TestInitCommand/init_with_default_prefix
Stack Traces | 0s run time
=== RUN   TestInitCommand/init_with_default_prefix
Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused

The Dolt server may not be running. Try:
  gt dolt start    # If using Gas Town
  bd dolt start    # If using Beads directly

Beads requires a running dolt sql-server. Start one with:
  gt dolt start    (if using Gas Town)
  dolt sql-server  (standalone)
github.com/steveyegge/beads/cmd/bd::TestIssueIDCompletion
Stack Traces | 0s run time
=== RUN   TestIssueIDCompletion
    completions_test.go:34: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestIssueIDCompletion (0.00s)
github.com/steveyegge/beads/cmd/bd::TestIssueIDCompletion_EmptyDatabase
Stack Traces | 0s run time
=== RUN   TestIssueIDCompletion_EmptyDatabase
    completions_test.go:363: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestIssueIDCompletion_EmptyDatabase (0.00s)
github.com/steveyegge/beads/cmd/bd::TestNoExternalDeps
Stack Traces | 0s run time
=== RUN   TestNoExternalDeps
    external_dep_routing_test.go:312: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestNoExternalDeps (0.00s)
github.com/steveyegge/beads/cmd/bd::TestPerformMerge
Stack Traces | 0s run time
=== RUN   TestPerformMerge
    duplicates_test.go:338: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestPerformMerge (0.00s)
github.com/steveyegge/beads/cmd/bd::TestResolveBlockedByRefs
Stack Traces | 0s run time
=== RUN   TestResolveBlockedByRefs
    external_dep_routing_test.go:238: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestResolveBlockedByRefs (0.00s)
github.com/steveyegge/beads/cmd/bd::TestResolveExternalDepsUnresolvable
Stack Traces | 0s run time
=== RUN   TestResolveExternalDepsUnresolvable
    external_dep_routing_test.go:161: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestResolveExternalDepsUnresolvable (0.00s)
github.com/steveyegge/beads/cmd/bd::TestResolveExternalDepsViaRouting
Stack Traces | 0s run time
=== RUN   TestResolveExternalDepsViaRouting
    external_dep_routing_test.go:45: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestResolveExternalDepsViaRouting (0.00s)
github.com/steveyegge/beads/cmd/bd::TestSlotAgentLabelCheck
Stack Traces | 0s run time
=== RUN   TestSlotAgentLabelCheck
    agent_routing_test.go:712: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestSlotAgentLabelCheck (0.00s)
github.com/steveyegge/beads/cmd/bd::TestSlotShowWithRouting
Stack Traces | 0s run time
=== RUN   TestSlotShowWithRouting
    agent_routing_test.go:645: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestSlotShowWithRouting (0.00s)
github.com/steveyegge/beads/cmd/bd::TestValidateCheck_AllClean
Stack Traces | 0s run time
=== RUN   TestValidateCheck_AllClean
    doctor_validate_test.go:33: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestValidateCheck_AllClean (0.00s)
github.com/steveyegge/beads/cmd/bd::TestValidateCheck_DetectsDuplicates
Stack Traces | 0s run time
=== RUN   TestValidateCheck_DetectsDuplicates
    doctor_validate_test.go:66: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestValidateCheck_DetectsDuplicates (0.00s)
github.com/steveyegge/beads/cmd/bd::TestValidateCheck_DetectsOrphanedDeps
Stack Traces | 0s run time
=== RUN   TestValidateCheck_DetectsOrphanedDeps
    doctor_validate_test.go:97: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestValidateCheck_DetectsOrphanedDeps (0.00s)
github.com/steveyegge/beads/cmd/bd::TestValidateCheck_DetectsTestPollution
Stack Traces | 0s run time
=== RUN   TestValidateCheck_DetectsTestPollution
    doctor_validate_test.go:167: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestValidateCheck_DetectsTestPollution (0.00s)
github.com/steveyegge/beads/cmd/bd::TestValidateCheck_FixOrphanedDeps
Stack Traces | 0s run time
=== RUN   TestValidateCheck_FixOrphanedDeps
    doctor_validate_test.go:210: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestValidateCheck_FixOrphanedDeps (0.00s)
github.com/steveyegge/beads/cmd/bd::TestValidateSyncConfig
Stack Traces | 0s run time
=== RUN   TestValidateSyncConfig
--- FAIL: TestValidateSyncConfig (0.00s)
github.com/steveyegge/beads/cmd/bd::TestValidateSyncConfig/valid_empty_config
Stack Traces | 0s run time
=== RUN   TestValidateSyncConfig/valid_empty_config
    config_test.go:330: Expected no issues for valid empty config, got: [federation.remote: required for Dolt sync]
--- FAIL: TestValidateSyncConfig/valid_empty_config (0.00s)
github.com/steveyegge/beads/internal/molecules::TestLoader_LoadAll
Stack Traces | 0s run time
=== RUN   TestLoader_LoadAll
    molecules_test.go:77: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestLoader_LoadAll (0.00s)
github.com/steveyegge/beads/internal/molecules::TestLoader_SkipExistingMolecules
Stack Traces | 0s run time
=== RUN   TestLoader_SkipExistingMolecules
    molecules_test.go:150: Failed to create store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestLoader_SkipExistingMolecules (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEngineConflictResolution
Stack Traces | 0s run time
=== RUN   TestEngineConflictResolution
    engine_test.go:295: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEngineConflictResolution (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEngineDryRun
Stack Traces | 0s run time
=== RUN   TestEngineDryRun
    engine_test.go:220: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEngineDryRun (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEngineExcludeTypes
Stack Traces | 0s run time
=== RUN   TestEngineExcludeTypes
    engine_test.go:253: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEngineExcludeTypes (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePullOnly
Stack Traces | 0s run time
=== RUN   TestEnginePullOnly
    engine_test.go:151: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePullOnly (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePullWithGenerateID
Stack Traces | 0s run time
=== RUN   TestEnginePullWithGenerateID
    engine_test.go:416: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePullWithGenerateID (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePullWithGenerateIDError
Stack Traces | 0s run time
=== RUN   TestEnginePullWithGenerateIDError
    engine_test.go:452: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePullWithGenerateIDError (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePullWithShouldImport
Stack Traces | 0s run time
=== RUN   TestEnginePullWithShouldImport
    engine_test.go:346: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePullWithShouldImport (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePullWithTransformHook
Stack Traces | 0s run time
=== RUN   TestEnginePullWithTransformHook
    engine_test.go:382: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePullWithTransformHook (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePushExcludeEphemeral
Stack Traces | 0s run time
=== RUN   TestEnginePushExcludeEphemeral
    engine_test.go:628: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePushExcludeEphemeral (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePushOnly
Stack Traces | 0s run time
=== RUN   TestEnginePushOnly
    engine_test.go:185: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePushOnly (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePushWithContentEqual
Stack Traces | 0s run time
=== RUN   TestEnginePushWithContentEqual
    engine_test.go:579: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePushWithContentEqual (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePushWithFormatDescription
Stack Traces | 0s run time
=== RUN   TestEnginePushWithFormatDescription
    engine_test.go:486: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePushWithFormatDescription (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePushWithShouldPush
Stack Traces | 0s run time
=== RUN   TestEnginePushWithShouldPush
    engine_test.go:534: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePushWithShouldPush (0.00s)
github.com/steveyegge/beads/internal/tracker::TestEnginePushWithStateCache
Stack Traces | 0s run time
=== RUN   TestEnginePushWithStateCache
    engine_test.go:675: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestEnginePushWithStateCache (0.00s)
github.com/steveyegge/beads/internal/utils::TestResolvePartialID
Stack Traces | 0s run time
=== RUN   TestResolvePartialID
    id_parser_test.go:86: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestResolvePartialID (0.00s)
github.com/steveyegge/beads/internal/utils::TestResolvePartialID_CrossPrefix
Stack Traces | 0s run time
=== RUN   TestResolvePartialID_CrossPrefix
    id_parser_test.go:580: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestResolvePartialID_CrossPrefix (0.00s)
github.com/steveyegge/beads/internal/utils::TestResolvePartialID_NoConfig
Stack Traces | 0s run time
=== RUN   TestResolvePartialID_NoConfig
    id_parser_test.go:311: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestResolvePartialID_NoConfig (0.00s)
github.com/steveyegge/beads/internal/utils::TestResolvePartialID_TitleFalsePositive
Stack Traces | 0s run time
=== RUN   TestResolvePartialID_TitleFalsePositive
    id_parser_test.go:679: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestResolvePartialID_TitleFalsePositive (0.00s)
github.com/steveyegge/beads/internal/utils::TestResolvePartialIDs
Stack Traces | 0s run time
=== RUN   TestResolvePartialIDs
    id_parser_test.go:227: Failed to create dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestResolvePartialIDs (0.00s)
github.com/steveyegge/beads::TestOpen
Stack Traces | 0s run time
=== RUN   TestOpen
    beads_test.go:22: Open failed: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestOpen (0.00s)
github.com/steveyegge/beads::TestOpenFromConfig_DefaultsToEmbedded
Stack Traces | 0s run time
=== RUN   TestOpenFromConfig_DefaultsToEmbedded
    beads_test.go:104: OpenFromConfig (default) failed: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestOpenFromConfig_DefaultsToEmbedded (0.00s)
github.com/steveyegge/beads::TestOpenFromConfig_Embedded
Stack Traces | 0s run time
=== RUN   TestOpenFromConfig_Embedded
    beads_test.go:79: OpenFromConfig (embedded) failed: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestOpenFromConfig_Embedded (0.00s)
github.com/steveyegge/beads::TestOpenFromConfig_NoMetadata
Stack Traces | 0s run time
=== RUN   TestOpenFromConfig_NoMetadata
    beads_test.go:156: OpenFromConfig (no metadata) failed: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestOpenFromConfig_NoMetadata (0.00s)
github.com/steveyegge/beads/cmd/bd/doctor/fix::TestFixMissingMetadata_DoltIdempotent
Stack Traces | 0.01s run time
=== RUN   TestFixMissingMetadata_DoltIdempotent
    metadata_dolt_test.go:119: failed to create Dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestFixMissingMetadata_DoltIdempotent (0.01s)
github.com/steveyegge/beads/cmd/bd/doctor/fix::TestFixMissingMetadata_DoltPartialRepair
Stack Traces | 0.01s run time
=== RUN   TestFixMissingMetadata_DoltPartialRepair
    metadata_dolt_test.go:169: failed to create Dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestFixMissingMetadata_DoltPartialRepair (0.01s)
github.com/steveyegge/beads/cmd/bd/doctor/fix::TestFixMissingMetadata_DoltRepair
Stack Traces | 0.01s run time
=== RUN   TestFixMissingMetadata_DoltRepair
    metadata_dolt_test.go:70: failed to create Dolt store: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
--- FAIL: TestFixMissingMetadata_DoltRepair (0.01s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_ClosedBlockerNotShownAsBlocking
Stack Traces | 0.06s run time
=== RUN   TestProtocol_ClosedBlockerNotShownAsBlocking
    protocol_test.go:745: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_ClosedBlockerNotShownAsBlocking (0.06s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_FieldsRoundTrip
Stack Traces | 0.06s run time
=== RUN   TestProtocol_FieldsRoundTrip
    protocol_test.go:367: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_FieldsRoundTrip (0.06s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_LabelsPreservedAcrossUpdate
Stack Traces | 0.06s run time
=== RUN   TestProtocol_LabelsPreservedAcrossUpdate
    protocol_test.go:540: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_LabelsPreservedAcrossUpdate (0.06s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_CloseReasonRoundTrip
Stack Traces | 0.07s run time
=== RUN   TestProtocol_CloseReasonRoundTrip
    protocol_test.go:471: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_CloseReasonRoundTrip (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_ClosingBlockerMakesDepReady
Stack Traces | 0.07s run time
=== RUN   TestProtocol_ClosingBlockerMakesDepReady
    protocol_test.go:884: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_ClosingBlockerMakesDepReady (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_CommentsPreservedAcrossUpdate
Stack Traces | 0.07s run time
=== RUN   TestProtocol_CommentsPreservedAcrossUpdate
    protocol_test.go:584: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_CommentsPreservedAcrossUpdate (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_DeleteCleansUpDeps
Stack Traces | 0.07s run time
=== RUN   TestProtocol_DeleteCleansUpDeps
    protocol_test.go:501: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_DeleteCleansUpDeps (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_DepsPreservedAcrossUpdate
Stack Traces | 0.07s run time
=== RUN   TestProtocol_DepsPreservedAcrossUpdate
    protocol_test.go:562: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_DepsPreservedAcrossUpdate (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_DiamondDepBlockingSemantics
Stack Traces | 0.07s run time
=== RUN   TestProtocol_DiamondDepBlockingSemantics
    protocol_test.go:919: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_DiamondDepBlockingSemantics (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_MetadataRoundTrip
Stack Traces | 0.07s run time
=== RUN   TestProtocol_MetadataRoundTrip
    protocol_test.go:412: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_MetadataRoundTrip (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_ParentChildDepExportRoundTrip
Stack Traces | 0.07s run time
=== RUN   TestProtocol_ParentChildDepExportRoundTrip
    protocol_test.go:618: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_ParentChildDepExportRoundTrip (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_ReadyOrderingIsPriorityAsc
Stack Traces | 0.07s run time
=== RUN   TestProtocol_ReadyOrderingIsPriorityAsc
    protocol_test.go:326: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_ReadyOrderingIsPriorityAsc (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_ScalarUpdatePreservesRelationalData
Stack Traces | 0.07s run time
=== RUN   TestProtocol_ScalarUpdatePreservesRelationalData
    protocol_test.go:813: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_ScalarUpdatePreservesRelationalData (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_SpecIDRoundTrip
Stack Traces | 0.07s run time
=== RUN   TestProtocol_SpecIDRoundTrip
    protocol_test.go:448: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_SpecIDRoundTrip (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_TransitiveBlockingChain
Stack Traces | 0.07s run time
=== RUN   TestProtocol_TransitiveBlockingChain
    protocol_test.go:971: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_TransitiveBlockingChain (0.07s)
github.com/steveyegge/beads/cmd/bd/protocol::TestProtocol_ImportPreservesRelationalData
Stack Traces | 2.22s run time
=== RUN   TestProtocol_ImportPreservesRelationalData
    protocol_test.go:227: bd init --prefix test --quiet: exit status 1
        Error: failed to connect to dolt server: Dolt server unreachable at 127.0.0.1:3307: dial tcp 127.0.0.1:3307: connect: connection refused
        
        The Dolt server may not be running. Try:
          gt dolt start    # If using Gas Town
          bd dolt start    # If using Beads directly
        
        Beads requires a running dolt sql-server. Start one with:
          gt dolt start    (if using Gas Town)
          dolt sql-server  (standalone)
--- FAIL: TestProtocol_ImportPreservesRelationalData (2.22s)
View the full list of 15 ❄️ flaky test(s)
github.com/steveyegge/beads/cmd/bd::TestBuildDAGGutterGrid_DifferentRow

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestBuildDAGGutterGrid_DifferentRow
=== PAUSE TestBuildDAGGutterGrid_DifferentRow
github.com/steveyegge/beads/cmd/bd::TestBuildDAGGutterGrid_SameRow

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestBuildDAGGutterGrid_SameRow
=== PAUSE TestBuildDAGGutterGrid_SameRow
github.com/steveyegge/beads/cmd/bd::TestBuildHTMLEdgeData

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestBuildHTMLEdgeData
=== PAUSE TestBuildHTMLEdgeData
github.com/steveyegge/beads/cmd/bd::TestBuildHTMLGraphData

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestBuildHTMLGraphData
=== PAUSE TestBuildHTMLGraphData
github.com/steveyegge/beads/cmd/bd::TestCollectGutterEdges

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestCollectGutterEdges
=== PAUSE TestCollectGutterEdges
github.com/steveyegge/beads/cmd/bd::TestCollectGutterEdges_SkipLayers

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestCollectGutterEdges_SkipLayers
=== PAUSE TestCollectGutterEdges_SkipLayers
github.com/steveyegge/beads/cmd/bd::TestCommentsSuite

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestCommentsSuite
=== PAUSE TestCommentsSuite
github.com/steveyegge/beads/cmd/bd::TestComputeDAGNodeWidth

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestComputeDAGNodeWidth
=== PAUSE TestComputeDAGNodeWidth
github.com/steveyegge/beads/cmd/bd::TestCreateSuite

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestCreateSuite
=== PAUSE TestCreateSuite
github.com/steveyegge/beads/cmd/bd::TestDAGMergeRune

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestDAGMergeRune
=== PAUSE TestDAGMergeRune
github.com/steveyegge/beads/cmd/bd::TestDAGNodeLine

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestDAGNodeLine
=== PAUSE TestDAGNodeLine
github.com/steveyegge/beads/cmd/bd::TestDotEdgeStyle

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestDotEdgeStyle
=== PAUSE TestDotEdgeStyle
github.com/steveyegge/beads/cmd/bd::TestDotNodeAttrs

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestDotNodeAttrs
=== PAUSE TestDotNodeAttrs
github.com/steveyegge/beads/cmd/bd::TestIsUnknownOperationError

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestIsUnknownOperationError
=== PAUSE TestIsUnknownOperationError
github.com/steveyegge/beads/cmd/bd::TestStatusPlainIcon

Flake rate in main: 46.67% (Passed 24 times, Failed 21 times)

Stack Traces | 0s run time
=== RUN   TestStatusPlainIcon
=== PAUSE TestStatusPlainIcon

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@turian
Copy link
Contributor Author

turian commented Feb 22, 2026

Easy-win summary: 162 lines of production code following established filter patterns, 358 lines of tests, zero deletions.

Complements #1905 (see metadata) — this lets you filter by metadata. Follows the exact same pattern as existing label/priority/status filters in queries.go and evaluator.go. Security-conscious: strict key validation prevents JSON path injection, all SQL uses parameterized queries.

No overlap with any open PR. Builds on #1905 but has zero file overlap with it.

@steveyegge
Copy link
Owner

Good feature! Two things needed before merge: (1) rebase onto current main (you're ~20 commits behind), (2) remove the //go:build cgo tag from cmd/bd/metadata_filter_test.go — we removed the CGO bifurcation in c4010c1.

@turian turian force-pushed the feat/metadata-queryable branch from 58f05e6 to ca318fe Compare February 22, 2026 20:58
@turian
Copy link
Contributor Author

turian commented Feb 22, 2026

Thanks for the review! Rebased onto current main and removed the //go:build cgo tag from metadata_filter_test.go. All squashed into one clean commit. Ready for re-review.

Add SQL-level metadata filtering using Dolt's JSON_EXTRACT/JSON_UNQUOTE
with parameterized queries. New CLI flags: --metadata-field key=value
(repeatable, AND semantics) and --has-metadata-key key. Add metadata.<key>
support to bd query DSL. Strict key validation prevents JSON path injection.

Remove //go:build cgo tag from metadata_filter_test.go (CGO bifurcation
was removed in c4010c1).
@steveyegge steveyegge force-pushed the feat/metadata-queryable branch from ca318fe to 5ba0887 Compare February 22, 2026 23:30
@steveyegge steveyegge merged commit 00e802f into steveyegge:main Feb 22, 2026
3 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants