wandering1
|
a38f862fb9
|
chore(ui-golden): 像素黄金参考 ref/*.bin 入库(把门禁改成可移植)
问题:ui-golden 是逐字节比对(check_content_pages.py 里 data == refdata),
而基准 simulator/tests/ref/ 整目录被 .gitignore 忽略、从未入库。后果不是
"少几个文件",而是这条门禁在任何新克隆 / 新并行工作树里必然报「缺黄金
参考」——只在有老副本的机器上它才是真的回归门禁。本会话已两次实测踩到
(并行工作树里只能现场 --update 造基准,而现场造出来的基准恰好失去意义)。
入库前先证明基线可复现,否则等于把一条天天误报的门禁写进仓库:
- 主树 ref/ 生成于 2026-10-11,其间合入 B6~B9 与 UI 令牌化等多次改动;
今天用刚重建的 lvgl_sim 重跑 → 11 页 + 开页-关页往返池水位逐字节全过
- 主树与新工作树两份**独立构建**的 lvgl_sim(不同构建目录、不同绝对路径)
各自生成基准 → 11 个 .bin 的 SHA-256 全部一致
即渲染是 CPU 侧确定性输出,可以当仓库内容。
改动:
- .gitignore:整目录忽略 → 只忽略派生的目检 PNG。另加一条
!simulator/tests/ref/*.bin 反选——第 115 行的全仓 *.bin 兜底(挡
sim_netcfg.bin 之类运行产物)会把基线一起挡掉,且反选必须排在它之后
才生效
- 不引入 LFS:11 x 3200 B = 34.4 KB(160x160 单色打包)。走 LFS 反而新增
失效面——没拉 LFS 的克隆会拿 pointer 文本去比像素,把"缺基准"换成
"比不中"。.gitattributes 已有 *.bin binary,check-attr 确认 text unset,
不会被行尾转换改写
- 基线不会被改写型钩子毁掉:trailing-whitespace / end-of-file-fixer 声明
types: [text],位图含 NUL 被判二进制 → 实测 Skipped;索引 blob、磁盘、
主树参照三方哈希 11/11 一致
- 新增 11 个基线;同步 5 份文档与 3 处脚本口径:缺基准的提示从"首次/换机
请加 --update"改为"检出不完整 → git checkout -- simulator/tests/ref/ 取回,
不要用 --update 就地造基准"(旧提示正是自我实现型基准的来源)
- 顺带修掉 simulator/tests/README.md 两处与实现不符的描述:基准写成 PNG
(实为 .bin)、regen_ref_png.py 写成"重建黄金参考"(它只出目检图,基准
由 check_content_pages.py --update 刷)
- .pre-commit-config.yaml 只改注释(原文明确断言 ref/ "永远不会进 git
索引",已被本改动推翻);ui-golden 的 files 面覆盖 simulator/tests/,
基线被改即触发回归,刷参考从此在 git diff 里显形
历史口径按纪律冻结:UI_自动化测试流程 2026-09-10 的"整目录不入库"等 6 处
变更记录行不改写,以新行登记反转。
实测:@build 0 错 0 警(Code=213520,与内存台账一致);ui-golden Passed;
pre-commit run --all-files = 36 Passed / 0 Failed(RC=0)。
|
2026-10-22 06:17:00 +08:00 |
|
wandering1
|
4f8e298394
|
chore(gitignore): .dsh 会话草稿不入库,skills 照常跟踪
现象:每轮 agent 会话在 .dsh/ 根目录留下草稿(提交信息草稿、门禁输出、台架
日志、一次性改名脚本、故障注入 patch),全部以 ?? 挂在 git status 里,混在
真改动中间。本次清掉 17 个:196 KB 门禁输出、台架日志、3 份提交信息草稿、
4 个注入 patch、2 个已合并实现的过程 diff、1 个一次性改名脚本。
规则:`.dsh/*` 忽略 + `!.dsh/skills/` 放行 —— skills 是**入库的项目知识**
(子域方法论),30 个已跟踪文件不受影响。
判据写进注释而非只写"忽略草稿",命中任一就不值得留:
① 能重跑的(门禁输出、日志);
② 内容已在 git 历史里的(已合并实现的过程 diff —— 如 T0/T1 E17 与
sock_reset,主干已有 ch395f_sock_reset_begin/poll);
③ 离开已丢弃的任务分支就跑不通的(依赖 NET_FAULT_INJECT 的注入产物)。
第 ③ 条是关键:这类东西提交进去是"看着有证据、实际不可复现"的**假证据**,
比没有更坏;方法应沉淀成文档文字 —— docs/网络/网络自愈架构设计.md §5.2
E18/E19 已完整记录注入点、触发方式、判据与实测结果,patch 不是唯一载体。
与 MDK-ARM/retracted_bench_20260922 归档先例的区别(避免下次误套):那次
归档的 probe_*.py 独立可运行,归档理由是"判据是错的,但要立牌警示后人别
再用"。归档的前提是**还能跑、结论错**,不是"根本跑不起来"。
验证:git check-ignore 双向确认(草稿命中 .dsh/*、skills 路径不被忽略);
删除前逐个 git ls-files --error-unmatch 确认未跟踪,**未用 git clean**(会
误伤 skills 下可能存在的未跟踪文件);skills 跟踪数 30 不变;.gitignore 无
BOM / 无 U+FFFD / 无 CR。
|
2026-10-14 18:25:23 +08:00 |
|
wandering1
|
3b90107181
|
chore: .mnemon/ 记忆状态只留本机,不进版本库
- 加入 .gitignore:documents/index.json、runtime/MEMORY.md、USER.md、
memories.json 是按机器/按人累积的本地私有状态
- 入库的代价:每次记忆写入都产生提交抖动,且可能带出本机绝对路径与
个人偏好
- 上一笔只含 .mnemon/ 四个空骨架文件的提交(未推送)已撤销,历史里
不含 .mnemon/;磁盘上的文件保持原样,只是不再被跟踪
|
2026-10-11 08:59:03 +08:00 |
|
wandering1
|
66186e1dae
|
chore: 清理 .gitignore 合并残留(死忽略项 + .venv 重复)
CI / L0 静态门禁 (pre-commit) (push) Has been cancelled
CI / L0.5 主机侧单测 (MSVC) (push) Has been cancelled
合并 v2-on-ui 时 master 侧的两条忽略项成为残留:
- tools/serial_tool/state/ —— 该目录在 v2-on-ui 已删除,忽略规则失效
- .venv/ 重复 —— 与 v2-on-ui 的 "# Python venv (unified env, ...)" 重复
删掉这 6 行后 master 的 .gitignore 与 v2-on-ui 完全一致(均 138 行)。
*.dep / *.suo 的重复是历史遗留(合并前即存在),本次未动。
|
2026-10-10 16:55:12 +08:00 |
|
wandering1
|
f81747f7e3
|
Merge branch 'v2-on-ui' into master
CI / L0 静态门禁 (pre-commit) (push) Has been cancelled
CI / L0.5 主机侧单测 (MSVC) (push) Has been cancelled
把 v2-on-ui 开发主线(250 个提交)合并进 master:涵盖 B0 产品定义、
B1 ADC 采集链路、1 kHz TIM6 采样节拍、L1-3/L1-4 语义通道映射、
@build/@download 收敛到 .dsh/skills/ 下的 skill(删除 build.bat /
download.bat / reset.bat)等。
master 侧 3 个提交(.gitignore 忽略项 + simulator/sim_config.ini)
已保留,无冲突。
|
2026-10-10 16:46:28 +08:00 |
|
wandering1
|
5defabcabb
|
build: 删除 MDK-ARM/download.bat,烧录收敛到 stlink-flash skill
- test/run_all_suites.py 是唯一执行它的地方:DOWNLOAD_BAT 改为 STLINK_FLASH
(.dsh/skills/stlink-flash/scripts/stlink_flash.py);直烧改
[py, STLINK_FLASH, "flash"](原先把 .bat 包给命令行解释器执行);
--flash-cmd 改由同一常量拼出,不再硬编码 .bat 路径
- 机制变化(须知晓):原 download.bat 走 UV4 -f(CMSIS-DAP),现走
ST-LINK_CLI -P <hex> -Rst -Run —— 与 .serialtest/config.json 的
flash_cmd、AGENTS.md 烧录铁律、回读 -CmpFile 要求同源;6.5s/1MB
也快于 UV4 路径
- AGENTS.md / 环境与部署 3 篇 / ST-LINK_CLI 复位说明(原文写"正式流程仍以
download.bat 为准",已反转)/ 自动化测试流程 / 串口助手设计说明 /
链路延迟 / m2_data / README / MDK-ARM/README:引用改指 skill
- .gitignore:download_log.txt 条目保留并注明 legacy(他机残留物不变
untracked);build 日志注释同步
- 保留 MDK-ARM/reset.bat:其 hard/halt/run 子命令是 skill 没有的
- 刻意未改:docs/问题记录/项目审查与优化建议报告.md 的 P2-15(史实)
- 验证:run_all_suites.py --dry-run 解析出 skill 路径;doc-links 123 通过
|
2026-10-10 16:28:58 +08:00 |
|
wandering1
|
4f71947934
|
chore: .gitignore 构建日志注释改指 keil_build.py
build.bat 已删除(c77c582),该注释里的 "regenerated by build.bat"
随之失效。
|
2026-10-10 16:24:46 +08:00 |
|
wandering1
|
f0300761ae
|
串口采集/测试去重:删 tools/serial_tool 与 test/host run_boot_test/verify_log 副本,引用改指 .dsh/skills 串口 skill
|
2026-10-10 15:13:23 +08:00 |
|
wandering1
|
b93feea9df
|
gitignore 忽略串口工具运行时状态目录(日志/本机进程状态)
|
2026-10-02 14:41:22 +08:00 |
|
wandering1
|
3981bd9739
|
gitignore 忽略 Python 虚拟环境 .venv/ 与 VS Code 设置 .vscode/
|
2026-10-02 14:36:44 +08:00 |
|
wandering1
|
f3befaed08
|
CI:补产物存档与结果汇总,明示体积门禁盲区(S3+S14)
CI / L0 静态门禁 (pre-commit) (push) Successful in 58s
CI / L0.5 主机侧单测 (MSVC) (push) Successful in 19s
|
2026-10-02 11:55:31 +08:00 |
|
wandering1
|
73941da6b1
|
看门狗判定状态机增加主机侧单元测试(L0.5 层)
为 task_watchdog.c 的判定逻辑(位图取走清零 / 必需掩码 0x37 判定 /
miss_streak 连续 8 次停喂 / 100ms 抽样节流 / tick 回绕安全)补一层
主机侧纯逻辑单元测试,弥补此前只能靠真机或模拟器才能发现回归的空白。
架构(沿用项目既有"共享核心 + 平台后端"做法,参照 cfg_file_store):
- task_watchdog.h 末段新增"平台后端(内部)"声明 3 个钩子
(wd_platform_feed / _start / _tick_ms),MCU 端以 __weak 提供默认实现,
行为与重构前逐字一致(@build 0 错误 0 警告,Flash +20B)。
- 主机侧单测以同名强符号覆盖三钩子,即可离线注入/观测,无需碰 MCU 代码。
- 测试文件 #include 生产源文件本身,保证测的是真代码而非副本。
- 测试专用复位 task_wd_test_reset() 仅 TASK_WATCHDOG_UNIT_TEST 下编入,
MCU 构建零代码零符号。
测试(test/host/watchdog/,MSVC 离线编译,纯标准库驱动):
- 39 项断言全过(退出码 0);注入故障可复现退出码 1。
- run_unit_test.py 直接拼 INCLUDE/LIB 调 cl.exe,绕开本机被禁的 reg.exe。
- stub/ 三桩头覆盖 main.h / iwdg.h / dbg_log.h。
门禁:pre-commit 新增 watchdog-unit-test 本地钩子(L0.5 层),仅被测文件
或其测试变动时触发;测试开发标准流程.md 新增 L0.5 层说明。
顺带改善:task_watchdog.c 的节流基线 s_last_tick 由函数内 static 提为文件
static(可测性 + 模块状态归一)。
|
2026-10-01 06:57:01 +08:00 |
|
wandering1
|
7feeea6c56
|
实现独立看门狗:CubeMX 配置 IWDG + 任务心跳位图,恢复三处被覆盖定制
经 CubeMX 图形界面启用 IWDG(Prescaler=64 / Reload=1249,标称 2498ms /
最坏 1701ms),并落地心跳位图判定、各任务埋点、RCC_CSR 复位原因上报与
configASSERT 改造。重生成覆盖的既有定制已全部恢复。
P0(开机死循环):HAL_IWDG_Init() 内部立即启动看门狗,而 CubeMX 把
MX_IWDG_Init() 插在 app_main_init() 之前——该段 NAND/RTC/ADC 初始化耗时
数秒无喂狗点,按 2.5s 超时必然复位。改 Src/iwdg.c 为只填参数不启动,
启动移交 task_wd_start(),由 defaultTask 在存储 bring-up 完成后调用。
恢复的三处定制(重生成覆盖):
- Src/stm32f4xx_it.c:HardFault_Handler 崩溃现场采集被打回空 while(1)
- Inc/FreeRTOSConfig.h:栈溢出检测与堆失败钩子两个宏被整块删除
- Src/freertos.c:三处任务栈实测记录中文注释丢失(数值未丢)
新增:
- App/util/task_watchdog.{c,h}:心跳位图 + 抽样判定 + IWDG 延后启动
- time_sync.c 长等待切片:net_recv_to 单次可睡满 30s 预算,切成 200ms 片
- Src/main.c 复位原因锁存(读后即清 RMVF,防残留误判)
埋点:defaultTask(唯一喂狗者)/ netTask(含 PHY 等待循环)/ uiTask /
timeSyncTask。ftpTask 首期剔除掩码,待二期改 lftpd。
门禁:build 0 错误 0 警告;pre-commit 10 钩子全通过;Flash +2956B / RAM +40B。
|
2026-09-29 07:22:04 +08:00 |
|
wandering1
|
c76aa035b2
|
忽略workbuddy
|
2026-09-25 23:08:44 +08:00 |
|
wandering1
|
ee206ab688
|
GD5F页读回归主线单发令(settle与二次发令移除、3.1V误判更正归一Trap05)、新增Phase11复现用例(16轮零复现)、附台架环境与审计文档
|
2026-09-21 16:55:05 +08:00 |
|
wandering1
|
bad5ceac0d
|
模拟器构建入口改VS版本自适应(新增build_sim,兼容VS2019/2022/2026);文档同步并补SDL2 SDK下载步骤
|
2026-09-21 02:30:16 +08:00 |
|
wandering1
|
4b5ce72e11
|
新增 Python 串口助手 serial_tool(常驻 daemon+全量日志文件即接口)取代 serial-mcp-server:@test 采集链改写 + 全库文档迁移
|
2026-09-15 03:00:41 +08:00 |
|
wandering1
|
9eb1bd63b4
|
运行/自检记录与待机屏:sys_log定长64B日志引擎(/log/*.log,FTP可直下)+记录页x2+待机屏+密码错误提示;字体122字/217字形
|
2026-09-14 19:05:00 +08:00 |
|
wandering1
|
4b68b479ba
|
gitignore 忽略 .vscode 工作区设置(含本机绝对路径)
|
2026-09-11 23:02:40 +08:00 |
|
wandering1
|
2429955d1a
|
绘图流程沉淀为 draw-diagram skill,SVG 收拢到 docs/images/
|
2026-09-11 21:15:39 +08:00 |
|
wandering1
|
4515ee4c80
|
修复了网络参数的保存逻辑
|
2026-09-10 14:21:07 +08:00 |
|
wandering1
|
2b80d34e74
|
增加网络配置界面
|
2026-09-10 11:36:33 +08:00 |
|
wandering1
|
24c2f57555
|
增加两页UI
|
2026-09-09 13:18:06 +08:00 |
|
wandering1
|
89462d8aa1
|
完成一个主界面开发流程
|
2026-09-03 23:08:16 +08:00 |
|
wandering1
|
1e964157d7
|
gitignore 增加 LVGL 模拟器调试日志 sim_dbg.log
|
2026-09-01 15:04:57 +08:00 |
|
wandering1
|
9898c8d236
|
忽略文件得小改动
|
2026-09-01 14:52:31 +08:00 |
|
wandering1
|
82fcc2b890
|
取消跟踪MDK-ARM构建/下载日志产物并加入gitignore
|
2026-09-01 14:07:05 +08:00 |
|
wandering1
|
ae8b1aead5
|
清理全库行尾空格与文件尾换行(pre-commit 自动修复基线)
|
2026-09-01 10:24:50 +08:00 |
|
wandering1
|
c14e9737fd
|
搭建LVGL仿真环境
|
2026-08-31 17:09:59 +08:00 |
|
wandering1
|
fc57cd831d
|
Remove large unused LVGL files (demos/tests/docs/examples) and build artifacts from tracking
|
2026-08-31 15:29:13 +08:00 |
|
wandering1
|
71c41fabb9
|
开启了192k 所有RAM
|
2026-08-30 15:38:40 +08:00 |
|
wandering1
|
b1d05091de
|
Initial commit: 项目初始化
|
2026-06-05 11:56:47 +08:00 |
|