Skip to content

fix: stop EnsureAllMetadata oscillating when two DBs map to same rig#3287

Merged
steveyegge merged 1 commit intogastownhall:mainfrom
quad341:polecat/quartz/gas-ar0@mn4um8mr
Mar 27, 2026
Merged

fix: stop EnsureAllMetadata oscillating when two DBs map to same rig#3287
steveyegge merged 1 commit intogastownhall:mainfrom
quad341:polecat/quartz/gas-ar0@mn4um8mr

Conversation

@quad341
Copy link
Copy Markdown
Contributor

@quad341 quad341 commented Mar 25, 2026

Summary

  • Groups databases by rig in EnsureAllMetadata — processes each rig exactly once
  • When multiple DB candidates exist for a rig, prefers the value already in metadata.json to avoid repair churn
  • Adds TestEnsureAllMetadata_NoOscillation regression test

Test plan

  • gt up no longer prints oscillating metadata repair warnings
  • Fresh install picks correct database name
  • Existing installs with valid metadata.json are left unchanged

🤖 Generated with Claude Code

…(gas-ar0)

When routes.jsonl and rigs.json use different prefixes for the same rig
(e.g. "gas-" vs "gt" for gastown), both "gastown" and "gt" Dolt databases
can exist in .dolt-data/. The old code called EnsureMetadata for each one
in sequence: "gastown" wrote dolt_database="gastown", then "gt" detected a
mismatch and "corrected" it to "gt", printing a spurious warning. Next
startup: same oscillation in reverse.

Fix: group databases by rig in EnsureAllMetadata; process each rig exactly
once. When multiple candidates exist, prefer whichever is already in
metadata.json (if valid) to avoid repair churn. Falls back to the first
candidate (alphabetical) for fresh installs.

Adds TestEnsureAllMetadata_NoOscillation to prevent regression.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions github-actions bot added the status/needs-triage Inbox — we haven't looked at it yet label Mar 25, 2026
@codecov-commenter
Copy link
Copy Markdown

❌ 5 Tests Failed:

Tests completed Failed Passed Skipped
9320 5 9315 48
View the top 3 failed test(s) by shortest run time
github.com/steveyegge/gastown/internal/cmd::TestBuildRefineryPatrolVars_FullConfig
Stack Traces | 0s run time
=== RUN   TestBuildRefineryPatrolVars_FullConfig
    patrol_helpers_test.go:166: expected 5 vars, got 7: [target_branch=main integration_branch_refinery_enabled=true integration_branch_auto_land=false run_tests=true delete_merged_branches=true judgment_enabled=false review_depth=standard]
--- FAIL: TestBuildRefineryPatrolVars_FullConfig (0.00s)
github.com/steveyegge/gastown/internal/cmd::TestRunHooksSyncNonClaudeAgent
Stack Traces | 0s run time
=== RUN   TestRunHooksSyncNonClaudeAgent
Syncing hooks...
  ✓ mayor/.claude/settings.json (created)
  ✓ deacon/.claude/settings.json (created)
  ✓ myrig/crew/.claude/settings.json (created)
warning: role_agents[crew]=opencode - agent "opencode" binary "opencode" not found in PATH, falling back to default

Synced 3 targets (3 created, 0 updated, 0 unchanged)
    hooks_sync_test.go:366: opencode plugin not created in worktree alice
--- FAIL: TestRunHooksSyncNonClaudeAgent (0.00s)
github.com/steveyegge/gastown/internal/doctor::TestHooksSyncCheck_Fix_TemplateAgent
Stack Traces | 0.01s run time
=== RUN   TestHooksSyncCheck_Fix_TemplateAgent
warning: role_agents[crew]=opencode - agent "opencode" binary "opencode" not found in PATH, falling back to default
    hooks_sync_check_test.go:219: expected StatusWarning before fix, got OK
--- FAIL: TestHooksSyncCheck_Fix_TemplateAgent (0.01s)
github.com/steveyegge/gastown/internal/doctor::TestHooksSyncCheck_TemplateAgent_Missing
Stack Traces | 0.01s run time
=== RUN   TestHooksSyncCheck_TemplateAgent_Missing
warning: role_agents[crew]=opencode - agent "opencode" binary "opencode" not found in PATH, falling back to default
    hooks_sync_check_test.go:193: expected StatusWarning for missing template agent file, got OK: All 3 hook targets in sync
--- FAIL: TestHooksSyncCheck_TemplateAgent_Missing (0.01s)
github.com/steveyegge/gastown/internal/doctor::TestHooksSyncCheck_TemplateAgent_OutOfSync
Stack Traces | 0.01s run time
=== RUN   TestHooksSyncCheck_TemplateAgent_OutOfSync
warning: role_agents[crew]=opencode - agent "opencode" binary "opencode" not found in PATH, falling back to default
    hooks_sync_check_test.go:172: expected StatusWarning for out-of-sync template agent, got OK: All 3 hook targets in sync
--- FAIL: TestHooksSyncCheck_TemplateAgent_OutOfSync (0.01s)

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

@steveyegge steveyegge merged commit fc8bfc6 into gastownhall:main Mar 27, 2026
4 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status/needs-triage Inbox — we haven't looked at it yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants