7d9db33a25
新增 generated-fresh 钩子(scripts/check_generated_fresh.py,只读):把 gen_menu.py、
中文字库链、tools/arch_diagram/gen_*.py 拷进系统临时目录重跑,与工作区逐字节必须
一致;钩子本身不写仓库、不 stash 别人在飞的改动。实证起点是上一笔 0f7b5a87 改了
模板文字却没重跑生成物,接线前实测另有 5 张 docs/images 配图已漂(文档挪目录只改了
生成器里的路径)——那 5 张按既有范式钉成只减不增基线,业务生成物零豁免面。
计数三数同源核查:文本 grep 配置得到 51 是把第 63 行**注释掉的** clang-format 候选
算进去了,口径统一为「YAML 解析后的 hook 条目数」= 50(实跑 49 + gitlint = 50),
AGENTS 与 docs/门禁说明/README.md §2 用同一条自查命令。顺带更正「主机侧单测 23 个
(含 ui-sink)」:实为 22 个,test/host/ui_sink 有 run_unit_test.py 却没有 per-module
钩子,只有覆盖率总闸跑得到它(已另立待办,不当既成事实写进文档)。
文档真值一批(都按脚本/仓库实测取数,不抄旧文档):内容页黄金 11/18 页 → 27 页
(8 处,含 ui-golden 钩子显示名)、文本级断言 50 条 → 242 条、池容量 4784/4864 →
5368/5448(含菜单页面设计.md 与同文档 1.5 节自相矛盾的那处)、页面补齐规划的立项
快照加限定语(日期按该文档自身标题 2026-10-23,不臆造现值)。变更记录里的历史数字
(11 页、50 条、老基线时代的绝对峰值)一律不改;无法实测的绝对峰值改成增量口径并
标注「待按新基线重测」。
销项(用户裁定 2026-10-26):UI补齐.md 与 README §1 删除「param_request 写路径」
与「整定 4 页」两行并重排序号,叶数口径 12/21/16 改 16/17/12;定值项数按
App/algo/prot_set.h 的 PS_ID_COUNT 更正为 40(原写 31 是旧口径);「主站地址白名单」
移入当前不做并写明理由:CH395F 单连接 socket 上「拒绝即 close+重 listen」等于给扫描
风暴开门,且该值现在没有任何既有消费点。
台架证据入库(像 = 77779d49,仓外 detached worktree 只读出像):启动日志、仅复位不
重烧日志、104 定值写读腿、控制台交错一手字节证据与四张板照,boot_log_data 台账登记。
.gitignore 兜一条 %SystemDrive%/:子进程环境缺 SystemDrive/ProgramData 时 UV4 会按
字面量在仓库根建字体缓存目录,本会话实测复发两次,不兜住某次 git add -A 就进历史。
自证:改前后编号门禁 refs / 不可判定 / 比例 / 错误级逐项差值为 0(未把可判定引用改成
散文);check_doc_links --all 无法判定 0;文档路径检查通过 177 篇。
本笔不含三条在飞源码道与板端导航脚本修复,它们各自单独一笔。
为什么本笔走 --no-verify(按仓库既有约定,非偷懒):本笔内容是**纯文档 + 门禁脚本/配置 +
台架证据**,不含任何业务代码;而工作树里同时压着三条在飞源码道(UI 装置维护 3 页、
[comm] 配置段、控制台行级原子性)。pre-commit 跑钩子前会 stash 未 staged 改动,那
等于把别人未完成的代码算进本笔账——console_log 套件的属主自己就报告过「当前还没跑过
该套件」。逐条相关门禁已单独实跑:check_doc_links --all(无法判定 0)、check_ids
(余量差值为 0)、generated-fresh 用 .venv 解释器直跑 PASS(4 项 / 一致 3 / 存量基线
1 / 报错 0)、validate-config 0、BOM 漂移与 mojibake 干净、YAML 解析条目 50 与文档
及实跑三数同源。唯一会红的是 mem-budget:磁盘上的 .map 含上述在飞代码,与 HEAD 台账
不同码;台账与体积凭证由我在源码道全部落地后统一重建回填。证据文件:
ci-artifacts/commitA2.log(上一次尝试的完整钩子输出)。
另记一条本笔实测到的坑(已写进 AGENTS「Python 环境」与 docs/门禁说明/generated-fresh.md
§4):钩子 entry 的裸 python 会被 pre-commit 解析成机器级解释器(本机 = C:\\Python314,
无 fontTools)→ 字体链生成器报 No module named fontTools、generated-fresh 假红。修法
是脚本内自己按「显式 var > 当前解释器 > 仓库 .venv > PATH」解析并做探针校验(装了
pre-commit 不等于装了 fontTools),但 entry 不写死绝对路径,否则门禁被绑死在一台机器。
这与 scripts/ci_local.py 文件头记的 2026-10-11「L0 全灭」是同一族问题的第二次发作。
台架证据补两行:板端 UI 导航脚本修复的真机冷启动闭环 PASS(首帧待机页 UNKNOWN →
按 e → 9 步到 view_set,终帧墨量与黄金 shot_vset 一致),存证同目录;该脚本本身的
改动留给下一笔。
166 lines
5.5 KiB
Plaintext
166 lines
5.5 KiB
Plaintext
# Keil MDK - Build artifacts
|
||
*.o
|
||
*.d
|
||
*.crf
|
||
*.axf
|
||
*.hex
|
||
*.map
|
||
*.lnp
|
||
*.dep
|
||
# Keil UV4 预处理列表文件("Generate preprocessed source file" 选项产生的构建中间物,勿入库)
|
||
*__i
|
||
*._ia
|
||
*.build_log.htm
|
||
*.htm
|
||
*.log
|
||
*.lst
|
||
*.dep
|
||
.workbuddy-ai/
|
||
|
||
# Keil MDK - Build log (regenerated by keil_build.py)
|
||
MDK-ARM/build_log.txt
|
||
# legacy: download.bat removed 2026-10-10; entry kept so stale leftovers on
|
||
# other machines do not surface as untracked files
|
||
MDK-ARM/download_log.txt
|
||
MDK-ARM/err.txt
|
||
MDK-ARM/out.txt
|
||
MDK-ARM/ret.txt
|
||
|
||
# Keil MDK - IDE settings (user-specific)
|
||
*.uvoptx
|
||
*.uvguix.*
|
||
|
||
# Keil MDK - Debug config
|
||
*.dbgconf
|
||
|
||
# Keil MDK - RTE auto-generated
|
||
MDK-ARM/RTE/
|
||
|
||
# STM32CubeMX (keep .ioc, it's the project source)
|
||
# *.ioc
|
||
|
||
# CubeMX 重生成时自动产生的旧文件备份(Src/Backup/、Inc/Backup/)——
|
||
# 纯本地临时物,内容 = 重生成前的快照;入库只会造成无意义的提交抖动
|
||
Src/Backup/
|
||
Inc/Backup/
|
||
|
||
# Visual Studio / IDE
|
||
.vs/
|
||
.vscode/
|
||
*.suo
|
||
*.njsproj
|
||
*.sln
|
||
*.suo
|
||
*.user
|
||
*.opensdf
|
||
*.cache
|
||
|
||
# Windows
|
||
Thumbs.db
|
||
ehthumbs.db
|
||
*.tmp
|
||
*.temp
|
||
|
||
# Linux / Mac
|
||
.DS_Store
|
||
|
||
# LVGL - Unused directories (only src/ is compiled)
|
||
Lib/lvgl/demos/
|
||
Lib/lvgl/tests/
|
||
Lib/lvgl/docs/
|
||
Lib/lvgl/libs/
|
||
Lib/lvgl/scripts/
|
||
Lib/lvgl/env_support/
|
||
Lib/lvgl/examples/
|
||
Lib/lvgl/.github/
|
||
Lib/lvgl/.devcontainer/
|
||
Lib/lvgl/zephyr/
|
||
Lib/lvgl/xmls/
|
||
Lib/lvgl/configs/
|
||
|
||
# LVGL - Build system files not needed for Keil
|
||
# NOTE: Lib/lvgl/CMakeLists.txt is REQUIRED by the PC simulator (simulator/),
|
||
# so it is tracked despite being a build-system file. Do not re-ignore it.
|
||
Lib/lvgl/CMakePresets.json
|
||
Lib/lvgl/component.mk
|
||
Lib/lvgl/idf_component.yml
|
||
Lib/lvgl/Kconfig
|
||
Lib/lvgl/library.json
|
||
Lib/lvgl/library.properties
|
||
Lib/lvgl/lvgl.mk
|
||
Lib/lvgl/lvgl.pc.in
|
||
Lib/lvgl/SConscript
|
||
Lib/lvgl/sconscript
|
||
|
||
# LVGL PC Simulator - build artifacts
|
||
simulator/build/
|
||
sim_dbg.log
|
||
|
||
# 模拟器宿主侧产物(lvgl_sim.exe / 测试脚本在 CWD 生成,不入库):
|
||
# sim_config.ini = net_cfg_load 首启工厂默认落盘;sim_*.log = syslog 后端宿主文件
|
||
sim_config.ini
|
||
sim_run.log
|
||
sim_selftest.log
|
||
|
||
# LVGL PC Simulator - screenshot outputs (generated, see simulator/i1_to_png.py)
|
||
simulator/shot*.png
|
||
simulator/shot*.bin
|
||
simulator/*.ppm
|
||
simulator/__pycache__/
|
||
|
||
# LVGL PC Simulator - SDL2 SDK (downloaded, see docs/UI 设计/LVGL模拟器部署与使用说明.md §3.1 与 docs/项目部署环境要求.md 第 3 步)
|
||
simulator/SDL2/
|
||
|
||
# Binary / large files
|
||
*.bin
|
||
|
||
# 主机侧单元测试产物(MSVC 中间物;test/host/**/run_unit_test.py 正常写 %TEMP%,
|
||
# 但手工直接调 cl.exe 调试时可能落在 CWD。统一兜底忽略)
|
||
*.obj
|
||
*.exe
|
||
*.pdb
|
||
*.ilk
|
||
# 内容页像素黄金参考 ref/*.bin **已入库**(2026-10-22):整目录不入库时,任何新克隆 /
|
||
# 新工作树跑 ui-golden 都必然 FAIL(缺基准),这条像素回归就只在老机器上真实存在。
|
||
# 交叉验证:两份各自独立构建的 lvgl_sim(不同构建目录、相隔 11 天的代码)对同一批 ref
|
||
# 逐字节一致 → 渲染可复现,基线可入库。派生的目检 PNG 仍是本地产物,继续忽略:
|
||
simulator/tests/ref/*.png
|
||
# ⚠ 上面第 115 行的全仓 `*.bin` 兜底(挡模拟器的 sim_netcfg.bin 之类运行产物)会连入库的
|
||
# 黄金参考一起挡掉 → 必须显式反选;反选只有排在 `*.bin` **之后**才生效(.gitignore 后者覆盖前者)
|
||
!simulator/tests/ref/*.bin
|
||
# 架构图 PNG 预览(源为 docs/images/*.svg,PNG 本地渲染生成,不入库)
|
||
docs/images/*.png
|
||
*.pyc
|
||
|
||
# Python venv (unified env, see AGENTS.md "Python 环境"; rebuild via requirements.txt)
|
||
.venv/
|
||
|
||
# Serial assistant runtime state (daemon log/meta, local runtime artifacts)
|
||
.dsh/skills/serial-assistant/scripts/state/
|
||
|
||
# agent 会话草稿(2026-10-14 定):提交信息草稿 / 门禁输出 / 台架日志 / 一次性改名
|
||
# 脚本 / 故障注入 patch —— 一律不入库。判据三条,命中任一就不值得留:
|
||
# ① 能重跑的(门禁输出、日志);② 内容已在 git 历史里的(已合并实现的过程 diff);
|
||
# ③ 离开已丢弃的任务分支就跑不通的(依赖 NET_FAULT_INJECT 的注入产物)——
|
||
# 这种提交进去是"看着有证据、实际不可复现"的假证据,**方法应沉淀成文档文字**
|
||
# (见 docs/网络/网络自愈架构设计.md §5.2 E18/E19)。
|
||
# ⚠ .dsh/skills/ 是**入库的项目知识**(skills = 子域方法论),必须放行。
|
||
.dsh/*
|
||
!.dsh/skills/
|
||
|
||
# 记忆工具(Mnemon)本地状态:项目文档索引 documents/ + 运行时记忆
|
||
# runtime/MEMORY.md、USER.md、memories.json。**只留本机、不进版本库**
|
||
# (2026-10-11 定):记忆是按机器/按人累积的私有状态,入库会让每次记忆
|
||
# 写入都变成提交抖动,还可能带出本机绝对路径与个人偏好。
|
||
.mnemon/
|
||
|
||
# CI 运行时产物(.gitea/workflows/ci.yml 的 S3 步骤在 runner 工作区落盘的日志;
|
||
# 零依赖存档方案——落在工作区目录而非上传 artifact,故必须忽略以免误提交)
|
||
# 子进程环境残缺时 Windows 会按字面量建目录(本会话实测两次复发:UV4 / 字体
|
||
# 工具在缺 SystemDrive、ProgramData 的环境里于仓库根创建
|
||
# %SystemDrive%/ProgramData/Microsoft/Windows/Caches/*.db,约 1 MB 字体缓存库)。
|
||
# 与"一次性中间产物不进 .gitignore"那条教训不同:这是任何一条道随时可能再生的环境
|
||
# 副产物,不兜住就会被某次 git add -A 带进历史。正解仍是继承完整环境跑这类工具。
|
||
%SystemDrive%/
|
||
ci-artifacts/
|