Files
STM32F4-Base/docs/任务规划/分工说明-20261028-RS485解锁与门禁口径对账.md
T
wandering1 41670a1cc6 docs(gates): 主机单测套数复点同步——41 套 / 无专属钩子 19 套
第 41 套 boot_stats 由 728d6067(2026-10-27 11:29)入库,全仓写的
「40 套 / 18 套无专属钩子」从那天起过期;本轮按实测复点同步。

真值双源互证:test/host/*/run_unit_test.py 实数 41(43 个目录,除
common 与 __pycache__)= scripts/check_test_coverage.py 自报
suites=41/41。专属钩子 22 根(YAML 解析 id 以 -unit-test 结尾,
22 条全对得上有 runner 的目录)⇒ 无专属钩子 19 套 = 41 − 22。

改当前态共 18 处:AGENTS.md 提交门禁节三处、.pre-commit-config.yaml
test-coverage 注释、docs/门禁说明/host-unit-tests.md §6 第 4 条六处
(无钩子名单首位补 boot_stats、目录数 42→43、裁定句改「裁定当时
18 套,2026-10-28 现值 19 套」)、docs/门禁说明/README.md、
docs/代码规范/pre-commit使用说明.md 两处、docs/编号规范.md、
scripts/README.md、docs/任务规划/分工说明-20261028 一条、
docs/测试说明/主机单测覆盖率口径.md 追加 2026-10-28 = 41 套 ~105 s
新实测点、test/host/sys_log_mcu/sys_log_mcu_test.c 注释行。

刻意不动:带日期戳的历史耗时与套数行(只追加新的实测点,不覆写)、
host-unit-tests.md 里「22 根 / 40 套 / 18 套无专属钩子」这句复核原文
(只在后面追加更正)、scripts/archive/id_gate/ 留档两处、
同数不同义的五处(40KB 级 / −20~40% / 不到 40 行 / 18 断言点 /
板端 RTC 套件)。钩子数 51、专属 22 根、提交期实跑 48 根本轮实测
未变,相关句一字未动。

门禁:doc-links --all --sections-strict / id-check-new --worktree /
no-mojibake / bom-drift / validate-config 全 rc=0,
test/host/sys_log_mcu 单测 rc=0;改后复扫「40 套」仅剩 3 处
(1 处刻意保留 + 2 处留档)、「42 个目录」0 处、「18 套」仅剩 2 处
(都带「当时」口径)。
2026-10-29 00:58:23 +08:00

4.7 KiB
Raw Blame History

分工说明:RS-485 解锁与门禁口径对账(2026-10-28)

目标:A 线补齐 Drivers/BSP/RS485/ 两条未修契约缺陷,为 rs485_task 解除 RS-485 接线门禁 的技术前提;B 线把 AGENTS.md 与 docs/门禁说明/README.md 的 钩子口径 对账到实跑。 口径:本文件只分工、不改行为;两条线 不交叉编辑 对方文件,跨线接口 先在本文件登记 再动手。

A 线 · RS-485 驱动契约(负责人 A)

  • 涉及文件:Drivers/BSP/RS485/rs485.c、Drivers/BSP/RS485/rs485.h、App/task/rs485_task.c(新建)、test/host/rs485/(新建)
  • 交付物:
    1. 修 单缓冲包撕裂:RX 改 双缓冲 + 帧序号,消费者一次取整帧,对齐 tpafe5160_snapshot() 的 临界区原子快照 语义(旧的两步取数在两步之间被抢占会混帧);
    2. 修 TX 超时拉 DE:超时路径 先等 TC 再拉 DE,避免尾字节被截;错误码走 Drivers/BSP/bsp_err.h 通道,返回值 不得裸丢弃(bsp-err 的 consume-result);
    3. [计划] test/host/rs485/run_unit_test.py 覆盖 撕裂、TX 超时、DE 时序 三例;新增 .c 须 双端注册(MDK-ARM/STM32F407-Demo.uvprojx + simulator/CMakeLists.txt,见 new-source-file skill);
    4. 结论回填 [计划] docs/问题记录/RS485_Trap_Records.md,并在 docs/任务规划/暂缓-RS485.md 写清 解锁条件是否满足(接线节奏仍受门禁约束,不由本线决定)。
  • 禁止:malloc/calloc/realloc/strdup/free(coding-standard CODE-RULE-20);osKernelStart 之前调任何创建类 API;注释里写 星号形态的路径(nested-comment 9-D)。
  • 预算:建任务 前后各跑一次 scripts/stack_report.py 与 scripts/ram_report.py;建任务/抬栈属 Ask first。

B 线 · 门禁与文档口径(负责人 B)

  • 涉及文件:AGENTS.md、docs/门禁说明/README.md、docs/代码规范/pre-commit使用说明.md §2;.pre-commit-config.yaml 只读核对、不改。
  • 交付物:
    1. 口径 = YAML 解析后的 hook 条目数:用 & ".venv\Scripts\python.exe" 解析 .pre-commit-config.yaml 取实数,与 AGENTS.md 的 51 做 声明 / 文档 / 实跑 三数同源核对(注释掉的候选钩子不计,直接 grep 声明行会多算 1);
    2. docs/门禁说明/README.md 的 篇数 ↔ 钩子数 差集清单,核对 27 篇 + 1 指针 是否仍成立;
    3. 有差异 只改文档、不加钩子(Lead 裁定:test/host/ 41 套里只有 22 根专属钩子,没有专属钩子 ≠ 没被跑,余量由 test-coverage 总闸兜);新条目标识用 语义短语,不再发字母+数字编号 → docs/编号规范.md §1。
  • 禁止:手工全局替换改名/挪目录(走 scripts/rename_ref.py,先 dry-run);章节引用写成非紧邻形态(doc-links 带 --sections-strict 拦提交);在配置注释里复述那个 grep 字面量(文本计数再虚高 1)。

共用约束(A/B 都要守)

  • 改代码/改文档 只用 Edit 精确替换;绝不用 Get-Content/Set-Content/cmd 重写含中文的文件(U+FFFD 不可逆);带 BOM 的 Drivers/BSP/UI/、App/cfg/cfg_file.c、Lib/lv_conf.h 改完核对 EF BB BF(bom-guard)。
  • 字符串字面量纯 ASCII,中文只进注释;行尾 LF(.gitattributes 已写死 * text=auto eol=lf);怀疑乱码先数 EF BF BD 字节,不要 git checkout。
  • 门禁 只在提交时 统一跑:@build + & ".venv\Scripts\python.exe" scripts/ci_local.py + scripts/check_doc_links.py --all,不要中途反复跑。
  • git commit / git push / 烧录 / CubeMX 重生成 / 登记簿删行销项 / 开 ENABLE_DESTRUCTIVE_TESTS —— Ask first。

验收(合并前)

线 判据 证据
A RS485 两条 ❌ 清零,rs485_task 的技术门禁解除(是否接线仍由用户裁定) test/host/rs485 全绿 + MDK-ARM/build_log.txt 0 错误 0 警告
B 声明 / 文档 / 实跑 三数一致 解析计数输出 + docs/门禁说明/README.md 差集为空
A+B registration-check、bsp-err、nested-comment、id-check 基线 只减不增 scripts/ci_local.py 输出 + scripts/archive/id_gate/id_known_backlog.json 台账

交接

  • 两条线各自 只回报:改了哪些文件、跑了哪些自检、剩余风险;跨线接口(rs485_frame_take() 签名)变更 先在本文件登记。
  • docs/任务规划/README.md 的 完成即销项 由协调者在用户确认后统一做,A/B 都不得自行删行。