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:
@@ -10,7 +10,7 @@ RAM 预算门禁 + 趋势台账(登记簿条目「缩堆迁 CCM 后半(暂
|
||||
无 `.map`(未做 Keil 构建)→ 自适应跳过(与 `mem-numbers` 同口径,
|
||||
CI 盲区口径见 `scripts/check_size_gate.py` 的 docstring)。
|
||||
`--gate` 同时校验台账受管区与 `.map` 一致(防漂移,同 `mem-numbers` 思路)。
|
||||
2. **趋势基线** `scripts/ram_baseline.tsv`(`--update` 每次 @build 后追加一行;
|
||||
2. **趋势基线** `scripts/ram_baseline.tsv`(`--update` 每次 /keil-build 后追加一行;
|
||||
`--trend` 看趋势并高亮 RW+ZI 较上一行增长 >1 KB 的对象——方案 §4.0.3
|
||||
"ZI 增量 >1KB 必须解释"的机械化)。
|
||||
3. **台账受管区**(`--write` 同步 `docs/内存管理/RAM预算台账.md` 的
|
||||
@@ -136,7 +136,7 @@ def warn_unattributed(info):
|
||||
"「应用」(台账 §2:应用 = App/ 其余),合计 %d B:" % (len(missing), total))
|
||||
for obj, nbytes in missing:
|
||||
print(" %-28s %6d B" % (_obj_base(obj), nbytes))
|
||||
print(" 修法:补 subsystem_of() 前缀 -> 重跑 @build -> --update / --write 回填台账")
|
||||
print(" 修法:补 subsystem_of() 前缀 -> 重跑 /keil-build -> --update / --write 回填台账")
|
||||
return len(missing)
|
||||
|
||||
|
||||
@@ -232,7 +232,7 @@ def cmd_gate(args):
|
||||
print(" 强制兜底(无需 Keil,改代码后必然拦红):")
|
||||
print(" 本地 scripts/ci_local.py 的体积门禁步 / CI 的「体积门禁」步,")
|
||||
print(" 都跑 scripts/check_size_gate.py(同码凭证 + 92% 红线复核)。")
|
||||
print(" 改过代码请先 @build,再 python scripts/ram_baseline.py --update。")
|
||||
print(" 改过代码请先 /keil-build,再 python scripts/ram_baseline.py --update。")
|
||||
return 0
|
||||
info = collect(map_path)
|
||||
if not info["regions"]:
|
||||
@@ -284,13 +284,13 @@ def cmd_gate(args):
|
||||
ir = info["regions"].get("RW_IRAM1")
|
||||
if rows and ir and int(rows[-1]["iram1"]) != ir["size"]:
|
||||
print("[WARN] ram_baseline.tsv 末行落后于当前 .map —— "
|
||||
"@build 后请跑 `python scripts/ram_baseline.py --update`")
|
||||
"/keil-build 后请跑 `python scripts/ram_baseline.py --update`")
|
||||
else:
|
||||
print("[WARN] ram_baseline.tsv 不存在 —— 跑 "
|
||||
"`python scripts/ram_baseline.py --update` 建档")
|
||||
newest = _newest_source_mtime()
|
||||
if newest and newest > map_path.stat().st_mtime:
|
||||
print("[WARN] .map 早于最新源码——数字来自旧构建,建议先 @build 再提交")
|
||||
print("[WARN] .map 早于最新源码——数字来自旧构建,建议先 /keil-build 再提交")
|
||||
|
||||
warn_unattributed(info)
|
||||
|
||||
@@ -303,7 +303,7 @@ def cmd_gate(args):
|
||||
def cmd_write(args):
|
||||
map_path = _map_or_skip(args)
|
||||
if map_path is None:
|
||||
print("[FAIL] 找不到 .map 事实源,先 @build(.map 是每棵工作树各自的构建产物,不入版本库;",
|
||||
print("[FAIL] 找不到 .map 事实源,先 /keil-build(.map 是每棵工作树各自的构建产物,不入版本库;",
|
||||
file=sys.stderr)
|
||||
print(" 新开的 task-worktree 工作树从未构建过时必然走到这里,不是代码缺陷)",
|
||||
file=sys.stderr)
|
||||
@@ -352,7 +352,7 @@ def _top_field(top):
|
||||
def cmd_update(args):
|
||||
map_path = _map_or_skip(args)
|
||||
if map_path is None:
|
||||
print("[FAIL] 找不到 .map 事实源,先 @build(.map 是每棵工作树各自的构建产物,不入版本库;",
|
||||
print("[FAIL] 找不到 .map 事实源,先 /keil-build(.map 是每棵工作树各自的构建产物,不入版本库;",
|
||||
file=sys.stderr)
|
||||
print(" 新开的 task-worktree 工作树从未构建过时必然走到这里,不是代码缺陷)",
|
||||
file=sys.stderr)
|
||||
@@ -388,7 +388,7 @@ def cmd_update(args):
|
||||
f"({region_pct(reg['RW_CCM']):.1f}%) → {TSV_PATH.relative_to(REPO_ROOT)}")
|
||||
|
||||
# 强制路径(2026-10-25):同一次「真实测量」顺带刷新**体积同码凭证**
|
||||
# scripts/size_attestation.json——这样「每次 @build 后跑 --update」这条**既有
|
||||
# scripts/size_attestation.json——这样「每次 /keil-build 后跑 --update」这条**既有
|
||||
# 纪律**同时喂饱那条无需 Keil 也能判的强制门禁(check_size_gate --ci /
|
||||
# --local,即 ci_local 的体积门禁步与 CI 的体积门禁步),不新增人工步骤。
|
||||
# 盖戳失败只告警、不改本命令返回值:凭证新鲜度由门禁自己 fail-closed 兜,
|
||||
@@ -471,7 +471,7 @@ def main(argv=None):
|
||||
g = ap.add_mutually_exclusive_group()
|
||||
g.add_argument("--gate", action="store_true", help="92% 阈值门禁(pre-commit 入口)")
|
||||
g.add_argument("--write", action="store_true", help="同步台账受管区")
|
||||
g.add_argument("--update", action="store_true", help="追加 tsv 趋势行(@build 后跑)")
|
||||
g.add_argument("--update", action="store_true", help="追加 tsv 趋势行(/keil-build 后跑)")
|
||||
g.add_argument("--trend", action="store_true", help="打印趋势 + 高亮 >1 KB 增长")
|
||||
ap.add_argument("-n", type=int, default=10, help="--trend 显示行数")
|
||||
ap.add_argument("--map", default=str(MAP_DEFAULT), help=".map 路径")
|
||||
|
||||
Reference in New Issue
Block a user