diff --git a/research-wiki/ROADMAP.md b/research-wiki/ROADMAP.md index 6b20852..09a7c2b 100644 --- a/research-wiki/ROADMAP.md +++ b/research-wiki/ROADMAP.md @@ -17,7 +17,7 @@ | P0 奠基 | 调研、ARCHITECTURE.md、CLAUDE.md、skill Fable 5 改造、hooks 硬边界、脚手架(git/pyproject/Makefile/conda 环境/CI 绿) | — | ✅ 完成(2026-07-20) | | M1 核心 | 内核类型 + httpx transport + 治理中间件(内存后端)+ 多源多账号 + 缓存 + SQLite 遥测 + 结构化输出 + from_env | GovDoc、Video-Tree | ✅ 完成(2026-07-20;239 测试全绿、覆盖 92%、真实网关+真实 Redis 验收通过、独立 verifier 问题清零;见 designs/2026-07-20-m1-core-design.md 状态行) | | M2 分布式 | Redis 限流/熔断后端、多源 × Redis 联合验证、背压、Postgres 遥测、成本、Embedding(Q3)、压测 harness | CHSAnalyzer(治理) | ✅ 完成(2026-07-21;契约双后端全绿 + 时间语义真实等待变体 10/10、跨连接联合验证、CHS 对标十项打钩、P3 真实验收 300 次双进程七不变量 PASS、独立 verifier 0 Critical 且 Important 清零;见 designs/2026-07-20-m2-distributed-design.md 与 findings/m2-verifier-fixes.md。压测收官: P5 故障混编 40 次八不变量 PASS,P6 首跑 58.1% 暴露三大治理盲区(findings/2026-07-21-p6-soak-baseline.md)→ **M2.5 治理韧性**六轮迭代(双通道熔断/健康选源/AIMD/429 免预算/健康门槛降权/连败抑制)后同场景 **98.96%**、八不变量全 PASS,验收见 findings/2026-07-21-m25-acceptance.md 与 designs/2026-07-21-m25-resilience-design.md) | -| M3 OCR | OCR 端口族 + MonkeyOCR transport | CHSAnalyzer(全量)、Video-Tree(OCR 升级) | ⬜ 未开始 | +| M3 OCR | OCR 端口族 + MonkeyOCR transport | CHSAnalyzer(全量)、Video-Tree(OCR 升级) | ✅ 完成(2026-07-22;真实服务双端点集成 6 用例全绿(含 Redis 熔断联调与 tables/para_blocks 一致性护栏)、P7 OCR soak 故障池 1500 调用 **99.73%** 且 13 不变量全 PASS(redis 双后端跨进程,findings/2026-07-22-p7-ocr-soak.md)、G1/R9/R10 三缺口销账;见 designs/2026-07-21-m3-ocr-design.md) | | M4 迁移验证 | 三项目逐一按 ARCHITECTURE §11 验收,缺口回补,发 v1.0 | 全部 | ⬜ 未开始 | ## 2. M1 核心(目标: GovDoc / Video-Tree 可试点接入) diff --git a/research-wiki/findings/2026-07-22-p7-ocr-soak.md b/research-wiki/findings/2026-07-22-p7-ocr-soak.md new file mode 100644 index 0000000..c079665 --- /dev/null +++ b/research-wiki/findings/2026-07-22-p7-ocr-soak.md @@ -0,0 +1,33 @@ +# P7 OCR soak 验收: 故障池下 99.73%,13 不变量全 PASS + +- **日期**: 2026-07-22;**验收 run**: `soak_20260722_002849`(redis 双后端 × 2 worker);**分支**: feature/m3-ocr +- **结论**: M3 计划 T8 验收达成——1500 调用成功 1496(**99.73%**,阈值 98%),13 项裁决全 PASS(含跨进程记账归零与探针不悬挂两项 Redis 活检查)。 + +## 1. 场景与池(测试环境不放水) + +| 项 | 配置 | +|---|---| +| 源池 | 源1=7866(真)、源2=7867(真,各 conc=4/rpm=120)、源3=黑洞 10.255.255.1(20s 连接超时)、源4=坏端口 7899(连接拒绝) | +| 负载 | `data/soak/chs_images/` 469 张真实图像循环;text/layout 实际 1222/308(≈8:2) | +| 装配 | `OcrClient.from_env(scope="SOAK_OCR")`,PGW_LIMITER/BREAKER_BACKEND=redis(db3),2 worker × 并发 8 | + +## 2. 两轮结果 + +| 轮 | 后端 | 成功率 | 裁决 | 备注 | +|---|---|---|---|---| +| 首轮 `soak_20260721_232243` | memory × 1 worker × 并发 16 | 1496/1500(99.73%) | 10 PASS + 1 SKIP(记账归零活检查 memory 不可查) | 报告 tests/outputs/soak/ | +| **验收轮 `soak_20260722_002849`** | **redis × 2 worker × 并发 8** | **1496/1500(99.73%)** | **13/13 PASS** | 跨进程共享闸,贴 CHS 生产形态 | + +关键分布(验收轮遥测 1530 行): 逐源尝试 monkey_1=765 / monkey_2=731 / monkey_3=14 / monkey_4=20——**坏源吸流仅 2.2%**(阈值 15%),且真源两处 1496 行**零错误**;全部 34 个错误行都在坏源上(TransientError,分类干净)。延迟 p50/p95 ≈ 17.3/29.4s(两端点几乎一致——排队主导,服务侧单请求 3-15s)。 + +## 3. 冷启动穿透现象(两轮各 4 例失败的唯一来源) + +现象: 起跑首几秒,并发(16)超过健康源容量(2×4 许可),溢出调用在真源"忙碌无许可"时把 `_pick_runnable` 的"第一个可运行源"落到黑洞/坏端口上,3 次尝试全烧在坏源 → `AllSourcesExhausted(retry_exhausted)`。约 30-60s 内熔断对坏源开路(源4 连接拒绝快失败先开,源3 20s 超时后开)+ 冷却备忘接管,此后 1400+ 调用零失败,坏源仅剩半开探针级流量(14/20 次)。 + +定性: 与 M2.5 R4"可信替代被闸跳过后穿透垫底垃圾源"同族,但量级(0.27%)远低于门槛且自愈窗口有界;chat 侧因有 AIMD 起步并发 8 天然缓解。**本轮裁决: 不加机制**(YAGNI——两轮数据均达标;若未来下游对冷启动窗口敏感,候选方案是选源侧"健康低于门槛且存在更健康的忙源时等待优于穿透",届时按 M2.5 流程走设计补遗)。 + +## 4. 备注 + +- 首轮与验收轮失败数完全相同(各 4)纯属巧合,机理一致。 +- OCR 无 token/成本(usage 恒 0),报告 token/cost 列为 0 属预期;TTFT 列恒 0(非流式,不适用)。 +- `tables/para_blocks` 一致性抽查两轮各 20 张全 PASS(设计 §1.2 取证的持续护栏,累计 35+40 样本零不一致)。 diff --git a/research-wiki/findings/p7-ocr-soak.md b/research-wiki/findings/p7-ocr-soak.md new file mode 100644 index 0000000..070e369 --- /dev/null +++ b/research-wiki/findings/p7-ocr-soak.md @@ -0,0 +1,10 @@ +--- +type: finding +node_id: finding:p7-ocr-soak +title: "P7 OCR soak 验收: 99.73% 与 13 不变量全 PASS" +date: 2026-07-22 +--- + +# P7 OCR soak 验收: 99.73% 与 13 不变量全 PASS + +全文见 [2026-07-22-p7-ocr-soak.md](2026-07-22-p7-ocr-soak.md):redis 双后端验收轮 1500 调用 99.73%、13 不变量全 PASS、坏源吸流 2.2%、冷启动穿透 4 例定性(不加机制的 YAGNI 裁决在案)。 diff --git a/research-wiki/graph/edges.json b/research-wiki/graph/edges.json index 692373f..4e32371 100644 --- a/research-wiki/graph/edges.json +++ b/research-wiki/graph/edges.json @@ -70,6 +70,11 @@ "id": "plan:m3-ocr", "label": "M3 OCR 实现计划", "type": "plan" + }, + { + "id": "finding:p7-ocr-soak", + "label": "P7 OCR soak 验收: 99.73% 与 13 不变量全 PASS", + "type": "finding" } ], "links": [ diff --git a/research-wiki/index.md b/research-wiki/index.md index 505493c..c083c9b 100644 --- a/research-wiki/index.md +++ b/research-wiki/index.md @@ -1,6 +1,6 @@ # Research Wiki 索引 -> 自动生成,更新时间:2026-07-22 02:09 UTC +> 自动生成,更新时间:2026-07-22 05:33 UTC ## design (8) - [2026-07-20-m1-core-design](designs/2026-07-20-m1-core-design.md) `design:2026-07-20-m1-core-design` @@ -12,14 +12,16 @@ - [M2.5 治理韧性: 半死源隔离与健康感知调度](designs/m25-resilience.md) `design:m25-resilience` - [M3 OCR 端口族设计](designs/m3-ocr.md) `design:m3-ocr` -## finding (7) +## finding (9) - [2026-07-20-m2-soak-workload](findings/2026-07-20-m2-soak-workload.md) `finding:2026-07-20-m2-soak-workload` - [2026-07-21-m25-acceptance](findings/2026-07-21-m25-acceptance.md) `finding:2026-07-21-m25-acceptance` - [2026-07-21-p6-soak-baseline](findings/2026-07-21-p6-soak-baseline.md) `finding:2026-07-21-p6-soak-baseline` +- [2026-07-22-p7-ocr-soak](findings/2026-07-22-p7-ocr-soak.md) `finding:2026-07-22-p7-ocr-soak` - [M2 verifier 三项 Important 补齐(不变量接线/网关保护/P3 验收)](findings/m2-verifier-fixes.md) `finding:m2-verifier-fixes` - [M2 真实数据压测: 场景矩阵与数据清单](findings/m2-soak-workload.md) `finding:m2-soak-workload` - [M2.5 验收: P6 同场景 58.1% → 98.96%](findings/m25-acceptance.md) `finding:m25-acceptance` - [P6 混合浸泡首跑基线与记分板三重伪击穿修复](findings/p6-soak-baseline.md) `finding:p6-soak-baseline` +- [P7 OCR soak 验收: 99.73% 与 13 不变量全 PASS](findings/p7-ocr-soak.md) `finding:p7-ocr-soak` ## plan (8) - [2026-07-20-m1-core-plan](plans/2026-07-20-m1-core-plan.md) `plan:2026-07-20-m1-core-plan` diff --git a/research-wiki/log.md b/research-wiki/log.md index f5c1a70..cfe1385 100644 --- a/research-wiki/log.md +++ b/research-wiki/log.md @@ -37,3 +37,5 @@ - [2026-07-22 02:09 UTC] 新增 plan: M3 OCR 实现计划 (plan:m3-ocr) - [2026-07-22 02:09 UTC] 新增边: plan:m3-ocr --implements--> design:m3-ocr - [2026-07-22 02:09 UTC] 重建索引: 26 篇页面 +- [2026-07-22 05:33 UTC] 新增 finding: P7 OCR soak 验收: 99.73% 与 13 不变量全 PASS (finding:p7-ocr-soak) +- [2026-07-22 05:33 UTC] 重建索引: 28 篇页面