docs(audit): rebuttal 双档建立供审计二审——代码审计侧3条(RB-C1模拟账号定性/C2漏斗token时点降级/C3 integrity_gate挂台账)+监控审计侧3条(RB-M1 relogin已上机裁决MON-FRI/M2 C-A5方向反转spec错非码错/M3 C-A2降文档班车)+stratergy占位2条待补证据(A-1偏离/C-A4归因细化);各域分节,pathspec纪律注记 [nas]
CI/CD / test (push) Successful in 48s
CI/CD / nas-deploy (push) Has been cancelled
CI/CD / nas-verify (push) Has been cancelled

This commit is contained in:
2026-10-05 12:40:53 +08:00
parent e6bf20f007
commit 7cd3f49c76
2 changed files with 118 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
# 代码审计 Rebuttal(对应 audit/20261003_recent2days.md)
> **用途**:对 2026-10-03 代码审计(基线 7f9b413,P1×5+P2×19+P3×33)的反驳与异议记录,**供审计人员二审**。
> **约定**:每条 rebuttal 附证据(坐标/命令输出/commit 号);二审可逐条判定 `accept`(反驳成立)或 `reject`(反驳不成立,原发现恢复)并签名。
> **分诊基线**:infra 分诊报告 `audit/20261005_audit_triage_dispatch.md`(74bced6)——真 67 / rebuttal 6 / 拍板 3 / 台账 5;当日已修 15 件高价值件。本文件只收**反驳/异议**,采纳项不在内。
> ⚠️ 各域只编辑自己名下的节;commit 时 `git add audit/20261003_rebuttal.md` 用 pathspec 限定(共享树多 session 并行)。
---
## infra 节(3 条)
### RB-C1 对 P2-18 的定性补充:模拟账号硬编码不构成安全事件,处置降为拍板项
- **审计原文主张**:「若确认永为模拟账号,新代码改读既有 BIGQMT_ACCOUNT_ID env;若该号实际具备实盘属性或未来复用,升级 P0 并轮换」
- **反驳论点**:审计自身证据已充分佐证模拟属性(余额 9999998.51、userdata_mini 模拟端、全仓 32 文件既存扩散),「升级 P0 轮换」分支无触发迹象。审计将「模拟账号硬编码」列为 P2 廏敏信息面,实际风险定性应为「部署契约显式化」而非「凭据泄漏」——模拟柜台账号不可交易,泄露无资金面。
- **证据**:审计报告 §六/§P2-18 自述(「经仓库内文档佐证为模拟柜台账号……故定 P2 而非 P0」);无任何实盘属性证据在案。
- **处置**:转用户拍板(一句话确认永为模拟→infra 排期 env 化,非紧急)。
- **反驳人/日期**:infra 2026-10-05
- **二审判定**:☐ accept ☐ reject ____(审计签名)
### RB-C2 对 §九「若近期放量跑漏斗建议先落处置建议第 1、3 条」的时点降级
- **审计原文主张**:「P2-16+P1-2/3 组合意味着漏斗首夜全史回填的 token 成本实际无上界……若近期要放量跑漏斗,建议先落处置建议第 1、3 条」
- **反驳论点**:**时点已过**——审计撰写时(10-03 23:10)首夜尚未跑,10-04 实跑后水位正常推进(funnel_watermark 双 2026-10-04 前移实证),当前形态为 pending 存量消化期(8929 行),非全史回填。消化期实际约束:墙钟 `--until 23:00` 兜时间界+串行慢爬+`--llm-cap` 约束每日新增(pending 队列不吃 cap),费用风险从「无上界」降为「有软上界」。
- **证据**:NAS `/volume1/stock/corpus/cron.log` 10-04 19:34 funnel exit=1 行(缺 key fail loud=未烧 token)+ `state/funnel_watermark.json` 双域 2026-10-04 水位前移;P2-16 本身**已采纳修掉**(runbook 9aa14d1+生产 14f30a0 补 `--token-budget 3000000` 实接)——本条只反驳紧迫性描述,不反对修复。
- **反驳人/日期**:infra 2026-10-05
- **二审判定**:☐ accept ☐ reject ____(审计签名)
### RB-C3 对 P3-22 的处置异议:integrity_gate 空窗全绿系记录在案的设计决策,挂台账不改码
- **审计原文主张**:P3-22「空窗=全绿:断供超 7 日后 L2 六项 critical 全部 vacuous pass,gate 绿不能当管道存活证据」
- **反驳论点**:审计括注自认「新鲜度豁给监控是记录在案的设计决策」——新鲜度由 data-monitor 层负责(dir_mtime×12 项在册),gate 只管结构完整性。两层职责分离是既定架构而非缺陷;「gate 绿不能当存活证据」的值班语义已在 monitoring spec §5 域内表述。
- **证据**:监控审计 §3.3 P3-22 原文括注;monitoring spec §5 dir_mtime 检项族。
- **处置**:挂 MON 台账(观察项),不改代码。
- **反驳人/日期**:infra 2026-10-05
- **二审判定**:☐ accept ☐ reject ____(审计签名)
---
## stratergy 节(1 条,证据待 stratergy 补全/确认)
### RB-C4 对 A-1 处置建议的偏离:ImportError 不入捕,yaml 上移模块级 import
- **审计原文主张**(监控审计 §5 处置表 #7,涉 account_monitor=A-1):「配置读取异常面放宽(捕 ImportError/yaml.YAMLError)」
- **反驳论点**(stratergy 执行 79c6b8b 时提出,infra 验收通过):懒加载版若在 except 子句里引 `yaml.YAMLError` 而 PyYAML 缺失,except 表达式求值本身抛 NameError——审计原方照抄反而埋雷。正解=yaml 上移模块级 import(sanguo_live/runner.py 同款先例),缺依赖=进程启动即 fail loud(比静默降级更诚实)。
- **证据**:(stratergy 补:runner.py 先例坐标+79c6b8b diff 位置+NameError 复现或推演)
- **反驳人/日期**:stratergy 2026-10-05(占位待补证据)
- **二审判定**:☐ accept ☐ reject ____(审计签名)
---
## data 节(0 条)
本域对代码审计无反驳——漏斗族七件+P2-14/15/16 全部采纳修复(14f30a0)。补充事实一条供审计参考:P2-16 的「runbook 与实际护栏不一致」已通过**实接 `--token-budget 3000000`**(而非修订文案)关闭,runbook 9aa14d1 同步。
## factor 节(0 条)
本域对代码审计无反驳——P1-4/P2-8/P2-7/P2-4/P2-3 五件全采纳修复(567997f/f680435/eb9bce6/d55c9cd/2731e26)。
@@ -0,0 +1,66 @@
# 监控审计 Rebuttal(对应 监控spec与代码审计报告_2026-10-04.md)
> **用途**:对 2026-10-04 监控审计(P1×3+P2×18 存续+P3×30)的反驳与异议记录,**供审计人员二审**。
> **约定**:每条 rebuttal 附证据;二审逐条判定 `accept` / `reject` 并签名。
> **分诊基线**:infra 分诊报告 `audit/20261005_audit_triage_dispatch.md`(74bced6);D-1/2/3 及 P2 主体已采纳派修,此处只收**反驳/异议**。
> ⚠️ 各域只编辑自己名下的节;commit 用 pathspec 限定。
---
## infra 节(3 条)
### RB-M1 对 §6.2 边界说明「relogin MON-FRI vs runbook 每日 repo 内不可裁决,待 VPS 核对」——已上机裁决,不可裁决判断被新证据推翻
- **审计原文主张**:「§8.1 relogin『MON-FRI』vs runbook『每日』repo 内不可裁决,一处留待上机核对」
- **反驳论点**:2026-10-05 08:4x 上机核实完毕:VPS `\sanguo-qmt-relogin` next run = 2026-10-06(周二),10-05 周一无 07:50 排班(当日已过)——**MON-FRI 语义实锤,spec §8.1 对、runbook「每日」错**。旁证:`\sanguo-qmt-probe0915` next=10-05 9:15(周一),与 spec「工作日 09:15」一致;10-03/04(周六日)两任务均未触发(10-04 早班巡检亲核 last=10-02)。
- **处置**:runbook 已勘正(9aa14d1:「MON-FRI 07:50」+注明上机核实口径)。审计二审时此条可直接闭环。
- **证据**:`schtasks /query /fo csv` 2026-10-05 输出(infra session 记录);runbook :73 勘正后文本。
- **反驳人/日期**:infra 2026-10-05
- **二审判定**:☐ accept ☐ reject ____(审计签名)
### RB-M2 对 C-A5 的方向反转:tab 枚举不一致是 spec 写错,不是代码缺陷
- **审计原文主张**:C-A5「spec §6.4 四类 tab 写『[数据/策略/nas/infra]』,实际=数据/策略/因子/运维……值班找『nas tab』会落空」(定级 P2,暗示代码/前端问题)
- **反驳论点**:方向反转——`alerts_store.summary:155` 的枚举是**权威实现**(数据/策略/因子/运维),NAS 事件 source=data host=nas 落数据 tab 是**正确归属**(NAS 监控归数据域,§6.1 自身如此表述)。错的只是 spec §6.4 的枚举文字。最小修=spec 勘正一行(infra 余量在办),**不是前端改造**;「增设 nas tab」是 UX 增强提案,非缺陷修复。
- **证据**:监控审计 §3.2 C-A5 证据行自注「alerts_store.summary :155 枚举即权威」;Alerts.vue:9-12 与 summary 一致(审计自证)。
- **反驳人/日期**:infra 2026-10-05
- **二审判定**:☐ accept ☐ reject ____(审计签名)
### RB-M3 对 C-A2 的优先级异议:降为文档班车件,不单列
- **审计原文主张**:C-A2「§5.2② 『KeyError/TypeError』——SIGNATURES 无 TypeError,且漏记真实红签名」(P3)
- **反驳论点**:发现属实、无异议;但 85830b6 已整段改写 §5.2 为三修后语义,该残留表述与 §4.3 锚点漂移(两组)属同批文档维护面——单独立项维护成本高于随批校(monitoring spec 年更/班车机制在册)。
- **处置**:归入 data 域文档班车批(与 C-A1/C-A6/锚点漂移同 push)。
- **反驳人/日期**:infra 2026-10-05
- **二审判定**:☐ accept ☐ reject ____(审计签名)
---
## stratergy 节(1 条,证据待 stratergy 补全/确认)
### RB-M4 对 C-A4 的归因细化:60s 数值张冠李戴属实,但错源是「两个 supervisor 非同一物」
- **审计原文主张**:C-A4「spec §4.4/§9.A-14『supervisor 60s 轮询自收割』实为 5s(60s 是 AccountMonitor 快照线程间隔,runner.py:444 注释张冠李戴)」
- **细化论点**(stratergy 执行 79c6b8b 时考证):结论方向正确(实为 5s),但归因链更精确——60s 系 `sanguo_trader/shadow/supervisor.py` 的缺省值误植,与 `sanguo_live/runner.py` 的 run_supervisor(默认 `poll_interval_sec=5.0`)是**两个不同的 supervisor**;VPS schtask sanguo-live-supervisor 无参覆盖(亲证)。审计引用的 runner.py:444 注释确属张冠李戴,但「60s 从哪来」的答案在 shadow/supervisor.py 而非 AccountMonitor。
- **证据**:(stratergy 补:shadow/supervisor.py 缺省行坐标+runner.py:418 默认值+VPS schtask 查询输出+79c6b8b 内 spec 勘正 diff)
- **反驳人/日期**:stratergy 2026-10-05(占位待补证据)
- **二审判定**:☐ accept ☐ reject ____(审计签名)
---
## data 节(0 条)
本域对监控审计无反驳——D-4 已被 85830b6 三修正面关闭(审计补充 §7.2 已复核认可);D-1/2/3 及 P2 主体全部采纳派修。
## factor 节(0 条)
监控审计 §7.1 确认 factor 四笔在监控范围外未逐行审——无交集,无反驳。
---
## 二审记录区(审计人员填写)
| 条目 | 判定 | 签名/日期 | 备注 |
|---|---|---|---|
| RB-C1 | ☐accept ☐reject | | |
| RB-C2 | ☐accept ☐reject | | |
| RB-C3 | ☐accept ☐reject | | |
| RB-C4 | ☐accept ☐reject | | |
| RB-M1 | ☐accept ☐reject | | |
| RB-M2 | ☐accept ☐reject | | |
| RB-M3 | ☐accept ☐reject | | |
| RB-M4 | ☐accept ☐reject | | |