chore: guard perquestion revival + mark v2 tables deprecated
This commit is contained in:
@@ -91,6 +91,7 @@ class RunStats:
|
|||||||
# DDL
|
# DDL
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# DEPRECATED(v3): v2 生成落库,Phase 2 生成替换后删;过渡期与 v3 表并存
|
||||||
_DDL_RUNS = """
|
_DDL_RUNS = """
|
||||||
CREATE TABLE IF NOT EXISTS question_gen_runs (
|
CREATE TABLE IF NOT EXISTS question_gen_runs (
|
||||||
run_id TEXT PRIMARY KEY,
|
run_id TEXT PRIMARY KEY,
|
||||||
@@ -106,6 +107,7 @@ CREATE TABLE IF NOT EXISTS question_gen_runs (
|
|||||||
);
|
);
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# DEPRECATED(v3): v2 生成落库,Phase 2 生成替换后删;过渡期与 v3 表并存
|
||||||
_DDL_ITEMS = """
|
_DDL_ITEMS = """
|
||||||
CREATE TABLE IF NOT EXISTS question_gen_items (
|
CREATE TABLE IF NOT EXISTS question_gen_items (
|
||||||
item_id TEXT PRIMARY KEY,
|
item_id TEXT PRIMARY KEY,
|
||||||
@@ -139,6 +141,7 @@ _DDL_INDEXES = [
|
|||||||
"CREATE INDEX IF NOT EXISTS idx_qgi_task_type ON question_gen_items(task_type);",
|
"CREATE INDEX IF NOT EXISTS idx_qgi_task_type ON question_gen_items(task_type);",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# DEPRECATED(v3): v2 生成落库,Phase 2 生成替换后删;过渡期与 v3 表并存
|
||||||
_DDL_VERDICTS = """
|
_DDL_VERDICTS = """
|
||||||
CREATE TABLE IF NOT EXISTS adversarial_verdicts (
|
CREATE TABLE IF NOT EXISTS adversarial_verdicts (
|
||||||
question_id TEXT NOT NULL,
|
question_id TEXT NOT NULL,
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
"""守卫测试:防止旧逐题(per-question)路径在 unit 化迁移后复活或残留。
|
||||||
|
|
||||||
|
Task 3-10 已将三池切分、分批整锁、pair-level 聚合、gate 块基线缓存等契约
|
||||||
|
从"逐题 qid"迁移到"QuestionUnit 整锁"。本测试对迁移后的源码做静态锚点扫描,
|
||||||
|
锁住四个不可回退的语义标志:一旦有人误引入旧逐题分桶 / 逐题 gate 缓存 / 逐题
|
||||||
|
累加 / 未走 unit 化的代码,断言即刻失败。
|
||||||
|
|
||||||
|
覆盖模块:batching(分批)、pools(三池切分)、inference(pair 聚合)、
|
||||||
|
app.harness.validate(gate 块核心残留点)。
|
||||||
|
"""
|
||||||
|
|
||||||
|
import inspect
|
||||||
|
|
||||||
|
from app.harness import batching, inference, pools
|
||||||
|
|
||||||
|
|
||||||
|
def test_no_parallel_perquestion_split_helpers():
|
||||||
|
"""契约迁 unit 后,不得残留会拆 pair 的旧逐题分批 / 切分 / gate 块路径。"""
|
||||||
|
from app.harness import validate as hvalidate # gate 块真实路径
|
||||||
|
|
||||||
|
src = (
|
||||||
|
inspect.getsource(batching)
|
||||||
|
+ inspect.getsource(pools)
|
||||||
|
+ inspect.getsource(hvalidate)
|
||||||
|
+ inspect.getsource(inference) # 覆盖 T6 pair-level 聚合路径
|
||||||
|
)
|
||||||
|
# 旧逐题分桶残留:正确率不应按 qid 直接取
|
||||||
|
assert "correctness.get(qid)" not in src, "batching 仍有逐题分桶残留"
|
||||||
|
# gate 块残留探测:validate.py 是逐题 gate 核心残留点,基线缓存键须含 unit_id
|
||||||
|
assert "baseline_cache.get(" not in src or "unit_id" in src, (
|
||||||
|
"validate baseline_cache 仍按 qid"
|
||||||
|
)
|
||||||
|
# 逐题累加残留:n_used 不应按逐题 chunk 长度累加(应按 unit)
|
||||||
|
assert "n_used += len(chunk)" not in src, "validate n_used 仍逐题累加(应按 unit)"
|
||||||
|
# 正向 unit 化探测:pools/batching/validate/inference 已走 unit 契约
|
||||||
|
assert src.count("build_units") >= 1 or "unit_id" in src, (
|
||||||
|
"pools/batching/validate 未走 unit 化"
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user