fix(design): 中性色相常量改容差断言 + 取色接线注释指向真正的守护测试(复审 r1 p2)

- `palettes.rs::neutral_hue_is_the_default_seed_hue`:`to_bits()` 位相等 → 1e-9° 容差。
  色相来自 `atan2(a).to_degrees()`,`NEUTRAL_HUE_DEG` 的字面值是在 Windows(UCRT) 上取的,
  CI 的 ubuntu(glibc) 理论上可差 1 ulp 就让位相等在另一个 OS 上红;而这条要抓的是「换了
  `DEFAULT_SEED` 却没复核常量」(偏几十度),1e-9° 足够且不受平台末位差影响。
  `tests/card_neutral.rs::sky_card_is_bit_identical_to_the_product_baseline` 是**同平台内**
  两个算出来的值互比,继续用位相等(p1 硬约束的钉子,不动)。
  常量文档同步说明「为什么不用 `to_bits`」。
- `resolve/mod.rs` 取色分支的注释:原来只写「`tests/card_neutral.rs` 有反证」,而那条用例
  测的是 `Seed::scheme` 生成器层、覆盖不到这里(复审 r1 p1-1 的病根)。改成点名
  `resolved_image_scheme_keeps_tinting_from_the_seed`——走的就是本函数的公开入口。

`palettes.rs` 仍是 400 行(本轮改 doc 同时压缩了相邻说明,没突破上限)。
This commit is contained in:
AskaEth committed 2026-11-02 13:12:43 +08:00
1 parent b748986aae
commit 4b059201fd
2 files changed
+25 -22

No files matched your search

+3 -1
View File
@@ -180,7 +180,9 @@ fn try_level(input: Option<ImageInput<'_>>, card: Card, flavor: SchemeFlavor) ->
// 取色方案的表面色**跟着图像种子染色**,只借当前色卡的中性彩度定浓淡(D43):
// 这是与色卡路径刻意不同的一处——色卡固定中性色相、只换强调色,取色保留整幅染色
// (那是用户要的 Monet 体验)。别把两条路径「统一处理」,`tests/card_neutral.rs` 有反证。
// (那是用户要的 Monet 体验)。别把两条路径「统一处理」:这条接线的守护测试是
// `tests/card_neutral.rs::resolved_image_scheme_keeps_tinting_from_the_seed`(走的就是
// 本函数所在的 `resolve_source`;只测 `Seed::scheme` 的那条覆盖不到这里,复审 r1 p1-1)。
let (scheme, adjustments) = converge(seed.scheme(flavor, card.neutral_chroma));
let report = check(&scheme);
if !report.is_clean() {