Granite模型签名验证：区分普通adapter和Decision证书流程，不只看下载成功

素材身份：作者原创输入/可编辑参考。目标工具未在本轮执行。
先打开 index.html；input.csv 是原始字段，reference.csv 是验收基准，negative.csv 是故意构造的坏样例。
actual-results.csv 保留未测状态，实际执行后再填写。

前置条件：
使用IBM官方Granite base与对应adapter；只制作输入和校验可以离线免费进行，真正推理需可承担模型内存的本地/自有环境。
Granite Switch当前仓库要求Python3.11+、PyTorch2.11+；vLLM路径还有CUDA/Transformers兼容要求，不承诺Mac可直接跑同一CUDA栈。
官方代码与所列adapter采用Apache2.0；按具体base card核对许可与版本，目标推理未执行，不编造评分和速度。

操作步骤：
1. 列出待验目录
分别选择requirement-check的3B LoRA目录与Decision8B LoRA目录。
只验证目录清单不需要加载推理模型，但真实签名文件必须来自官方发布。

2. 核对覆盖文件
每目录检查adapter_config.json、adapter_model.safetensors、io.yaml与model.sig。
缺任何文件先记录，不能凭模型能启动就当来源完整。

3. 普通库走身份验证
按官方model_signing verify sigstore命令使用Granite-sign@ibm.com和官方identity provider。
身份字符串不得从不可信下载内容里自动照抄当信任根。

4. Decision走证书验证
按Decision README的certificate模式与公开根证书执行。
普通Sigstore命令不适用于Decision独立签名流程。

5. 核对签名者与状态
保存实际stdout、退出码和README所列预期身份/指纹比对。
只有Verification succeeded字样还要确认链和签名者符合预期。

6. 做篡改负例
复制小配置文件到隔离目录再改一处，验证应失败。
不改官方原始缓存、不传播篡改后的权重作为正常模型。

7. 交付可信材料清单
保存来源revision、摘要、实际验证记录和负例结果。
本稿未下载验证，签名状态为not_run，不制造成功日志。

验收：
两类签名流程明确区分。
验证覆盖目录完整。
篡改负例失败且原缓存保留。

官方资料：
https://huggingface.co/ibm-granite/granitelib-core-r1.0/blob/main/decision/README.md

图片身份：assets/ 为内置image_gen生成的原创练习输入缩略版，原始文件保留在网站图片来源地址。可编辑SVG为作者原生排版。
