Add --gastown flag to bd doctor for gastown-specific checks (#1162)
When running in gastown multi-workspace mode, two checks produce false positives that are expected behavior: 1. routes.jsonl is a valid configuration file (maps issue prefixes to rig directories), not a duplicate JSONL file 2. Duplicate issues are expected (ephemeral wisps from patrol cycles) and normal up to ~1000, with GC cleaning them up automatically This commit adds flags to bd doctor for gastown-specific checks: - --gastown: Skip routes.jsonl warning and enable duplicate threshold - --gastown-duplicates-threshold=N: Set duplicate tolerance (default 1000) Fixes false positive warnings: Multiple JSONL files found: issues.jsonl, routes.jsonl 70 duplicate issue(s) in 30 group(s) Changes: - Add --gastown flag to bd doctor command - Add --gastown-duplicates-threshold flag (default: 1000) - Update CheckLegacyJSONLFilename to skip routes.jsonl when gastown mode active - Update CheckDuplicateIssues to use configurable threshold when gastown mode active - Add test cases for gastown mode behavior with various thresholds Co-authored-by: Roland Tritsch <roland@ailtir.com> Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -55,7 +55,9 @@ var (
|
||||
checkHealthMode bool
|
||||
doctorCheckFlag string // run specific check (e.g., "pollution")
|
||||
doctorClean bool // for pollution check, delete detected issues
|
||||
doctorDeep bool // full graph integrity validation
|
||||
doctorDeep bool // full graph integrity validation
|
||||
doctorGastown bool // running in gastown multi-workspace mode
|
||||
gastownDuplicatesThreshold int // duplicate tolerance threshold for gastown mode
|
||||
)
|
||||
|
||||
// ConfigKeyHintsDoctor is the config key for suppressing doctor hints
|
||||
@@ -226,6 +228,8 @@ func init() {
|
||||
doctorCmd.Flags().BoolVarP(&doctorVerbose, "verbose", "v", false, "Show detailed output during fixes (e.g., list each removed dependency)")
|
||||
doctorCmd.Flags().BoolVar(&doctorForce, "force", false, "Force repair mode: attempt recovery even when database cannot be opened")
|
||||
doctorCmd.Flags().StringVar(&doctorSource, "source", "auto", "Choose source of truth for recovery: auto (detect), jsonl (prefer JSONL), db (prefer database)")
|
||||
doctorCmd.Flags().BoolVar(&doctorGastown, "gastown", false, "Running in gastown multi-workspace mode (routes.jsonl is expected, higher duplicate tolerance)")
|
||||
doctorCmd.Flags().IntVar(&gastownDuplicatesThreshold, "gastown-duplicates-threshold", 1000, "Duplicate tolerance threshold for gastown mode (wisps are ephemeral)")
|
||||
}
|
||||
|
||||
func runDiagnostics(path string) doctorResult {
|
||||
@@ -320,7 +324,7 @@ func runDiagnostics(path string) doctorResult {
|
||||
}
|
||||
|
||||
// Check 6: Multiple JSONL files (excluding merge artifacts)
|
||||
jsonlCheck := convertWithCategory(doctor.CheckLegacyJSONLFilename(path), doctor.CategoryData)
|
||||
jsonlCheck := convertWithCategory(doctor.CheckLegacyJSONLFilename(path, doctorGastown), doctor.CategoryData)
|
||||
result.Checks = append(result.Checks, jsonlCheck)
|
||||
if jsonlCheck.Status == statusWarning || jsonlCheck.Status == statusError {
|
||||
result.OverallOK = false
|
||||
@@ -547,7 +551,7 @@ func runDiagnostics(path string) doctorResult {
|
||||
// Don't fail overall check for child→parent deps, just warn
|
||||
|
||||
// Check 23: Duplicate issues (from bd validate)
|
||||
duplicatesCheck := convertDoctorCheck(doctor.CheckDuplicateIssues(path))
|
||||
duplicatesCheck := convertDoctorCheck(doctor.CheckDuplicateIssues(path, doctorGastown, gastownDuplicatesThreshold))
|
||||
result.Checks = append(result.Checks, duplicatesCheck)
|
||||
// Don't fail overall check for duplicates, just warn
|
||||
|
||||
|
||||
Reference in New Issue
Block a user