chore(全仓): @build/@test 旧文档别名清退为技能调用名
现状口径:/keil-build 与 /serial-boot-test 是 DSH 会话的技能调用名, 不是 shell 命令;「名 + 命令行参数」的命令形态改为可执行体 run_boot_test.py 的真实调用。 - AGENTS.md:别名说明重写为「技能调用名不是 shell 命令」,两条目改 「编译(/keil-build)」「串口回归(/serial-boot-test)」 - keil-build / serial-boot-test 两 skill 调用名与示例同步;task-worktree 方案文档去掉 @build/@test 惯例从句;@task 保留(不在点名范围) - 123 文件现状陈述全改;台架捕获、变更记录/时间线、rename 映射输入 等 41 行历史证据保留旧名 - gen_memory_svg.py 6 处措辞随改,3 张 SVG 产物同批重跑 - 顺手补并行方案同行漏网计数 51→52 钩子 验证:提交期快钩子对 123 文件实跑全 Passed;check_doc_links --all rc=0(3038 处、无法判定 0);check_mermaid --all rc=0;YAML 解析 52 钩子不变;skill-size rc=0;py_compile 全过;字节卫生零漂移。
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
要消除的盲区
|
||||
------------
|
||||
`mem-numbers` / `mem-budget` 两根闸的**事实源都是 Keil 链接产物 `.map`**
|
||||
(gitignore,只有真做过 `@build` 的机器上才有)。于是两处都是"没跑 = 通过":
|
||||
(gitignore,只有真做过 `/keil-build` 的机器上才有)。于是两处都是"没跑 = 通过":
|
||||
|
||||
· CI 侧:runner 没有 Keil,workflow 只能把这根钩子**跳过**,历史上只打一条
|
||||
`::warning::`(上一轮的处置)——"CI 全绿"仍不等于"体积守住了";
|
||||
@@ -34,7 +34,7 @@
|
||||
② 那次测量的 RAM 受管区是否 <=92%(用已提交的测量数字守红线)。
|
||||
2. 本门禁**不能**判:
|
||||
· CI 不重算绝对体积——runner 无 Keil/无 `.map`,绝对数字的可信度来自本地那次
|
||||
`@build`;本脚本把盖戳卡在"新鲜 .map + 未超线"之后,凭证不是随手可写的。
|
||||
`/keil-build`;本脚本把盖戳卡在"新鲜 .map + 未超线"之后,凭证不是随手可写的。
|
||||
· **编译器选项不在指纹范围内**:`MDK-ARM/STM32F407-Demo.uvprojx` 每次构建都被 UV4
|
||||
改写且按约定不入库(keil-build skill),把它放进指纹会让门禁在"刚刚构建完"
|
||||
的那一刻自己变红;代价是改优化等级/预处理宏不触发本门禁,这类改动必须人工
|
||||
@@ -257,7 +257,7 @@ def cmd_stamp(args):
|
||||
"""用新鲜 .map 盖同码戳;三道前置任一不过即拒绝(见模块 docstring)。"""
|
||||
map_path = pathlib.Path(args.map)
|
||||
if not map_path.exists():
|
||||
print("[FAIL] 没有 .map(%s)——先 @build 再盖戳" % map_path, file=sys.stderr)
|
||||
print("[FAIL] 没有 .map(%s)——先 /keil-build 再盖戳" % map_path, file=sys.stderr)
|
||||
return 1
|
||||
m = measure(map_path)
|
||||
if m is None:
|
||||
@@ -266,7 +266,7 @@ def cmd_stamp(args):
|
||||
map_mt = map_path.stat().st_mtime
|
||||
src_mt = newest_source_mtime()
|
||||
if src_mt > map_mt:
|
||||
print("[FAIL] .map 早于最新受管源码——这份构建不含最新改动,重新 @build",
|
||||
print("[FAIL] .map 早于最新受管源码——这份构建不含最新改动,重新 /keil-build",
|
||||
file=sys.stderr)
|
||||
print(" .map mtime=%d 最新源码 mtime=%d" % (int(map_mt), int(src_mt)),
|
||||
file=sys.stderr)
|
||||
@@ -290,7 +290,7 @@ def cmd_stamp(args):
|
||||
file=sys.stderr)
|
||||
print(" 修复:先 git add <这些文件>(凭证描述的就是你正要提交的那份),再盖戳;",
|
||||
file=sys.stderr)
|
||||
print(" 或把它们还原。@build 与盖戳都应在同一份内容上做。")
|
||||
print(" 或把它们还原。/keil-build 与盖戳都应在同一份内容上做。")
|
||||
return 1
|
||||
fp, n = tree_fingerprint()
|
||||
write_attestation({
|
||||
@@ -339,7 +339,7 @@ def _cmd_parity(args, ci_mode):
|
||||
if doc is None:
|
||||
return _report(args, ci_mode, [
|
||||
"体积同码凭证不可用:" + err,
|
||||
" 修复:本地 @build 之后跑 python scripts/ram_baseline.py --update",
|
||||
" 修复:本地 /keil-build 之后跑 python scripts/ram_baseline.py --update",
|
||||
" (或单独跑 python scripts/check_size_gate.py --stamp)",
|
||||
])
|
||||
fp, n = tree_fingerprint()
|
||||
@@ -350,14 +350,14 @@ def _cmd_parity(args, ci_mode):
|
||||
"指纹范围内有 %d 处**未 staged** 的改动/未跟踪文件,凭证覆盖不到它们" % dirt,
|
||||
" " + "、".join(samples) + ("…" if dirt > len(samples) else ""),
|
||||
" 含义:这些内容既没进索引(凭证按索引生成),也就没被那次测量算进去",
|
||||
" 修复:git add 之后 @build,再跑 python scripts/ram_baseline.py --update",
|
||||
" 修复:git add 之后 /keil-build,再跑 python scripts/ram_baseline.py --update",
|
||||
]
|
||||
if fp != doc["fingerprint"]:
|
||||
problems += [
|
||||
"本次代码(指纹 %s…,%d 文件)与体积测量(指纹 %s…,%s)不同码" % (
|
||||
fp[:12], n, str(doc["fingerprint"])[:12], doc.get("built_at", "?")),
|
||||
" 含义:这份源码没有被真实链接测量过(或测量完又改了代码/合入了别的改动)",
|
||||
" 修复:@build 0/0 之后跑 python scripts/ram_baseline.py --update 再提交",
|
||||
" 修复:/keil-build 0/0 之后跑 python scripts/ram_baseline.py --update 再提交",
|
||||
" (指纹取 git 索引 blob:同一份内容在任何工作树/runner 上算法一致,"
|
||||
"不受 CRLF/LF 检出差异影响)",
|
||||
]
|
||||
@@ -441,7 +441,7 @@ def main(argv=None):
|
||||
ap = argparse.ArgumentParser(
|
||||
description="体积门禁强制路径(同码凭证 + CI 红线复核)")
|
||||
g = ap.add_mutually_exclusive_group()
|
||||
g.add_argument("--stamp", action="store_true", help="用新鲜 .map 盖同码戳(@build 后)")
|
||||
g.add_argument("--stamp", action="store_true", help="用新鲜 .map 盖同码戳(/keil-build 后)")
|
||||
g.add_argument("--local", action="store_true", help="本地/ci_local 自查:工作树须与测量同码")
|
||||
# ⚠ help 字符串里 % 必须写成 %%(argparse 会对 help 做 %-插值;裸 % + 中文
|
||||
# 如"92% 红"在**无参/非法参的 print_help 路径**上才炸:ValueError
|
||||
|
||||
Reference in New Issue
Block a user