Benchmarks: recovering feature boundaries
Can a planner recover a codebase's real feature boundaries? We flatten feature-modular repos into type folders, then score each method against the original folders: MoJoFM (0–100), ARI, c2c_cvg and the cluster-count ratio. TurboMQ needs no ground truth: it scores the import graph alone (many imports inside a module, few between modules), not whether the modules are the features. Every entry gets both MoJoFM and TurboMQ, each with its own best deterministic method. Each scramble is one commit by our own executor, then checked by our own certifier as a pure move: ghostfolio, hoppscotch-H1 and hoppscotch pass (static checks); kaneo (failing K3c, K4) fails (static checks). Each entry below shows its verdict; a scramble is scored whatever its verdict, since the ground truth is its original folders. Deterministic baselines are always shown next to the planner, because classic methods often win (ICSA 2026 found they beat LLM decompositions by 62% on MoJoFM, docs/plan.md §7; our G1 gate agrees on kaneo, docs/gates.md). Real type-sliced targets have no complete ground truth: they get TurboMQ and back-edges, and where a target's own history labels some of its files (a partial answer key), MoJoFM and the rest over those files only.
In these results the planner beats the best deterministic method on MoJoFM on 3 of 5 entries (ghostfolio, hoppscotch-H1 and hoppscotch), and loses on 2 (immich and kaneo); on TurboMQ it beats it on 1 of 5 entries (ghostfolio), and loses on 4 (hoppscotch-H1, hoppscotch, immich and kaneo). Each measure has its own best deterministic method, and immich's MoJoFM is over its 2024 key. Our own validator rejects the plans of ghostfolio (banned-name: "app" is a junk drawer or a type word, not a feature) and kaneo (banned-name: "middleware" is a junk drawer or a type word, not a feature). ac run refuses such a plan; the bench scores it as it came back. Counting only the plans the validator accepts, the planner wins on MoJoFM on 2 of 5 (hoppscotch-H1 and hoppscotch) and on TurboMQ on 0 of 5.
Bold: the higher of the best deterministic method and the planner on each measure.
| Entry | Measure | Best deterministic method | Best | Seeds draft | Planner | Planner − best |
|---|---|---|---|---|---|---|
| ghostfolio | MoJoFM | seeds draft (file names) | 84.72 | 82.64 | 86.81 (plan rejected) | +2.09 |
| TurboMQ | seeds draft (file names) | 19.88 | 19.20 | 19.93 (plan rejected) | +0.05 | |
| hoppscotch-H1 | MoJoFM | seeds draft (export names) | 81.38 | 81.38 | 83.45 | +2.07 |
| TurboMQ | Louvain r=4 (mean of seeds 1-5) | 9.57 | 7.37 | 7.14 | -2.43 | |
| hoppscotch | MoJoFM | seeds draft (export names) | 81.38 | 80.00 | 87.59 | +6.21 |
| TurboMQ | Louvain r=4 (mean of seeds 1-5) | 9.63 | 7.63 | 8.12 | -1.51 | |
| immich | MoJoFM over its 2024 key | seeds draft (file names) | 93.02 | 93.02 | 88.37 | -4.65 |
| TurboMQ | Louvain r=4 (mean of seeds 1-5) | 10.50 | 10.19 | 10.07 | -0.43 | |
| kaneo | MoJoFM | Louvain r=4 (mean of seeds 1-5) | 66.90 | 50.13 | 50.65 (plan rejected) | -16.25 |
| TurboMQ | Louvain r=4 (mean of seeds 1-5) | 16.05 | 10.40 | 9.90 (plan rejected) | -6.15 |
summary.md · each entry's JSON is linked under its table.
Nemotron 3.5 Super VL as the planner
We measured NVIDIA Nemotron 3.5 Super VL as the planner in place of Nemotron 3 Ultra: the same pipeline, prompts and entries, 3 runs per entry for each configuration, with Super VL's thinking off, and on with room to finish (256k-token answers). Ultra was recorded afresh for this comparison; the overview's planner values above are one earlier draw per scramble, and immich's is the demo's recorded plan (planner rules 1). Each cell is the mean over the runs, min to max in parentheses, every run as delivered; bold is the highest on each row.
| Entry | Measure | Best deterministic method | Ultra (medium_effort) | Super VL, thinking off | Super VL, thinking on, 256k |
|---|---|---|---|---|---|
| ghostfolio | MoJoFM | 84.72 seeds draft (file names) | 82.18 (76.39 to 87.50) | 82.18 (80.56 to 83.33) | 86.11 (83.33 to 87.50) |
| TurboMQ | 19.88 seeds draft (file names) | 18.25 (17.36 to 19.20) | 18.08 (17.09 to 18.64) | 18.31 (18.22 to 18.45) | |
| hoppscotch-H1 | MoJoFM | 81.38 seeds draft (export names) | 85.06 (80.00 to 90.34) | 79.77 (77.24 to 82.76) | 90.80 (88.97 to 93.10) |
| TurboMQ | 9.57 Louvain r=4 (mean of seeds 1-5) | 7.82 (7.14 to 8.46) | 7.57 (7.22 to 8.22) | 8.33 (8.22 to 8.41) | |
| hoppscotch | MoJoFM | 81.38 seeds draft (export names) | 83.22 (81.38 to 84.83) | 81.84 (76.55 to 90.34) | 91.26 (88.97 to 94.48) |
| TurboMQ | 9.63 Louvain r=4 (mean of seeds 1-5) | 7.86 (7.67 to 8.13) | 7.95 (7.55 to 8.74) | 8.32 (8.12 to 8.44) | |
| kaneo | MoJoFM | 66.90 Louvain r=4 (mean of seeds 1-5) | 50.74 (50.39 to 50.91) | 56.13 (43.34 to 64.75) | 55.27 (49.61 to 58.75) |
| TurboMQ | 16.05 Louvain r=4 (mean of seeds 1-5) | 9.83 (9.45 to 10.48) | 10.36 (8.55 to 11.87) | 10.97 (8.99 to 12.12) | |
| immich | MoJoFM over its 2024 key (47 of 269 files) | 93.02 seeds draft (file names) | 89.15 (88.37 to 90.70) | 89.92 (88.37 to 90.70) | 88.37 (88.37 to 88.37) |
| TurboMQ | 10.50 Louvain r=4 (mean of seeds 1-5) | 10.20 (10.03 to 10.42) | 9.84 (9.76 to 9.98) | 10.26 (10.08 to 10.35) |
Each configuration's results: ultra, super-vl-direct, super-vl-256k (summary.md; each entry's JSON is next to it).
With thinking on and room to finish (256k-token answers), Super VL's mean MoJoFM is above Ultra's on all 4 scrambles (a permutation test over the runs, stratified by entry, gives p ≈ 0.0007), at 2.5 times Ultra's cost and 6.4 times its time per plan. On TurboMQ none of the 45 planner runs score above the best deterministic method, and on immich (TurboMQ 10.26 against Ultra's 10.20, MoJoFM over its 2024 key 88.37 against Ultra's 89.15) we see no measurable difference between the two. The demo keeps Ultra. Among the reasons: the recorded demo run reproduces byte for byte with the frozen tool, and switching would mean new code and new recordings after the feature freeze; 3 runs per entry are few; in 11 of its 30 calls Super VL's long reasoning names the public project it is planning (ghostfolio, kaneo or immich), and in most of them tries to recall its structure; and Ultra was compared at medium_effort only, never at full thinking.
The full write-up is bench/experiments/s8b-super-vl/README.md in the repository.
Entry by entry
ghostfolio scramble, default
Target apps/api/src/app @ 347cd06a40, 154 movable files.
Scrambled by our own executor in commit 9e65a3a639: 156 scored files moved into type folders (a test next to its source moves with it and isn't scored), 3 declined (they stay), 219 excluded; certificate PASS (static).
Ground truth: 153 feature files in 34 original folders; 54 hard files (their name doesn't give their feature away); 16 of the movable files give their feature away in their path (0 renamed after it, 0 still in a feature folder, 16 under a sub-folder their feature kept; 28 more that no method sees are not counted).
Planner: 42 groups (38 modules), from the seeds draft (export names), plan sha256 9048c87d30c7, $0.0878 when recorded, 1 of 2 calls replayed from cassettes/s7-bench.jsonl and 1 recorded into it ($0.0274 spent by this run).
| Measure | Best deterministic method | Best | Seeds draft | Planner | Planner − best |
|---|---|---|---|---|---|
| MoJoFM | seeds draft (file names) | 84.72 | 82.64 | 86.81 (plan rejected) | +2.09 |
| TurboMQ | seeds draft (file names) | 19.88 | 19.20 | 19.93 (plan rejected) | +0.05 |
- 6 feature files are pinned in the facts (no method can place them) and not scored.
- The validator rejects the planner's plan (banned-name: "app" 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 (export names): plannerDraft takes the export names only when they leave fewer files contested than the file names, and here they leave 4 against 5 (no ground truth is read).
- The planner's plan moves 7 of 154 files out of their draft group and merges 3 draft groups into others (44 draft groups, 42 plan groups). The winning edit, ultra#2, had 44 group entries and 4 moves (4 name their file by its id, not its path); the validator found 3 problems with it (banned-name 3) 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 28 suggestions and its gate kept 12.
- Leakage, over the 154 movable files every method sees: 16 give their feature away in their path (0 still in a feature folder; 0 leaky renames; 16 in a sub-folder that only files of their feature share). Sub-folders kept under the type folders: calculator (6 files, 1 feature), errors (2 files, 2 features), ghostfolio (7 files, 1 feature), queue (3 files, 1 feature); the planner's prompt shows them, and no deterministic method groups by them. 28 more leaky files are pinned or not read by the facts, so no method sees them: not counted.
Table view: every measure of every method
| Method | Kind | Clusters | MoJoFM | ARI | c2c_cvg | Cluster ratio | MoJoFM hard | TurboMQ | Back-edges |
|---|---|---|---|---|---|---|---|---|---|
| B0 type folders | baseline | 10 | 18.06 | 0.014 | 0.000 | 0.26 | 55.10 | 1.64 | 2 |
| name-token (full stem) | baseline | 82 | 61.81 | 0.220 | 0.706 | 2.38 | 28.57 | 18.33 | 5 |
| name-token (anchored) | baseline | 56 | 77.78 | 0.360 | 0.794 | 1.62 | 57.14 | 19.42 | 9 |
| export-token (anchored) | baseline | 55 | 76.39 | 0.347 | 0.765 | 1.59 | 55.10 | 18.79 | 8 |
| seeds draft (file names) | baseline | 44 | 84.72 | 0.441 | 0.794 | 1.26 | 77.55 | 19.88 | 8 |
| seeds draft (export names) | draft | 44 | 82.64 | 0.421 | 0.765 | 1.26 | 75.51 | 19.20 | 7 |
| Louvain r=1 (mean of seeds 1-5) | baseline | 17.6 | 53.20 | 0.334 | 0.229 | 0.49 | 84.89 | 13.84 | 6.6 |
| Louvain r=2 (mean of seeds 1-5) | baseline | 23 | 64.72 | 0.492 | 0.294 | 0.65 | 88.17 | 16.21 | 12 |
| Louvain r=4 (mean of seeds 1-5) | baseline | 30.8 | 75.56 | 0.501 | 0.435 | 0.87 | 85.30 | 19.71 | 7.2 |
| planner (Ultra) (invalid plan: 1 validator error) | planner | 42 | 86.81 | 0.475 | 0.794 | 1.21 | 79.59 | 19.93 | 8 |
Louvain MoJoFM by resolution, seeds 1–5
| Resolution | MoJoFM per seed |
|---|---|
| 1 | 54.86, 52.78, 52.78, 52.78, 52.78 |
| 2 | 65.28, 64.58, 64.58, 63.89, 65.28 |
| 4 | 73.61, 76.39, 76.39, 75.00, 76.39 |
hoppscotch-H1 scramble, H1
Target packages/hoppscotch-backend/src @ 63273f8e59, 186 movable files.
Scrambled by our own executor in commit bf37a0f639: 156 scored files moved into type folders (a test next to its source moves with it and isn't scored), 1 declined (they stay), 22 excluded; certificate PASS (static).
Ground truth: 156 feature files in 25 original folders; 46 hard files (their name doesn't give their feature away); 0 of the movable files give their feature away in their path (0 renamed after it, 0 still in a feature folder, 0 under a sub-folder their feature kept; 3 more that no method sees are not counted).
Planner: 37 groups (35 modules), from the seeds draft (export names), plan sha256 e38cd9aeaa64, $0.1275 when recorded, 1 of 2 calls replayed from cassettes/s7-bench.jsonl and 1 recorded into it ($0.0191 spent by this run).
| Measure | Best deterministic method | Best | Seeds draft | Planner | Planner − best |
|---|---|---|---|---|---|
| MoJoFM | seeds draft (export names) | 81.38 | 81.38 | 83.45 | +2.07 |
| TurboMQ | Louvain r=4 (mean of seeds 1-5) | 9.57 | 7.37 | 7.14 | -2.43 |
- 1 feature file is pinned in the facts (no method can place it) and not scored.
- The planner starts from the seeds draft (export names): plannerDraft takes the export names only when they leave fewer files contested than the file names, and here they leave 12 against 85 (no ground truth is read).
- The planner's plan moves 5 of 186 files out of their draft group and merges 8 draft groups into others (45 draft groups, 37 plan groups). The winning edit, ultra#1, had 45 group entries and 17 moves (17 name their file by its id, not its path); the validator found 4 problems with it (banned-name 2, duplicate-move 1, foreign-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 9 suggestions and its gate kept 2.
- Leakage, over the 186 movable files every method sees: 0 give their feature away in their path (0 still in a feature folder; 0 leaky renames; 0 in a sub-folder that only files of their feature share). Sub-folders kept under the type folders: constants (1 file, 1 feature); the planner's prompt shows them, and no deterministic method groups by them. 3 more leaky files are pinned or not read by the facts, so no method sees them: not counted.
Table view: every measure of every method
| Method | Kind | Clusters | MoJoFM | ARI | c2c_cvg | Cluster ratio | MoJoFM hard | TurboMQ | Back-edges |
|---|---|---|---|---|---|---|---|---|---|
| B0 type folders | baseline | 17 | 9.66 | -0.022 | 0.000 | 0.60 | 30.00 | 1.11 | 15 |
| name-token (full stem) | baseline | 183 | 9.66 | 0.000 | 0.000 | 6.24 | 22.50 | 0.06 | 1 |
| name-token (anchored) | baseline | 175 | 9.66 | 0.000 | 0.000 | 6.24 | 22.50 | 0.06 | 2 |
| export-token (anchored) | baseline | 62 | 74.48 | 0.528 | 0.760 | 2.04 | 45.00 | 6.92 | 47 |
| seeds draft (file names) | baseline | 92 | 23.45 | 0.015 | 0.080 | 3.40 | 15.00 | 2.88 | 48 |
| seeds draft (export names) | draft | 45 | 81.38 | 0.634 | 0.800 | 1.60 | 62.50 | 7.37 | 36 |
| Louvain r=1 (mean of seeds 1-5) | baseline | 9.4 | 33.38 | 0.299 | 0.048 | 0.34 | 56.50 | 4.44 | 22.4 |
| Louvain r=2 (mean of seeds 1-5) | baseline | 16.6 | 53.10 | 0.499 | 0.216 | 0.62 | 74.00 | 6.72 | 57.4 |
| Louvain r=4 (mean of seeds 1-5) | baseline | 33.2 | 76.27 | 0.601 | 0.616 | 1.22 | 80.50 | 9.57 | 70.4 |
| planner (Ultra) | planner | 37 | 83.45 | 0.641 | 0.800 | 1.40 | 60.00 | 7.14 | 42 |
Louvain MoJoFM by resolution, seeds 1–5
| Resolution | MoJoFM per seed |
|---|---|
| 1 | 26.21, 34.48, 42.76, 33.10, 30.34 |
| 2 | 55.86, 51.03, 54.48, 51.03, 53.10 |
| 4 | 74.48, 76.55, 76.55, 80.00, 73.79 |
hoppscotch scramble, default
Target packages/hoppscotch-backend/src @ 63273f8e59, 186 movable files.
Scrambled by our own executor in commit a38bd84671: 156 scored files moved into type folders (a test next to its source moves with it and isn't scored), 1 declined (they stay), 22 excluded; certificate PASS (static).
Ground truth: 156 feature files in 25 original folders; 46 hard files (their name doesn't give their feature away); 0 of the movable files give their feature away in their path (0 renamed after it, 0 still in a feature folder, 0 under a sub-folder their feature kept; 3 more that no method sees are not counted).
Planner: 29 groups (22 modules), from the seeds draft (file names), plan sha256 615def2cbbab, $0.1375 when recorded, 2 calls replayed from cassettes/s7-bench.jsonl ($0.0000 spent by this run).
| Measure | Best deterministic method | Best | Seeds draft | Planner | Planner − best |
|---|---|---|---|---|---|
| MoJoFM | seeds draft (export names) | 81.38 | 80.00 | 87.59 | +6.21 |
| TurboMQ | Louvain r=4 (mean of seeds 1-5) | 9.63 | 7.63 | 8.12 | -1.51 |
- 1 feature file is pinned in the facts (no method can place it) and not scored.
- 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 12 against 10 (no ground truth is read).
- The planner's plan moves 7 of 186 files out of their draft group and merges 14 draft groups into others (43 draft groups, 29 plan groups). The winning edit, ultra#1, had 43 group entries and 7 moves; the validator found 2 problems with it (foreign-name 2) and dropped or repaired each before applying it. The critic made 9 suggestions and its gate kept 8.
- Leakage, over the 186 movable files every method sees: 0 give their feature away in their path (0 still in a feature folder; 0 leaky renames; 0 in a sub-folder that only files of their feature share). Sub-folders kept under the type folders: constants (1 file, 1 feature); the planner's prompt shows them, and no deterministic method groups by them. 3 more leaky files are pinned or not read by the facts, so no method sees them: not counted.
Table view: every measure of every method
| Method | Kind | Clusters | MoJoFM | ARI | c2c_cvg | Cluster ratio | MoJoFM hard | TurboMQ | Back-edges |
|---|---|---|---|---|---|---|---|---|---|
| B0 type folders | baseline | 17 | 9.66 | -0.022 | 0.000 | 0.60 | 30.00 | 1.11 | 15 |
| name-token (full stem) | baseline | 109 | 57.24 | 0.393 | 0.560 | 3.48 | 30.00 | 6.41 | 44 |
| name-token (anchored) | baseline | 56 | 75.17 | 0.541 | 0.760 | 1.88 | 50.00 | 7.43 | 53 |
| export-token (anchored) | baseline | 62 | 74.48 | 0.528 | 0.760 | 2.04 | 45.00 | 6.92 | 47 |
| seeds draft (file names) | draft | 43 | 80.00 | 0.593 | 0.800 | 1.56 | 57.50 | 7.63 | 37 |
| seeds draft (export names) | baseline | 45 | 81.38 | 0.634 | 0.800 | 1.60 | 62.50 | 7.37 | 36 |
| Louvain r=1 (mean of seeds 1-5) | baseline | 8.4 | 32.55 | 0.278 | 0.032 | 0.30 | 57.00 | 4.02 | 17.2 |
| Louvain r=2 (mean of seeds 1-5) | baseline | 17 | 56.96 | 0.516 | 0.272 | 0.64 | 77.00 | 6.74 | 58 |
| Louvain r=4 (mean of seeds 1-5) | baseline | 33.6 | 74.62 | 0.601 | 0.616 | 1.26 | 79.00 | 9.63 | 76.4 |
| planner (Ultra) | planner | 29 | 87.59 | 0.794 | 0.840 | 1.16 | 67.50 | 8.12 | 30 |
Louvain MoJoFM by resolution, seeds 1–5
| Resolution | MoJoFM per seed |
|---|---|
| 1 | 29.66, 35.17, 35.86, 32.41, 29.66 |
| 2 | 56.55, 51.72, 59.31, 57.93, 59.31 |
| 4 | 75.86, 73.79, 74.48, 75.86, 73.10 |
immich real
Target server/src @ 02063972e8, 269 movable files.
A real type-sliced target, with no complete ground truth. MoJoFM, ARI, c2c_cvg, the cluster ratio and MoJoFM hard are over its 2024 key, immich's March 2024 domain-layer feature folders followed through git history to the pinned commit: 47 of the 269 movable files in 23 features, mostly in src/services/ (23) and src/dtos/ (22) with 2 elsewhere; 41 of the 47 are named after their feature (key bench/ground-truth/immich-2024.rsf, details in bench/ground-truth/README.md in the repository). Every method places all 269, and only those 47 count. TurboMQ (higher is more modular) and back-edges (lower is better) cover every file.
Planner: 59 groups (38 modules), from the seeds draft (file names), plan sha256 b4c7c548883c, $0.1998 when recorded, 2 calls replayed from cassettes/s6-immich.jsonl ($0.0000 spent by this run).
| Measure | Best deterministic method | Best | Seeds draft | Planner | Planner − best |
|---|---|---|---|---|---|
| MoJoFM over its 2024 key | seeds draft (file names) | 93.02 | 93.02 | 88.37 | -4.65 |
| TurboMQ | Louvain r=4 (mean of seeds 1-5) | 10.50 | 10.19 | 10.07 | -0.43 |
- 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 31 against 29 (no ground truth is read).
- The planner's plan moves 9 of 269 files out of their draft group and merges 23 draft groups into others (81 draft groups, 59 plan groups). The winning edit, ultra#3, had 81 group entries and 29 moves; the validator found 4 problems with it (foreign-name 3, kind-conflict 1) and dropped or repaired each before applying it. The critic made 12 suggestions and its gate kept 6.
Table view: every measure of every method
| Method | Kind | Clusters | MoJoFM | ARI | c2c_cvg | Cluster ratio | MoJoFM hard | TurboMQ | Back-edges |
|---|---|---|---|---|---|---|---|---|---|
| B0 type folders | baseline | 10 | 11.63 | -0.006 | 0.000 | 0.17 | 33.33 | 1.94 | 25 |
| name-token (full stem) | baseline | 138 | 81.40 | 0.552 | 0.913 | 1.35 | 33.33 | 9.03 | 212 |
| name-token (anchored) | baseline | 118 | 90.70 | 0.731 | 0.957 | 1.17 | 33.33 | 9.51 | 129 |
| export-token (anchored) | baseline | 122 | 81.40 | 0.624 | 0.826 | 1.35 | 33.33 | 8.39 | 127 |
| seeds draft (file names) | draft | 81 | 93.02 | 0.806 | 1.000 | 1.13 | 33.33 | 10.19 | 141 |
| seeds draft (export names) | baseline | 83 | 81.40 | 0.613 | 0.826 | 1.30 | 33.33 | 9.11 | 142 |
| Louvain r=1 (mean of seeds 1-5) | baseline | 9.2 | 23.72 | 0.104 | 0.052 | 0.26 | 86.67 | 3.81 | 20.8 |
| Louvain r=2 (mean of seeds 1-5) | baseline | 25.6 | 55.35 | 0.263 | 0.331 | 0.74 | 33.33 | 7.09 | 136.8 |
| Louvain r=4 (mean of seeds 1-5) | baseline | 47.6 | 71.63 | 0.413 | 0.661 | 1.16 | 33.33 | 10.50 | 166 |
| planner (Ultra) | planner | 59 | 88.37 | 0.759 | 0.913 | 1.04 | 33.33 | 10.07 | 118 |
Louvain MoJoFM over its 2024 key by resolution, seeds 1–5
| Resolution | MoJoFM per seed |
|---|---|
| 1 | 25.58, 25.58, 25.58, 20.93, 20.93 |
| 2 | 53.49, 53.49, 53.49, 58.14, 58.14 |
| 4 | 65.12, 74.42, 74.42, 72.09, 72.09 |
kaneo scramble, default
Target apps/api/src @ b80818fe2e, 454 movable files.
Scrambled by our own executor in commit aad6fc97e3: 400 scored files moved into type folders (a test next to its source moves with it and isn't scored), 1 declined (they stay), 12 excluded; certificate FAIL (static, failing K3c, K4).
Ground truth: 401 feature files in 47 original folders; 234 hard files (their name doesn't give their feature away); 54 of the movable files give their feature away in their path (53 renamed after it, 1 still in a feature folder, 0 under a sub-folder their feature kept; 4 more that no method sees are not counted).
Planner: 64 groups (55 modules), from the seeds draft (file names), plan sha256 bcb39422b864, $0.1714 when recorded, 1 of 2 calls replayed from cassettes/s7-bench.jsonl and 1 recorded into it ($0.0649 spent by this run).
| Measure | Best deterministic method | Best | Seeds draft | Planner | Planner − best |
|---|---|---|---|---|---|
| MoJoFM | Louvain r=4 (mean of seeds 1-5) | 66.90 | 50.13 | 50.65 (plan rejected) | -16.25 |
| TurboMQ | Louvain r=4 (mean of seeds 1-5) | 16.05 | 10.40 | 9.90 (plan rejected) | -6.15 |
- 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.
Table view: every measure of every method
| Method | Kind | Clusters | MoJoFM | ARI | c2c_cvg | Cluster ratio | MoJoFM hard | TurboMQ | Back-edges |
|---|---|---|---|---|---|---|---|---|---|
| B0 type folders | baseline | 10 | 13.32 | 0.017 | 0.000 | 0.17 | 16.44 | 1.07 | 8 |
| name-token (full stem) | baseline | 426 | 13.05 | 0.012 | 0.149 | 7.96 | 14.61 | 2.38 | 4 |
| name-token (anchored) | baseline | 156 | 49.61 | 0.254 | 0.426 | 2.91 | 30.59 | 9.75 | 95 |
| export-token (anchored) | baseline | 252 | 26.37 | 0.080 | 0.085 | 4.96 | 29.22 | 3.32 | 61 |
| seeds draft (file names) | draft | 114 | 50.13 | 0.236 | 0.404 | 2.23 | 31.96 | 10.40 | 72 |
| seeds draft (export names) | baseline | 104 | 31.07 | 0.078 | 0.064 | 1.96 | 30.59 | 6.30 | 104 |
| Louvain r=1 (mean of seeds 1-5) | baseline | 11.2 | 29.45 | 0.213 | 0.021 | 0.19 | 37.35 | 4.92 | 16.2 |
| Louvain r=2 (mean of seeds 1-5) | baseline | 23 | 51.02 | 0.389 | 0.094 | 0.45 | 49.50 | 10.01 | 43.4 |
| Louvain r=4 (mean of seeds 1-5) | baseline | 39.6 | 66.90 | 0.465 | 0.311 | 0.80 | 64.48 | 16.05 | 60.8 |
| planner (Ultra) (invalid plan: 1 validator error) | planner | 64 | 50.65 | 0.248 | 0.277 | 1.32 | 36.07 | 9.90 | 66 |
Louvain MoJoFM by resolution, seeds 1–5
| Resolution | MoJoFM per seed |
|---|---|
| 1 | 27.15, 31.85, 27.68, 32.90, 27.68 |
| 2 | 51.44, 50.13, 48.30, 52.22, 53.00 |
| 4 | 63.97, 65.80, 68.15, 68.15, 68.41 |