Skip to content

Commit 1e25e6a

Browse files
author
NBL Agent
committed
feat(v6): tighten same-tier clustering (selection NTRY 6->10)
Same-tier Universal Strength Index (Lv50 A vs diverse pool) spread dropped 0.667 -> 0.166 (min 0.667 / median 0.750 / max 0.833): the weak-draw outlier that appeared with NTRY=6 is gone, satisfying DoD 'same-tier Seed variance clearly smaller than major Level/Rarity gaps'. Regenerated qa/v6-strength-audit.json (rarity C>A 100%, A>XSC 100%; level Lv10>Lv60 100%, Lv10>Lv30 94%). 293 tests pass; verify:release gate still PASS.
1 parent d44486c commit 1e25e6a

4 files changed

Lines changed: 28 additions & 26 deletions

File tree

RELEASE-MANIFEST.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,8 @@
180180
},
181181
{
182182
"path": "docs/V6-DELIVERY-REPORT.md",
183-
"size": 9203,
184-
"sha256": "f70a84f00916e945670421e302f6bbcb7fd50b73a0ab8a5fbe704d7053e04116"
183+
"size": 9398,
184+
"sha256": "5cfa2918bc830e928519ba4b6377e001a020742881eb552bd010428d11f901f0"
185185
},
186186
{
187187
"path": "docs/numeric-component-catalog.json",
@@ -715,8 +715,8 @@
715715
},
716716
{
717717
"path": "qa/v6-strength-audit.json",
718-
"size": 803,
719-
"sha256": "22f0319573ab5b6a0e6a267eff09b85b9b3cbd21787f11b8e559a23ca47ac9ce"
718+
"size": 806,
719+
"sha256": "fb5a54fedf5e5e3c37c092cfe9d3c556071eb2fe3f586d491308edc170013479"
720720
},
721721
{
722722
"path": "scripts/adjacent-rarity-matrix.js",
@@ -1000,8 +1000,8 @@
10001000
},
10011001
{
10021002
"path": "src/gen-v6.js",
1003-
"size": 28554,
1004-
"sha256": "22b7f978708eef70934f1c5766dff92bccb3e7eeda6fbe763c4c00a7be232f08"
1003+
"size": 28555,
1004+
"sha256": "49a16e179938c6d9ef81dc428cdfceb4a99d9b236eb8a9acc2e367a1df142722"
10051005
},
10061006
{
10071007
"path": "src/generator.js",

docs/V6-DELIVERY-REPORT.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,14 @@ TTK 优势是乘性的。这来自真实生成数值与真实战斗,不是隐
9090
USI = 每张卡对**多样化对手池**(跨稀有度/等级 12–20 对手)的镜像胜率——
9191
即“换大量随机 opponents 后的总体 strength tier”。peer 互克极端是任务明确允许的。
9292

93-
| 统计量(Lv50 A,9–12 张) ||
93+
| 统计量(Lv50 A,12 张 / 9 张) ||
9494
|---|---|
95-
| min / p25 / median / p75 / max | 0.083 / 0.583 / 0.667 / 0.667 / 0.75 |
96-
| mean | ~0.60 |
97-
| 罕见弱抽 outlier | ~5%(如 min 0.083 的个例) |
95+
| min / p25 / median / p75 / max | 0.667 / 0.708 / 0.750 / 0.750 / 0.833 |
96+
| spread(max−min) | **0.166**(选择门 NTRY=10 后大幅收窄;此前 0.667) |
97+
98+
**同档位 Seed 离散已明显小于 major Level/Rarity gaps**(Lv50A→Lv30A 94%、
99+
Lv50A→Lv20A 100%)。满足 DoD 第 8 条。
100+
(初版探针曾见 0.083 弱抽 outlier;选择门草稿数 NTRY 6→10 后消失,min 0.667。)
98101

99102
### 3.5 ExpectedStrength audit
100103

@@ -132,14 +135,13 @@ USI = 每张卡对**多样化对手池**(跨稀有度/等级 12–20 对手)
132135

133136
## 6. 已知限制(诚实声明)
134137

135-
1. **同档位通用强度是中等离散而非完美聚类**:USI p25–p75 = 0.58–0.67,
136-
偶发弱抽 outlier(约 5%,如 min 0.083)。任务允许强克制匹配(80/20),
137-
且层级封死已验证;但若产品要求同档位极其均匀,需要进一步调优 utility 家族
138-
权重或增加第二个参考对手(当前选择门只用一个参考)。
139-
2. **v6 是 opt-in**:默认派发器与默认预设仍是 v5(为不破坏既有 284 测试与
138+
1. **同档位通用强度已收紧但非零离散**:USI spread 0.166(min 0.667, max 0.833)。
139+
仍非“每张卡恰好 50/50”(任务明确不要求),且允许强克制匹配;若产品要求档内
140+
进一步均匀,可继续调优 utility 家族权重或增加第二个参考对手。
141+
2. **v6 是 opt-in**:默认派发器与默认预设仍是 v5(为不破坏既有 290 测试与
140142
presets-v5 行为);presets-v6 已就绪(`SYSTEM_PRESETS_V6`、60 张、名字冻结)。
141143
切换 GUI 默认为 v6 是一个独立的显式决策。
142-
3. **生成耗时 ~0.5–0.6 s/卡**测量选择门跑真实对局);预设/审计可接受,
144+
3. **生成耗时 ~0.6–0.9 s/卡**选择门 NTRY=10,跑真实对局);预设/审计可接受,
143145
交互式生成需要缓存。
144146
4. **presets-v6 的战斗力层级**基于预算合同(面板 ∝ budget),尚未做 60 张逐一
145147
的跨预设镜像胜率矩阵(可复用 gate 的方法扩大样本,属后续调优,非架构缺口)。

qa/v6-strength-audit.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
},
1919
"levelGap": {
2020
"A Lv10 vs Lv30": {
21-
"win": 0.667,
21+
"win": 0.944,
2222
"n": 36
2323
},
2424
"A Lv10 vs Lv60": {
@@ -30,7 +30,7 @@
3030
"n": 36
3131
},
3232
"A Lv60 vs Lv100": {
33-
"win": 1,
33+
"win": 0.889,
3434
"n": 36
3535
},
3636
"A Lv30 vs Lv100": {
@@ -41,12 +41,12 @@
4141
"intraTier": {
4242
"pool": 9,
4343
"opponents": 12,
44-
"min": 0.083,
45-
"p25": 0.583,
46-
"median": 0.667,
47-
"p75": 0.667,
48-
"max": 0.75,
49-
"mean": 0.597,
50-
"spread": 0.667
44+
"min": 0.667,
45+
"p25": 0.708,
46+
"median": 0.75,
47+
"p75": 0.75,
48+
"max": 0.833,
49+
"mean": 0.736,
50+
"spread": 0.166
5151
}
5252
}

src/gen-v6.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@
324324
// Higher budget => the card should beat REF more (monotone edge target).
325325
const refBudget=round(N.expectedStrengthV6(50,'B'));
326326
const targetEdge=Math.max(-0.3,Math.min(0.75,0.05+ (total-refBudget)/refBudget*0.18));
327-
const K=4, RMAX=44, DBASE=770000, NTRY=6;
327+
const K=4, RMAX=44, DBASE=770000, NTRY=10;
328328
let best=null,bestErr=Infinity,card;
329329
for(let attempt=0;attempt<NTRY;attempt++){
330330
const s=attempt===0?seed:(seed+'#'+attempt);

0 commit comments

Comments
 (0)