不是抽象流程图——下面用 b_tjpu10 批次里的一堂真实课程做主角,
从视频文件一路跟到最终得分:每一站讲清楚发生了什么处理、判据是什么、产出了哪些文件,
产出物全部是从服务器上原样摘出来的真数据(含真实抽帧画面)。主角没走到的分支(低置信路由、
KFA退化、ASR归因、人工回纳、言语筛查冻结),用同批次其他课的真实数据补齐在"支线剧情"一节。
2026-08-14 更新:G-3 护栏拆除(十门双臂 A/B 实证其防护已被评分 prompt
无条件措辞兜住,材料自动护栏归零)+ 教师言语筛查前移为 P6.8 前置合规闸
(有确证发现的课冻结分流人审,不进评分线;同批 T08 两课时因人审确认"对"被冻结退出)。
主角当天经历三轮重评:G-3 拆除 64→61.7、announce 闸放宽(v5 重析多抓到 1 段无宣布语的真实播放)61.7→62——均在 K=3 噪声带内。
2026-08-18 修缮批(全面审计后落地:队列条目内容身份 superseded、P8.8 终局台账、
抽取失败重试、评分哈希补全 M5)触发第四轮全批重评:62→63.3,四轮主短板
结论"平铺罗列"始终不变。
按主题分组。管线里出现的每个名词都在这里,后文直接使用不再解释——正文里带虚线下划线的名词可以鼠标悬停(或点按)弹出这里的解释,不用来回翻页对照。
TJPU-XSX-T16-20250421。{session}-P0/-P1,后缀按文件名尾序号排,不代表上下半堂的先后。校代号-XSX-T教师号-日期。XSX=习思想课程线;教师号来自冻结注册表(只追加不重排,扩批时旧编号不失效);全 ASCII 是因为中文在 ffmpeg 通配、shell、OSS 对象名上都踩过坑。runs/<run名>/,里面有自己的 batch.json 和全部中间产物。换课程组合就换 run,互不干扰。本文主角所在 run 是 b_tjpu10。make_batch.py 生成(全语料抽样 / 显式清单 / 筛选产出三种来源),是整条管线的唯一入口输入。conf_median=整课全部词的中位数。已验证:它能几乎完美识别"重度转写损伤"课(AUC=0.954),但识别不了同音字替换——转错成同音词时置信度照样很高。overridden_by_adjudication 留痕——不删原始判据数据,只是不再据此排除。eval/data/verified_asr_caveats.json,不是自动机制。用于"根据人审结果重评"——把已核实的具体发现(哪个术语、大致时间点)转达给下一轮评分,防止模型读到同一段烂转写又得出同样的错误指控。是已拆除的"自动检测局部转写质量"(因猜测性不可靠被拆)的替代路径:不猜哪里可能错,只在人已经确认某处确实错了之后才说。教师收束(教师有明确收尾话语)或 推断(模型猜的,把握度低,时长仅供参考)。(曾有 conf<0.70 自动降级机制,2026-08-14 二审拆除——end_basis 唯一消费者是核验卡展示,降级对任何自动口径零影响,其防的问题已被终点帧带覆盖;模型自报值原样保留。)end_pick:真实终点被夹在哪两帧之间(精度15秒)。其余四类的终点是语言边界,画面上没有"切换"可看,不做帧带。sec_human + nonteach_ratio_with_video + 重写显示 label,原始 sec/nonteach_ratio 留痕不动。单边界(早于帧带首帧/帧带外仍在播放)不升格,扩窗重抽后再裁。占比统计升格之外,2026-08-14 二审起路径A的人裁终点还回收进材料标注(annotate_spans 把〖…〗结束标记移到人裁终点所在句)。首轮真实回收(b_tjpu10):4 span 全升格,T10-P0 端点纠正 466→503s(人裁 774s 与 conf 建议 795s 方向互证)。claim_overrides.json 供对外报告过滤(分数不变,零成本;2026-08-14 审计修正——原先还往 eval_codex 写 blame_overridden 标记,但它必被 P8 拉缓存覆盖、最终文件里从来不会有,已删);要真正干净的分数得走 verified_asr_caveats 触发彻底重评。2026-08-14 起入队条目带指控文本指纹(claim_ref=asr_blame_<sha256前8>)——重评后内容不同的新指控能重新入队,旧裁决只盖旧指控;并带 at_sec 视频跳转。speech_screen_route.json eligible=false 冻结——不建材料、不进 span 分析、不打分,先分流人审;该课全部条目被人裁"错"或二次放行(2026-08-14 拍板:verdict=对问题在案时人可显式裁定"准予回到评审队列",release=true+必填理由,发现记录不动)才放行,"对"未放行/"拿不准"维持冻结。条目带时间点、人审页一键跳转原视频核听(/video 端点,HTTP Range 流式)。防误报确定性证据闸:引文逐字防伪/成段类120s时长闸/conf<0.85标"疑转写失真"(播片段排除前置后首轮无 span 可用,靠 prompt 判例+人审兜底)。概念/事实类指控走 asr_blame 通道。真机回归:T08 两课时经人审确认"对"被冻结退出评分线。review_server.py(stdlib HTTP服务)+ review_ui.html,内网 :8130。填补"KFA核验卡/队列只能命令行读写"的缺口——按 run 切换队列,span 类核验卡显示画面+三层子票,其余类型显示富证据文本,点按钮直接写回 adjudications.jsonl,"回纳生效"按钮直接触发 P6.6。跟命令行 adjudicate.py 读写同一份文件,可混用。绿点=处理站,橙点=判定闸,红点=人审相关,灰点=本课未触发。每站给出:处理逻辑 → 输入/输出 → 真实产出物摘录。
视频文件先过独立筛选工作流:ffprobe 能读、有音轨、时长≥1800秒、数字静音<10%(某秒采样全零=录制中断,不是课堂安静——活话筒录不出全零)。合格清单交给 make_batch.py 生成批次。主角所在 session 有两个视频文件(高乐乐 / 高乐乐1 = 同一节课的两个课时),都合格入批。
"TJPU-XSX-T16-20250421": {
"label": "天津工业大学|高乐乐|新思想|2025-04-21",
"school": "天津工业大学", "teacher": "高乐乐", "date": "20250421",
"total_dur": 5395.2,
"periods": [
{"pid": "TJPU-XSX-T16-20250421-P0", ← 主角
"path": "/data/ro/2025录课/2025上半年录课/中心录制/【ZX】天津工业大学_高乐乐_习近平新时代中国特色社会主义思想概论_20250421.mp4",
"dur": 2685.6, "tag": "ZX", "suffix": 0},
{"pid": "TJPU-XSX-T16-20250421-P1", ← 同session的另一课时,各自独立走完全程
"path": ".../【ZX】天津工业大学_高乐乐1_习近平…_20250421.mp4",
"dur": 2709.6, "tag": "ZX", "suffix": 1}
]
}此后运行一条命令:bash run_school.sh b_tjpu10,主角开始它的旅程。
44.8 分钟的 mp4 只解音频流(不碰视频),转成 ASR 要求的规格。先写临时文件再原子改名,中途断电不会留下半成品冒充成品。抽完用 ffprobe 核对时长:与源视频差>2秒说明解码可能丢了一段——会写一条记录进人审队列(只留痕不拦截)。主角时长核对通过,什么都没发生。
先从 batch.json 生成课时清单 manifest.json,然后:mp3 上传对象存储 → 提交 fun-asr 异步转写(带179词热词表、开说话人分离、不做口语顺滑以保留原貌)→ 按返回结果里的文件URL回映射到 pid(绝不按提交顺序对号——返回顺序不等于提交顺序,映射不唯一会直接中止防串课)。主角转出 301 句、5148 个带置信度的词。
"text": "上课上节课呢我们学习了第一个方面的问题啊,是第13章维护和塑造国家安全当中的第一个方面的问题啊,就是关于。"
"words": [
{"begin_time": 240, "end_time": 1000, "text": "上课", "confidence": 0.902},
{"begin_time": 1080, "end_time": 1320, "text": "上", "confidence": 0.989},
{"begin_time": 1320, "end_time": 1680, "text": "节课", "confidence": 0.918}, …]
── 全课 301 句 / 5148 词{"speaker_id": 0, "begin_time": 240, "end_time": 13080, "text": "上课上节课呢我们学习了第一个方面的问题啊,…"},
{"speaker_id": 0, "begin_time": 15170, "end_time": 25850, "text": "坚持总体国家安全观啊,主要是学习了为什么要维护和督导国家安全,…"}注意"维护和督导国家安全"——应为"维护和主导"或类似,这就是ASR同音误转的样子。它置信度不低,后面 P8 的 EXTRA 纪律和 P8.6 归因核查就是为这类问题准备的。
唯一不给开关的闸:算整课 5148 个词的置信度中位数,≥0.75 放行,<0.75 转人审(评一堂"听不懂"的课比不评更糟)。0.75 是刻意保守的阈值——只拦真正的转写崩坏;曾经加过的"60秒滑窗局部塌陷检测"已拆除(复杂度收益比不够,用户拍板)。主角 0.952,轻松过闸。
"TJPU-XSX-T16-20250421-P0": {"conf_median": 0.952, "n_words": 5148, "eligible": true}把人审队列里的裁决自动落回管线:conf_route/nonteach_overload 单条"错"即把 eligible 翻回 true;speech 闸须该课全部条目均"错"或已二次放行(release,问题在案准予参评)才放行;span 分类否决/人裁终点也在本站写回 segment_ratio 供标注消费(套用前过引文防护闸:核验卡引文与当前 span 对不上=内容已被重析换掉,拒绝按下标盲套、WARN 须重新人审——实战拦下主角 v5 重析后的三条陈旧裁决);asr_blame 的"错/拿不准"写 claim_overrides.json sidecar(分数不动)。首轮跑到这里队列还是空的、脚本空转;重跑轮次主角的言语筛查条目被人裁"错"后,正是本站把它从冻结轨放行(speech_screen 自查与本站双路径同语义、无顺序依赖)。回纳机制完整演示见支线剧情③。
qwen3.7-max 通读带时间戳+说话人的完整 diar,筛四类:红线(severity 单独标记)/跑题/身份不符(重点)/性质不符。模型说什么都要过确定性证据闸(引文逐字防伪、成段类 120s 时长闸、conf<0.85 标"疑转写失真");conf_route 判整课转写不可靠的课不筛查(2026-08-14 审计补——乱码 ASR 最容易伪造满足引文命中闸,不能凭它冻结课)。有确证发现 → speech_screen_route.json eligible=false 冻结:不建材料、不进 span 分析、不打分,先分流人审;该课全部条目被人裁"错"才放行。
发现: 教师转述美方言论时使用了"中国佬""香港佬"等歧视性称谓…(身份不符 @30:26)
人审: verdict=错 ——"确为转述美方言论,应不属于不当用语"
路由: {"eligible": true, "findings": 1, "kinds": ["身份不符"],
"overridden_by_adjudication": true} ← 放行,正常进入 P7从 diar.json 拼出全文,排除掉 conf_route 判不合格与 P6.8 冻结的课时(并集)——本批 conf 全过闸,T08 两课时被 P6.8 闸排除,8/10 进入 asr_scoreable。substance.json(说话人占比)2026-08-14 随 G-3 拆除停产。
整份 diar 转写逐句编号喂给模型,让它只标语义边界(第几句到第几句是什么行为),时长由代码按时间戳算。主角课在 v5 重析(announce 闸放宽后)标出 4 个候选 span,防线杀掉 1 个,活下来 3 个——其中 span2 没有教师宣布语,是放宽后靠模型自证线索新抓到的真实播放段:
① kind=复习 第0~1句 "上课上节课呢我们学习了…"
→ 丢弃原因: 区间过短(2句/26秒),按正常教学衔接处理
(教师顺口回顾上节课≠复习课——这正是最短区间闸存在的意义)
② kind=视频播放 第233~235句 "香港是美国最大的贸易顺差…"
→ 丢弃原因: 区间过短(3句/36秒)
(教师确实说了"接下来我们通过视频来看",但36秒短片不足以按环节计时长;
"教师宣布过播放"这个事实仍被记进 video_announced,没有丢失)span0: 视频播放 第29~56句 242秒 announce_verified=true
引文终点「我们英文基本强,甚至有一些大号。」 ← 这句不通顺:
视频原声经教室音箱二次拾音,ASR质量断崖下降的典型样本
span1: 视频播放 第124~144句 182秒 announce_verified=true(央视短片)
span2: 视频播放 第209~222句 90秒 announce_verified=false ← v5 放宽新抓
no_announce_evidence:「出现与课堂无关的记者现场出镜报道结构
('我是纽约市第五大道...'、'我身后就是特朗普大楼');转写质量断崖」
汇总: nonteach_ratio_label =
"0.0% ⚠️ 另有视频播放 3 段(其中 1 段无宣布语)(约 9 分钟,占全课 19%),
其时长因不可靠**未计入**本占比"为什么显示 0.0%:视频播放时长的口径是人裁终点优先、无人裁不计入自动占比(旧称"暂缓类",概念 2026-08-14 退役——模型终点不可靠,数字不替模型背书;人在帧带上确认终点后经升格进 nonteach_ratio_with_video 另出一个数)。0.0% 绝不代表这课干净,标签里那句⚠️就是防误读的。announce 闸同日放宽:宣布语召回仅33%,v5 起无宣布段凭 ≥2 条独立自证线索也能进 spans,全量 KFA+人审兜底。
P8.5a 顺带产出的三类时间预算(复习/课堂测试/行政事务各约几分钟——分工守铁律:模型只按时间戳报分钟数,占比与 >50% 判定由代码算)在这里落判:合计超过全课一半的课时写 overload_route.json eligible=false 拦截(不进材料、不抽帧、不评分)并入队人审(claim_ref=nonteach_overload),人裁"错"经 P6.6 回纳恢复。半数以上时间不在讲授新内容的课,不适合按讲授质量评价。主角三类预算合计 0 分钟;本批 10 门均无过半判定,本站空转通过。
过了证据闸、即将写入打分材料的 span,先抽帧核验:起点+2s / 中点 / 终点-5s / 终点+5s 共 4 帧(<6秒只抽1帧),连同前5句语境做成核验卡。能产出核验卡(证据备齐)是写入打分材料的前置条件;核验不了的退化为报表标签。主角三个 span 都核验成功(含无宣布语的 span2——它的卡带 announce_verified=false 警示,人审重点核对画面)。下面是 span0 的三张代表帧(起点/中点/终点侧):
"TJPU-XSX-T16-20250421-P0": {
"0": {"verifiable": true, "kind": "视频播放"},
"1": {"verifiable": true, "kind": "视频播放"},
"2": {"verifiable": true, "kind": "视频播放"}}
→ 同时产出核验卡 kfa_cards/{pid}_span{i}_{引文指纹}_视频播放.json + jpg
(2026-08-18 起卡与帧图文件名都带指纹——重析写新文件,旧证据永不被覆盖,
过期条目仍能回看自己那张卡)
→ adjudications.jsonl:claim_ref=spanN_引文指纹(2026-08-14 指纹化,重析后内容
变化的新发现不再被旧条目挡住;同内容重跑同指纹幂等);2026-08-18 起内容对不上
当前产物的旧条目自动标 superseded——主角 v5 时代的 3 条指纹条目已因 v6 重析
内容微变全部过期,现行待裁 2 条新指纹条目从 asr_scoreable 拼出每课时的打分材料 txt(自动护栏 0 条——G-3 已拆;有人工核验存疑提示的课在头部追加提示句),并对 overload/speech 两闸的拦截课兜底清除残留 txt(防 --only 局部重跑时旧材料被 P8 捡走)。生成后自检:材料头部混入念稿/放映/机位等 12 个打分杠杆词之一,整步报错退出。主角无护栏、无提示,材料就是转写全文:
〖课堂转写全文〗 上课上节课呢我们学习了第一个方面的问题啊,是第13章维护和塑造国家安全当中的 第一个方面的问题啊,就是关于。坚持总体国家安全观啊,……(10135字)
KFA 核验通过的 span,按引文位置把中性的起止标记插进转写全文(覆盖 P8.5p prep_score_inputs 刚产出的未标注版,并把标注后全文回写 data/score_inputs.json)。标记只说明"这段不是教师本人讲授",不带任何评价色彩——防杠杆铁律。
〖课堂转写全文〗 上课上节课呢我们学习了…(正常讲授)… 〖以下为教师课堂播放的视频/音频片段原声转写,不是教师本人现场讲解, 不代表教师自己的知识储备或论证水平〗 经济发展离不开科技创新和进步。……我们英文基本强,甚至有一些大号。 〖视频播放片段结束,以下恢复教师本人讲授〗(@字符1682) …(正常讲授)… 〖以下为教师课堂播放的视频/音频片段原声转写,…〗 国土安全是立国之精神。…… 〖视频播放片段结束,以下恢复教师本人讲授〗(@字符4616) …(后续正常讲授到结尾)
这一步的意义:没有标记时,评分模型可能把央视解说词的论证水平当成教师的(虚高),或把视频原声的ASR乱码当成教师表达差(冤枉)。
①先做缓存核对(2026-08-14 起判据=eval 条目自带的 input_sha/prompt_sha 纯比对,哈希侧车已砍——它是会与分数脱节的第二状态源,实测误判过 24 次重评):材料或 prompt 变了→旧分作废真评;被上游闸清掉材料的课时条目自动摘除。②材料+D6 prompt 同步到评分机 openclaw,起 3 个互相隔离的全新会话各评一次(模型 gpt-5.6-sol,prompt=D6 准则+EXTRA 四条纪律+材料全文),每次输出经 JSON Schema 强校验(score 必须是 0-100 整数,非法即重跑该次)。③三次取均值。
"TJPU-XSX-T16-20250421-P0": {
"scores": [60, 65, 65], ← K=3 三次独立评分,极差5
"zhiping": 63.3, ← 最终分 = 均值
"main_weaknesses": ["平铺罗列", "平铺罗列", "平铺罗列"],
"model": "gpt-5.6-sol", "effort": "medium", ← 2026-08-18 起留痕
"reason": "课程能够以发展与安全的辩证关系统摄部分内容并联系学生专业,
但主体仍以教材结论、考试提示和领域举措的连续罗列为主,芯片、关税等
案例多停留于印证立场,未充分转化为递进的学理论证。"}四轮重评对照:G-3 时代 64/64/64 → G-3 拆除 65/60/60(61.7)→ v5 重析(材料多了无宣布语段的标注)60/64/62(62)→ 2026-08-18 修缮批(M5 哈希配方变更触发全批重采样)60/65/65(63.3)——四轮全部在 K=3 噪声带(单次σ≈3.3)内,主短板"平铺罗列"十二次评分全部一致;诊断结论稳定。转写里"国家利益之上"(应为"至上")、"经营安全"(应为"经济")这类同音误转——EXTRA 里"音对即正确不得扣分"这条纪律就是让模型见到这些不扣分的。
扫描三次评语和主短板标签,找"教师概念错误/说错/史实错误"类指控。主角的短板是"平铺罗列"(结构性批评,与转写对错无关)→ 不触发。同批的 T15-P0 触发了,见支线剧情①。
K=3 极差超阈值才触发(模型自己都判不准的课,抽帧核验其证据引文)。主角本轮极差为 5(60/65/65),低于阈值不触发。阈值 2026-08-13 依 200 门实测分布(p90=10,12~16空档)从 16 下调到 10——G-3 时代批次里 T10-P0 曾以极差 11 被抓到并完成抽帧核验(1张卡入队);本轮(G-3拆除后重评)全批极差 3~9,无课触发。
整批的"谁出分/谁被闸挡/谁在等人"一张表。此前批次 10 课时只有 8 门进 eval_codex.json,被冻结的课从结果里彻底消失——要知道去向得同时翻两个文件; 1000 门规模下这是交付事故不是 bug。台账每课时一行 final_state + 闸依据 + 阻塞性待裁统计(span/quote/blame 未裁不算阻塞)+ 经 claim_overrides 过滤的主短板(被人审否决的指控标"⚠指控被否")。
scored 6 · frozen_speech 4 · 阻塞性待裁 4
主角 TJPU-XSX-T16-20250421-P0:scored 63.3 · 主短板 平铺罗列 · 待裁 0/2(非阻塞)
[占比] 0.0% ⚠️ 另有视频播放 3 段(其中 1 段无宣布语,约 8 分钟占全课 17%)
——其时长因不可靠未计入本占比(人裁终点优先口径)首跑即立功:台账直接点名参评池 8→6 的原因——全量重筛新抓 2 条边界发现(T10-P1 教师调侃学生转卖课本 / T15-P0 疑似贬损语且模型自标可能 ASR 失真),两门新冻结待人裁。这是筛查 非确定性的真实暴露:单遍筛查召回不完整,重筛会抓到首轮漏掉的边界案例 (宁多审勿漏审侧误差,站 2 大样本统计重筛新增率)。
主角拿到最终分 63.3/100(主短板"平铺罗列")。这门课经历过四轮管线升级的重新检验:2026-08-13 的 b/c/d 三项调整后重评分数原样不变(64/64/64);2026-08-14 G-3 拆除后重评得 65/60/60;同日 v5 announce 放宽重析(材料多了无宣布语段标注)再评得 60/64/62;2026-08-18 修缮批(M5 哈希配方变更)重采样得 60/65/65——四轮变动全部在 K=3 噪声带内,主短板诊断十二次评分全部一致,是"过程反复变、结论稳得住"的真实对照。
它给人审队列留下的 2 条 span 核验卡(span0/span1)已经裁决完毕:人在图形化页面上看画面后都判错——不是分类错,是卡面引文文本因播片段 ASR 失真读岔了(详情见上方 P8.5a2 站)。这两条真实裁决正是"三层子票"机制诞生的直接原因。裁决结果不改主角的分数,只影响"这类判定将来是否可信"的持续校准。
全部用同批(或近期真实批次)的真实数据演示。
这门课三次评语一致指控"将人民民主专政同时表述为国体和政体等关键概念混淆"并因此压分(K=3: 67/78/74)。P8.6 检出指控→自动入队,附证据(指控原文+概念在转写里的时间定位+conf+上下文,三层递进,比早期版本只给"指控句无可抽取引号短语"丰富得多)。
外部意见(Opus 独立复核):正确表述应为"政体是人民代表大会制度";"人民代表大会制度"与"人民民主专政"音节声韵几乎不重叠,ASR 不可能整体转错——倾向教师真说错了(且是"写下来"的听写场景,危害大于口误)。
真人两轮盲测裁决:第一轮"错"(转写不准确,附逐处时间戳);重推盲测后第二轮独立复核仍是"错"——两轮一致,推翻了 Opus 的音节论证。这条真实分歧本身是最有价值的校准数据:语音学推理再自洽也替代不了听音频。
彻底重评:sidecar 过滤(claim_overrides.json)只解决"报告里不显示",不解决"旧分数仍隐含冤枉扣分"。把两轮人审的具体发现写成 verified_asr_caveats.json 里的一句提示("经两轮人工听音频复核…不得依据这些位置的转写文字判断教师在国体/政体相关概念上存在混淆"),持久化进 P7,让 invalidate_stale_cache 带动这门课重新打分:
重评前 K=3: 67/78/74 均73 主短板: 概念混淆/概念混淆/概念混淆 重评后 K=3: 80/73/80 均77.7 主短板: 平铺罗列/平铺罗列/平铺罗列 ← +4.7分 新三轮评语完全没有再出现"国体/政体混淆"类表述;P8.6 重跑该批全部10门"检出0门"。
没有编造教师原话(两轮人审也没能确认原话是什么),只是如实转达"这里核验过不可靠",模型就能给出不带这个偏见的独立评价——这是整套机制刻意的设计边界:不猜、只转达已核实的事实。
若某课时 conf_median=0.71(<0.75),conf_route.json 会记 "eligible": false 并写队列条目:"整课conf_median=0.71 < 阈值0.75(5148个词)"。该课时不进打分材料但不删除——P7 的 build_period_asr 会跳过它,直到有人裁决。历史依据:这道闸在606语料+2025录课共68门人工金标上验证过(重度转写损伤 14/14 零漏检)。
人在页面听了支线②那门课的录音,判断"转写虽差但课能评",点错(=AI排除错了)→ P6.6(或页面上的"回纳生效"按钮)把该课时改回 "eligible": true, "overridden_by_adjudication": true(原 conf_median 数据保留作证据)→ 重跑 --from P7 它就进材料了。裁"对"或"拿不准"都维持排除——必须被人明确否定才放行,不是没人管就默认通过。
若 span 的视频文件缺失/时间戳残缺,kfa_verify 产不出核验卡 → verdicts 记 "verifiable": false → P8.5b 跳过该 span 的标注(打分材料保持干净),span 信息只留在 segment_ratio.json 里当"这课有过视频播放"的报表事实。验证记录:对主角的两个 span 人为标 false 重跑,材料标注 0 处、正文无任何标记残留。
G-3 时代(~2026-08-14),非主讲占比 ≤3% 的课材料头部会注入 "学生发言可能未被拾音,不得据此推断缺互动"的防冤枉句块。2026-08-14 拆除: 十门双臂 A/B 实验(同批数据,唯一变量=有无 G-3 句)证实它防的两个错都已被评分 prompt 的无条件保护措辞兜住——分差全在噪声带(-2.7~+2.0)、互动状态 0 翻转、 评语"缺互动"扣分泄漏 0 处。现在这 7 门课的材料与其余课一样直接以〖课堂转写全文〗开头, 自动护栏 0 条。
防冤枉句块机制与 BANNED 12 词自检仍在 (服务人工核验存疑提示):头部若混入"念稿/放映/课堂纪律/机位"等杠杆词之一,整步报错退出 ——防冤枉句永远不能变成扣分借口。遗留待查:A/B 里"仅确认式假问"组均值 -1.5 的方向性 弱信号(n=10 不显著),下一个大样本批次分组复核。
主角走完全程后,run 目录 /data/simpleEval/runs/b_tjpu10/ 的真实文件树(standing 2026-08-14,注释标明每个文件是哪一站产的、给谁用)。
b_tjpu10/
├─ batch.json ← 站0 make_batch 产;全线唯一入口清单
├─ adjudications.jsonl ← 人审队列(全流程唯一一份);含主角3条已裁决
├─ audio/{pid}.mp3 ← P1 产;P2 的输入(ASR完成后即可清理)
├─ asr_raw/{pid}.json ×10 ← P2 产;原始转写存档(唯一可回溯源,别删)
├─ diar.json ← P2 产;逐句+说话人,P6.5/P7/P8.5/KFA 都读它
│ (asr.json/ts.json/asr_ts 2026-08-14 审计停产——零消费者,从 asr_raw 可再派生)
├─ data/
│ ├─ manifest.json ← P2 产;课时清单
│ └─ conf_route.json ← P6.5 产;置信度判定(主角 0.952 ✓)
└─ eval/ ← P7 起的评价工作区
├─ data/
│ ├─ speech_screen.json ← P6.8 产;言语筛查逐课发现(含证据闸丢弃记录)
│ ├─ speech_screen_route.json ← P6.8 产;前置合规闸路由(T08两课时 eligible=false)
│ ├─ asr_scoreable.json ← P7 产;{pid: 全文}(过双闸课时才在里面,本批8门)
│ ├─ verified_asr_caveats.json ← 人工手写(P8.6裁决后);P8.5p重新读取时注入材料
│ ├─ claim_overrides.json ← P6.6 asr_blame轻量消费产;对外报告过滤用
│ ├─ score_inputs.json ← P8.5p 产、P8.5b 标注后回写;材料全集(与 txt 一致;_stat 台账 2026-08-14 停产)
│ ├─ segment_ratio.json ← P8.5a 产;span+占比+丢弃记录(报表数据源)
│ ├─ overload_route.json ← P8.5a1 产;三类过半拦截路由(本批空=无拦截)
│ └─ kfa_span_verdicts.json ← P8.5a2 产;span 可核验判定
├─ score_inputs/{pid}.txt ×8 ← P8.5p 产 P8.5b 覆盖;评分的唯一输入材料
├─ prompts/ ← P8 拷入刷新(P7 的冗余拷贝 2026-08-14 删);D6 快照(可追溯)
├─ kfa_cards/ ← P8.5a2 / P8.7 产;核验卡 json + 4帧关键帧 jpg(人审页面读)
└─ eval_codex.json ← P8 产;★最终成绩单(分数/评语/引文/短板/input_sha/prompt_sha
——哈希侧车 2026-08-14 砍除,失效判据入条目;blame 过滤读 claim_overrides.json)配套入口:图形化人审页 :8130(裁决 adjudications.jsonl,span核验卡三层子票);工作流逻辑+参数详解页 :8121。