Re-verified the 10 load-bearing claims with 2 adversarial votes each
(source-fidelity + independent refutation, 20 agents). 7 upheld, 3
disputed — all shipped code changes survive; disputes were attribution
errors, now corrected:
- Mean-source-norm calibration is from the Pico paper (arXiv 2604.16826
"Crowded in B-Space"), not KnOTS — corrected throughout
- k/D chance baseline + canonical-correlation identity are
first-principles facts (proven in-vote: Bjorck-Golub principal
angles; Haar-uniform expectation), not statements of the Pico paper
Appends an addendum with the full tally and the load-bearing caveats:
J1/J0 bias vanishes at rho=0 (MC-verified at 4M samples); the 0.239
multi-SLERP collapse figure was MergeKit's tangent-space multislerp
(Karcher change independently justified via Buss & Fillmore 2001);
stable rank <-> quality is non-monotone (CART bell curve, AdaRank) —
keep the one-sided cap, never maximize rank; DELLA epsilon-convention
difference between paper and official repo.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
From the deep-research math validation (docs/research/2026-06-11-math-validation.md):
1. Excess conflict compared a magnitude-WEIGHTED mismatch ratio
(min(|a|,|b|) weights) against the UNWEIGHTED arccos(rho)/pi
expectation (Sheppard / degree-0 arc-cosine kernel). The two are not
the same statistic (Cho & Saul: J1 != J0 angular dependence), and for
correlated LoRAs mismatches concentrate on small-magnitude positions,
so the weighted ratio sat systematically below the baseline — real
conflict was under-detected (excess clamped to 0), biasing decisions
away from TIES. Now: unweighted mismatch fraction AND correlation
computed on the same noise-floored position set, baseline
arccos(rho_strong)/pi. Weighted ratio kept as a separate metric.
2. slerp mode for N>=3 diffs replaced iterative pairwise SLERP with a
weighted Karcher (Frechet) mean on the unit hypersphere (chordal-mean
init, log/exp-map iteration, existing norm correction). Iterative
multi-SLERP is order-dependent and collapses empirically (scores
below plain linear averaging at m=5; Karcher 0.610 vs multi-SLERP
0.239). N=2 keeps standard SLERP (the Karcher mean reduces to it).
Bump AUTOTUNER_ALGO_VERSION 1.7.0 -> 1.8.0 and ANALYSIS_CACHE_VERSION
1.7.1 -> 1.8.0 (pair metrics and merge behavior changed). Adds the full
cited validation report and 8 tests: identical/negated/independent
vectors give zero excess, count-concentrated conflict now detected
(old formula provably clamped it to 0), Karcher order-independence,
symmetric-direction, weight-pull, and N=2 SLERP regression (244 pass).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Wire the documented record_dataset option: new widget on the AutoTuner
node calls _save_tuner_dataset_entry after each full sweep (the
function existed, was tested, and was documented in the wiki — but
nothing ever called it). Wiki wording aligned: entries are recorded
on full sweeps only, cache/memory replays don't append.
- Merge-on-write for shared cache files: lora/pair/analysis cache saves
and the content-hash cache re-read the on-disk state and overlay the
caller's keys (caller wins; None never clobbers a real lora entry;
analysis entries are remapped to the caller's stack order first).
Entries are content-derived so same-key collisions hold equivalent
data — this removes cross-process lost updates without resorting to
cross-platform file locking. The GC's prune save passes merge=False
so dead keys aren't resurrected.
- Model/clip identity tracking via weakrefs (_track_model_identity):
bare id() comparison could alias a new object reusing a freed
object's address and serve a stale cached merge; the guard now also
detects clip swaps and id reuse. Shared by optimize_merge and
auto_tune.
- _extract_block_name is lru_cached (pure function, called per prefix
per smoothing pass with two regex evaluations) and drops its local
re import.
Adds 3 test classes (235 total pass).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
When rerun_mode=True and rerun_source='original_progress', restrict the
shuffled combo list to hashes present in the original combo_progress.json
before iteration. Lets the backfill rerun replay exactly the combos that
were processed originally, ignoring any LoRAs added since and any combos
that were never run.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Runs the full local sweep and uploads the resulting config to the HF
community cache, but never replays HF cache hits. Intended for backfill
reruns that need to re-publish enriched configs without being
short-circuited by the existing cached (unenriched) entry.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Task 2: during rerun mode, check HF for a matching enriched config
(any candidate carries per_prefix_decisions); if found, mark the combo
complete and advance. Adds per-instance caches for the HF file list
and per-combo results so the extra traffic is bounded.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Small side plan: temporary BOOLEAN input on LoRACombinationGenerator that
routes progress tracking to combo_progress_rerun.json, enabling a full
re-run of the 400-combo collection to backfill per-prefix decisions
once Phase A of the estimator plan lands. To be reverted after use.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Task-by-task TDD plan for the case-based retrieval estimator. Covers
per-prefix decision capture (Phase A), feature extractor + index builder,
LoRAEstimator runtime, and the ComfyUI node surface.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
k-NN retrieval over HF community cache, emits tuner_data for the
existing optimizer replay path. Per-prefix instrumentation lands
first, dataset gets re-collected, estimator ships with both global
and per-prefix retrieval.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Node that exhaustively generates all 2/3-way LoRA combinations for
AutoTuner dataset collection. Uses seed-based deterministic shuffle
with lightweight completion tracking.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The doc previously stated voice identity enters "exclusively" through
cross-attention, which was an inference not supported by any source.
Replace with the actual quote from the ACE-Step 1.5 paper and clarify
that voice info propagates through self-attention/MLP after injection.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use actual node names (LoRA Stack, LoRA Optimizer, LoRA AutoTuner)
instead of nonexistent "ZImage LoRA Merger node". Broaden recommendations
to cover all ACE-Step LoRA merges, not just vocal + music.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add dedicated architecture support for ACE-Step music generation model LoRAs
with optimizations informed by the v1.5 hybrid attention architecture — cross-
attention is the primary voice-identity pathway (always global, attending to
timbre+lyric+text conditioning), while self-attention alternates sliding window
(local timbre) and global GQA (long-range structure).
Changes:
- New `acestep_dit` preset: wider orthogonal band (0.30), higher TIES threshold
(0.35), full magnitude preservation (floor 1.0) — biases toward SLERP over
TIES to prevent voice signal trimming in cross-attn layers
- Fix `to_out` → `o_proj` normalization bug (was producing `out_proj`)
- Add v1.0 detection and normalization (transformer_blocks, speaker_embedder,
lyric_encoder mapped to v1.5 canonical form)
- Refine WAN detection to exclude transformer_blocks (prevents v1.0 misdetect)
- Add `acestep_dit` to all architecture_preset UI dropdowns
- 25 new tests (detection, normalization, preset)
- Technical reference doc with architecture analysis and design rationale
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New page covers how it works, privacy model, setup, file structure,
score-based replacement, cache hit log examples, version compatibility,
and troubleshooting. Wired into sidebar and home page.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Removes the passive download_only option to encourage contribution.
Users who want community results need to also contribute back.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces dead record_dataset param with community_cache dropdown
(disabled / download_only / upload_and_download).
Downloads are anonymous via urllib; uploads require HF_TOKEN and
huggingface_hub. LoRA filenames are never shared — content hashes
(SHA256[:16]) are used as keys. Per-LoRA/pair conflict metrics and
winning merge configs are shared; network errors fall back silently to
the full local sweep.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add memory_mode, selection, output_mode to AutoTuner entries in Nodes.md
- Add output_mode, memory_mode, selection sections to Configuration-Guide
- Add AutoTuner Caching Infrastructure section covering all three cache types
(.memory.json, .analysis.json, .analysis.partial.json) and how to clear them
- Add 3 troubleshooting entries for cache-related issues in Tips-and-Troubleshooting
- Update speed tip to mention memory_mode=auto
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Task 4: guard min(participating) against empty set
- Task 5: add CPU path hit check before executor.submit
- Task 5/6: guard pair extraction with entry is not None
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5-task plan: parser, passthrough node, tree executor,
optimize_merge integration, and verification.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hierarchical merge topology via text formula expression.
Users define merge order (e.g., "(1+2) + 3") to prevent
style LoRAs from being drowned out by character LoRA majority.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Clean up README, wiki Nodes, How-It-Works, and maintainer sync docs
to reflect removal of calibration_data feature.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add educational SVG/PNG diagram explaining orthogonal vs conflicting vs
aligned LoRA relationships and when to change merge settings. Update all
README references to use new setting names (merge_refinement,
patch_compression, strategy_set, additive).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>