docs(memory): 十一键措辞收口(seed* + snapshot*)
tempTtlSec 落地后,`memory-tidy.json` 的播种契约就是**十一键**,而三处文件的注释仍 写「十键」。这些是**过时的陈述**(不是风格问题):下一位读者会从「快照契约:十键非 nil」里读出一个错误的口径,而 `memoryTidySeedComplete` 实际校验的正是十一键。 改的只是措辞,一行逻辑没动: - internal/config/runtimeconfig/memorytidy_seed.go:25,160 - internal/config/runtimeconfig/memorytidy_seed_test.go:19,27,62,82,97,214 - internal/runtime/memory/tidy_snapshot_test.go:14,27,159 (`cmd/cyrene/wire_memory_tidy.go:65` 还有同类的一处「这十键」,该文件属 M3 的 scope,未动 —— 塔已转 M3。) 验收:go build ./... + go vet ./... + go test -count=1 ./... 全绿。
This commit is contained in:
1 parent
979d1cfbb2
commit
5daba92d0f
3 files changed
+10
-10
No files matched your search
@@ -22,7 +22,7 @@
|
||||
// 残缺);调用方记一条 WARN 即可 —— 播种失败时运行期仍按 `.env` + 代码默认跑,
|
||||
// 行为与播种前逐字相同。
|
||||
//
|
||||
// 日志**只打路径、原因与键名,不打值**:这十键今天都不是凭据,但「配置日志不打值」
|
||||
// 日志**只打路径、原因与键名,不打值**:这十一键今天都不是凭据,但「配置日志不打值」
|
||||
// 是本仓既有口径(materialize.go 的「绝不打 apiKey」),这里从一开始就照做,免得
|
||||
// 日后加一个敏感键时要回头改日志。
|
||||
package runtimeconfig
|
||||
@@ -157,7 +157,7 @@ func writeMemoryTidySeed(log *slog.Logger, path string, seed MemoryTidyTuning, r
|
||||
return MemoryTidySeed{Written: true}, nil
|
||||
}
|
||||
|
||||
// memoryTidySeedComplete 报告种子是否「十键齐全且值可用」。
|
||||
// memoryTidySeedComplete 报告种子是否「十一键齐全且值可用」。
|
||||
//
|
||||
// 为什么要「齐全」而不是「非 nil 就放行」:MemoryTidyTuning 的指针语义是「nil = 没配」,
|
||||
// 一份缺键的种子写下去虽然与「不写」在读取端等价,但它会让文件里出现 null —— 这份文件
|
||||
|
||||
@@ -16,7 +16,7 @@ import (
|
||||
// 本文件锁定**启动播种**(memorytidy_seed.go;主人 2026-10-07:「**`.env` 只做兜底
|
||||
// 用** …… 后端**自动创建**独立的面板配置文件」)的四条纪律:
|
||||
//
|
||||
// ① 文件不存在 ⇒ 按调用方给的「当前生效值」播种(**十键齐全**,不是只播老六键);
|
||||
// ① 文件不存在 ⇒ 按调用方给的「当前生效值」播种(**十一键齐全**,不是只播老六键);
|
||||
// ② 文件已存在 ⇒ **一个字节都不动**(也不留 `.tmp`);
|
||||
// ③ 文件损坏 ⇒ **不写盘**(WARN + 按 `.env` 跑),绝不「修好它」;
|
||||
// ④ 幂等:连跑两次只在第一次写盘。
|
||||
@@ -59,7 +59,7 @@ func seedPath(t *testing.T) string {
|
||||
return filepath.Join(t.TempDir(), "config", memoryTidyFileName)
|
||||
}
|
||||
|
||||
// decodeSeed 把盘上的文件解成键集合,供「十键齐全」的断言(比结构体更贴近主人看到
|
||||
// decodeSeed 把盘上的文件解成键集合,供「十一键齐全」的断言(比结构体更贴近主人看到
|
||||
// 的那份文件)。
|
||||
func decodeSeed(t *testing.T, path string) map[string]json.RawMessage {
|
||||
t.Helper()
|
||||
@@ -79,7 +79,7 @@ func assertNoTempLeft(t *testing.T, path string) {
|
||||
}
|
||||
|
||||
// TestSeedMemoryTidy_SeedsMissingFile 是本任务的主用例:文件不存在 ⇒ 播种,且**内容
|
||||
// 就是调用方给的快照**(十键齐全、含四项频率键),目录也一并建出来。
|
||||
// 就是调用方给的快照**(十一键齐全、含四项频率键),目录也一并建出来。
|
||||
func TestSeedMemoryTidy_SeedsMissingFile(t *testing.T) {
|
||||
t.Parallel()
|
||||
path := seedPath(t) // 连 config/ 目录都不存在
|
||||
@@ -94,7 +94,7 @@ func TestSeedMemoryTidy_SeedsMissingFile(t *testing.T) {
|
||||
}
|
||||
assertNoTempLeft(t, path)
|
||||
|
||||
// 十键齐全(含新增的四项频率键)——「别只播老六键」的断言就在这里。
|
||||
// 十一键齐全(含新增的四项频率键)——「别只播老六键」的断言就在这里。
|
||||
keys := decodeSeed(t, path)
|
||||
for _, key := range memoryTidySeedKeys {
|
||||
if _, ok := keys[key]; !ok {
|
||||
@@ -211,7 +211,7 @@ func TestSeedMemoryTidy_SeedsBlankFile(t *testing.T) {
|
||||
t.Fatalf("结果 = %+v, want 按「还没配过」播种", res)
|
||||
}
|
||||
if len(decodeSeed(t, path)) != len(memoryTidySeedKeys) {
|
||||
t.Fatalf("空白文件被播种后应当十键齐全:%s", readRaw(t, path))
|
||||
t.Fatalf("空白文件被播种后应当十一键齐全:%s", readRaw(t, path))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
// 本文件锁定**启动播种的值来源**(tidy_snapshot.go;主人 2026-10-07:「`.env` 只做
|
||||
// 兜底用 —— 后端**自动创建**独立的面板配置文件**要做**」):
|
||||
//
|
||||
// ① 快照十键齐全、值可用(否则 runtimeconfig.SeedMemoryTidy 会拒绝落盘);
|
||||
// ① 快照十一键齐全、值可用(否则 runtimeconfig.SeedMemoryTidy 会拒绝落盘);
|
||||
// ② 值取「**当时解析出来的生效值**」—— `.env` 给了就用 `.env`,没给就用代码默认
|
||||
// (默认值来自 normalizeTidyConfig / normalizeReviewConfig,不另写一份);
|
||||
// ③ 最关键的一条:把快照当成面板值叠回去,**归一化结果与「没有面板文件」逐字相同**
|
||||
@@ -24,7 +24,7 @@ func snapBoolPtr(v bool) *bool { return &v }
|
||||
|
||||
func snapIntPtr(v int) *int { return &v }
|
||||
|
||||
// TestTidyTuningSnapshot_CodeDefaults 钉住「什么都没配」时的十键 = 归一化的代码默认值。
|
||||
// TestTidyTuningSnapshot_CodeDefaults 钉住「什么都没配」时的十一键 = 归一化的代码默认值。
|
||||
// 期望值直接取自默认值常量(本包唯一那处定义),因此这条用例证明的是**接线**:
|
||||
// 快照确实走了 normalizeTidyConfig / normalizeReviewConfig,而不是另写一份默认值。
|
||||
func TestTidyTuningSnapshot_CodeDefaults(t *testing.T) {
|
||||
@@ -156,7 +156,7 @@ func TestTidyTuningSnapshot_PanelRoundTripKeepsEffectiveConfig(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestTidyTuningSnapshot_IsCompleteAndPositive 钉住快照契约:十键非 nil、数值键为正、
|
||||
// TestTidyTuningSnapshot_IsCompleteAndPositive 钉住快照契约:十一键非 nil、数值键为正、
|
||||
// 钟点在 0..23。runtimeconfig.SeedMemoryTidy 会按这条契约拒收残缺种子,因此这里先
|
||||
// 在**产生方**把它钉住,免得「播种写不出去」要到启动日志里才发现。
|
||||
func TestTidyTuningSnapshot_IsCompleteAndPositive(t *testing.T) {
|
||||
|
||||
Reference in new issue
Block a user