{
 "format": "ac-bench/1",
 "entry": "kaneo",
 "kind": "scramble",
 "variant": "default",
 "repo": "~/ac-targets/kaneo",
 "sha": "b80818fe2e9327648a420b7006d53c89463c68ba",
 "packageRoot": "apps/api",
 "moduleRoot": "src",
 "files": 454,
 "featureFiles": 401,
 "groundTruthModules": 47,
 "hardFiles": 234,
 "leakyFiles": 54,
 "leakage": {
  "renamed": 53,
  "inFeatureFolder": 1,
  "underSubFolder": 0,
  "subFolders": [],
  "unseen": 4
 },
 "scramble": {
  "commit": "aad6fc97e3c73ecd2cf9c6084c01456e5cc01568",
  "tree": "2c0d5a4c6bc43b69b238ffa1651e22b0a1d409d8",
  "moved": 400,
  "declined": 1,
  "excluded": 12,
  "certificate": {
   "verdict": "fail",
   "scope": "static",
   "digest": "sha256:d68239231a542ab562bc6d35e4090bb1cb8cfc0b81bfc5a3213eb96222892767",
   "failing": [
    "K3c",
    "K4"
   ]
  }
 },
 "methods": [
  {
   "method": "B0 type folders",
   "kind": "baseline",
   "clusters": 10,
   "mojoFm": 13.32,
   "ari": 0.017,
   "c2cCvg": 0,
   "clusterCountRatio": 0.17,
   "mojoFmHard": 16.44,
   "turboMq": {
    "sum": 1.0678,
    "mean": 0.1068
   },
   "backEdges": 8
  },
  {
   "method": "name-token (full stem)",
   "kind": "baseline",
   "clusters": 426,
   "mojoFm": 13.05,
   "ari": 0.012,
   "c2cCvg": 0.149,
   "clusterCountRatio": 7.96,
   "mojoFmHard": 14.61,
   "turboMq": {
    "sum": 2.3804,
    "mean": 0.0056
   },
   "backEdges": 4
  },
  {
   "method": "name-token (anchored)",
   "kind": "baseline",
   "clusters": 156,
   "mojoFm": 49.61,
   "ari": 0.254,
   "c2cCvg": 0.426,
   "clusterCountRatio": 2.91,
   "mojoFmHard": 30.59,
   "turboMq": {
    "sum": 9.7462,
    "mean": 0.0625
   },
   "backEdges": 95
  },
  {
   "method": "export-token (anchored)",
   "kind": "baseline",
   "clusters": 252,
   "mojoFm": 26.37,
   "ari": 0.08,
   "c2cCvg": 0.085,
   "clusterCountRatio": 4.96,
   "mojoFmHard": 29.22,
   "turboMq": {
    "sum": 3.3214,
    "mean": 0.0132
   },
   "backEdges": 61
  },
  {
   "method": "seeds draft (file names)",
   "kind": "draft",
   "clusters": 114,
   "mojoFm": 50.13,
   "ari": 0.236,
   "c2cCvg": 0.404,
   "clusterCountRatio": 2.23,
   "mojoFmHard": 31.96,
   "turboMq": {
    "sum": 10.3974,
    "mean": 0.0912
   },
   "backEdges": 72
  },
  {
   "method": "seeds draft (export names)",
   "kind": "baseline",
   "clusters": 104,
   "mojoFm": 31.07,
   "ari": 0.078,
   "c2cCvg": 0.064,
   "clusterCountRatio": 1.96,
   "mojoFmHard": 30.59,
   "turboMq": {
    "sum": 6.2988,
    "mean": 0.0606
   },
   "backEdges": 104
  },
  {
   "method": "Louvain r=1 (mean of seeds 1-5)",
   "kind": "baseline",
   "clusters": 11.2,
   "mojoFm": 29.45,
   "ari": 0.213,
   "c2cCvg": 0.021,
   "clusterCountRatio": 0.19,
   "mojoFmHard": 37.35,
   "turboMq": {
    "sum": 4.9184,
    "mean": 0.4381
   },
   "backEdges": 16.2,
   "note": "mean of seeds 1-5"
  },
  {
   "method": "Louvain r=2 (mean of seeds 1-5)",
   "kind": "baseline",
   "clusters": 23,
   "mojoFm": 51.02,
   "ari": 0.389,
   "c2cCvg": 0.094,
   "clusterCountRatio": 0.45,
   "mojoFmHard": 49.5,
   "turboMq": {
    "sum": 10.0081,
    "mean": 0.4351
   },
   "backEdges": 43.4,
   "note": "mean of seeds 1-5"
  },
  {
   "method": "Louvain r=4 (mean of seeds 1-5)",
   "kind": "baseline",
   "clusters": 39.6,
   "mojoFm": 66.9,
   "ari": 0.465,
   "c2cCvg": 0.311,
   "clusterCountRatio": 0.8,
   "mojoFmHard": 64.48,
   "turboMq": {
    "sum": 16.0516,
    "mean": 0.4053
   },
   "backEdges": 60.8,
   "note": "mean of seeds 1-5"
  },
  {
   "method": "planner (Ultra)",
   "kind": "planner",
   "clusters": 64,
   "mojoFm": 50.65,
   "ari": 0.248,
   "c2cCvg": 0.277,
   "clusterCountRatio": 1.32,
   "mojoFmHard": 36.07,
   "turboMq": {
    "sum": 9.8985,
    "mean": 0.1547
   },
   "backEdges": 66,
   "note": "invalid plan: 1 validator error"
  }
 ],
 "bestBaseline": {
  "method": "Louvain r=4 (mean of seeds 1-5)",
  "mojoFm": 66.9,
  "turboMq": 16.0516
 },
 "planner": {
  "cassette": "cassettes/s7-bench.jsonl",
  "recordedCostUsd": 0.171439,
  "spentUsd": 0.064889,
  "replayed": false,
  "calls": {
   "replayed": 1,
   "recorded": 1
  },
  "rules": 2,
  "groups": 64,
  "modules": 55,
  "change": {
   "draftGroups": 114,
   "samePartition": false,
   "filesMoved": 22,
   "groupsMerged": 50,
   "winner": {
    "label": "ultra#2",
    "groupEntries": 114,
    "moves": 29,
    "movesById": 29,
    "issues": {
     "bad-name": 2,
     "banned-name": 1
    }
   },
   "critic": {
    "suggestions": 16,
    "kept": 10
   }
  },
  "planSha256": "bcb39422b864d2297fd0f693bcde568ad465f70391f8560e37a18edec88d874a"
 },
 "louvainMojoFmByResolution": {
  "1": [
   27.15,
   31.85,
   27.68,
   32.9,
   27.68
  ],
  "2": [
   51.44,
   50.13,
   48.3,
   52.22,
   53
  ],
  "4": [
   63.97,
   65.8,
   68.15,
   68.15,
   68.41
  ]
 },
 "draft": {
  "method": "seeds draft (file names)",
  "source": "file names",
  "contested": {
   "fileNames": 29,
   "exportNames": 125
  }
 },
 "notes": [
  "The validator rejects the planner's plan (banned-name: \"middleware\" is a junk drawer or a type word, not a feature); it is scored as it came back.",
  "The planner starts from the seeds draft (file names): plannerDraft takes the export names only when they leave fewer files contested than the file names, and here they leave 125 against 29 (no ground truth is read).",
  "The planner's plan moves 22 of 454 files out of their draft group and merges 50 draft groups into others (114 draft groups, 64 plan groups). The winning edit, ultra#2, had 114 group entries and 29 moves (29 name their file by its id, not its path); the validator found 3 problems with it (bad-name 2, banned-name 1) and dropped or repaired each before applying it. Planner rules 2 read a file by the id the prompt showed for it. The critic made 16 suggestions and its gate kept 10.",
  "Leakage, over the 454 movable files every method sees: 54 give their feature away in their path (1 still in a feature folder; 53 leaky renames; 0 in a sub-folder that only files of their feature share). 4 more leaky files are pinned or not read by the facts, so no method sees them: not counted."
 ]
}
