fix: doctor checks follow redirect for Gas Town support (bd-tvus)
Extended bd-tvus fix to all doctor check functions that access .beads/ directory. In Gas Town multi-clone setups, crew/polecat clones use .beads/redirect files to point to the shared mayor/rig beads directory. Doctor checks now use resolveBeadsDir() to follow these redirects: - daemon.go: CheckDaemonStatus - git.go: CheckSyncBranchConfig, FindOrphanedIssues, CheckOrphanedIssues - installation.go: CheckMultipleDatabases, CheckPermissions - integrity.go: CheckIDFormat, CheckDependencyCycles, CheckTombstones, CheckDeletionsManifest, CheckRepoFingerprint - jsonl_integrity.go: CheckJSONLIntegrity - legacy.go: CheckFreshClone - maintenance.go: CheckStaleClosedIssues, CheckExpiredTombstones, CheckCompactionCandidates - perf.go: RunPerformanceDiagnostics, CollectPlatformInfo - validation.go: CheckMergeArtifacts, CheckOrphanedDependencies, CheckDuplicateIssues, CheckTestPollution, CheckChildParentDependencies, CheckGitConflicts - version.go: CheckMetadataVersionTracking Intentionally NOT changed (check local files): - CheckInstallation: checks local .beads/ exists - CheckUntrackedBeadsFiles: checks git tracking of local files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,7 +17,8 @@ import (
|
||||
// CheckMergeArtifacts detects temporary git merge files in .beads directory.
|
||||
// These are created during git merges and should be cleaned up.
|
||||
func CheckMergeArtifacts(path string) DoctorCheck {
|
||||
beadsDir := filepath.Join(path, ".beads")
|
||||
// Follow redirect to resolve actual beads directory (bd-tvus fix)
|
||||
beadsDir := resolveBeadsDir(filepath.Join(path, ".beads"))
|
||||
|
||||
if _, err := os.Stat(beadsDir); os.IsNotExist(err) {
|
||||
return DoctorCheck{
|
||||
@@ -109,7 +110,8 @@ func readMergeArtifactPatterns(beadsDir string) ([]string, error) {
|
||||
|
||||
// CheckOrphanedDependencies detects dependencies pointing to non-existent issues.
|
||||
func CheckOrphanedDependencies(path string) DoctorCheck {
|
||||
beadsDir := filepath.Join(path, ".beads")
|
||||
// Follow redirect to resolve actual beads directory (bd-tvus fix)
|
||||
beadsDir := resolveBeadsDir(filepath.Join(path, ".beads"))
|
||||
dbPath := filepath.Join(beadsDir, beads.CanonicalDatabaseName)
|
||||
|
||||
if _, err := os.Stat(dbPath); os.IsNotExist(err) {
|
||||
@@ -180,7 +182,8 @@ func CheckOrphanedDependencies(path string) DoctorCheck {
|
||||
|
||||
// CheckDuplicateIssues detects issues with identical content.
|
||||
func CheckDuplicateIssues(path string) DoctorCheck {
|
||||
beadsDir := filepath.Join(path, ".beads")
|
||||
// Follow redirect to resolve actual beads directory (bd-tvus fix)
|
||||
beadsDir := resolveBeadsDir(filepath.Join(path, ".beads"))
|
||||
dbPath := filepath.Join(beadsDir, beads.CanonicalDatabaseName)
|
||||
|
||||
if _, err := os.Stat(dbPath); os.IsNotExist(err) {
|
||||
@@ -250,7 +253,8 @@ func CheckDuplicateIssues(path string) DoctorCheck {
|
||||
|
||||
// CheckTestPollution detects test issues that may have leaked into the database.
|
||||
func CheckTestPollution(path string) DoctorCheck {
|
||||
beadsDir := filepath.Join(path, ".beads")
|
||||
// Follow redirect to resolve actual beads directory (bd-tvus fix)
|
||||
beadsDir := resolveBeadsDir(filepath.Join(path, ".beads"))
|
||||
dbPath := filepath.Join(beadsDir, beads.CanonicalDatabaseName)
|
||||
|
||||
if _, err := os.Stat(dbPath); os.IsNotExist(err) {
|
||||
@@ -312,7 +316,8 @@ func CheckTestPollution(path string) DoctorCheck {
|
||||
// These often indicate a modeling mistake (deadlock: child waits for parent, parent waits for children).
|
||||
// However, they may be intentional in some workflows, so removal requires explicit opt-in.
|
||||
func CheckChildParentDependencies(path string) DoctorCheck {
|
||||
beadsDir := filepath.Join(path, ".beads")
|
||||
// Follow redirect to resolve actual beads directory (bd-tvus fix)
|
||||
beadsDir := resolveBeadsDir(filepath.Join(path, ".beads"))
|
||||
dbPath := filepath.Join(beadsDir, beads.CanonicalDatabaseName)
|
||||
|
||||
if _, err := os.Stat(dbPath); os.IsNotExist(err) {
|
||||
@@ -386,7 +391,8 @@ func CheckChildParentDependencies(path string) DoctorCheck {
|
||||
|
||||
// CheckGitConflicts detects git conflict markers in JSONL file.
|
||||
func CheckGitConflicts(path string) DoctorCheck {
|
||||
beadsDir := filepath.Join(path, ".beads")
|
||||
// Follow redirect to resolve actual beads directory (bd-tvus fix)
|
||||
beadsDir := resolveBeadsDir(filepath.Join(path, ".beads"))
|
||||
jsonlPath := filepath.Join(beadsDir, "issues.jsonl")
|
||||
|
||||
if _, err := os.Stat(jsonlPath); os.IsNotExist(err) {
|
||||
|
||||
Reference in New Issue
Block a user