feat: continuous concurrent gate orchestrator (algo #6)

- validate_skills_concurrent: 多题型全部臂共享题槽并发编排,发射序 =
  题型 round-robin × 阶梯序(base 先 cand 后),终态统一组装 outcome,
  verdict None(全 INFRA)保留 RuntimeError 语义
- gate_evidence 列 block_idx → ladder_rank(阶梯序号,0-based);旧块路径
  _build_evidence_rows 仅键名同步(值仍为块号)保持落库兼容
- 新增 3 项编排测试:乱序到达前缀有序性/双题型隔离/全 INFRA raise

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 00:36:01 -04:00
parent c61a6dac84
commit e8b66f85ab
4 changed files with 324 additions and 6 deletions
+4 -3
View File
@@ -103,7 +103,7 @@ _GATE_EVIDENCE_COLS: dict[str, str] = {
# question_id 列承载 unit_idsingle=question_idpair=pair_id);
# 逐题明细在 predictions 表溯源,按 pair_id join 真实 question 表会 join 不上。
"question_id": "TEXT",
"block_idx": "INTEGER",
"ladder_rank": "INTEGER",
"baseline_correct": "INTEGER",
"candidate_correct": "INTEGER",
"e_value": "REAL",
@@ -341,8 +341,9 @@ def write_gate_evidence(
run_id: 训练 run ID。
epoch: 该 gate 所属的轮次(1-based)。
step: epoch 内 step 序号(0-based)。
rows: 每 **单元** 一行,含 question_id/task_type/block_idx/baseline_correct/
candidate_correct/e_value(该单元所在块判定后的累计 e 值)/
rows: 每 **单元** 一行,含 question_id/task_type/ladder_rank(阶梯序号,
0-based/baseline_correct/
candidate_correct/e_value(该单元判定后的累计 e 值)/
stop_reason(仅最后一单元携带最终 stop_reason,其余空串)。
question_id 字段承载 **unit_id**single=question_idpair=pair_id)——
逐题明细在 predictions 表溯源,按 pair_id join 真实 question 表会 join 不上。