335 工具链集成附录 v1(冈子 · 2026-09-15)

用途:编入 WIP-337「335 端到端演练剧本」对应步骤(每步:命令 + 判据 + 证据位)。
作者=工具链作者(技术校准责任岗):波波剧本可直接引用本附录 §二映射表;口径疑问以本附录为准。

一、工具清单与环境前置

工具所在前置
tenant_hooks/miniapp.shscripts/python3 + pyyaml(pip3 install --user pyyaml;缺则 NameError/ImportError);node 可用(post-inject 用)
m1-drill.shminiprogram-v2/scripts/在 miniprogram-v2/ 目录内执行;node;python3(check_dsl selftest)
residue-scan.mjs v4miniprogram-v2/scripts/两个「已生成包」目录(dist/tenants/<t>/miniprogram)
inject.mjs --post-injectminiprogram-v2/scripts/目标目录已有 utils/brand.json(miniapp.sh 内自动满足);【域名替换】需第三参 tenant.yaml
gate_check.pyscripts/docs/plans/gate-data/ 数据底板在位

二、步骤映射表(供剧本嵌用)

剧本步骤工具命令判据证据位
配置(品牌)miniapp.shbash scripts/tenant_hooks/miniapp.sh <tenant> docs/white-label/tenants/<t>.yaml退出 0;zip 产出;输出含 appid/模块数dist/tenants/<t>/;stdout 存 evidence
配置→M1 衔接miniapp.sh(内部链)同上(一条命令全自动:复制排除→品牌注入→post-inject 主题/app.json/域名→打包)输出可见「→ 已调用 inject.mjs --post-inject」与「域名替换:N 文件/M 处」stdout
M1(本地演练)m1-drill.shcd miniprogram-v2 && bash scripts/m1-drill.sh全绿(双租户注入×2+残留零命中+页面校验+P2 25/25+registry 15/15);set -e 任一步失败即中断退非 0stdout 存档
M1(残留判据)residue-scan v4node scripts/residue-scan.mjs ../dist/tenants/A/miniprogram ../dist/tenants/B/miniprogram --scope=m1exit 0 = 零命中;exit 1 = 命中(列清单);exit 2 = 用法错stdout 存档
M1(残留·全树加固)residue-scan v4同上 --scope=full同上(full 含全部运行时文件)stdout
M1(页面/注册表回归)check-page / check-registry-syncnode miniprogram-v2/scripts/check-page.mjs fixtures/pages/demo-home.json / node …check-registry-sync.mjs均 exit 0stdout
G7(两闸门)gate_check.pypython3 scripts/gate_check.py release / replication / selftestrelease/replication:exit 0=PASS;exit 1=FAIL(拦截=正确行为,记录);exit 2=BLOCKED(输入缺失);selftest 须 4/4docs/plans/gate-data/ 状态 + stdout
回退(参考)(332 的 staging-l3 脚本范式)见 332 evidence版本回退核对—

三、技术校准要点(剧本写作注意)

  1. 幂等与强制重建:miniapp.sh 幂等=zip 存在且 yaml mtime 未变则跳过;演练如需从零复现:先删 dist/tenants/<t> 再跑。m1-drill 自带清 .out。
  2. 扫描排除口径(判据一致性):residue-scan 排除 node_modules/.git/docs/.out/fixtures/scripts 与 *.md/*.html(说明性资料不计入运行时数据面);miniapp.sh 复制排除 EXCL={fixtures,scripts,docs,.out}——两者口径一致,勿在剧本中另设范围。
  3. tokens 口径(v4):品牌名/slogan/藏文/租户 id/appid/主题色及其 deep/light 衍生(与 inject 同款算法)/域名 host(自 request.ts 提取)+ 中性色白名单(#6B6B6B 等不误报)。
  4. 域名替换范围:仅映射 img/api/a/b 四个 *.kailashi.cn 子域 → 目标租户 domains(读 yaml);幂等(kailashi 包 0 处)。
  5. gate_check 数据底板格式:模块责任表(key/owner/freshness/expire_action);复制就绪表(review_done/profit_accounted/local_owner)——「待填/待运营/空」视为未就绪。
  6. 双层证据:每步 stdout 落盘 docs/delivery/evidence/335/<step>/(命令原文+输出+退出码),不得只贴结论。

四、与 337 剧本的协同接口

-- 冈子 2026-09-15(342①·草稿→与 337 协同定稿)