# VERTICAL SLICE - NOT FOR PRODUCTION # Validation Question: 同调位读数是否由「通关次数 + Boss 击杀数」经 attunement_growth.tres 谓词表 # 实时求值(Σ达成 grant clamp slot_cap),迭代 10 过渡键 transitional_sync_slots 得以退役(P0) # Date: 2026-10-03(迭代 11 第①批 秘宝同调实施批 T3——任务书 v1.1 §六 T3;设计权威底稿 proposal §2) # 同调位求值服务:计数源组装(save 账本 → 计数字典)与实时求值,纯函数零副作用。 # 读数源切换(迭代 10 欠账③):装配面消费方(营地装配覆盖层 T4/冒险开始装配注入 T6)一律经本服务取 # Slots;过渡键 adventure.transitional_sync_slots 的在途读取面(aux_items 持有上限 gate/战斗内沉没/ # 停点替换交互/main 同调位呈现)系过渡渠道承载——T7 退役面切换时随渠道一并消亡(该批读数源切换的 # 正主落点,06 欠账③销账注记随 T7/T9)。过渡期切早 = off 态 MC 对 81000 锚添新扰动(fresh 档计数全零 # → Slots=0 ≠ 过渡键 1),违「attune=off 逐位一致」🔴 契约——故本服务先立、在途面 T7 切。 # attune=off 纪律:零 await、零 RNG、零写副作用(🔴 契约 3 的服务侧承载)。 class_name Attunement extends RefCounted # 计数源组装(save = SaveManager 或 null——模拟/冒烟未注入档,按全零计数求值) static func counters_from_save(save) -> Dictionary: if save == null: return {} return save.attunement_counters() # 同调位实时求值(营地进冒险前求值一次 + 装配覆盖层实时呈现共用同一口径) static func slots(db, save) -> int: if db == null or db.attunement_growth == null: return 0 return db.attunement_growth.slots(counters_from_save(save))