chore(编号): 存量编号全量转语义短语,门禁识别面与语料同批重打
登记簿、文档与代码注释里的存量字母加数字编号(N-x / S-x / T-x / E-x / A-x / 卡号) 一律改写为语义短语,净删 2,028 处引用;删除基线与待确认、并行分道方案、排期详述、 采集保护收尾 4 篇(内容已并入 docs/任务规划/README 与登记簿)。 门禁机器与三张账同批重打:check_ids.py 新增变更记录行豁免与第二根护栏 undecidable_total_ceiling;check_test_traceability.py 只加 stdout/stderr UTF-8 reconfigure(TC_RE 未动);check_cubemx_survival.py 的 --write 固定 newline=LF; id_registry / id_aliases(+19 条 retired-to-phrase)/ id_known_backlog 重打。 test/ 56 个文件同步 TC 标签语义化,其中 18 个 TU 改了 CHECK / printf 里的标签文字, 是本批唯一改变构建产物的文件集合。 为什么合成一笔、不拆四笔(实测撞闸,非偏好):pre-commit 跑钩子前会 stash 未 staged 部分,拆开后中间提交必然是「新规则 + 旧语料」——实跑可判定 85.15% < 基线 86.00%、 不可判定 1,453 > 上限 1,166,编号门禁直接拦下。编号识别面与它描述的语料只能同码移动。 实跑基线(工作区全量):754 文件 / 8,230 处编号字面量 / 可判定 7,079 = 86.01% (基线 86.0%,容差 0.1pp)/ 不可判定绝对数 1,151(上限 1,166)/ 校验 1-6 错误级 0 / 告警 = 悬空 2(App/algo/freq.c 的 S2,属 §4.4 同号不同义)+ 孤儿 50。 基线从 84.0 抬到 86.0 的理由见 docs/门禁说明/id-check.md §7.6:本批真删了 2,028 处 引用,可判定面随真实内容上升,不是把分母做小。同批新增排除 docs/硬件平台/ 语料,使 识别面少 264 处——芯片手册位号与网表料号不属编号空间(registry 有 excluded_paths_note)。 ⚠ 余量只剩 0.11pp(约 10 处)与绝对数 15 处:把「可判定的引用」改成散文会立刻撞第二 根护栏。另遗留一项:id_aliases 里 retired 的 N / S / T / A 别名没有 scope(U1~U5 有), 今后有人新写一个 A-4,校验 3 不会响,只能靠人,建议下批补 scope。 固件不变证据:115 个 .c/.h 剥注释并归一字符串后与 HEAD 逐字节全等,残留代码差异 0; App / Src / Drivers 的字符串字面量零改动。@build 0 错误 0 警告;40/40 主机套件、2,889 断言全通过;覆盖率 line 89.2% / func 92.6%;pre-commit 48 钩子 --all-files 全绿; check_doc_links --all 通过(176 文档,章节引用无法判定 0);逐字节卫生核过:14 个带 BOM 文件与 HEAD 一致、0 个 CR、0 个 U+FFFD,字符串字面量纯 ASCII。 .cubemx_survival_baseline.json 的 watchdog-module 哈希 56bf27 变 2bb051 属合法: Src/freertos.c 的 USER CODE 区内只有注释文字随编号改写,代码未变。 同批带上体积同码凭证与 RAM 台账行(@build 之后盖戳):RW_IRAM1 79,008 B / 60.3%, RW_CCM 57,376 B / 87.9%,阈值 92%。
This commit is contained in:
+2
-2
@@ -229,10 +229,10 @@
|
||||
#define LV_USE_FFMPEG 0
|
||||
#define LV_USE_GIF 0
|
||||
/* 注:9.3 无 LV_USE_GLTF / LV_USE_GSTREAMER / LV_USE_ARCLABEL(更新版本残留),已删 */
|
||||
/* 2026-10-11(F-2/F-3 对齐 MCU 端 Lib/lv_conf.h):本项目 UI 全部自绘,
|
||||
/* 2026-10-11(对齐 MCU 端 Lib/lv_conf.h):本项目 UI 全部自绘,
|
||||
* 三处代码(Drivers/BSP/UI、App、simulator)零控件构造函数、零 flex/grid 调用。
|
||||
* 关掉后模拟器与固件跑的是同一套特性子集,golden 回归才能真正验证 MCU 配置。
|
||||
* 若将来引入控件型页面(U2 原型库),两端同步逐项打开并复跑 ui-verify。 */
|
||||
* 若将来引入控件型原型页面,两端同步逐项打开并复跑 ui-verify。 */
|
||||
#define LV_USE_IMAGE 0
|
||||
#define LV_USE_IMAGEBUTTON 0
|
||||
#define LV_USE_IME_PINYIN 0
|
||||
|
||||
+3
-3
@@ -499,7 +499,7 @@ static int run_cfgtest_scenarios(void) {
|
||||
}
|
||||
printf("[cfgtest] OK surgical save (comment kept, value intact)\n");
|
||||
|
||||
/* E-01 场景 1:伪造超长文件(> CFG_FILE_MAX_LEN)→ poll 必须判损坏
|
||||
/* 场景 1:伪造超长文件(> CFG_FILE_MAX_LEN)→ poll 必须判损坏
|
||||
* (与 load/MCU 同一契约):RAM 回工厂默认 + 文件重建为出厂模板,
|
||||
* 而非截断解析残留 10.0.0.1(修复前死码走的是截断分支) */
|
||||
{
|
||||
@@ -531,7 +531,7 @@ static int run_cfgtest_scenarios(void) {
|
||||
}
|
||||
printf("[cfgtest] OK oversized file rebuilt to factory template\n");
|
||||
|
||||
/* E-01 场景 2:save 拒写"雷"文件——伪造合法界内纯注释文件(4000B,无
|
||||
/* 场景 2:save 拒写"雷"文件——伪造合法界内纯注释文件(4000B,无
|
||||
* [network] 段),外科手术保存文末补写受管段 → 输出必然超
|
||||
* CFG_FILE_MAX_LEN:必须拒绝(net_cfg_save 返 -1)且原文件不动;
|
||||
* 修复前此处会成功写出 ~4200B 超长文件 = 下次开机被销毁的雷 */
|
||||
@@ -565,7 +565,7 @@ static int run_cfgtest_scenarios(void) {
|
||||
* 函数功能:配置自检外壳——保证不在工作目录留下伪造的配置档
|
||||
* 入口参数:无
|
||||
* 返回值:run_cfgtest_scenarios 的判定 int
|
||||
* 说明:E-01 场景 2 会写一个 4000 B 纯注释"雷"文件,并断言"拒写后原文件不动"
|
||||
* 说明:场景 2 会写一个 4000 B 纯注释"雷"文件,并断言"拒写后原文件不动"
|
||||
* (size == 4000)——**因此连正常通过路径也会把它留在原地**。该文件是
|
||||
* gitignore 的本地产物,但之后每一次 UI 回归都会加载它:外科手术保存要在
|
||||
* 4000 B 注释后补写受管段,输出必然超 CFG_FILE_MAX_LEN → 引擎按设计拒写
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* 修改记录:
|
||||
* v1.0 2026-09-14 王建锋 创建初始版本
|
||||
* v1.1 2026-09-18 王建锋 增 cfg_store_alloc / cfg_store_free / cfg_store_heap_free
|
||||
* (宿主 CRT 堆实现,对齐 MCU 端 FreeRTOS 堆语义,P0-1)
|
||||
* (宿主 CRT 堆实现,对齐 MCU 端 FreeRTOS 堆语义)
|
||||
*/
|
||||
|
||||
/* 头文件包含区 */
|
||||
|
||||
@@ -719,7 +719,7 @@ int net_close(int sockfd) {
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数功能:主动拆掉当前 TCP 会话、保留监听(与 MCU 端同名 API——E-02 收口)
|
||||
* 函数功能:主动拆掉当前 TCP 会话、保留监听(与 MCU 端同名 API——头阻塞收口)
|
||||
* 入口参数:sockfd - socket 描述符
|
||||
* 出口参数:无
|
||||
* 返回值:0 成功(含幂等:无活动会话),-1 失败
|
||||
|
||||
@@ -287,7 +287,7 @@ STRIDE = W // 8 # I1:20 字节/行
|
||||
# 页面结构变更导致漂移时,先确认新值合理再更新此常量(内存回归门禁)。
|
||||
# 2026-09-14: 4864 → 5520(+656B)= run_headless 新增 ui_standby_init():待机模块
|
||||
# 常驻屏 s_scr + 容器 s_cont 两个 lv_obj,随菜单基线同移(见 check_menu_rows.py)。
|
||||
# 2026-10-11: 5520 → 5448(−72B)= 裁剪 LVGL 控件类(F-2),随菜单基线 5440→5368 同移;
|
||||
# 2026-10-11: 5520 → 5448(−72B)= 裁剪 LVGL 控件类,随菜单基线 5440→5368 同移;
|
||||
# **一次性残留不变,仍是 80 B**(5448 − 5368),说明泄漏特征未变,只是每对象样式表更小。
|
||||
POOL_AFTER_ROUNDTRIP = 5448
|
||||
|
||||
@@ -296,7 +296,7 @@ def run_sim(seq, out, cwd):
|
||||
"""在指定工作目录里跑一次无头截图。
|
||||
|
||||
模拟器按**工作目录**读写 `sim_config.ini`:目录里残留一份配置(尤其
|
||||
`--cfgtest` E-01 场景 2 伪造的 4000 B 纯注释"雷"文件)会让引擎按设计
|
||||
`--cfgtest` 场景 2 伪造的 4000 B 纯注释"雷"文件)会让引擎按设计
|
||||
拒绝保存 → 网口设置页保存行显示 ERR → 与"工厂默认态"的黄金参考对不上。
|
||||
因此一律在空临时目录里跑,回到"无配置文件 = 工厂默认"这一确定态。
|
||||
"""
|
||||
|
||||
@@ -57,7 +57,7 @@ ROOT_X0, ROOT_Y0, ROOT_W, ROOT_H = 0, 44, 66, 107
|
||||
# 先确认新值合理再更新此常量(内存回归门禁,见 docs/UI设计/UI_自动化测试流程.md)
|
||||
# 2026-09-14: 4784 → 5440(+656B)= run_headless 新增 ui_standby_init():待机模块
|
||||
# 常驻屏 s_scr + 容器 s_cont 两个 lv_obj(先于池测量创建),属有意结构变更。
|
||||
# 2026-10-11: 5440 → 5368(−72B)= 裁剪 LVGL 控件类(F-2:label/button/buttonmatrix/
|
||||
# 2026-10-11: 5440 → 5368(−72B)= 裁剪 LVGL 控件类(label/button/buttonmatrix/
|
||||
# bar/textarea 全关,simulator/lv_conf.h 与 Lib/lv_conf.h 对齐为同一特性子集)。
|
||||
# 像素逐字节未变(11 页黄金参考在**裁剪前**生成、裁剪后全部一致);差值来自
|
||||
# lv_theme_apply 不再为已不存在的控件类登记样式条目 → 每对象样式表更小。更优。
|
||||
|
||||
Reference in New Issue
Block a user