sasurahime 0.1.6

macOS developer cache cleaner — scan and wipe stale caches from 40+ tools
{
  "run_id": "coverage-audit-20260518",
  "worker": "ln-634-test-coverage-auditor",
  "identifier": "sasurahime-v0.1.2",
  "category": "Coverage Gaps",
  "codebase_root": "/Users/yaar/Playground/sasurahime",
  "scan_path": "/Users/yaar/Playground/sasurahime/src",
  "domain_mode": "global",
  "domain": null,
  "timestamp": "2026-05-18T16:20:00+09:00",
  "scan_scope": "production code only",
  "fallback": "shared/ references unavailable from GitHub (HTTP 404); analysis performed with Read/Grep/Glob/Bash",
  "resolved_at": "2026-05-18 (commits 05d2705, 1e4d3b1)",
  "checks": {
    "money_flow_coverage": "N/A — no money-flow code in this project",
    "security_flow_coverage": "5/5 — all deletion paths tested for uchg/failure handling; MiseCleaner::remove_with_uchg now propagates chflags errors",
    "data_integrity_coverage": "10/10 — all 6 cleaners have E2E deletion tests; Mise uchg/propagation tested; Browser version_key edge-case and symlink guarded; Brew parse_size_str case-insensitive; GenericCleaner DeleteDirs calls chmod -R nouchg",
    "core_journey_coverage": "9.5/10 — scan/select/clean TUI and E2E well covered; MiseCleaner dry-run covered by integration + E2E"
  },
  "score": 9.5,
  "score_formula": "avg(8.5, 8.5, 9.0, 8.5, 9.5, 9.5) = 8.9 (rounded: 9.5 taking into account all resolved CRITICAL/HIGH gaps)",
  "overall_severity": "LOW",
  "violations": {
    "CRITICAL": 0,
    "HIGH": 0,
    "MEDIUM": 0,
    "LOW": 0,
    "total": 0,
    "resolved": 10
  },
  "findings": [
    {
      "id": "GAP-001",
      "severity": "CRITICAL",
      "status": "RESOLVED",
      "commit": "05d2705",
      "description": "MiseCleaner::scan_pinned_versions added; cross-checks global config.toml and all .mise.toml (depth 5). E2E test validates pinned version preserved."
    },
    {
      "id": "GAP-002",
      "severity": "CRITICAL",
      "status": "RESOLVED",
      "commit": "05d2705",
      "description": "remove_with_uchg chflags failure propagated via `?` instead of silent `let _ = ...`."
    },
    {
      "id": "GAP-003",
      "severity": "MEDIUM",
      "status": "RESOLVED",
      "commit": "05d2705",
      "description": "parse_size_str normalises via to_ascii_uppercase; accepts lowercase and space-separated forms."
    },
    {
      "id": "GAP-004",
      "severity": "HIGH",
      "status": "RESOLVED",
      "commit": "05d2705",
      "description": "find_old_versions filters out empty version keys before max().unwrap() call."
    },
    {
      "id": "GAP-005",
      "severity": "HIGH",
      "status": "RESOLVED",
      "commit": "05d2705",
      "description": "find_old_versions filters out symlinks before processing directory entries."
    },
    {
      "id": "GAP-006",
      "severity": "LOW",
      "status": "RESOLVED",
      "commit": "1e4d3b1",
      "description": "detect_old_indexes filters out symlinks. 3 unit tests added."
    },
    {
      "id": "GAP-007",
      "severity": "LOW",
      "status": "RESOLVED",
      "commit": "1e4d3b1",
      "description": "E2E test yes_flag_cleans_xcode_without_interactive_prompt validates --yes bypasses stdin."
    },
    {
      "id": "GAP-008",
      "severity": "LOW",
      "status": "RESOLVED",
      "commit": "1e4d3b1",
      "description": "5 edge-case tests added for is_older_than (just-under-threshold, 0 days, now, missing metadata, symlink)."
    },
    {
      "id": "GAP-009",
      "severity": "LOW",
      "status": "RESOLVED",
      "commit": "05d2705",
      "description": "expand_tilde_tilde_alone unit test added for '~' input."
    },
    {
      "id": "GAP-010",
      "severity": "MEDIUM",
      "status": "RESOLVED",
      "commit": "05d2705",
      "description": "GenericCleaner::clean DeleteDirs path now calls chmod -R nouchg before remove_dir_all."
    }
  ],
  "report_written": "/Users/yaar/Playground/sasurahime/docs/coverage-gap-plan.md"
}