From 3f6f00a82e75724cc9c97261f035cd7b9abfc87a Mon Sep 17 00:00:00 2001 From: wantsong Date: Thu, 18 Jun 2026 02:27:12 +0800 Subject: [PATCH] Close Round 04.1 selector patch --- README.md | 9 +- cards/intellectual_archaeology.md | 8 +- cards/qpi.md | 11 +- ..._OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.1.md | 53 ++ .../01_RULE_PATCH_SUMMARY_AND_DIFF_04.1.md | 75 ++ .../02_EXPECTED_ROUTING_LABELS_04.1.md | 20 + ..._PATCH_ROUTING_VERIFICATION_REPORT_04.1.md | 175 ++++ .../04_REGRESSION_AND_COMMAND_LOG_04.1.md | 98 +++ .../BUNDLE_FILE_MANIFEST_04.1.md | 59 ++ .../optional_raw_changed_files_04.1.zip | Bin 0 -> 116955 bytes ...raw_changed_files_04.1.zip.validation.json | 47 ++ .../raw_file_list_04.1.txt | 37 + ...00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.md | 40 + ...01_ROUND03_CLOSURE_AND_ROUND04_SCOPE_04.md | 81 ++ .../02_BLIND_INPUT_SET_04.md | 48 ++ .../03_ROUTING_EVALUATION_REPORT_04.md | 771 ++++++++++++++++++ .../04_REVIEW_QUESTIONS_FOR_GPT_04.md | 41 + .../BUNDLE_FILE_MANIFEST_04.md | 56 ++ .../optional_raw_changed_files_04.zip | Bin 0 -> 99070 bytes docs/DECISIONS.md | 33 + docs/WORKFLOW.md | 14 + ...026-06-18-round04-1-selector-rule-patch.md | 108 +++ ...-06-18-round04-blind-routing-evaluation.md | 172 ++++ models/model_index.json | 6 +- ...文档_Round04.1关闭与Round05准备_2026-06-18.md | 161 ++++ reports/README.md | 4 + ..._routing_verification_report_2026-06-18.md | 175 ++++ ...und04_blind_input_candidates_2026-06-18.md | 329 ++++++++ ...nd_routing_evaluation_report_2026-06-18.md | 771 ++++++++++++++++++ reports/content_review_report_v0.2.md | 2 +- reports/selector_regression_report_v0.2.md | 7 +- .../2026-06-18-review-bundle-zip-packager.md | 184 +++++ scripts/README.md | 18 + scripts/run_round04_blind_routing.py | 174 ++++ .../run_round04_post_patch_verification.py | 276 +++++++ scripts/run_selector_demo.py | 27 +- selector/README.md | 14 + selector/round04_blind_inputs.json | 253 ++++++ selector/selector_rules.json | 34 +- .../intellectual_archaeology.regression.json | 3 +- tests/qpi.regression.json | 118 +++ tests/regression_cases.json | 146 ++++ tests/regression_index.json | 12 +- tests/test_round04_blind_routing.py | 65 ++ tests/test_round04_post_patch_verification.py | 44 + 45 files changed, 4757 insertions(+), 22 deletions(-) create mode 100644 ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.1.md create mode 100644 ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/01_RULE_PATCH_SUMMARY_AND_DIFF_04.1.md create mode 100644 ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/02_EXPECTED_ROUTING_LABELS_04.1.md create mode 100644 ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/03_POST_PATCH_ROUTING_VERIFICATION_REPORT_04.1.md create mode 100644 ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/04_REGRESSION_AND_COMMAND_LOG_04.1.md create mode 100644 ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/BUNDLE_FILE_MANIFEST_04.1.md create mode 100644 ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/optional_raw_changed_files_04.1.zip create mode 100644 ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/optional_raw_changed_files_04.1.zip.validation.json create mode 100644 ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/raw_file_list_04.1.txt create mode 100644 ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.md create mode 100644 ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/01_ROUND03_CLOSURE_AND_ROUND04_SCOPE_04.md create mode 100644 ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/02_BLIND_INPUT_SET_04.md create mode 100644 ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/03_ROUTING_EVALUATION_REPORT_04.md create mode 100644 ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/04_REVIEW_QUESTIONS_FOR_GPT_04.md create mode 100644 ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/BUNDLE_FILE_MANIFEST_04.md create mode 100644 ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/optional_raw_changed_files_04.zip create mode 100644 docs/superpowers/plans/2026-06-18-round04-1-selector-rule-patch.md create mode 100644 docs/superpowers/plans/2026-06-18-round04-blind-routing-evaluation.md create mode 100644 reports/Codex新会话交接文档_Round04.1关闭与Round05准备_2026-06-18.md create mode 100644 reports/Round04_1_post_patch_routing_verification_report_2026-06-18.md create mode 100644 reports/Round04_blind_input_candidates_2026-06-18.md create mode 100644 reports/Round04_blind_routing_evaluation_report_2026-06-18.md create mode 100644 requirements/skills-vault/2026-06-18-review-bundle-zip-packager.md create mode 100644 scripts/run_round04_blind_routing.py create mode 100644 scripts/run_round04_post_patch_verification.py create mode 100644 selector/round04_blind_inputs.json create mode 100644 tests/test_round04_blind_routing.py create mode 100644 tests/test_round04_post_patch_verification.py diff --git a/README.md b/README.md index ef8e377..22c7402 100644 --- a/README.md +++ b/README.md @@ -172,10 +172,13 @@ CCRA review packages are archived by round under `ccra_review_bundle/round-NN_YY Files intended for GPT / CCRA upload inside a review bundle should include the round version in the filename, for example `_03.2`. Raw changed-file zips should also include the round version while preserving source-relative paths inside the archive. +Use the installed `bundle-zip` Skill for review bundle raw zips. Do not hand-roll source-relative zip creation with PowerShell `Compress-Archive` when directory paths matter. + ## 13. Next Steps 1. Round 03 is closed after the Round 03.2a CCRA / GPT pass decision. 2. Keep QPI and Intellectual Archaeology at `draft / B / pending` until Owner / CCRA review accepts stronger status. -3. Start Round 04 blind input routing evaluation only after an explicit owner instruction; do not modify selector rules before that evaluation. -4. Defer any third-model expansion until the current QPI selector and case layer are accepted. -5. Route missing reusable extraction, inspection, or stability-scoring tools to `requirements/skills-vault/` or `requirements/ccpe/` instead of improvising local platform features. +3. Round 04.1 is closed after GPT review acceptance and closeout documentation. The closeout records `R04-BI-022` as an accepted collateral depth-limited QPI override and adds it to regression. +4. Round 05 discussion should start from the handoff report in a new session; do not treat Round 04.1 closure as a model lifecycle upgrade. +5. Defer any third-model expansion until the current QPI selector and case layer are accepted. +6. Route missing reusable extraction, inspection, or stability-scoring tools to `requirements/skills-vault/` or `requirements/ccpe/` instead of improvising local platform features. diff --git a/cards/intellectual_archaeology.md b/cards/intellectual_archaeology.md index 991abd6..b5ae911 100644 --- a/cards/intellectual_archaeology.md +++ b/cards/intellectual_archaeology.md @@ -175,7 +175,7 @@ - 机制稳定性:中等,七层结构清晰,但层级之间的真实递进关系需要更多案例验证。 - 边界清晰度:中等,最小充分下潜原则已明确,但执行时容易过度下钻。 - 来源证据质量:较高,核心定义和七层结构来自原文,停止条件来自综合应用材料。 -- 回归测试表现:pending,当前已有 19 条回归用例,已覆盖 positive、boundary、misuse、no_call、selector_gate 和 pipeline;Round 03.2 已纳入明确拒绝思想考古的模型级 hard exclusion 陷阱。 +- 回归测试表现:pending,当前已有 20 条回归用例,已覆盖 positive、boundary、misuse、no_call、selector_gate 和 pipeline;Round 03.2 已纳入明确拒绝思想考古的模型级 hard exclusion 陷阱,Round 04.1 已纳入 `不要进入思想考古` hard exclusion 变体。 评级理由:纵向下潜机制清晰,适合深度建模,但七层结构和停止条件需要进一步稳定。 @@ -185,11 +185,15 @@ `pending` -当前已有 19 条回归用例,覆盖 positive、boundary、misuse、no_call、selector_gate 和 pipeline。Round 03.2 重点新增: +当前已有 20 条回归用例,覆盖 positive、boundary、misuse、no_call、selector_gate 和 pipeline。Round 03.2 重点新增: - `case_ia_negative_explicit_do_not_call_001` - `case_ia_negative_only_qpi_001` +Round 04.1 重点新增: + +- `case_ia_round04_do_not_enter_archaeology_001` + ## 示例输入 - “我想把过去文章中的认知模型抽取出来,但不知道这些模型到底稳不稳,应该怎么判断?” diff --git a/cards/qpi.md b/cards/qpi.md index 4657e04..3c1ea23 100644 --- a/cards/qpi.md +++ b/cards/qpi.md @@ -204,7 +204,7 @@ QPI 的三分结构、核心匮乏物、主体性和动态性有清晰来源支 - 机制稳定性:中高,扫描匮乏物和匹配处理范式的机制明确。 - 边界清晰度:中等,混合型问题、多视角分歧和上下文不足场景仍需更多测试。 - 来源证据质量:较高,主体性和动态性来自 2025 原文,核心匮乏物和误框定规则来自 2026 原文,应用规则来自综合文档。 -- 回归测试表现:pending,当前已有 58 条 QPI 回归用例;其中 Round 03 / 03.1 已纳入 owner-reviewed case layer、selector no-call、multi-perspective 和低上下文 provisional 边界用例,Round 03.2 已纳入普通 how-to / 词义判断 no-call 陷阱,Round 03.2a 已纳入 depth-limiting QPI override 陷阱。生命周期仍保持 draft。 +- 回归测试表现:pending,当前已有 62 条 QPI 回归用例;其中 Round 03 / 03.1 已纳入 owner-reviewed case layer、selector no-call、multi-perspective 和低上下文 provisional 边界用例,Round 03.2 已纳入普通 how-to / 词义判断 no-call 陷阱,Round 03.2a 已纳入 depth-limiting QPI override 陷阱,Round 04.1 已纳入 translation payload no-call、depth-limiting QPI override 和 IA heavy-signal anti-recall 陷阱。生命周期仍保持 draft。 评级理由:三分结构清晰,适合作为入口路由模型,但需要补充大量边界案例,防止过度升维或降维。 @@ -214,7 +214,7 @@ QPI 的三分结构、核心匮乏物、主体性和动态性有清晰来源支 `pending` -当前已有 58 条 QPI 回归用例,覆盖 positive、boundary、misuse、no_call、selector_gate 和 pipeline。Round 03 / 03.1 重点新增: +当前已有 62 条 QPI 回归用例,覆盖 positive、boundary、misuse、no_call、selector_gate 和 pipeline。Round 03 / 03.1 重点新增: - owner-reviewed flow / disappointment / organizational year-end-review cases; - `case_qpi_international_logistics_no_call_001` @@ -236,6 +236,13 @@ Round 03.2a 重点新增: - `case_qpi_depth_limited_problem_definition_001` - `case_qpi_depth_limited_dominant_scarcity_001` +Round 04.1 重点新增: + +- `case_qpi_round04_translation_payload_no_call_001` +- `case_qpi_round04_depth_limited_specific_scarcity_001` +- `case_qpi_round04_depth_limited_scarcity_set_001` +- `case_qpi_round04_depth_limited_assumption_scarcity_001` + ## 示例输入 - “我们团队每次都说要长期主义,但一到季度 KPI 就回到短期动作,这到底是什么问题?” diff --git a/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.1.md b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.1.md new file mode 100644 index 0000000..28eaec0 --- /dev/null +++ b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.1.md @@ -0,0 +1,53 @@ +# Round 04.1 CCRA Review Brief + +Date: 2026-06-18 + +Repository: `C:\Users\wangq\Documents\Codex\work-projects\the-mindscape-of-bro-tsong` + +Round: `04.1` + +Topic: Selector no-call, hard exclusion, and depth-limiting patch + +## 1. Review Goal + +Round 04.1 fixes the owner / GPT reviewed failures from the Round 04 blind routing run. + +This is a selector rule patch and post-patch verification round. It is not a second blind test. + +## 2. Target Failures + +- `R04-BI-002`: translation task selected QPI because the payload contained `模型`. +- `R04-BI-024`: explicit `不要进入思想考古` did not hard-exclude Intellectual Archaeology. +- `R04-BI-035`: `不要深入分析` plus dominant-scarcity judgment was hard no-called. +- `R04-BI-036`: `不要展开` plus scarcity-set judgment was hard no-called. + +## 3. What Changed + +- Added targeted regression cases for the four reviewed failures. +- Added translation / instruction-task no-call coverage. +- Added minimal instruction / payload separation for no-call routing. +- Added IA hard-exclusion variants such as `不要进入思想考古`. +- Expanded depth-limiting QPI override phrases. +- Generated post-patch routing verification against the frozen 38-input Round 04 pool. +- Closeout records `R04-BI-022` as an accepted collateral change and adds it to QPI regression. + +## 4. What Did Not Change + +- The original Round 04 blind routing report was not rewritten. +- No LLM selector was introduced. +- No third model was added. +- QPI and Intellectual Archaeology were not upgraded. +- No RAG, vector database, frontend, backend, user account, or QA product was introduced. + +## 5. Closeout Note + +GPT review accepted Round 04.1 and did not request a 04.2 rule patch. The only closeout addition is documentation / regression hardening for `R04-BI-022`: it moved from no-call to lightweight QPI after the depth-limiting override patch, IA remains rejected, and this is treated as semantically correct collateral behavior. + +## 6. Read Order + +1. `01_RULE_PATCH_SUMMARY_AND_DIFF_04.1.md` +2. `02_EXPECTED_ROUTING_LABELS_04.1.md` +3. `03_POST_PATCH_ROUTING_VERIFICATION_REPORT_04.1.md` +4. `04_REGRESSION_AND_COMMAND_LOG_04.1.md` + +Use `optional_raw_changed_files_04.1.zip` only when exact file inspection is needed. diff --git a/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/01_RULE_PATCH_SUMMARY_AND_DIFF_04.1.md b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/01_RULE_PATCH_SUMMARY_AND_DIFF_04.1.md new file mode 100644 index 0000000..4ce2979 --- /dev/null +++ b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/01_RULE_PATCH_SUMMARY_AND_DIFF_04.1.md @@ -0,0 +1,75 @@ +# Round 04.1 Rule Patch Summary and Diff Guide + +## 1. Patch Scope + +Round 04.1 patches selector rules only. It does not change model lifecycle status. + +## 2. Rule Changes + +### Translation / Direct Transformation No-Call + +Added `instruction_task_no_call_signals` to `selector/selector_rules.json`: + +```text +翻译成 +翻译为 +把这句话翻译 +翻译下面 +译成英文 +译成中文 +``` + +These are checked against the task instruction segment so payload words such as `模型` do not trigger QPI when the user is asking for translation. + +### Instruction / Payload Separation + +Added `instruction_segment()` in `scripts/run_selector_demo.py`. + +For no-call routing, the selector can inspect the segment before `:`, `:`, or newline as the task instruction. This is intentionally minimal and does not introduce semantic parsing or LLM routing. + +### IA Hard Exclusion Variants + +Added model-level hard exclusion variants: + +```text +不要进入思想考古 +不进入思想考古 +先不进入思想考古 +不要做思想考古 +不做思想考古 +``` + +This fixes cases where the user explicitly refuses IA but uses phrasing not covered by Round 03.2. + +### Depth-Limiting QPI Override + +Expanded QPI-limited override and IA exclusion phrases for: + +```text +主导稀缺 +只判断这件事的主导稀缺 +只判断现在是缺信息 +缺信息、缺路径还是缺共识 +``` + +This keeps `不要展开` / `不要深入分析` as no-call by default, but allows QPI when the user asks for a narrow scarcity judgment. + +## 3. Regression Changes + +Added: + +- `case_qpi_round04_translation_payload_no_call_001` +- `case_qpi_round04_depth_limited_specific_scarcity_001` +- `case_qpi_round04_depth_limited_scarcity_set_001` +- `case_ia_round04_do_not_enter_archaeology_001` +- Closeout addition: `case_qpi_round04_depth_limited_assumption_scarcity_001` from `R04-BI-022` + +Counts after patch: + +- QPI regression cases: 62 +- Intellectual Archaeology regression cases: 20 +- Aggregate regression cases: 82 + +## 4. Review Notes + +The rule patch is intentionally conservative. It does not expand QPI into all governance, capacity, or organization-like inputs from Round 04. Those remain calibration discussion items unless owner / CCRA approves a later patch. diff --git a/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/02_EXPECTED_ROUTING_LABELS_04.1.md b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/02_EXPECTED_ROUTING_LABELS_04.1.md new file mode 100644 index 0000000..50ec642 --- /dev/null +++ b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/02_EXPECTED_ROUTING_LABELS_04.1.md @@ -0,0 +1,20 @@ +# Round 04.1 Expected Routing Labels + +These labels are added after owner / GPT review of the Round 04 blind output. + +They apply only to the four targeted patch cases and do not convert the entire Round 04 blind pool into regression. + +## Target Labels + +| Case ID | Expected Routing | Failure Type Addressed | +| --- | --- | --- | +| `R04-BI-002` | `selected_models=[]`, `no_call=true` | translation no-call false negative; QPI over-selection | +| `R04-BI-024` | `selected_models` may include `qpi`; must reject `intellectual_archaeology`; `no_call=false` | IA hard exclusion failure | +| `R04-BI-035` | selected `qpi`; reject `intellectual_archaeology`; `no_call=false` | depth-limiting override failure | +| `R04-BI-036` | selected `qpi`; reject `intellectual_archaeology`; `no_call=false` | depth-limiting override failure | + +## Non-Target Notes + +Round 04 governance, responsibility, capacity, and ambiguous-context cases are not patched in 04.1. + +They may indicate future QPI under-selection or calibration questions, but broadening QPI recall in this patch would risk turning QPI into a generic organization-problem detector. diff --git a/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/03_POST_PATCH_ROUTING_VERIFICATION_REPORT_04.1.md b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/03_POST_PATCH_ROUTING_VERIFICATION_REPORT_04.1.md new file mode 100644 index 0000000..6a2943c --- /dev/null +++ b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/03_POST_PATCH_ROUTING_VERIFICATION_REPORT_04.1.md @@ -0,0 +1,175 @@ +# Round 04.1 Post-Patch Routing Verification Report + +Date: 2026-06-18 + +This is not a second blind test. + +Frozen input set: `round04_blind_inputs_2026-06-18_v0.1` +Original before-report: `reports/Round04_blind_routing_evaluation_report_2026-06-18.md` + +## Scope + +- Round 04.1 verifies selector rule patches after owner / GPT review. +- It reruns the frozen 38-input Round 04 pool for comparison. +- Expected routing labels are limited to the four review-approved target cases. +- It does not generate final answers and does not upgrade model status. + +## Summary + +Frozen inputs rerun: 38 +Post-patch no-call results: 18 +Targeted cases checked: 4 +Targeted failures: 0 +Behavior changes recorded: 5 + +## Targeted Case Results + +### R04-BI-002 + +- status: `PASS` +- review_label: translation no-call; payload complexity must not trigger QPI +- before_selected_models: `['qpi']` +- before_no_call: `False` +- after_selected_models: `[]` +- after_rejected_models: `['intellectual_archaeology', 'qpi']` +- after_no_call: `True` + +After selected model details: +- none + +### R04-BI-024 + +- status: `PASS` +- review_label: explicit IA refusal should hard-exclude IA while allowing QPI +- before_selected_models: `['intellectual_archaeology', 'qpi']` +- before_no_call: `False` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` + +After selected model details: +- `qpi` score=0.74 decision=selected + - reasons: trigger keyword matched: 问题; complexity signal: 边界、责任; selection_priority=9 + +### R04-BI-035 + +- status: `PASS` +- review_label: depth-limiting plus dominant-scarcity judgment should allow QPI +- before_selected_models: `[]` +- before_no_call: `True` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` + +After selected model details: +- `qpi` score=0.59 decision=selected + - reasons: selection_priority=9; QPI problem-definition gate matched + +### R04-BI-036 + +- status: `PASS` +- review_label: depth-limiting plus scarcity-set judgment should allow QPI +- before_selected_models: `[]` +- before_no_call: `True` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` + +After selected model details: +- `qpi` score=0.99 decision=selected + - reasons: trigger keyword matched: 缺路径、缺共识; complexity signal: 共识、底层; selection_priority=9; QPI problem-definition gate matched + +## Non-target Behavior Diff / Accepted Collateral Change + +The frozen 38-input pool was rerun for comparison. Expected routing labels remain limited to the four target cases above, but the full rerun records five behavior changes from the original Round 04 report. + +### R04-BI-002 + +- label: target fix: translation no-call +- before_selected_models: `['qpi']` +- before_no_call: `False` +- after_selected_models: `[]` +- after_rejected_models: `['intellectual_archaeology', 'qpi']` +- after_no_call: `True` +- closeout_judgment: Expected target change; translation instruction should not be routed to QPI because the payload contains `模型`. + +### R04-BI-022 + +- label: accepted collateral change: depth-limited QPI override +- before_selected_models: `[]` +- before_no_call: `True` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` +- closeout_judgment: Not a new failure. The request rejects deeper IA-style expansion while asking for dominant scarcity judgment, so lightweight QPI is acceptable and IA should remain rejected. Added to regression as a QPI selector-gate trap. + +### R04-BI-024 + +- label: target fix: explicit IA refusal +- before_selected_models: `['intellectual_archaeology', 'qpi']` +- before_no_call: `False` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` +- closeout_judgment: Expected target change; explicit refusal should hard-exclude IA while allowing lightweight QPI. + +### R04-BI-035 + +- label: target fix: dominant-scarcity depth limit +- before_selected_models: `[]` +- before_no_call: `True` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` +- closeout_judgment: Expected target change; depth-limiting language should not block lightweight QPI scarcity judgment. + +### R04-BI-036 + +- label: target fix: scarcity-set depth limit +- before_selected_models: `[]` +- before_no_call: `True` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` +- closeout_judgment: Expected target change; depth-limiting language should not block QPI scarcity-set judgment. + +## Full Pool Rerun Summary + +- `R04-BI-001`: selected=[]; no_call=True; category=explicit_no_call_fact_lookup +- `R04-BI-002`: selected=[]; no_call=True; category=explicit_no_call_translation +- `R04-BI-003`: selected=[]; no_call=True; category=explicit_no_call_rewrite +- `R04-BI-004`: selected=[]; no_call=True; category=explicit_no_call_formatting +- `R04-BI-005`: selected=[]; no_call=True; category=explicit_no_call_direct_execution +- `R04-BI-006`: selected=['qpi']; no_call=False; category=qpi_light_problem_definition +- `R04-BI-007`: selected=['qpi']; no_call=False; category=qpi_light_problem_definition +- `R04-BI-008`: selected=['qpi']; no_call=False; category=qpi_light_problem_definition +- `R04-BI-009`: selected=['qpi']; no_call=False; category=qpi_light_problem_definition +- `R04-BI-010`: selected=[]; no_call=True; category=governance_responsibility_consensus +- `R04-BI-011`: selected=[]; no_call=True; category=governance_responsibility_consensus +- `R04-BI-012`: selected=[]; no_call=True; category=governance_responsibility_consensus +- `R04-BI-013`: selected=[]; no_call=True; category=governance_responsibility_consensus +- `R04-BI-014`: selected=[]; no_call=True; category=capacity_resource_path +- `R04-BI-015`: selected=[]; no_call=True; category=capacity_resource_path +- `R04-BI-016`: selected=['qpi']; no_call=False; category=capacity_resource_path +- `R04-BI-017`: selected=[]; no_call=True; category=capacity_resource_path +- `R04-BI-018`: selected=['qpi']; no_call=False; category=model_extraction_or_depth_modeling +- `R04-BI-019`: selected=['qpi', 'intellectual_archaeology']; no_call=False; category=model_extraction_or_depth_modeling +- `R04-BI-020`: selected=['qpi']; no_call=False; category=model_extraction_or_depth_modeling +- `R04-BI-021`: selected=['qpi']; no_call=False; category=qpi_allowed_ia_refused +- `R04-BI-022`: selected=['qpi']; no_call=False; category=qpi_allowed_ia_refused +- `R04-BI-023`: selected=['qpi']; no_call=False; category=qpi_allowed_ia_refused +- `R04-BI-024`: selected=['qpi']; no_call=False; category=qpi_allowed_ia_refused +- `R04-BI-025`: selected=['intellectual_archaeology', 'qpi']; no_call=False; category=likely_intellectual_archaeology +- `R04-BI-026`: selected=['qpi']; no_call=False; category=likely_intellectual_archaeology +- `R04-BI-027`: selected=['qpi']; no_call=False; category=likely_intellectual_archaeology +- `R04-BI-028`: selected=[]; no_call=True; category=ambiguous_low_context +- `R04-BI-029`: selected=[]; no_call=True; category=ambiguous_low_context +- `R04-BI-030`: selected=['qpi']; no_call=False; category=ambiguous_low_context +- `R04-BI-031`: selected=[]; no_call=True; category=explicit_no_call_how_to +- `R04-BI-032`: selected=[]; no_call=True; category=explicit_no_call_how_to +- `R04-BI-033`: selected=[]; no_call=True; category=explicit_no_call_dictionary_judgment +- `R04-BI-034`: selected=['qpi']; no_call=False; category=direct_execution_with_analysis_override +- `R04-BI-035`: selected=['qpi']; no_call=False; category=qpi_allowed_depth_limited +- `R04-BI-036`: selected=['qpi']; no_call=False; category=qpi_allowed_depth_limited +- `R04-BI-037`: selected=[]; no_call=True; category=ambiguous_growth_how_to +- `R04-BI-038`: selected=['qpi']; no_call=False; category=likely_intellectual_archaeology diff --git a/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/04_REGRESSION_AND_COMMAND_LOG_04.1.md b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/04_REGRESSION_AND_COMMAND_LOG_04.1.md new file mode 100644 index 0000000..5168077 --- /dev/null +++ b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/04_REGRESSION_AND_COMMAND_LOG_04.1.md @@ -0,0 +1,98 @@ +# Round 04.1 Regression and Command Log + +Date: 2026-06-18 + +## 1. Red Evidence + +After adding the four Round 04.1 regression cases and before patching selector rules: + +```powershell +python scripts\run_selector_regression.py +``` + +Failed as expected: + +- `case_ia_round04_do_not_enter_archaeology_001`: expected primary QPI, got IA; IA selected despite explicit refusal. +- `case_qpi_round04_translation_payload_no_call_001`: expected no selected model, got QPI. +- `case_qpi_round04_depth_limited_specific_scarcity_001`: expected QPI, got none. +- `case_qpi_round04_depth_limited_scarcity_set_001`: expected QPI, got none. + +## 2. Targeted Green Evidence + +After the patch: + +```powershell +python scripts\run_selector_regression.py +python -m unittest tests.test_round04_post_patch_verification -v +python scripts\run_round04_post_patch_verification.py +``` + +Observed: + +- Selector regression passed. +- Round 04.1 post-patch verification test passed, 2 tests. +- Post-patch report generated with 4 targeted cases checked and 0 targeted failures. +- Closeout report records 5 behavior changes, including accepted collateral change `R04-BI-022`. +- `R04-BI-022` was added to QPI regression as `case_qpi_round04_depth_limited_assumption_scarcity_001`. + +## 3. Full Verification + +The following commands passed after the Round 04.1 patch: + +```powershell +python scripts\rebuild_indexes.py --check +python -m unittest discover -s tests -p "test*.py" -v +python scripts\validate_model_library.py +python scripts\check_card_contract.py +python scripts\run_selector_demo.py +python scripts\run_selector_regression.py +python scripts\run_selector_calibration_smoke.py +python scripts\check_model_card_sync.py +``` + +Results: + +- Index check: PASS +- Unit tests: PASS, 22 tests +- Model library validation: PASS +- Card contract: PASS +- Selector demo: PASS +- Selector regression: PASS, 26 cases +- Selector calibration smoke: PASS +- Model/card sync: PASS + +## 4. Lifecycle Status + +QPI and Intellectual Archaeology remain: + +```text +draft / B / pending +``` + +## 5. Bundle Zip Verification + +The raw changed-files zip was generated with the installed `bundle-zip` Skill: + +```powershell +python C:\Users\wangq\.agents\skills\bundle-zip\scripts\bundle_zip.py --file-list ccra_review_bundle\round-04.1_2026-06-18_selector-rule-patch\raw_file_list_04.1.txt --relative-root-marker the-mindscape-of-bro-tsong --output C:\Users\wangq\Documents\Codex\work-projects\the-mindscape-of-bro-tsong\ccra_review_bundle\round-04.1_2026-06-18_selector-rule-patch\optional_raw_changed_files_04.1.zip --verify --json-output ccra_review_bundle\round-04.1_2026-06-18_selector-rule-patch\optional_raw_changed_files_04.1.zip.validation.json +``` + +Result: + +- Status: PASS +- Source files: 37 +- Zip entries: 37 +- Path mode: source-relative entries under `the-mindscape-of-bro-tsong` +- Validation sidecar: `optional_raw_changed_files_04.1.zip.validation.json` + +## 6. Closeout Note + +Round 04.1 is closed after GPT review acceptance and this closeout note. + +No additional selector rule patch was made during closeout. The only closeout behavior change is documentation / regression hardening for `R04-BI-022`: + +- It is not treated as a new failure. +- It is accepted as a depth-limiting QPI override collateral change. +- IA should continue to be rejected. +- Lightweight QPI routing is acceptable. +- The case is now covered by selector regression. diff --git a/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/BUNDLE_FILE_MANIFEST_04.1.md b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/BUNDLE_FILE_MANIFEST_04.1.md new file mode 100644 index 0000000..fcd2585 --- /dev/null +++ b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/BUNDLE_FILE_MANIFEST_04.1.md @@ -0,0 +1,59 @@ +# Round 04.1 Bundle File Manifest + +## Review Files + +- `00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.1.md` +- `01_RULE_PATCH_SUMMARY_AND_DIFF_04.1.md` +- `02_EXPECTED_ROUTING_LABELS_04.1.md` +- `03_POST_PATCH_ROUTING_VERIFICATION_REPORT_04.1.md` +- `04_REGRESSION_AND_COMMAND_LOG_04.1.md` +- `BUNDLE_FILE_MANIFEST_04.1.md` +- `raw_file_list_04.1.txt` +- `optional_raw_changed_files_04.1.zip` +- `optional_raw_changed_files_04.1.zip.validation.json` + +## Optional Raw Changed Files + +The zip is optional and should be used only if exact file inspection is needed. + +It is generated with the installed `bundle-zip` Skill and preserves source-relative paths. + +## Source-Relative Files Included in Raw Zip + +- `README.md` +- `docs/DECISIONS.md` +- `docs/WORKFLOW.md` +- `docs/superpowers/plans/2026-06-18-round04-1-selector-rule-patch.md` +- `selector/README.md` +- `selector/selector_rules.json` +- `selector/selector_calibration_inputs.json` +- `selector/round04_blind_inputs.json` +- `scripts/README.md` +- `scripts/run_selector_demo.py` +- `scripts/run_selector_regression.py` +- `scripts/run_selector_calibration_smoke.py` +- `scripts/run_round04_blind_routing.py` +- `scripts/run_round04_post_patch_verification.py` +- `tests/qpi.regression.json` +- `tests/intellectual_archaeology.regression.json` +- `tests/regression_cases.json` +- `tests/regression_index.json` +- `tests/test_round04_blind_routing.py` +- `tests/test_round04_post_patch_verification.py` +- `models/model_index.json` +- `models/qpi.model.json` +- `models/intellectual_archaeology.model.json` +- `cards/card_index.md` +- `cards/qpi.md` +- `cards/intellectual_archaeology.md` +- `reports/README.md` +- `reports/Round04_blind_routing_evaluation_report_2026-06-18.md` +- `reports/Round04_1_post_patch_routing_verification_report_2026-06-18.md` +- `reports/Codex新会话交接文档_Round04.1关闭与Round05准备_2026-06-18.md` +- `reports/selector_regression_report_v0.2.md` +- `reports/selector_calibration_smoke_report.md` +- `reports/validation_report.md` +- `reports/index_rebuild_report.md` +- `reports/model_card_sync_report_v0.2.md` +- `reports/content_review_report_v0.2.md` +- `requirements/skills-vault/2026-06-18-review-bundle-zip-packager.md` diff --git a/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/optional_raw_changed_files_04.1.zip b/ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/optional_raw_changed_files_04.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..aa0aebd30e6a880963747e3feda9617472324e02 GIT binary patch literal 116955 zcmZs?L$okDxNW&@+qSKL+qP}nwr$(CZQHhOqt2@u_uWplGDiCOGS|$Cyc9493IG5A z1V94PqV}|+lO{S006-EB0088FyNV(L!ZIRsHpVF$T5-f;sJ?G?6c&0mbGu06rxr|2 z*ksq!vZF}=a;_a+)^4R;RZ1#0ac`81k`R!H?f?LH`xH_aT?_V{Rd+tOYQuq@&H5T9-XCML;Om3|>Ym~tqzANiomQtGEU5c9n z5Au3j4r++>EH`QzpQJHv#etzy%TQC%?iZ^;)36ndn)dKjqpcnq8m7C5X;G+7i}Z{E z4@$}xypfEfoxQ$$qM{B`;ce#{pi6>NvFBp+%*`s0bk3b3*D0mKz(3dG7VxqQ#7_zp zjo`96;!akz$}y`L^+m03ZMd~e*oxUSHYgbc8@nj9Jbot+8W8t!_YKS=H(~IA6SB&w z5=yIXZs^dl-Qa^Cy9B4kMfq3!upH5MLYV5duGZ)vdgoE7Q%NHHy}Y$aDw^Svnu&z( z59l;QJxi1GV2#EJ07nxvD|sZ0b*Rj*k#Gr1DW|2Rq%K@acK`-Od~?$~noeu!*zwsM zs?Cjiv1k`PHA$+!I0BhUS`2_E7BYbycl#R3)pWpSDv4dFhUT(Mq2-KF?TDM7*j`w9 z=8;++v5K6S0EF?~{W=qcI1iY$*n5GrI^`m=R&70<0(g3tZSnR#$OWe z4#KQvqBH$~`r+p`OVX+A1Z=MC4kN?VoM?5i}9i z1jdyjVLm79U#>Hrm>ug6W?@$#Qr;mOT?Is|b1j4d8aWrWkD?CbsG+gKke0Zy8o=9B zwu@C|mfeRuAw{Rq?Hq^fPkbXSgV4Z-edDj0x86(6S&FER^n4_H_ z)s$GcqYpkGLLO<`u}Fb5-@-3$Eh#eawds7N9Ms4Sy+v3;)O}~gSB$=BQvnU&R_g={ z9`R{cOJS#pD5PXW)!;a%O(N6lGcgLLbmDjBKTGU<3l>svsgq)-(VSuFn%l42JZ0N9;J zIIhKN5&5CdkTnz70T;AP_RIg!SE}01#h&XU4$8N0q*bOsXHLl~A(}rph9uD{4CJ8z zu36^V0I&%)sSC{N-N+PjDul6u{5#t->C|yG;Ju!_6@L5b6=cC#qUM3Qa1>CCkNs%V z0U{h(^ni7im)@6_SGK8B;;QtDjM`ey_C30DF@AZ|7A^Ym;2#y4?bcu>G>6I>(lyTg zM;7383lBk{ou-|D$7n}*3ABJULr8ejh*_XzJjI13o~U2T8Ni7{S0x;Amdb#v<=E7O zIv7KBiw7^iP@S~Kd#f8R7ZyLKUSNhuOakpm5_{PYmn!Pcue$|TI*3N#PJ}}QUWNsF z1SMX_!*}T^mRVp*z^NpWmrZN_i8*2@5H6yRTvi5$$dGk`Gdl$f$03&Gcr5AS>@4t; zm8zhcNZtJJua=2FHW60jCIY9rVy_A&B_W@Gn3NPO%{0~r1Sy33Q21+B9rr4Kg}GLL zQ5LJm5{kY^9{P^*l@JS&_yj&Q9{_I&E(S%XGV_7d<&Z-^e z(~Rsa_XQ;;IbO}_-)H&sd_$2U`Iwt)SBOKhv>R)8&d5({ThsW@l|Lok6Nkq-M^;{! zs2Y8+jU3qtl|3vk^mM)39%kE(Gm?|o;2x{msfP5`{^wBAxJYn-lhT6*AuJH(*i7&w zq&vbXY#|Dz(`l%Ycw>=6q7}VPt9D_FZpIDSV*v7Pqk$IUyr7`+)ie$3QZm7o#g>Pv z0z9yE1&{b#PBTl3V}{E)6O;coc<0RKajT)KJDg~Wywp?i;9CVTl4&>_qYReQ7ulGY zb3z}5&$ITVOP6(R#hpok0G1tz*}c$m9P4b7=1wp27=mr!V_n8XG+e7VC}wn+nhQ=OR&B~A^i`^dF~(m$4PC~0iP2x&_|t1XcZhJ1YafpTiO z53Or8CTvtP3|_Jx3kiVefp3B3=uRl~_U4>}9%sf-bOgbi zuxf#25(pvIFi*^sAfTiYeacNw0xd3E{?5LSR3I+7XoaSyD0F;op3dy(DCg0-c=0HH zDIf9d7vE*(YE->*%kaXCW7aEilSFc;=I2DFK;s*LaN6A%-{IFG+h4&sc-Huz>MVbU z_E~dP0;!JM#OuEUI)J8!8MD3~kC(POKChS0Ge7sAGCtQex*kZacTtv+`t7$ldW&_M zk}DH>7n*=TTcAbeWJc8I7Frv^T3ZKhWpRW@e4PYg*#)wq?N}6j37kTjv`ca|9-hVF z>@KYX*=2jYzNF=dVbcNlxQHeJ7x zQ9gzQ6)Q`OXj8W92)p7ystDl44M1Mj`ErdTk-e>Zqt#mCb2E~43#Y@ngxfUxf5pq* zGAJyNGGZ|zS3XT84N4<{l1-sr>QR=Q>$p8e04*d|ZE7TbN~zYz2Y z*I5BIp!-j$zHZf8x0CKs#xJz5yjEQicWMzEKW?S$eV>n~W`4aNSABh-BXNIEb8~jR z?>|?2KhIb6dOj~x^tQfFb!&VdV{3jNUo&-l=p&oKB~hSUmoXD~jBwlY1z*E014=mP z6`qwEm(N7g$|l9rqk>pYsq5+b5bhHe>;K*4-j1%{&tXeTLrG0jWoBV!Vsd2^1!?rL zy4>V33#0NBZqgjnnuZpG@*OcvaKG5KJ8hz5y7)OcGJe5+MN3Ny z4-d(AY;dMWp&SLaM6gmg$Z|<;#1Ball;qdD9)s69%{W+O;%}XXnOo%2g$DoZ1YkU) zWDWM2Q}YzwmpCvHbK#9!tE#pwsRZ$Gvuev+ouhyytpUCBahA1}gtqFDuq9=R!-mI# z)tWAT#E!!5`$Kkz$!8@99V$vN@}AE^~Wv%n8AGg^aynpz6dvM*NluE1R;hT5D%=wO6DeXky@lQ|fuTsZ!2+eT+q z$46PZ8bg~d76~a>h^`fz&`TEnD~G=nzy63D#SpBmILLzf$vvn2I{GEf^iSMYY!UIq zG9Z~bd@o4##}iK~rLnWk8wEyy#N+L4QAhZ9b{&@ecF&jUpFyOURfUetau3EO11*On z)B|OViHbOtTQTW=U#{}=@IF9$A~A&v>3l>X6Vn>taQk3;YJH>W6vNWh{^$O@J8}Ly z6vi#=pB2uLH2K0lyV$W!QOJjaNgI!CzUUC`fm5Lr4&*bey!7(^u_%EQ>Y@FH7B)Ee;i1>EN`8f`qr{Vdml0e758R9$-lr)y3F)x#szZ-Nl* zKHobu#23B%|4k3c|D}h~aoK<=g#Tg#H2?tOe~Yo5krTbJh>(Pmgq*C>e<`9zQzs5* z%*AIvEauXFep01Wwd6Gg>I6w_!ZfbIZzBP##w~|h z2lgWdYQ2u_NJqpDw}Q{-z2yzXRfQUs6+#!QE}0!ph1X`D z%5C96P1=tndskNPgDMxrfaW|18seL$goT`)rX5f`O0w$iOO6d%Bbs9O zeSM8e3S$ioX06XL8W>m8p?zh5@lJ?RO3oZCp<2#HDb(alk%7>eS8SZmShq(p-g7u< zpi>GDlvvdh_E8pnOqqFVGfk-KC`N&k6Bo7yiR7yPXsa>BA)s>I+H>;Y?~Yf$kj|ad zcM0)JO#g3fJ*}%FE~pu}Thgc|YdyHLMH)&$$_vfrr>06NgK+~jkE0Hf+c3wc8 z)=`%r{kY%opDXWnkojB|FGJWxuM_phEulnB;FXWX`v{}Nq-UgWH=+5`n~a$nSRM%t z+U@qcC_5=qqRp%hH}wfrw;6&~5BE#>7Qr^#vAG=@8X>uGc5)VCu;dxFkZ!I18zm;* zKm(Bk+*BiL*pdz-br1-Ex&fc?g-WI?oT3P#|7hnay853Quh+Rz>OpcL2QWzZDzg^z zb$s!hVDk!DS}aC*iUq7|SP_^8n!qXLAbyR7NNKnDTQN;fTvYLw)~hm`Kz}|eP0hJ;qyr% z#(pe2`dH%V?#j#|Zrv8CB^Z)o?h@w*E3|-d7D-k{32)nM94eyhMdsqrkCsD_ zHLL{1-q0E@160hOKx@R%@~jPcR~I3GF;=g zuwCPKviGPsU7qh_Vc=1l+~4WTno;HkHIv+3>3M>4f~1PeB8??>DizD;w6x@;HUH`* zR*cxCA*APtO!0Tt6_XlkwRrVJfN3JpHR>??f2W_XDAL>(mXYl$mxK^t+-VU0fa2D% zMq=smAeOqEB*mecG0fx%!Hh(oo5Ysie;7`C;N$7IrchM;6`)NMb0>Z_J7G4brud*7 zv?-YzI;>QZ(-XUVZIkF`6iK!AIwOx$GrV*b z%dJ6W{$4|?B%(ghLz*#|XCDGeV5-B`L?|3ygY*JR6MixRMq6a3{Im=B20uzw(Z~=J z2;mqm+_a~JFv3xsE7_J>{&yJeIXK)=w<`+Kj2bCm(UTG^0+OXO4W`Q<&S1_{!qMCK z0>mIl8kiR8Rv*!(2SP41Dg`{t{hsO{baFg)c4(ST6_oFFl9n3maku} z<5LDCjl#J`pQz6^M@GVE(r1tG2a{c0#e0RJ26{waOf-=>TRU5W#(L@KIMgTk$zjjFwast~^sR#G2ZmHJWQN8qVRVBRQgl zFwywJsGX<_5J7wfMYw5K5K%yZ|2w@@`$$_USHxCUL5w5JW&Cx?0vrSnhD6b4iU!mS zJ2mfTu$2d81+GikhJJbgALlw3?@#6epH)rzO9#m>Sy|E{v^*Blt=P0v$Q&qcpV-&` z2FzjPSd^(KCQgU4fXaz?n)5#byDOyg>+|zJ(fd6Q=TIV0gyu|d=-f)ckl)E%g8^D3CLyrtE&Q9 z_}?X-P;inDxm+SKAzM0Msk70Q3kuidMNDLxBIV}L=X3v{2y%kQ!~St*Dd~;ej)#NC zBP-BZIJ0IPdHlYg8A^C7WbGIIa z6BQc<*3$M7T)<&Oqg&!(*DHx{%x|Q}Yh))Zs*q)fAhwI&gQ|p;lwHWhRA}auxXCi-?A8-o&H@cGS{+VDgOK*V zlqW|)XIE26VmC`sv{t5t0l9$tVqbj}+b-HpQ7+ESf(50ZRhynBo~#3Dlxlgo1x2=e zWxqk^V!#X-39J|+HPC$w+%qIWxzr#@ zl1IQND1gN^1Rj4SioGTyzDTL?m&_N__;bQ9JE*QW-zg4zIDndMV$q3(327Ezd6%W3 zs%F_w0O?OS{BMbDyV2exCscVjjs^6P5omw#2-}q%HjMpQxjw`H21Y@-{%GWVbDm&_ z0}mo!_<4eWApi!oW|Ew7b?lPfo?wNUL<`0NWk$T0KDtJrV8$R6T`}Ms zIE#2!fr3_M7wyk9u+SWYBt5S_MwvJ64a|kz4!=SSr4O^g!rAKdJl*P%jgP`o8H+VB zwvL2sXv%UFP-s9EAwKkkQageV8k0gw1u$Xa4KYuf6gtefqZYFys{CfL$Q=`5`eZE6 z`yr~&>-R!zNY(>N$$DG<-yuxd`l<2nlF{*+NYPO@G!we;UrPZAixX@-#=9#7J~w(E z%j+p2rUW%gSrOuiprNc)IAbd(?;e0SXa2)>T|O9;c{2&EU@e(@o-0zR@dr_3K{lz` zaH_zV@LaYU0S>pcwge_+5qfP;BWuqAhLq}71uwXB^Nz;o@Prc{#Aaq>#(6Ru$tKA$dthbD&YHPn&B-W%j&SsH(2<+yM{aCw<#$KP z1!8$9WWuBh%fIIU`uO;rwqS7u42*1vL&2d}tK_qeH6;JVf0#|!6Wx^iG`U4MQiA<^ z*`2Pi{AImDtogKr7~RtU=-xAD3plX|-j@145BvJqQ${ZylkoYzzVc*0pb$wxzEZek zd}MiEvZs(=(Y@g)RYAYDCZ#nD4e77zrVfGHS`R%;bJ; zCi@TR*QNBn5Buo&ygsk;xIbQ&{<2H+krFt>ya?z-6=Mk=0;Hw2Xw7NT5oXijzNR<6~nzOo(8OAv;!y3oKqk`@BA8gvTzzj)?l8!XC0z z0@qvEzZxDA1po_=Xusvw#N!<@+46~)Dh4mo^-kRlZROlH6x*NbL3Hr2R7Oz*j;a#T z*dt^{CAbY!wR;4@q(#oJ!ys+W*!dHW;dE!g9ZVfO zX?8wh*&E5-UpaTvnTenZ_7-2fm7VRuG0U7`p~M{(NtqpcFJ_OxvDwmAl&NY)uu9$? z;PdokAt@&KW31PQ@xZhB!3@u!H)d$LTy7O?BZJi@1lvsHmF9(IRdoxhj>!SvN@FJ- zXIg45$kBktu-l^AWTAf{=j;df2zy|pw$rs09OoU5w z>0o{+ zU*>s{@nN(j`}7hp|9vf9yQ@c9JJ{oxi)E@KV7duM;S*VzfHMgLC)tB+qpFXGreXsm zYR*yUEr3MU(LUZq?AzplCuV^Kmq%>5s*FBfD4@}jM&3N4XAoE$>@)mQh~O>OWN^!I zW{w@RD8;{67~_I)4~+(Xod#nfaoaQyd5lXm85??tVWo~8qgs;Pi*g5-wZiR=t!&2oPuO_D6p4bX%h@vI}f|yDq#}Inkxe|FP(RWkC8BetPPd{K5UN`9OkS)W-C!+s=ak0H{C$0Qf%w zn-!>s_sPC=J%@K5Ch>^*igS(CGT!YeqUebZ zg4e5{ld*(VEir|?GyCpYQ*D2;=62VD<4M=XJn zbup_{d&NlGeA2!cad>8S__bqd4kK1{4Z61hEl9n|V1!@_6*v*%ZDQX7>m}-ilfLs` zmIS;MDo&%`+cnNvgSS)-DzQj!L}PxN;KF?8J~0GYk_6ACqP>?C4+3{t0q+=jqA=Vw zT1Q2$9VjWV&bw{?LyPeJYD*rxZ7oRua93L)omUmRn0(^zy>=8`)loj9>*cIeAS2FJ zB*lx{qfVmqW95~CiQ*(DC7^X8IQgE?As1XvFjc}yx-)Jtu% zK+l>D&)v^B+k$lsTNJb;&i$|#^47faRRFol9ya*?wU{?kns!nxGxw_AiKO0S!$A@L z(cN;^F5Pu;1qjPvnyeni;FJo`H812HV{Wfa!O4`jS9lYo6Kx7(Gu9K{5B`c)7MU<31;?$V9yZxnqXr6dhJjG7eGM4Fbc=CA3VzSyO8JHv)n_S%zsqDbCd>K-qS%*@J1k0~MsLCnlRKW8 zBPtO1Sbd9Q`O3@+pm4VmlHg~CPb;r1G7k0FO>)&&rp=}nKRlDBdmoeMy-ERxyKCf| zXMdI~#O`#P@1KIqoEuR1+D58O^xngo)N3XzWv|0kwphayf8ea2K{(8Zul5@y6BE_Y zT%;Xg258SIcLsa&oxtwSB$a6wtNs11@$vq>#uo)d6=VfYC@v(bsK+!S@IT+6lW41lgprtkh0b!1n6c$-v4WHvaO ziqhkpN5kqwy?fq+Lbb2l*R>J+Bl=CMowJDz$bY9rN4Qy>(3wh#e)=x9T1FiKM3AxswNmC){MyxU6qHZn-aFS0Q%47`WE|ov%`YF;9r}A6)G)`4T&Gw&%T6SY zjZ28u#FpgfJBf<20^1 z&9>Z>c{xcm{dm8Qr0$< zCR1}Cc!cg${#mzbObL-uLCR^4yR@;H1zQvIODUD`JHqaSGKc=gX4L}>cqcX;Tz1C{ zBJcgOrp88Aq)GQr0Uo#qO>ol+eSsWh-=(d_5uxWh*=hgYEoRAc!`HDEzk5W2wcfGL~iA8vwj zR<_;O&)Ghl6zCUjTnt|)xIX)HQS0E5bEQSRpIrpWV4p=Kc(y%?v&Fi3jnc0<(B-EF zf&WBw8y@T3Eff-Be$$qOyE!XH$;`YPS7pI6vv`#fgLh&9Wn$MDxTvF`J)Ew_rO$^5p(|AOYIJ}eG zJVXX=UVuQ)9|CLPsRTl#QAKn*OGzp@RQ*R|xW+}bf27$(G^7t?WUwP-J>?oSHi40Z z0BriSbDw$X7$o~PJK+g?wpCP?wC{l@0MaTrNTOTW8|2@maH0$lrc19Rd@~ZYBr9?j zV-A?h*56qxp=)f;U`SJNaORs0lgJ`Su;5JZHv2-9I$I$-L-Vn4u(}2a$8C(eUS)1C%zuw+^hS!!q{4IHm>z;| zN!ylr#A}E5kn7&xoOJ+SS+}_F&55TYS4Zx4Qx9{x@A+8J_^*9bGNPdD>+(X~cK(Wa z@+$tUbnD)b<Eivtm?aK2{k%#JOuy6{{8B4%-JX zmU_%B;d#gRU;Q}8@Vj{W(1*oQ0g2ig`_abH{n*6L@oSlS+Mh;p>I~QAH1{PXIS|<~0 z6C-CkM_NZ0YZF>~17{=i|L~_peaH4_6t(wF38s-ff^d@WN(Y2aorN64*O@2k89J!Oq4QGbIgs{npJ`6V$HF9E;S9Q9?;F*WIz2m+VI_}qP zqa2~bfYdttl&CYk((3hh*r?C6FUPxo8Yow%2@?f1Qw%+RM@LIbk58GK&<*bRg-LLF z`5|MGU7LPAda8JNu%23DT1A5&bZ(X~xP%G~QtDV*I0|Bc1w!9qoG=4bbHqfrO#gae z;X$!pWoKzY8|@utz*vwz_8@^5JtRB>?M&W`0u_;6o_mSPhGzLtF|rD7%I213@m$7% z##TB`nJww8#P#C1J#|vLl-nYfQf#MY|%{Ay_+O&^vRS-iTH0iIF1vVJ z6yX+_nsaTjADz~*1lq`m1FhavnV(bS{%GMsA`I8b2eFD8gH4-21G6N!5rbGtDaP70 zy*)K_e`R=3So1XGqTdWh4k_4?DI^2p+Kef$ej!8}soeWH9GC3BQqCt7Ijc0?^k(MR zE9#VT2(&@b2bW(<<9zM+Ih&hRfB2WZM(zOsWEqnGKQzx8Hxu7l51RF+0=f66CP5OC z{9srRHaZl=UUMsLG?n>(*90|eXpHn61rJOrV#ZlcLAaVk%DGMCA4cdqjcq;k%*@=(K6-eSdH8-8 zzkDYPa#vegw^f9qebHptQ6YF9V1x}y4O<#*nim^8LH9{}AXb)>mVfof+~9f<8~Mh~ zDCFn1$0jaT+Gy}6TZIS`YzlqH7mvx&K(ods?5iJ-Y)cta(Vkjs0Jv+87Lx8QKLXY7 zlhjcREezQ8M;qX#)SpQArmKgfnz%p-PB?(IR}QV%7}$BWT{ckrtf>Qzp;F=_qW8fC zw}4{DP?GG!rKe{%NJBg;bsplZt2+>&RS+%VC*#6+evJj$V%2rWsu;7qg8TR#=jBFU zZ?Oj^e!CsN%Ktf*ykpJFjAZLcTFyJki_gO9c;ypjqCN)%GAFgusTIXSA!et}wW#o* zLKC5-KpsbkfyOX4-~wPV3V&hYh#IoxdnZuH?x4twO_1$IkcOrXRt%pl_Y_;1m0MDg`}9_F>t z_qKlw>5;GD&8OCk4ENq#{ ziSHCOXAQowRXA|-XvqX)3%uM^{W4s!RRsyY6>ab7_*vfazO?aCH}Hia(?w$X(aAK_ zQly<;V-Ya(P>qiB(a@i4zOzV za$R-D%`Fmtnr}Iomm#H_z>6>^w3C?0#XYdeXJ=y{S~}P#!SOqe8wBRVh#B(bI}aJy z@8EkU*@pfe5D*Wf+Wr;RY#ZFaHb;Q-I{FnmIKO^xNB^d}&bbcz`W@(+Z^MQ2<-~a& z3;JQ;;KBYP4?9q>v$JRM1n4VcZt>tOO+Zo3}fR0J^#=~4KF*}@3{6psICAwLC95>v7!@!Z<-Mu z`YKn$Sm8^tZ&QBzP8lxnmb~&4JWZmSku~4*)%KooJVaH_4*5Ut{-qSXEJUvn)|$yEIm*!Og$FTIGv1CNZ1z7q$RazLMB>rAZtF-E{S>l)E%$?RSdd* zto?V?(T;niSSoEXhD1lotFKn4E3`nnww;2Oj#?aevQ27KAiCSwGk+ywy%oLyk+T_c zk;_&wQbeng9NS?5_(!I~2oO(M+-T3~#(ndaKI|t{RyYt^m@V@NJzQwe>jyBJG zPv=j#VE7tFV{lkn)xk(RBJ6FTG=9&zIvQhrP^@NYN_HU)!-$h{x}SYQL01LX6()0{ zXSleumbmz4e+^PK@roLMz<_w@wtrYUfk`geQ+=hG9`4^0!>e*k)t8*v-XEfy1t*B1 z{$%?y)aNy{u~FgEAg~q&Pjb8%rLkZHe^kRjU_H#$5TM-G4$eKQL_16fwwU7aJ5Iz7 zx1L}Rm#2CUZ+T8N^21|!=a-es-|qE;8>48Bk;G~^jZ!dd8H~eOM3JY4b>!1|2e&)p6@{qE1B(aYh&^*%edjrrjMkME0{%lqfe zQ&3yo-{8N=4aa}^aKy?H=#Z=FST%&7igyVytZ@M@Kts^d23puo$#ZXfnt+e32a}WX z1XnaKs39YfVdG=m*-C@b7gk%dPx$u2WYn$fqxg@l`$`oaTz5gk;E-SIFsT!)Ucbej z-!jtWc1~SetcOSEm5=#gT|$Ay`|69~>?zVm;R_{lX>TEUh!Qzcx+wjyWP9w`$+9ep z>&W^=v>%Y{fz)o1_T+ZHg08e^UP8RncZ;Bvd|jtCasG+UWLsU?QRwdn6+!r8cDd8G z_=b=7U&ki~FL!GPU7cRej_&lf5}5Z^8;3r(i^feXp&-l)F!AjLQ~mHMzp*P+x*T@k z>lanVyB^?yqq1V-2*h(a_%IHk#bvg3s6cvJ7{!LcH3zGM^%G2%-U~2z>fI%7B+VaSzHW;8@h~P4W`N4eS>w|8LAu^ zisp-71PcS(WSHl@I4~OmYqj@A_hx3Wml4T;UMZ$mmWOkr=xyAwKrL8=MMMXy(cqSN z1Zqv|>(O1k2m02d4FbYiHL8Iy0$yLJ0!llmX{no_DT}?#$8C2t;~GE)NClB(HA;WitA|e+64@rgw2^Hp=%ByhS0wL9lag( z1;n$-bD8rOFw`Eb5)}feIaUH~Hm>>9q?gBVlWf}ga)_nw;J}nQ#Sijl7@1CSpM_3- z@%`^SU-&OBn%4ALZT;uI1F-=B{`)rczw`Wm2D{$>$%0OFmQHrIGwNDOTjFTGb9M3$ z*)t?bGqyLsK|Wa?yOI?k6za$Z9wrIFk|mRHfO`FGnAWvyqX&kABVdBz4c;G&MYa-h zAJAT!u&!0K*i0?(S|T0tc}rz;C4Ej8ZSWulG*nfO!37tG)EaSAn(o(mgX>3Pe0-jd zX%ae~2GKm%%z!G{sWI_v66w#FDrjRR<=m8^tO_b+lvl}>F;bP{=OoE*_uohGchYv+%bGGAu5fq2* z--1gf3JJm-vafb&WvD{YvIw8;bW-%>Eo%n=a5}%R(x649EfSd5@g?PGv5wJpM3qc{ z(~9bfW<`?9%l%%ROq5Xx@o;p6-+!;}0b7>F*+CqWxChEB6*MtC&&cnA?!y@$m9HmXjDE3IEu^=p>H)uTjB%F+i>P#-h2MaLR> z`gS^p*SxcOUvg7=T_3Q?++cZ(g0*nj%b-ndR$MP}vTnd9uQ{F(2GJ%pS0toQ*Lzx7 zz@Nw_aoHnI-I@DGp|jBCsMz7BZB8tGa==Sv9eHxqqFe;OuD|mYx1A9zMbf>|NmJ%k zMrBC9?vw`<+JccnLXo{VsQ)aHAP#Gqv1CSZFP!Hj24n-&2Ud*fNf9T#f@?Knlo~IW zJQQOw2o+QSG$q|FlSkiPE9H0vddP7Ryy#g3^#M@^>-xT@(5>+(h|SIEgWRxuV~_E4 zd0Mc@D%-Ay(swMu;s=&eJwW3D%E6j;3HxVr3l0hQVaHY50*_qCG~1;7h7a%io@!#b z@Uw5ZPDG#1WPJ$L$@lYD6>Q6PAI{RXR40w|vdp~_q8bW?CQ(kPhxdu!qbF8>r zMpN(XRChgOjQHW0Sx)S6^YkKC$y@0GjWkU37jIWAT-e$tWN%NinF6jy?qcBvwx z&w5jV7zG~=whe#%f?ZB9+cW8L5CE#LQI5)j@m9Bq=az{*uwZF;p7L|@x!bis(=gC7 zgO$M@JUJ6elsKSF1EQ|*=#J?f`RXn0NZAvk1?%~Jo{*Cv!b$M|WnI4pQC{|bOdJW# zbSv$-&7S7x7p4%~L&8Vk&wRNyz|=sejB`=Ic1)>#$=4kA%6%bAU&&*0htvBb-l21+(^&>P*skYqmN_Z=BQF7pYD z%?J)}lF-gHB339XZ{TC!VHG8+@My8&%~Pz0fA3Bee2Q)Z?00R7YEtpL-LlBP#mQT! zKFu|$?Xr?Lz5;HYYf3 zIzvrEp8H^#D>{}MJs*~eeF4;|%Dx&Trw=(xsDlTM$f!U65$0W$gW3BCbJgdbH(UI(aQ# zzAVK&*?C$yMXk+5E_(dlY8uQYK{;KO+)SjB>>@mj;f)T!iA#!P@KX>-rTgH~T3_y? zDh?D&z;hm8Z;2Nlx7mvxgk4*ho8AH9toU0nQvo*a%WjVQ)b0K&_PWUHQ|-G(FZGbe zB)-TqES?``vU4(3ur63U$kV+ydHD#3biVJXugbd zuW&72P^Dp0Bu~AL(F7WQ?`oTd58gkHgBBB+FyjfNfBQF4^o-Hf_SwHDViEO{JbQ|B zhxxydNdNfAJ!xaF+=ej}PnB5J&TwaorqCE%8N~pB&+i5MUm35#j4qFf%LPxNo0zm zbZ&%QdaDZ#3>b78DGQCD{Eq*L8{iNB8&U}jm=BEOaN-#jEwn35yDd8nq}w%E0doT) z-t^ql63lLCYn`;qN(CJ1xUA7M?UBskGUHO#3T}9w%V&63k+;i(6U$C&Jx=v73`4>q zkq05sSZb-%B*g#z{JD)H|{Y#OX z0K?9;O?gZJ*E9(Mmdk|zaMz*c%Um!k+=D*c&k)V_p8NaB_cETJt2>D`!kkE`UyLFO zmlB|S%c;N6aawo{}+mk46H2-9Sxi< z>}>TcZ0%i~|35++@zGGiw#dBo`HPJ1q*GB*b5V11uceZG$vA3i@#?&j&6X!o1lmAL zq*7{}k(Lf-01J*sNMG@f83>;d1q#w23I3gm?wwv%`3vz#qgR3iLnnYF;;M{EmMqyl z+iAPo^DUy#3t0}|H7SSWL4)O8fI%oZT ziLn%&pU*wtT+&xw8q`duj~+$B(s^ssomocV!IC4B9{E9%VQdLUlN^RAk-AdJJHL-p zXIcD<0ZMzLt}LLm2QHyUTP2Dtc)`ewfCtHAXH`-tG9bk%qK2WxQxM7&oI_+tdTV!{z;?Iw-n%shQHy}nU_nkWle?< zHEbB0aKG=m^Oa&x!k0GZVJyPuyXY$S0Q4d5wW3A89IN1d3ZIx>qzNfb8 zRjw<(B)7N{*_G`19kWn9Zp(QI@br*I+50xT^mww}Y~tX~MuYQ|yI4f%Bf=UAi`91Q z0H64ik71Cf_g@425wb)oPd;BkdG`}im>DZwg!R9#)7S1T?E3jytC7F{+LDJcH%=3+ z-a!2N(egS78JCMZ60oY(r=A+;UOJulZ>9%r{H9^cEHTP6}2>;$9-YcbQL_%LbI?tWx?Nt&piRro#A z`}_7oo#&RdS@86tl6@ljHYppqxC!<`8H0w zc$wCYCv4-w8naDJS0v-vsQaNGcNbYABhM1kVQA!{TkIy{0frLequFZeTBH5Irv!X& zcUDd^s|#S0y~*829r~KR$Y5T0l^CWsZ1#&3^7{+}qbdIXFm(=0nnhW&F59+k+qS!G z+qP|Y*|uG8SzWem8(p~lMNHh8pRjktigQ-(%qJBSn}E%)qb>b{8dhp0-AFVMKRZ?` z-NMYjL0U88aAc`%Zac?MhqV=s)GwC#62YLM@tRf8M!?I}8dMGqm-lv`Q>#hnJLnmw9e51jpsvO=$zP7p3i6ZI`3SL>U2f; z8^3$>a~mH}<6a+E%7aFwzSUzv)gP$^6xs<^iiodehu^C&?Vl^ZqLF2T}xUoyG2Bd_7xG#jDje z8ZKssBtTN8ye94?bM@y?FuHn0MWN@9c5CYRm6ohol7MUc+#`_Ly1V^1Ez*IrH|bBM zw^~$n)Q-adb38e`W8i&q9v0V)GP)*kojSY{ZoAu7V#jnhaDFBI{(v(gT07@h&3TH% zMQwA_x@Rv80|SqfBsjBcD36IJHgg3+$k?VQyJ>=d6N2P*soC4&IzAXK7!y$KfK-s+ zSr0B!@g~@xXwV;C-bRZipoC1Uc3R$o#Ip~M;)hvz7*ctnnK@=6FUu@xd9SK-{$9iB zJj(*Fu8G332C!u%Iv5miVwELm)hWaXU15RDM8xl0A(^^LPs(IIDn85Up_pFzmwp5cRcFIXjE zVf!ab5QVEGZ}lZO&>%xERoZkYm*+nyV0XA6dN{+B+I#zoray^&6iO3U;dAx;N4LL*sGU1kNq|QJs#`$Yp7&L9G5hLc^ zY{vR1$M|^Q*XPj;RXsMeBL%ATHmRqGI30nci6W_Xha{;al$y%moR7EA@-B}B3Nv#X z`+iKGH(NQk1zDCX5|m?F^gVFr)5oGVNSE~(bu$&VC0vnZzu`l;=MpwRKDI&$Dh zh=g^aes+kB5^AH((mvVX?42n3XJIr>f=!iClf}m6?5~M&LMI?aT`w4aFQ1A(Ihz

c(0l3BEvmIxd2r@qXG$cX_$5tC{nDebCxh!qUAw|1O>#LsyWVY-%^4<-%^+}`>azvxwfiWGQn*2rw$ zo7Z4&5OvS|*A;f?MtP}QpG%?8Yvh~Bu2$%+4~QWP&i^{CNL8$G4^rLqPe6K`KD}l! zx6OV*<5Qz3^?;!2ues9H;8d87)PoHoq>rEnG^Q)%B~y}>F>0S+5n?JKc>Z}nG&RdL z;6^x5C4(#-5U|SB8Yt~jwQ69OD!(E2D<7ELPvUp0Lb-7M z+HqF%#}0K`j!LOMf%$N)+GJkt(I!hwbeBxwtZQ%)SPZZ(JIxPorh2#XEg@8LSe2Iz zpItA3SnDkGxlj!+z|{=YkrC?WCMcMV;_<32jxP?RENi1&XY#%m?XbbSp@%EZkWJE8GI2$mheu`z#pF- zu)vWCzq-QM(?Dy;v(m7lQn>|t(jO2w@d6}>Bxap(PvglNy*@R&rRhap2u1Cn*Af<$>DA=S9_TzqepNAklfk~ z6Hr9(mLVvL#>DKwD0g=VS}N^3LfWUnU>V(k*j#V6K{j9A-I~B%YqbyF4a~s}AsJC4 zFBhp;)7-RLN@y!Kcf1j|5#WF{iwnrikLdi5T*vK!5hxKnD9g)Ps@iSp$giS5B;zt^ zpr@mk?aznGj+2+IBw4p?7%a7jv554e4#dbZjpyquOo%v0wujrEhs*qx4vuSj-hV-uGj`~DBe%xoGb z<$P_a@=Vrb=(_Sm-p=2#bC66Y@Zhowv|q7V0sP4UM(|Mw9a~UYCr@A^`6E5@)=)bU zdvL}MHRXw}n=Ybnz3c0LgZ?5S>SoIxY4{#FROiQ)WwLq*Hv!?Jn%&g_bGmkxz=n~Z z2Z8tRq;W4kku?Oi6qJOo)29%;Z52u>$BH@bOV0GqVCnpg0n#)1F6Pon`q*q;f0mi? zcY<=#?o}y>Ci%Wrl$yKtf)6(- zBop{E?RVub&mOFecDI^mnWUKmNHB_dHG7upei*EaHSD)OAJ%^l1bI0R`;`Z1`}ypK zB}cL-1>AaDVKiLEErAq7$EBzIVonluI2!9KrCpXSIUD-K7?Voqq*ubJbBGaCI8t}$h<|%UNQyO>7wf{ z&0Q#R+(qL)nHy{CI5JOzL26fW*V3GcqnI~urEoN@W%O%aNLm}M&Waq4%T1azLDeA2 z^idBNjbRi;Gd)X;{glEa!)gb1-XYMb;d;?MsOudy>8+Yzxlv`4=fpgdhYE8?f0`4 z^n^Z9Rd8OQf=hlVJ!)Xgk z6-f%A2xdwn?*nrAcVA4wvwpCc59WLWz=ccSY+PeC zbDn|;&iN7^EF$%Vu-?A|pbdl<6H{eHWKoSR zik|mCVpTm6EvSicISS_02ffiWi6 zYY*xOInqh1I}l}(j-*_!2f6+R`A1MdDcMgi93!d%1_(4d_x>3-Hb8~o@H3L&__w($ zd3VZE`}6L1IJloGF@#kR`BEaz%EyzE(sD>$e5c+ofJx*DeRnr8NtbKZk*}zrROQ2> zD7Y+Wt41Ks-f^n_(!bDN;9I!`vmw@Cr%yM_G1`=7zG837C}-{h5bZatIB`I*v^ll( zeL=+U^A2H0Y2?I`J2L`*?>9RVj2O>FtPEs0iYh(e)0fx|`cB6fLOTp20uR!Vux%~w{%!yp>j(8 zDRP&i>pu_w5De#BC{gOthcW&Va8po#qrs6y?GT$}nt~PL74Vt2A&~1cH3nd`zY`t- zEK_mo2zf0zIxP*Bi)k^_e?$UgCs+}E&%I;Na3ZI4t?zR8qP30={q-V zyRU(5U?(_9H%hdnH5;}=`YZP@u`VI~!SMzRAw`0YBG}jIGy3by`w4-tS^)4@V~76~ z&^`_xAaROedmWXT*^2Sj(8=f?h=kw9e==`pEZnc*5$&M+5RW|i`|-tFysV*;ET~v6 zQ+?PIpyN11OyX}!PP+n2l5q;dN=dnQnG^To(B4ULl*t*GDToXhBnpiw9LwQKH4-Mn zxZZEqT(^q8gZ;W!qrKpgAqRug87Y(Q8#LZ&`D;n=|Gm^F5fl@g+z zpC_jYBE7r)p}zX1+5ESa&(mdQ2d2t1-`pbZw#L@m@3Tg%!v=Fufw?70+mOV^K;+x! z5AK*;^ZBEXcdpd!%VQfW^%XFv9B8-%to5u&t{Aool}EMY6|WrLXEkYVs15sRZselA}$z`7-PN7 zN{yX~nO-<^=$wtfUggeg|Icc}2p|F^c|(37=;u+Umdj%L6cmVlpA#5gUZtC8a+JnC zqUlCsqlw6E7U%xFsL?*&xfO@e8c^FDck*NkM+{p1X4@Z{*|lSwEwEBwyIJlt&*@W|$i{yewNX`3;tK#d z|1@eUOfhnSOrn@*kdGLVltbw+M3P`l!DF>MAGkL#Uv4I4k?RH0c7}%!`0d5= z(N$Sk=0=9_*HUFjGY~@V@H77>H zo|tFO^!a~z1Q_>=b5?dZRi@Nmyg+Mc)$b*9Lhzk>5LQLcruUaeXawR~r-XTfcXu*d zb`^@9iTZ(3{CrsR7|rn!wZe32u&vS08PV^Q+qkb@AW!bdnVaKS@FB+t34ZtUtjS$( zfj=yKRb3lzx48mDkx6oM#fsO@w&gT+ z8l&mzMLDQrV}?nJaj$NhhRT|OBL3>t06Ro=)35uVErV&B;f zH?YrrX`KZc7YOX7IS4MBBXam}spJulMk~Y{l`Cb)a}T@O>wDyME5#N5I7UvpgyjbA z1R>Ploce!`6=sSPX8d>$T53KSx1vR6fZZ?U7+0ro4RMrsnJjw#$i%OM@-{_R_Oy@1 zUDGA3ZWlubYW8T{p1ZLFP}!50_=qJDfTH9s%o!E*jh1%;8WG!H?m&lwaq1n;lQ3J< zgFCSeq&~OR6-Q;wXXdH{R0X}Jw0QbEPhq9f7$XPxGTnS?;TVl)R=(6!AGDAYP4+5L z`Y227^p|KQ^HP9#q~zeY_+>vM!-eDCPB@S-Zf<2HoLm|(z*7ovl;sxR=MHphGnV#| zZF{V;JBBWAia`80h5RuwK*}%LI$LEozDL?Eak&Vn)R4K%liA@Og}VzBPM-+uOo8-_ zeXMXXjVEl;wt^rX>x?Bs+I@d9ZOeC!w`zGAd>|Ygw|6?13_Gr~A97+{M#LEj{v|KeZVIw1-{|s-wT^Bs^4?7D z0eF;d!a|g!S-f%^&D{^f;|hi$DNL}oGk-Y(p?=~#P^C%2S*A<)RM$OIU!|nj)I-_I;p6f=8y3YIz&wx!8O!WL? zf`P-UkC9o|n9Jfew#h64fCA}lIa}&V@P$e~^2-pz_A_@fXv9NBv_R-;l4BTD{{~YH zk}^EAR!CMef7GEHzuxRme?Wm}DuUP^4qq+Tn&OcpjgiFa;zoYZTCA%>HGgH*yAPfM5S`IkGQ%TeG^VSvm2G zSnxaC()U*X$5?t}Y8x_Id(p)sY!;gYL&)43@VhE;^jM8bNr3vg48|Ho(CtLe!J*V5 zHCVSE@f9)S`#n>xy}eB*-wAfM%WsMC$Lt5pVCKv9U(9itMAHNDvd~@2dIeOt5|XDf zmiolpC{@-zT|zlDKi^XZv)w{Do1Wk`X;kmt*t(k;WQM&>m8TojH!+gc9}KfV24WW; zgxxkx+hZl-dPJ*oTe)uPpkfa1c@p38FC2pkEuzU?2G4Q&j}HK6^Cm8nE^8>pNsIoz zr5OhVoME-th}Ey9)J*F1Zbek0rqz3^buZm-@n(QAkJWzGzXf8~=U6>*yz@3`6`y^o zwv_K;f3hLPYp39M?&w7WRqn%FIJ=(+ZT;D<3HPNNyo1y)^_g?0!4rbSult}|zFPah z0?0-7qaammhMKT5&HTWi@-!hX`%v%a&{0{0O{IiK;h~AF$Q^C+8;EaC%{93=QAe8( zxtyYQdVV^`CSsPl9_JZ|k@Gwan<2WLC*qBDIS5XYU*%lPhtI$EEWxS45Ne#zZw_?o z0XKFdkD>{Uy!CR~0xg)E0c>;ij{w4k*&>ah=XE3ObW%t|KZW}}OVsf^Ehr958h4c{ zYR>}-F5M6y>(n+K;|R2Ar6&Keyyz=w6RI(XAYWtXm+e4yfoPvZ=jxTKI*l~cDN3Xq z;^<|>gG0P;lTsoGYpVUup3Fiwn!l_Ews4nkQ{Vz$)3CKSz=lxGemuO`x6Dfo68H;U zg}?RLDGJ|f+8lPt6*Sx1mQWV`Stbr>M{&3sTznupJa?f!<7LZBE67MOG;klMGGp_1 zOvSipjc0qRG#+z^o>xz8;U-VL_QbP(&QWu`G-*sw@eubMmTH!O$h9FaC@*&c$sIcX zVHeIMi^9>D6oEwtZ}@ZVhRD*73)sMt*-1~nGr;$$=9pB{#)jN zygkMXPfE_Y+DdcAYsP~l@5T{dds9qmuCm5^(M2PkC+X_O@Nk|Wh_iS2AU9f;gB%tz zc_B6(8OQx^+xRJpdDti1LNN1`fJCPqXV(q^QzM1T(~qYEk;C4uI|-zS6K^boH{$xx zCns2o-!xuyR$fVA7)7*E4EsiL{izWlsjSb|2t94tgfGaU8BTe$_GhVX-zZ86YWU>} z+pHFjow&7Vw#KFxT-g<#OAp+-&ZR`|#gxU!IjXiKZua+vcu#DRj++I==k7C&9=bo1 z?oY3eYH+*8;&k!CXqd{Fgf(mHB$=8w27yyKL3C?YEoG&sjT}1lJ)lTlI&29wjhZV1 zeRUI2;GUSeG*!X2fiUUi^vN9}fyb@_t$vlhdAl}90B{J;H7R>GD2g%Ufx39r}ZwWi(VLL?7Ty&>L zT(u1{{@I);?506R-QFNS@bXHngVdWPjYOOD=!av36cASk;FFNVwP&;$DL9O#qA-jd2XFqZ;` z`LL3pczjG|4MUn$SQe^LOn{=>!rPmnUUf2SSTP{Nnm9Y{3 zOf`94IRefZQt+D1q$@IuR8v5i2xcUHilpYGT0B5D|Gdw`rWfAgIb{v0&;mTO#kJR3 zhq$jGFN7T_)I@e%V~hG|asE2};Sqd!LnWmMqmLDi0&scwp!W)(euWy+2#AFJBU>D9 zxQ5j8({4^^aXvxivMW>4>vMcvPSW&Vum?XytQmUqVZ`=9)OoVK8AJ*Ga z@p+)2wx%@mr|Fbzv4>9g1%;r#!X;8Oty|{Cm?1fLra6|tc{H>mSsmIc^SRrMB&Fbo^D7Bx?%5PG^rL$dX3mJrX zAe}#mpQFhG(3Y<1EzjGMmuh&L11YW_`YGi@f9i=sIo-djGu(nuFkk4gu8V857Z#5d z^ZTBfyresH1pYuUakMiwDF0E6+=^uXR*^G&Nvhm|i??LT2KGR3zo6{4q?67inPF>T z3>S=c{XJlz4_JD5ipumO*7ym^Z($Bp?M8LUCFtyrBopiJCv$TQCbzm*W3xTIc8Pd* zYzSG*G%=b@kc=xjc%Zq`0?hQXlgRt;iH))|<9^Zu-(>)05BJ^pbY#O`qhm#ejIC%|-A zH~(=z5SG)I6LMSR!k7o3?D{}whr5qfpl|KqMUOSh-&hc!P1q~js0FsZ&dmC9L+aFN z)F-g1$pJdf-6%=h8D$-kaB0Gg@o|(8jA}h0P|c~Hi)X8X zU5Q|ogX@UEUORTP;JofNHiL;fPfgPaFEBt5NJVhej2@I^C`@+U=?o7gV$K8ex*#7i zr)W@PSe@`ZI?8Z}O642fmJ80o`RdnKJnT*0{X+V*yK6?>6Xb2|TMyUfDT+%lSsQ2L z3!Ms7L6<8prMws`etAsE&Y0{ITM8)TdGrwUebfmfR7vWe)tNbw_r23dEC<@4t#PZK zkOEPB>u@8H*9cLrjaVW)Q97f0H{|+9{?^;@CoEC@I;t|bwbvBw4edCMXCAZb@y+C& zV4QoN9NK-{G&UUIWhc0twBf$Ic7jas`$-{-c(|j)Ymv(0s=kije~=Dez$6ka=7$we z&OCNh`Nc9pw|xj2XkyTZHanNDVXG1dZt*HFWPIr%GYg*&jvN z=EkqN#YO-_9`4^LB%>x=zY9Keqm_RMdp$h{+`^HIHd1LbnT~gtP`U@3%ppqL+)g+m z!mql9=k+bx<*M8aMx|e~y9)XU%A7B%Wf}K2_&-gFl}g%$RcQ0gYYm+Lo^eLzIYkbxf|Kkf1li8t?H`7-zXur^2eih zNdH<;LQkURm(u#ns&t=ug+f2P>Iz2wTp_ea?QEMAKm~nraM~DJD4d@KJ9>Io`LkSH z$0uIuorgxYQEK{j0x2SP3T`Z`=3NxoYaB+MRO1!oQ0L!v#DS7i9^B)ZO z`EmIEmm~)Nub(s$VnJ7UN~_=t0SKs#2?&VffBmHYK`$5>+gjP1{;!d=ReRleQv$

i-Cijbl{S@K$!V!qEUH|Ez6W%AN|u}wIQjl_zZX*O3=nY%B8 zn`W6!MK0%YdU4y<^7^w?(c|Lq^XyUIO!X>n-QIIsF;`vO>XY_KKqT>NR{B=8RvW6W zZD)AR6VGt+v_I&#c8MbC*T6`b4f#Jns5GZ2T!i3nQ~9aJdcWrzsG}0&imWQG5;r;x z)~XJz1rkT8w0p1~)kid^Ev9`Dt~-Y}5QBbco3^FubFttbg)AxKPn3X$B`?(j#q_t7 z(i*D^jd#1fNgagG3xFs4qLQnhkW5y1v1K?tcA40XsWeJB@w!+9Vj1~!V#`AL03;TF z-hfdcqr2c|w>$*S>lY~;pP4pja@`Zsb~;)Np!RQMX^GSuZUHScSUsRO=j70E1aDdj z{FMFX-Hi)oYB`GDOm}mC^%;rUq)NLUBI5e9czgh8ufU{}%(KUO@{aAdptTSJancAXXcoX_Cjhxo1x$U1*=XObc1#87 zE-?1CS48>Oy0lGtG$PrD&#Y53wXAX!m#BTi>ozL4!#l|YH3;o!K0yvN<@dO<6`Vw( z3;^YuV0b|zmlM@sN5<7%9}xq59xgpga_VRzRIkiJlG|d>wRv_s zQi9_+J^_cVU9o#&HNIT$wEV(vcAoD$JNrpNzj1Z_B?Qji(*2G5=zLtG7_$J%pUZhR zdcH@_$JR+Sdj8=0){ySIwD^Q3$z}(akm>TLa!8>2lAEef#S>g(-nOND3IK+z3Og)@ z+Tgvku`db{kD)98Tt}6AERw)ErI}jjhNY%!V+4lFdaX;d2GNL}8+v?hFx)`@S)tnh zod7rgx!isIbFE%d*0I9T4N)W%#6ewo%ZAflL6RPE>@n9UtS* z3`MsgLeS>iL||N;q(V^CCp3o(Rrh;_Haz(iVe}G+l)d?AE*ZqLu#0xt29uEVdBEZ0 z3r6KNrE43zx+@htewF#ntS_KXq`xs&@Cvly(l6JpojGlpS7wBdh-fF|ZKcDjvU z1uj$AeJJA*q3{to6Y#gG`*3Uu0DE_UOc^LP2a+{1aJm@z=9|B4swZ2D&u#OYpJ!s6 z=6u=FiXqVaQ@{3OFnc}7R|MAM{6o(>wHlv(IbL#oR=ka6z`X5i(F_1JV=7vIHqM1_ zVDZSvtb{qWqg?8)ZTkMOsY@X6*J1L>6iXo-k34=MNw1#|C&=1&?+fflX5bEWdOswX zNrgcsKG8MW57#PcL6lsJ5+8DI_a{6Mrf4}PV#hgZhkhj15K&8=Zhip;f44A= z8>pgBsY*}_tYCj^V;_tc%LrE%{%vg-V=iTyu<3wHS9W!kWbds$U`OU`!%i(;1_Bud zm~~i#ivY4}*5Bm@c#NoXaje+ZEqz*W*piPxykdpp;{9*p{vMSNw3!p=T-7g^)*&Zg zTo?$$Lt*F}(6`1dbt(=9@Tdr)*eh+OH3{oeXRMYkXZmU(?1q$RaA->P(Vrm)xw;Dh z7_u3n`W8U>=O5Z*q6}zFA{652^$SB#@&SsE6N`FnKoz$D?D1fA{5!eRpmxrh+(ooq zh?pV-4v7g!r3hc4OlYJ&D5Oa@8HDpHFDXfe$X_EWh)lMaHLW`!?S!%+mWeaSNTU$X zZ=~Z%@YtEc>yJTqzcVb>?+}*knRW@gaR6R0pMcD+?Od*2#`-71g4Hc_E?p5+_Bsed zQ06JRtMuntZLcY9!DxEVg<|H5y0fdh#1T_^bTs(U2brI(k3hsURcF+i*!JE0nNG+zzi1{%1gjX z9@=zH&iqyQZ&)xekB>aJc8WoF^``_rsP*gLVA(!UIYYj$&duL<&|kMLb0n_b`eIxn zT`6N+ggoY9T2Oicw2Xr~!>r!|;GGX_ASKuu9xY<(jX;V5+`P4B;=M%D(ftPdccSfh76YJ zD4R}V!;{2TUcZQ3FEho1QVnPz$*LZBzFjKgi}R&kD28{E419(^>g`%fB?_GdlV`32 z*Ys%os)w=0keO2Y+NTp^phsUHE{t@7(!8s5%-T$rp)LOrN;3fA(ga1oZxIX6IWZuC%#9ZZv z6sHInQF%KUcSLA+DI@&t}*Q1D(zRFA;yKpJD z^{)}&n5IauGSZi_8jm8%?}gmlSzs!Wf-;$R6GchbeuhBoO{3Pv2`;|62j<5&rbXxJ zLxih4g=ma$bUvGwm!ziTsuyz^6@JY_#h?IPR;Cm@q@Z)*5g2J@C_!N64>Dlr<;=VXsg^z0(q z(!ik4)#BbPVin&rA`t}^-RKS_mKW-XxcyxE#_m1V-k10$7HINiDHwEv0D}NNcb6IJ3#p!wp3rlhDB;xPsCJ z1ZyzptEN*$TXh*30oAl8uAB(YM&Q#7tDT`vo9F`~_8=P!QM4P%@1_qgR-ZC`-OydS zqG0*SQDM0YY$yg#E28e9BSkL4viA#byvRG&T`IKB(DYE((MSN3@yS!@eQfzdQ#f?< z-%r86!hr_>qXW&*IF^+J$@hRT1^^5sB*{R za6OYq1>`g>B%9$2SWT*|@_PdWcX2lY&j9?fO*-MG1v=rM_MC`$jHl0;l8y`_lRJ9j zcQGlKMx=t6o{Mx1KWhE<2b9=lJQM>PVrI)}+Z7rMH2PYM>KLF`HDe&5X zk4kd~2fVdn?cd`K{q?UvSnu5m zRNNLSQ*RaRI&r3D&AtxOAbb#-LZpC(LJXhrKxpHpRxe!EDT!A8YhxXM(lrXPk^-yi z0+PE*e0pemqy7)>3x~iK_oj>fJV;r+YPwZ~6Jq4R_+f;(2a^{|aYrBO7Phrs|{DY0*yGi-W7iA;304PfXS zI&hDZ6%ji00P(42Lluo02~NQovSRHR%@nw-!m#^vPK%5aFJ3$C_$5ySEMLrPK?7+W zS?tEiqqvGDfs+Fx^lC(b5gw=yzN*we+F4fQgU=yv6yY+lM?#|f$V0BGR@CR(7&72k z_yh@u$PO*Nz*O*$?tc(vZl(t|?(s^b&u2Z7m4b*x7nIq2o~OOO7rqwU;9no_;uN%1 zf=|iu9=G%fYVdtY^OsD1N7J}LBHr92sxaYJ5^{D@rH46FAkf%3Ja=ND3p+NrPG4i& z`oq~~1$=^V+I>DM21EtMnq+;n0>#hmx3&I0mDtSoQkxf3-TS=NWgp>`@sETS)*tg| z?mtpTqmqKi`;oOr50mUThyKfCWQT_9V|?|_LjP-MKv_Kl zQV*QNiz3MRd;{&CiOJqNk|q4@E|b0VNMdBJS`*pYezGM8^roSq+WMBYtk_?&25C%Q z)F($$ToLme*3Y8X=x(IVmiB?NEnJQ6)JOGKkZf9~TV%*0uD<~rfoHmqKym7o3(;wb z-Gm$0k4^-fTf}rVnc{sz9ig{W6M+$hnQ@>RYRelnd(>2jf$FKjqcF|Sr!gY2?>^Zr zcM#8CmwcL=95Pv+j+*O4lb#V8VPFYFdeDdGFwPJw=xIXr6?Yx8MG5_GYOeO#2SsSV zO4@F-0V8wIdI1iHdi6^eB{+T1-FGHw<_{?8&Q@qYRW(q;y@bj;?T*w} z)og5PnU`I>+Pqi=L_ltHsPr$G{+FkvWx(v8UoZdg@$ZEHU7r7s&Rlw4TLS|M1eEoU zQt^MiR4yjYR*tSN{{;@E{hG4hWJ2n>q{TQ}ZptNsir$HSNha6;oHqiAr&MP`%hTx6 zRQ`R|Q%R=hoxG$-`kRxhCpZIm*Kj4tTmB+Yiz@nyWY12Bq|W_;2c6$*K(CxcH9NTN zn_x_Rpk0BHad^X7@0=0GgV$`%GrA~A*>0E=LKQcS)O^u+nMb0$s%liwr~qDD=U*|I zk)cn|Pfw(dvuw!F4jKyyn4rD?SEvNUL9jW}T_HO#yQxP7ytX{6Wv-Vca$Vme=Q{_L z=@gEaHOxEI4-Fiiv#)y~aw^#sXgoa%=EFG&JlF$3$Ys_EK?6B2I7-T@APzAJ0}>YBAh<=tw=~;;C&dVZo}2K9s7c3l_mh?Ba^v|0 zt*w&4jZB>U7J&XSeR;be!P$g=H$lV^*y5G;bf$f@J?_Iso)Nz zcG;;Gjb>h43>FbS<|9l+S%{jmwmxQ;1!8$r?1q~^?q1iefHSi6+!ri_P0b=v z$xNt)H_0tqIh;e!!T+FL-2M#?4Pyru1I)jnq5Kcp}GH9|LHEKW_At?j$W-e zvJPaD?>7d@PnEpbidWMTA_@>uuqt9g!Ur6hwRz`RPIlg1lzRO733Rf!#D(C*PB3(2 z#^OTAkm>MHQGD)cgduh-4h8>&pckBj;ku#brd;k5q*VhvrwZuMyqg{nl|-|l_+O= zss<`D{Obz?H;v-L(p6&U#pW{WLebadjzo~hU<1I(6a6@X7C z(3gE7vN&V*8>mPO^6l25Kr#yKClLF#M%;Y111w_QS$b+~-*P+y+{QS>Oz0)$e#hv5 z#&lp((*!FK@yuIoPDSUD>abv?M$=_<@gj4DeX6qD^r@}pjODhZD!OBefg!SmiXT{@ z{J>I(R*zsAyL@sZ>bQDlu}P*}OSwcS#NkjH*Ha8;G`nLuI6^sBT}%&56v|@B30HW= z`fe#TZ|+=%YaGIKoVlTC!fJ$jbr&tRd&%?@)Btvr5iixecKRPbHo+olzy)XE&n5jg z&tS>4NkAlzV^9hHKwGiMF!;wz1*;U@qR2LaSb>A41(GPY(>>gX_0@zRM+bS&`^Ine zt;ikH+gP~V{n#MJ2~}wOEp$n@u8H#|ZW*(ylk*5!^Pz)(ma+lPH|+>iooJ;xj?RX$ ziPrmKIPE;U#+!@HXqG!_TKNea664G~xft|Sg7bS)MPgq6vWtW5Jhz9C5qOB4St~ow zG}}9?U#h>}hXXJZ>Jx%+i^RmFoAnoz!LTxHp|QKc!qjpKvj?jVG%;o8I%;m)NQ|M= zWV#jCKczHF?SNY$)f8q^7fBZ#-648~Q6roc0VI`NAVfaWAkP5-4vJQcA(M<3IW_i5 zeoaM2YV=X9$urI2_zq7giDg01EpXW7n7*v0NQj^ZJVggrEAtes9oh^wlbt}R6(u|? z8)}2rq`}NcNi~1A--hdnWqAhPafVaKpG-Mx{y@~_D`qn;i@;0+G1d1>H57V;;n}Vb z7dJ-vR2&nZzs9y7)eKfJ9h8uNCWV=e%pJ*&PTC)07n5-i+=dtsBm_w z8+wy!Ss;7zSW--V9W}%lNz~^!oz&n#ba(16K0o|7K-WehhI+bF#`UN5a7363Da)9; zbRdJ;3|?FDA3_QRdJd`d!n%|@c@&qtn#Qxvk*9UCJiHv;=-Eh6^l5}Uqfn~1Ux+Iy zi1sTM@>DhvfJ+A(`AHcuUue+5TYKd5I0*Kozf@YeRR_hR|5~+bVmyTkGju4I z?*rUi84FT??l~s3-`a5gh*StPnAHb@a|)%iS6iFMM3{=~gg5@o{Y|=(4)u*; zP!V#|Y3ttbE@{)+#LH7Vj&_ib5cK-dYtUq;J~PI=z@;svC50Hv|GU=w$51&V$gw62 zv@|lN#pBRpv8vrDS#?!m&wjtHyuk4>{8|Fa-kFSIaZ&1=rnPJEd@O=?GHl3FWL_(> zJeL7Yz&Z#>71BRuk|km~&AJq%77{eQ4nh2FJlH87vlK{|lb3#Mpx+&obW74`u3a+B zD`XR@9-{&C=lgVIs9*Q{MS6*o;v$2H)^V*}q146jc74o;a~CEL>uo$8Kfz2&yakZj z0P}l3XX=Ui4yz>W0Eq8Y6J?RgGJH${7$X9rFiIdmWh)*vr!Tf5nw5@vA6TGaQ|h z(O?QxwuKK zV(O8v?RS|oObh19`T|N*R(o@Q2zcpRr zHhJTA>JZEEz$Mh}*i$Mrl7&QhG~J5Ch{TYWM{}edV=>i$wa&TdK{K@KYx(vQyI!Yy zF`AcoOqj+cPOBr+}>Qb)y$6RXot(nI`8i~1Aa&)^ye4$)e9OZe#{ z&=Wsd-~bVnSLJl6IlxKc#vPioVLykKA+*RVo)|7{${s3arH6-pMcgv{Ov z5P8e@JnT6-F1J$)08%qF-dMBwmb~j$0B_X{g$ianHX;8W>HT^Ul*4r+F{gQVO!?)l z_-4CqE+nzqf#B$-o4kw7*|GE{e4*nj7I*6ojY}a<{27zd|D-9FXgIl=-*%0;GO$a9 zqEmaEXIB6n_MxXAdE)PG!zc_NJv@uiFibKV6qTP0fPW-dMmsLASr`?;r znAh5()Cp@84B%mouIEMqeB9DST8c?M)8r^R2LHVaR%y)h<_m%vf-|L!WB8*>ZCuhP zcg5(hl!j>arnE8=V3lN-Z$c^ua`Sy4$r&F-W1$Y8}e zP$p8{eS2PGtH(f?17Oom&N5S{QD4ekU=bm+67zIg{#+uoMU>^75-PMeEZ>oVyZ|Ue zl0QGd|K|to!+1`sj^x~q1Ox!!2l{`zoByvl)4|x(!PwF9mzVQ9Z5FFY*&ebX^n9q+ zO$jWl$S3ANf%DR!!OG?FqmR#1Q$&dT*^n$ESTF|~{OM*M45i@QnLHPcXWsRCAjzyz z4b%Xk|*;7B^mp5hU zt!|n-%S*DqZR%gKQk=W_3ws1qH_xqAEQMzXQe53 z)PL-43}W*rL%$&k<&!}aLUE+LE5xMmIexIVSPot4R=ojCfFuMpoiHQR@|e$h)IMoV z(zqXe2_J%vw#|g%yuOs=KN4m$_(wSst;J11en94N8pzg7j)-#_I+L9d#=_3M3EQ?i z`69HWGQ^bw>yVAFNpEW*03w%CwSjl{(|DR-4`GfmCyzQ`jV#9>`R?bWgnycIgN1wr zH#bh3V5;ltQ0u43$g|EXD@|h?&CDl}V7iFIKNMYC%hPsjJ#rt=6}RaA3W4$vSL8KiZp^19{w<9MZ-d@gW_gwk-Xdbt;@jy)grMQ z(Imk&Lc~g9oifC2p|o~p9CA&KncZ_$uV#L}bXB&~E>xJq2X>Qh1r2sMPcme)tc1Ic z%DX;5g437B_Gs6Ondb0-Jk%9cB2GV0Ak2G=;>#Grc?{>ojIYkd#)jkn@h|CF+XUWQ74hsYsIc!67kbpL}~j*+RWT~GfE7CB?isncjWkF6<~ z7>Ga@^KE~#%iXjh8{>1ICl!y^d4^SR^oXST$^enuhirM|gihsz3u3Aa1LZoEd`fY| zcBuwi4>TI4<7MjJvuMvkJh8?q?VR-JCjWKPvUXNH*ej9as~Rm0Nod&1w58F|NG`_> zPsFgwrwxkGqg=9E>VKy&9@to%W>@T1p$JfwZ*!o&Y?SFM3J zLuQWSN?ApG)i>v$sB2l#HMhzu@xn;zn$w<}^K9{>`XL)rR>CF7too`O$Rrhe&h;(w zqT5DGSQi^b{x^1-x_Mp;Yxa>P;}<*a|I3{IA0pTP>x}ttD3_zPt)=mQjvCcz8*Fxj zo(oEdlRRxDl?=`NK5$|)C}5F{4NwO;(2NxaQm)G5lp-AHfNSpnUV+-~#|3i9+`_?K z(kDagn!nUDKkS3)gu2dx7EYzYfA+35t(Wpr41&2TQek^VzCVdSaXBKiT7~OFrkmr6 z45$&^ummb|h*n`0iJOp6EyofjBI-ij8&$NLjK*2xNHQarBbt}>7|PUOe*|_o6fq8u zjr{h=({(0S-Z|L7l=QXiaSW;R*8}O){-C4UqMy1|Uo_s>se2U9;Hw~>LV$xNlsgwX zeksStMqND+N0E*!b}({hMa0{>^aqU68an25AbMG@0L$oS!;_smT5l!da|g zHd{qRUW%YN?g~_*4HDf{TAcwto-RTsd6g%s;ZGOs9b@&Ja3Btq6)6V-e z6A20tM1p+)c(pfc3Q&U*QbfXM_GYjg9Bu|+!g;GV%TUNli$1Jf0~p@H(y4iRkh^G6 zXw<8y@EBE6cJ%oUKgxqnl^B`B$#{A8eG~FVM-E7U;%;wh1rslANTTdnaPd*fq1miQ zvcAMA0D1F*XXPM^Q(=UNOq^LV!R+!@AvzU*`FgyyV&&D}C8zg{+x`QV%<_3d3~8gtX2CL%@B_R;skZ0Xxiw7JMSb_A}Kt)uL~W$kaVKwBtF- zqZnowdyy!%>0n2Kk#OVnjbymhP7uY+EvpdTM8{S6S- zJrjGSK7YEHW^q|No5;ndt>xYJc?-;c8XWLm6dt8L zT7M(^X?fAvq^y!L0xL%Bbju*~;aD)mUXKcjny;G<=WLU^14_thi$QoYT`BB18{x1e zKdw<-Vrw$qNkIcm;C94g^HJbP*zWhdjk>dwPY>3=7(K5&R39Iq-=31}Qgq4(+V~h; z>T1AX1v6rCkCTCGejPgnGznW9qJr)mMJ+VgLR>p%u}~$Vk!Ni{oHY283(OB8Nrnm3 z9V6s{HTa^c%BL+e7oQ0qI@oIV@0@AJ)zX`TdJ+2Y;!Xx=#&FF^iBjdb`IA#4RMV4r2iJ8!6SOuHa1YQfhW@576_x}u$?Y|K@REvX-D=+{6Aano#lK)cq|07oZ z-zmA@Hz#u&)BlK;YMQp2Y$!f2wFGIQ;$_t(BJwD7_i@GRaiK2hne4N2#^EkY;{{?0 z643-d-lw-F@%0H#YXJq}V~#zJ`|a^hCX>NLyQH>a&2O65M`on2A-`=#YULI?k_Im` z?yFQ}Q{OFe>@wX>o~pN;SkXN>vvjpJ53;Gu4i&2j+`7xKlMgJ&()TARq~&|Tt5!aZ$L^V%yso#zZ}TSj%tVgKgz8aS=(qbs(H)~ z{Rj-cp7+mRM@L^r)1g+1@_prNP(>)pF+0+7+e>EjY3IU~*;%YzWkv;G1(ZzF`D^gW zbuCAzV_e1A8Zx|cO%j1bvC5@3t=S3Tds@MJp8aiNI>_f;{C7eiqL@iA^xL^&DzV=L06EFeiv(kGEl`(KY=y~$`mq6?S% z^*wJJvWC&d#_x5EZ3xi3CLTkM73)v&^CBCo&pN()vBiMVrGUs83_FU+d5am5+Hfkz zpEbr5A1x-XIo4@Jefz)Nl;e|v4O&+%Q}@`b+&eO(^(7k_XMn(-Nv`aF?6lXNP%D7| z`$y8|0Qlen&+^41wRTTq;axl^TypkoIWcxvbZW?%Iy$fTi>BQvM5N&uLxg2DVS~j{ zoteX&8I-}iZ*eyIl^D$6*$4?T*n*+G66H)gAi(e&u`z!S>NxLN>ei z9;@i3dVDVZfUaOlo;Cnk%#qF|983hMEl}nkq2}X5PWL=?G|yyu7Kw0Cz|2L6 zE?%NYyK)f|(~<-J-?{@%^)TUBhp zw*dR6vb1-B0pz@l;;;<9^x3wmZ{JUL9XA(=uW3zJznsJ}jMN2`W&*>)6HJ5ImKd*0 zTSTM*G~*svw#wd2Lbl=zjh;+mOm27Zh`K0sWZgJ9MykXG_gAF8qoVH-8m1UXcJj{0 zcA5a9Uoj852$xdBeN;FXV5U;%%EO=|q~8aS$}_{J6HR1T+N+O1v+S>l&J)=;Aex4MKiFJ#N>4t?l%!kSc}JC*yT_K1tCIKuiVc#5?QE) z?PAMWk-X1BohHM6Y^4+i6aDNMmKL(mVF{iZF=9%NQF4$+!f{gPE+^is>@7YFQaJFt<>H^Y5^SF zk8~0{=pn4`jgM&ht6k@G2|{PTQ|Hp?vDli062)%hB z@PM>Yp6|6aGM7s#B2LT*AYpXRd|N+VRPn9=9FoYfFJhF)SN&5T>v8yHA>UUfub2iSc zrQ)I4_Yno~&yozwciUO9B0@ao8!F3rUTXTAxwIOKS~?_1CZ~VNa*aMxJbRa=T?>&& zun-y>r$Uuo#p)Y0?rm$OHP@F+IuS?8=UI zlkV2wVzwX9MGe_=w(-9JgWR3lW0+jiOQ}@#a1Wl3SISe{DdqJ@@EreAUTVz?G??$%ZY$6i#21?r(2M~~kaSa^%}xA| zcjM9`%+>-MR1~w16AY26?8)CIodAj$)KMvqJVMd0tw&^>Nk|+pr(|y1NZ8k`tQ@3_ zQ#Tg(zc2LTmtxgOj(TVR{>v1XMOx4*0<1~U`PEz6C;$NH{y*2Hovovj?*Ekd>ADy@ zn46dz{tvJC_u{<5+O*jmd(zfrG{%#@l8nlB4&*QIoa1sK&|9@P&ZjspV-blVAwv)1C9Bm}~u3`@rQfr8}|{pO`_@)boEQBs87zo^dX7Yc%F27f5+AcpEGCnYeD; zNoa&!2YcfRM;ETv9k8rj?c~b-OK19>Ii8di#=82FYA@*Bdt;wbf0WYUZHsM}0dz+? z?r^Qb;hoTsHALxf7uR1VwkO-`Zl58a(-{hkUAvnoct`ZaNxkszc1@SW9&29{uaugW ztQ$6gXsmoAdeJ%_UVI>6Olus%9jw3$O7!UR^%nFWD^I5vd-fapVeSk+qiKa3&YNb+ zF)svq4J-9e%Do$Ar~n>wTnLfw&+vX^>fm7NV4>;`nS;koNn&eal+5UnlgO+SvLj_(kZm4FTOAAD&E1tH++BAW}?Q21gNS(_S2IR332u3Spp za<`$w-XmLys}B+lg@UUCUXeNxO9(Os(cU=9 z)?XY6SN1aMpM%%43FvkF`abtKquBI4(=)iP1db?2CQP9r+DIC4@fH&iq4;xqk5q>mEF^J2JGp4w;B3VJqZPfeiRYgt5JPUy6cd zFo)2V$htn>C*ALeV-3=~Y#w+t-C+!H_q z0`^}+gYWz4rFYv+TYslm4IxBNE20PqAVO<0qaVsu$#?KbTy8ruUGe4wH@tr@0&F z5~pZ_Tl35f#Wyub6f+Sk6q-1BGy^_Gr9%gxCMBWSQM^5h#Dhaez&kYvgr8p?iFeA~ zK2%izc*|AO)g5wH38}Yt^Um2Vz9>Z{rNgoffR&Oj(n~FCU_@##k4)Ap}TI2Z^d0d z9Kr&oP26c3zdftt-uih7h{9jKQwZ&S!5>I%yqZoHSalGrEDn(#oF0dFAW|59IKLp6 zcqk?K4_G^v)IYxN&zG3?$@9BnyU)9&*DtBPnsxuaUv}7cU$$>#LBaxF@4sig&HVj_ zWRIY~U6t#{7|3sis6~IkJjE{EWuAACGWf+MwnW^MaV0SiA;clLZ9yTOF7TeD0FuTw zob9H|f9(xm27;MDhL=Q)i8ZDYi6bHg7F!qZsySze^~f6kjDHm=SZmND30y5TtzQ{C z>&**3Ix5Wzo|(s5wJ_&?Eqa9t_|SC~Z|CJ3yOga{&~&l1iZxs2@OPJ`{UH^NNu_jI zG=*!#ZC+xdKS$zP(N4V8Ncn?O<JHB98%A zDJAipG~ucZP+UgHLh-Vya>y*(*-(Yu4IAE8p<%LU@M*LL|9BLndeGYade|Cb+Bw-c z&0<_UQ}mKyvQOme$l=M#fisu-z1Rt;^@wzL9 z<>UzX{Ju9k|;BR=mXqL&RFA#v~)CBS7yDZ!>kfy*w@r#hf z>^Q1ZX#Hg-@JO11jj21hLJVx1!y~$Q`2-s91nJ zSf?ix3~_N&s#~^*;x5XIhnAQw3|l2r4?u!NEA>^YHj307`!;sA1g8Kh`k+p=Vrpx$ z76OZj_6(9ZP7lXpV}i*63Zx&CK&7mmN*LL(LEr4qEm%Wjm=#)fhuzAzU79bx4Kh z0BhCqQ4o9T;fm7IXR;4PuaD?~hE}^fDT0C9jz2RQ961Mt5yneTS81Hc*qNo5DJRVq z`%>CI2&ojQ0W}yL;w@8P94HG*k_TTSj`QcF0x3C?P6@j;%D}~T6FWe*VCY2j*jLb< z{FrT}B$hM8ai(O<+7evEh&u!BfU;`}edKY40i06_v$i3x5MV$zZe8?ga-C*!w3W-dl~UJ473Oo>=M|1DpTe)yX$;ny11=sZkF_*e`kG;> z_&5S=Ui`rwhy%O0JEX2zT2+MX9+VAYhl0| z1A%?8?>metM$5kk67cmwB!qL|M_Wy`=1kO5%O`e*;EZb2Jlp{^tt^Q`EWEcT!wYlxcSCKrvZx8R4I`a(9Jyd?+`DaXpF3xOhd> z3ky8Z9ltW!<$ZO{u*Yb>%6rThB#?TKCM7>`X7;*xBQts?H=>M%!7TFF;y-k_s;fYs zN{EP*d-}`}Ji85h<8ezwAs2F3$c^Yc=+jU*s+AcXst_!wPON$9D);Ky%GC}JVA5>i zCz(Dm!RRPWazeni@-@W4aXbgu1gX$CLU)9@KY{0Xr%l^4n2`*1CZAy^2vY>+sVmhy zWwmow?Ze~{^`sM@t9dPD+(8fVbF1JU3!}(Hm_?`_3fJMPYXB?yQMsfQwA~8RJ16*M z_IWAtG}1Stc_?n{pmSBjHaA5XOnh zgoep@Tusf&yiV=LfaMD#XSG=6iZ5rl&O7}EW77cJksPn zq9^=;^M7*eQN-dSYDDCgQ1Z&&^0a0kxWcDT9s`pgr9F}LmL)Utcyx7Nf12+S$uHRe zGMhYP2_2~QaRG1q*OK8fl{-M`5CHc|adHnH80g&Z4RIjU{WR=KvWu?k=7pbp=Uw`) zPVkK}l}z>Q`QOfk#_yy)Ge#q~$q4{3%?${E`8%mQ89V-lSM7f{vi{2w{ZG5vmAAPf zwq?r6OT@pQI7dEo7v*iuWmMLEc-M}~LR@CtLrq3xMnqiH3Smip{~5iF?&(apbzW6y9s?#7}XzCdhvzc#h-p2Hv#UkpP*76 zV2d^UJH9~Q-}Z74{GVZZABmfz*`?2nua>brzkt-KRgRjEK;U@@oyCJ%$@Ze29&J1i zLzL8}SaWOEaU}DWrcoxx4GSGzJjz)*%=M}s#v)o1sbIA;n(xD3x{}qlhn(h`$uMY3 z$LP*w>S*aVmgm`P(!BxyohV9fspeT??%OhgPs*`r^d&~5FU9e_hDAwNoWH6CHm3@X ziDLSKx@4{!yzb%&Tr-J|L2y_6c-?&4GhGS3Z3KKzPD9Aaw@K_Jys%IN`Q;7l1R(FM zaDZ`$x`P%y&LI2KK$s2&dqe8+w8*D}myRyyN=fU}0220WV|7u>v%-hcoaxBFN#~Lx zQR2E7Jkq>J>i#f8U2|k0CM%EFUFyRf9wzpAAH=Og#g8umPK>*tZilgpSQy^>am00J zDe=3CuUj8{FNU%%KTYC^K4Oh9+o_Llvsk*VQc+-D4s(CM&|Cxz6%rI>izr`$qnlKr zz!huMQi`(2iO)}U_*-o1(=&L{Bz^#!un9o;sRCJ*CBKb7YL<2@nOl*Az1q#Z&)dqA zLGW#=6Fu#^KKpl+!126Ylx3pazoA|L-X&bS1c0u&UHq$;prl^mFG9Df89KNiCAYfW zLSA?(!qt&9Lw{o>&(E3EL$jPWZ^^kzH;-d~4e0s8kd80jw&H8ok553>s)3*Wzd(1d zf)y|3)1=;H;00c&Z_j&0gLS)gxD3>%HWi3)JiDI+XJVjNd)j9XNVBZlxA=UvXz@PF zI>HNlU9`vKYR}S{X*9=3#alfsSl}oI>BkEDN_=Unr!9cZO|pJU$RnwU);^Gc1}rlU zn6KHxtxa#hK}^V1j}P2Z-Ii!cw`YT@#h)aTUB$K9;H;wd!O=FB^{m#fjfmJL<+MTQ za2z0%GX4_Qj{s10@rARyo38K>xZof!{5(3WYeGdnJQnPrAjMk@e>~JDWKwj|uZg~V zH(kPmil5^>WbOiRyA0oOY3r?vUT6q`#gW6bW@+}U(?Jc^`5UtGYj?Aj{6&lNCc=f8 z=w=_=DWxt6R5Uxp&(XsmZUxwys$Ma3 zG6Djzl6>izx8%djYPI@yybQqqSnx(g@o9qN9P{3e@;ohv4Lr=(VHH7DEZJ>XN7L54h@WTi#l@RYBl%c5)X^W}9Xm z^Zvv+2%tn|@$fkcVdi&PRlqApMA~N|@6Qk5KX3lfXU#!Uo@{LPLNfuqQ#<(8=h|HhN?4 z3l-2_U1^b*Bexriw%D8u0&ej(@aa9s)v^#h?TaI)EHeivkemW1vK9|A-WhB%N&Gmj{;oM+%$vKZs~^|ibAV-h{R z0|h^vLS``G{~0X`*kY?RsRvWcj;vXULI4BpWglAMbbH58zGa{1%x{VYxAS zG8f58=Ud+pK{n;jUISV$NSLNmvUP~L@JhWdH&7;h3RL_Zog73bz-@fsOz|k5#y_7V z);NevQEMY?-q7)*V$9)%9$Z?)#2_xaBp7cT$^q-W>@j^)GJLEwHL$Y4Gjg-`1{0mt zp#_>YNB+&{N06%UOEdoECEk<`C_tdLjfqnR_OS}(o^^f3GT*5L8{xD}K6EK~!(od_c*Tm| z%I%j3(Ed(9k6tps6Bp?30dU?SXRj*MT3XzA=!ZjK7eVHomO!*+7!ZH^(A9z`iFrZ2 zfNUW7Z%m%8#07C{?3T^@c%b?aj=nWU56~joc2?gzN{vj)l5`XR;=I1Eo4y8O9~$&6 zO`I|7osZlG>x2cCz)q!+SS@T$Rx%>=2iwwh%5<4uR*)_ss`j2>XNPnhjS&CX! zbUmkp^vx(z*u{GHq)5o3L|f&w(enu0i)4nSj(|@Z7cIU7Z9+<6f?K3W_v@Q245AJ8 zrLNIk`Di{Gd0!v}DLOo{h%Ibeu>3phjE>vQva;zZEGf*M+{n9Ws3!LI$RZt`#Bams zs-s*wcun(ZHy+*#3&T$c^1poOB>G6wHjyW4Y_~(vt+c_ksGJxv#};6o z02r6gCThojO#*L}Fe^K56M8HwItFPu8ER8zor zI(9eld^gIyDk&2ndyVbF?srdfOSvoys36itHAi4A7^YH1+=a z`;DILq>gDCD88`IAV(*_*JrfOU28;k$%=IHjOFuokcL+xAe$%->($!cT$5~}^7}hI z{1Znnss7-;l8M=EpiJa3npDz_(onplJfhpORL5{}ujIV?IG@AVZ1Er{1c_)F7Xm=y zrIUx07!{8}F=x%6X_v1!FjbU@NPFC-^y_a7-hO?>DXU$|ae9TN#gXjC$I9N!?y)GX z*XK2#I-UX`@tuMh|lEiZ$_e>b8v_nM9k-BjHvB^U~d zO&+VgM5HV0-~44{&rfffIXt@fsR*ISNjn+){b3wZGNT4eGXp_K!?Z)=rnFtPl6nu> z+Fc}p%f0PsHiepEta~ZvBjoI2;Y+TA1CJlXG72^C3N(T&jbwv)sNwFXBfqQ!FG+w(Ieu^QO4-Cdz6$5@ZvYHB30O_wthc}3;`31n-U7c zoBF`aszm|~7xBRRA^+&gz>+hW4OUm0V;NO#KbDO&Q(i#te^3J+vX0>gqN3N9Cg#~Jryh&N4L7ag(D;k)hiREu`!ul8 zobWy&N|_2iuv!ZLwzfZwVrglVC~6f^%-fLMx^Q@t8Q|Y3^73Q+?{l_B#O!a+2uM@Q zT)nf~WMnSGbvk|-_D9DTuw);;k{^xUrJcGBlbuXgX-ol}U;{O)k9=AGG95jkzax85 zabIKl+5HAt`jq@KFV8~B3ARfxA`CI&LFGt-)g^QL_S)26=Kym<8+s4ZuT!jPVcc6O zo^Lr0hgHziKjy%vQz>v|s&Mb0eMHIFamG^axw3e!h~rK?-#SdPy+K)*B_wOea=C?3 zI3b*_BMKwyC%l^)bf`P}dSWg?#tT*!O1jxBJy{l(n;57W=?f<@%|mRS$p|X<^T;Xg zmM5`j4DL|E=iNfscFV>k_w?fA2*ey`bp)M=fZ zUj9~C-!BHJilXp4`c9DO3APwr2BJB%icRHpUw0s=1vVKd8>a?lAW2E+5$qAvG~@H) z_)#mdWRG>*Zz90}2k*R_f{PEJRz+@eHYeqN8C=px9jJ@j%>)MZ>AJV;@g1BA1Gv4!HA%HYrxn~;JM|(KG7r1z5RJ>#nPND zG%0$AIJ_blPy^ss(3e~`YmfQS)rCT$WMUtZn>RR=*{E1IzZ<{KJ2Kd$J#S%?tTh*^ zHAlq4v$+Z5_c58wG!73Oo7-uU8K*RQqAkH`-$e9eX~Y=3SGxZF-D(Khc=7 zcB{<2_c(bYPf5>8Ziev(Itoi|Z;-Yyld>6UU1FX+jxO{@AQ)mp!9I5)@FEaIv zN(g84vyQ$+vk!rzmCx{gyl7E&aHFB{juSQuZji;%pP>r-15KxJ%26{;#)cfFb1|Xx zeu@C6%Ma>j;1Zke;}N=h%^O3<%~;kJx=Gr5hWTNNRIf)$F4>dOBM-r_*0ivfV-@Ji z6S$3D1>S6RD(aHK!>E*(@>kw%rns#mT<7F2ND0E!uRXGN@9y$#cEUazIGz}Nhu?wx z6@C@G(Qryx$b9xtxw_Y|6@7?YBY<0b>jcntd`EkLKY0N*LBt8b3lF@U3&-%TUwjRa z&gu5&b|%OEDG0om@XuglIAtN+h^$25pFb;;F$_v$v}CglzVcUL)cV3R>lX0djt?) zTczNR!vglw{zyq%{*^vG9V~t919+PVQAz{$DI}|N1+(w9#&%zF8YJeddI6p3t2L%T1mPD+CDU>Sm*Ic&t=4RaE}9-V#GoKLRITO#h#CAl^TIr zg@Kk^x&-g?T;9bgxQ@>{$HpvuJSP5k^o1tJES+A%3SCab^N#{y^Nv!I4~+xjq>u<3 z6%u?^5{hM!!C$YUq}<2DH>e8ON@Oc%*@H2Vv09hHe*ABUvauIWWlldZLXNK$NU_cM zg4Yh?8$}yzD8jvN~4QTP}*G|QiY9~G4R9Qsg5pD=gelK?_h zu^`|*KIH5LKWC?Wbk?hwFC(ZdeHcfQGEHOz+ULe4)x}Ui`wHfwziMd44W2>lE7ot%eU!J z)tHCV!pI()fO+eq)H_-9_$$Q!_5Fh#ooa}Dl&rZw&*FEeg_E2Us)TTBSE~12A?8!^ z?rnxQ4^Ji;tY}Fk$_9uNT=jt_)?akDj3L>3$0#3kgH;H|1PK*;$Odf+dBNuXW-&b~ zq8vNV^eprwE33uF)1PY*;<$}X*pqT(ISj(_+}1t@Pyh?iFuJ>oSNH9`*!TVd-^RKQ z!Z8kL2Z!u9*>DBGz?9}tDtT@fAG?Vh>Vw-i=H27t;uV%F@bvc!ob~UKgCHRZp!;YVG`!Uu!iNywh60?OuG4{i@_0Xro2|(|Q|y+< zkr%TXK~V`2Fj{Bk`9dsK6|3Hja6=>RmQk%9LyY^Gs5j=nyLU_I?$Bc{3%0am-uOhy z#A4lvCK8+(irz+a!|udkWV&fCw@0CvM!=@wj#A#RF_|f&YG|sG?GkfxhQV70Jt5*@ zQB@$4V$<9}?urx}-Lw8T4)yx>tqjsPCNH;Utlz>f6weR2i3%+CGf@6`&tB!$NFG66gm;!*g`z)cZKx~d=! zJgue^m+!_11l9rz(Z|sy5^%boT`vn=97(dztYLFc&0SktCKH1-jA>|s4NMWKMz^@;Z7uD^ z6k#jB7IOu}rpQBpG?p2i<^-2sLNtK@?D3FaKg2}=xP?8j>6t#LA3jS{FV+`%N6(_> z=rqH^$bz$u4b(-B6~&?#L&)rM=7l)v^|uB?2&0Q4C4Lo9SfxJ^E87vlJYx$GiZ9?^ zuy;2Y0D0}#lWJ61snDDU0F+w8!wr4b;W3-GsVNBM#3G@$i{)DwOX%dDzM33z@>gIH z*AE@DNrHI(-skPJSb`Tb>YLNEHKn~$E%XtRCwG?brFus|(13$d^+i9h65&3WzQa>t zMuB}W43%#9A`B+k546hVVu^9B^E)@*f}%Q2HVR?<`Qr&jP)QHnpTrQKovk-9iFc9_ zXDv)$H0S(&oMgNpN(O7t-qQ2+d(O9Rk!On(T6G8hBqrPgK4*$}ra}-V)0I?1O>kM*Co#R4>l|nmt(6t?5Hmbc;eE-sky?jygv`QwnY#kqG`I3W5j(4Z`{!tr% zxI0MT?Swn1kH@9V#z#uDS0OuGzOOH;)p0X4x=(As@QnU9F<-@1HgYDO*DCKqY5^IJ z%^Yo!nV9LVmY;w^sBUi9;J2GBGCV#!4IP&*ti(#NUe7{r?>`1UP%W|&By!~OS%kBh zhi_TV2a8$w`abtw2zz4$-bB5`fJ1F!ETTWKbjF6pO(h-KZD%#4UH4}nXax?Tex{YU z{Dgc+;JU4z5-Fh@iuc0)770d3p1P$xBi2b09`Zx})X!Zs34w~ZTT-rkANwpdP(Erp z`hGnhfH~lS-21YL`?&MEOmOVRt!YZe>feJS8rB9ezd?f8#BpG$g&4zBcWZrB z>JhaA@l4ut@Q0Fg^DG(krgF##l!Jl$gp@R)yLJvZ*?ikqul2QTz281XZI8(u5f$<( zEvYkwa!}g#ou)U+ZdIL4VV7a>vSZQlMVmXm@D#;@V-jr;w#iZ_LvE8?KA4~(ZDlo& z;aMJa{TcaBJB>i@!v2J95@wqQdmVpmlLSW=j`}?`Q}HXsv;;O^aZ7P1@J+1#E^;;Z zZxqZaD@$z}-CWe&itl}{(&PiGIAXfH?x*tRqhjh5HBofd^qlvjJbF1yam#F7&6nSb zn_;;wKv2Ey>i)j|(Fpu4?nC>yc~$=x(SfUr{*PApBHx2?>68B7hn7DA1yRW^NdvI^ zz`a@v7kt);Sy*SpMipaSATENmyX~~HRYhhRa|7}~Pqv0pDFvkB1HI%Bh_HwN8=ugv zt-Au}8hwO~u94+HO3xoBZ1H)Ftv3(J*&@Vxo47uue3HJ>nqfQ;Pru1|>v+%!%Qm?h zTA8KfmCcDa7q=` z3|W*jQ4LU;Zobe*aUs!$#t`88cVfm!O9g!DvH4{0~D)KH{ko8b$sKvEV1 z>55S#p9g-AC@F&VO{0z2p#mp$B_Yu>GIya?tnjigJRL!3Z3#lT(M`M(Dx}I5m-S7F zt2RINQlQP!x^&LIk0Hzyn{_NPRS^@Q{>$wqw(iKaj9eq;MXZua8%xL9G9vg2#FFE% zD#fLY0H6rroAl4D9Qpw%1Uq-%NHX^!CU~Eu9PurINW)`yFb*v!&R|>d9p2#&7660p zp?y5SGy|2v!2PfVdY%*6Kv5IKxNkFd z#P*RNmtf{*+ChJg)xw zOI%eZI0+BDc&Vcg($}0K)LB4yaOJaeO9vC{@xnT)&enl|oIz}PfV>XvV&x2Al=MUx zyl4ndmUA1sNU3#UF(0TE4&6Zkdd1J~wRVP1S=cN{>l(4xpDC;Sw;@SkM3B3_b?Dd6 z_XaH7ri!8>(nLUK2gO?;{^9}rHY4~bay?4|bYN{;KPqvUSsbiUYm4!FBv5+QF%p7X z^ga}$E6wGp#t1cxH0E0zyn5}pZMibB@u+1?G~?=&@zhA~*VNvIDeQP65F>hvg`5dZ z^U(3w%PpyY%H=r*BIanLYaH*pIt@MM>Gef9_7iR)$gLcwz944I)Exh0i8#qeShSdz8KQ&{W@Jp$o2`ILfF)%(Cj8DLQ6W(g^&dqJzs3dv?MkzF&++R%rp z0cv>KB22l>$w277bYBR{QRn}7x9qQqI+RHfzc`DEUq9HU8Lg^u<93I`Hq>*u-f*Gh z^A~+jHk6C!$JGl@{>y|v&yfhPuCyxrtDzmmtHszk-c4JJmJ41h*BOBL3`UXzNR7UL zeUVj35oF!odnSKBSWXB>T?1tbGOu1jTKh5og>uGfB+Q$$dR3mY%F2Q6zSYT$G+dU| z^X8sOOHs&lo1J05{#zoloL*w=JURc&v;+C_A{)>i*7$B~7wYWCD2bSFP8Mw1#^>4WX+ zuGIIp&HTi_U9zu4V0BM_%q0J{MYENkPLz3O05W1KRIGT5i4#oN-E2T{M@7pn?vk{% z6ef8lbk9WcKl{j5Jhi2UY9e98XyIc^$FS7;Mxjk2cwdsVNnxheJ`54~!Vzpga$@VF z17u`>PFp2|MNHp3seLulnuqv9%-pMx4moV^DKxzjQUR(#=c0#%Fqt=x*D+L{b*2>- zf|)x~R_An9$PCi3C49;+IWyglqw16QK>Aif!1nFn##GGEadC$+x1W~XLpc>e#lO8QZpP+qP}nww=t_wrwXfwsrEawa#8=*Qx5406v1q8ekNCH@*|fLIG|X z-yy>pC1-4}k+`@RgaGZ|ndLGEo6kXS5@B|mQt`j_?`ZJyr<8ERS~R|wWcTrqI1^Lc z6ei?SjMVpnx@3)y4V7;17%G0-yJmQ}v<(s^TYoRqMguyarH9(9n}>8q?Qb~5rErEo z3}{<`c{61AK2YuQa2~@xtQ=7uJHfeWb@w-T;nXF|zj1X{0yqZU$Z01SBOn!Rb@eJZ z&+$OJ=MCU{<*88R+w^k{%l=45mn$*sv1-iMWf_X}mKyUfq6r4mw#nrk1_rs?j)etw z6W|V}0y&i(&|e>A%d#IgaGpPMqREI39U`ix6;a>ij@k~_pGuwZ)4>o=iu;4)34FL{Q3sS zmSHIm2dDpDt>%^NwMQ-DI(m7cM9Z_9k`^t{@0)&1f$0c!e2ZLyFRR;~Fs94FT}Vt4 z1^e*FI-PUm@BzDNhqkVmS?Kt+mIK%K#a=Een(zG&l07Yzix_9EYOKl;AOSO&kvbh= z0Ekz>g-FV#Er;n%@gnL+uZNUM9`;DU$M%pLn`Z3hxlMuH&_j8F@hzw~2k-KU=MR4n zxZ4<~J?%C&`o^U%pBQxH2;7}Zxlub##SQ^j!e#LrLD;QfKz#==jlA)zK<;^|fHZSV zsu;8U?I7gs5=){~h*_Z=J9O8;mjU`C!(gjs()u*Dh$-B;hc8Akgz6Hn>!Oz`xIU; zHJ>mj@TX~wnJ?wH>u=>?QW>BUBBEBXTm6}d^4`ViK~Xf$!)Nll0dlH`cL3nMVjp{P z(8F!;ewq}}22;6mprHrFcNlG9$FYSC4fE!3=MQn1fFA|@1MKwJfsbzHl=Q=>{ku4i{*itH2&e zci9L?^iz7ZQUu8*4of?aw;n8Bi4zwPG}B zW9q5YsQ~+=wt(_l)i76+-m~`f9j}35W3_&dPv-X0j2gC_Gq4oY;hXm@DrxBYdZ%$e zx)FNSuT*xLY+@Wk`VZkj4Z8+}K=oc8tbhDrz3%!3Q7?|Hf7GI~d`<)_Z#>F0KIKb?wg zU@EPfg1!Q^QSxx@uvrz6#!~|GpkRw|L3!w;c9m^Om$f8FS5_DQ{m3hSXHV2c)gl%- zP@@hvlUax6_e^|p=$m zlT(@2`H-QMi!l{$Zn=SKF2#I4w1>@T04p^c=G2(|Y*xlhnh7UVu|8Tgkb-?vt6X2G zYnV@Hhe@nymrxJF3fCa2C4#JVWV#O4rbYQHWva=`AYB3JT0BY?=V?flbv*3ycrkmO zpaobDFC{b$SYA5DcLPJUG7s4_hUB#dlf=Gxi77>6S><6(BL=$R7Nuzok)iHd?%ZMo zs$^010rAa!n#+BxHqzB1l%;`oc-#+;nv1+}5d0BVnS09iE3iHz@526_2qEW0aw zLNnqL=%XE9TQ+n{vE}0HG>VFWO-fDXnzLQLeNG#BD_I`|t3R(GVA7QNJhVw1sb8jU z*Q^Bs{mz#L&NI6_r^FFFcn?9+949@B84T^#*=0$P|H!HtyZux>C~yz%be_n=GLEfS zu}~OPJl$;`p^|>NHvg9Y)lxs*dfZOrAx>_sn&l4PW|FE*jde!?{z@WMtZ@P(6#?Lw z>;2~jIC4cv%fHI{u~<3%Gy`Q&^#^{_RWuiEhbvfDQFm;)4rC#C;ozJwV2kieVfMz{ z>Vn(hdkRXQN%qA&-ug1Bhc8&^u&Gr2bU_61Pav(;+@DvarT7X1`0!zAVZ`dQ)xW_Q zC@>fApnrP}B3YSuj=5oZd4)1=naRssi3;@k;owBU2W=>DYe{RKUDigM7zMJBgTp3E z0n&H?nN7AF{@62>6wORHOCSHkhB4}H+34?cg(vXCpx>!lnxhk@Z%}C&tT6`I5ff&$ zAjdMFv7%K(ZXhFPIj=T^BEp&EWCir|yK>}g9R$O2@LMtlP7gItDB50>NUt}?C9%TQ zGyovls8M@A?6!tp?h4G@bM@n0?m!_5k2JH!i+k5s3Y&rskLmd zxpY(T9zM7km+QMYyI1zqElP9i=o{ih3XlqM6ZMn}ZdKevZv}HvRO=I@y=B4kn(C1b zaO7{RmBBHm%9CsdrV5W-U>uqfzW&y-@yzN#&n#^rL}Vrai`4;A_?O3nxU8(Gu@Gpv z+)-1&3sX~gP~QP=J#y*YJQF&SGfslyLCSdV%IJ;><(y)_KFC+mnQ6YU|g1&XnHVGtmEpFmo75E34?2y@-hZ_NcLctuZv z?e*dT<21lkCm-`R2)?b~%zjow^EvaQ6WA3h`9f*dhBQF_ZkGgejvK&GXT67SFarU$j_NU{9!GwlKAP}{|0wmK`kWy_w31=Pn5b7^6eP?kUvM2= zzFV&05dV*lbAW3AFQhE0PT_){(o+k6fO37Bf0){%;4(~dx_N$xYNHzG9B!YiA~Wg` zQ3TrY?NP%r!;0)WJ8uzvzT!3PKg@DPq zsne(pdes<4MlFEmBZO=6$+1~Ne65`Ff3(mTD3N2`k|wrc?cj;OPdB)%SqKC-|5z_c zQF4k2A=LFfXnU#+d(zrlVz{kN*A3A*o7bW`-^pI|u$~&qW}_odHM4LTqp%Rwaj6B> z-`}3QM%}_!jbmJu>|679jF;^K5?g~3Ye&(ye_f+>X9>#6I->5Y&NEafP?8$aHNp-W zE|xB6uq_qi)a9MRV6X|SGygMhikHF!7|ZcB|Sbb>`!|`=Rs(HJ5fL!+a;q_ivrRR!q0SjF86$=XlMEF zgh04PybxBB0WD*>op-KLS`s{H?Src{>_4=MNiqCnL@6!#icKTexI1gduAl-F6A2ICHon=|>lS{|+Urd}K0FL`ZFA`l^>7;N5AS)5%o#)_^F^AGi)K7K z*Zlo48m!b|>Ltv=c0ZPYs3T)43xvZ-1Z?@3w($()hEaNeUfB{C6d=EU8=T+#4<%TU zj&o)QF~$j^Nn?EZ0O5Nr8gKqK@V-cQ5}3K%{2oBYX&ve-yt;;P0Hoq}zH<*;BL-XV zpz??@m*XxiF2UCOw_{^?zX3e7KZ=)BYW(Le)3#|71eGeV!a?8m_@oDQvr;Hr)ws-v~Yjc z0~@w9rI}h0*fN+dWrshMh`A+6T~ooqF9&SFZXS+9jFdk(BISp`<2y+8;|jLm zHl!iSFNGUNO3WMLV~nAy+4+PbjFuEp^~RDK8UXR0L=PZA*G?kH5*n6;n7H0Jp&^>P zohDwC0V)obO9T@~XAU->y3^MwDp>r{tQ=yjwfWX|1@`|LcrDeve$Ib)(%z^}zuQq1 z_wG-dH_TInrQ4#1gDbDAvAOQ1yxg&ntY-!=!+o-*1p&X_SZCuw_-~y9SZQ;Omr)w< zd+XlFUWF+f_TwgZpz5A|Fwo9S1Ly=V1|~AQiiv^p79ig z3t%2IORl4#aZ>eRu1mrFy;vnMq(}om*^d=T?rsi2{wwr4I0MNmNE8g8;RG+1;Pq}$ z7!;>3a~t`=z5(4I)vH6BpB*VhQmDutFY)D@dt^;}=0e`y5mtf$r>Ee8yF{w`u%U=1 z1U-#Indp6$x;*@sH93SrMYvX+kK6nH)`3Z0!$^mc=*zNJJ_K`?<*LelS$Fj386xeb zHt1y9QMahSOyJ3*{z2bkIg$%jioPJe*9^gqWidLl%3sM1`{LTLs80j>TED>l(|*Oe zFGy&Ww3LcN);i=;5!6quAP+uu&FT)Z)uY*GMFrvhFNmO`hfPvUOyEG>Fx0=LewcU2 zuj6$Y*a}bHs%}kTvFt(1$hC1LOIt&96DsWE0iy6WYF^V#@lEqv>-dhFnsm3-NQ;e4 zZ^^hktO!WppGQsgm0y``Wd~ag%H&4N9V1_@1p7pFI`2vhRnUPg8fn0P_=uUkN zCA)`W#rN#x;o`%`IUf1_7bQq+kV<`UT-&BaWk}IIRE3hpvcQSVJICKlEs}blvul|R zor8*XnNDuZ(i5wSjm^iaiw;G`TM(#f2oAu^+AMRT4J(ypt!adI*7qs3sk==>< zRjb7sj$bL0pFdm_`&r2Jsqqg10LPfOPtJ+40r*lsL_MUK z==ddMKd-+TVf3a~xn+B(nvRPyV>Rv+H{;K_)?AV;zm3NJzg`Z8U&ev6%Zkpa4}2D!$UA%K z5Pp5AbovZ85;CG6sIgux3crA01|zZ&fHjD=f?=Z8(iZD41bgCE5+v-c8;R5l!|w)c z)@pfNbu|p5zH@NBb1)?6;1E~B+0$!5FwLh628`Vzgh^fw@$b`#=oeq?Q-qDp3Bn+` zn72X0U)-5dA2WPIXZZ^v-*{i|#~Am|29`?9B)7Wkb?AUZV=&6#wm zA?~bRjF7F_re*V6@!qJBg=PfO3np^Vk=GnVIP^|2XK{IKNzOZYA(}Bxg>=0RIKmUJ z1y7``+#~z2gW#RQbk1NRC>T=o`TaQ)6jpJurpUKp^E zbcSMYBlpN@X*FRf15VcErNQb3#L5&O9yE)nv`cQ%j0^p`9^5@CRMj_fX#qr0qfVq8 zb5~gMJIC$PdJE&G4b5non8pnFC6Bn$Uup88LQams3~og_x!4k<;=2}4nS)mO>T?xZ z+`KpFKGqGgF&s9FmAt^LISH?JkR&Z_af+Z-_v%WiOKuZFxwjgqRPv@o$s;fXT0hJ@ ztKMEF`Br9$e1~rzeb>W1fK0*OmLKnkVGNg{RS^$E$_9I#rCXi8v98{J<0yfZPgX;_ zWQ*73nK3fT+A6r_8gm@dr%qj$d!A9x7H7JT&j6Gmo)itafmZAcsle#Bgk=xFO!w{_ zb)u0Q*A-#|<37kDL0t}#M%6=vhbR_Gv_v1Q00p^FHbo zbz`IDom0Hr^`tgOvh3~=AgD@mbaMqtVuSwa4StJU@ch6-*sS+HNY``mjvvQh0{xc2 z0)D~#Vg#%87a}TPOP-Q3VYJ3TqlTTU&S1IzP`x&PK!SqLq69Oc(AXo?cDzTaq$mYS zA}rHX8>RjTtJkrvbi2xe57fw!2jcyCwFWpUg3N%_5&D{}lDBF$8Z)B{S({t|`5|!T z0mU}vZtc`#9xpzukhnh%4|Bbt<)ggvOYt>u7zl0(C+<(QU5yO1kd6dnqb;a zQxwbkZi$aTanN>D+8PiJ8;gxG4anYo8`j6Au}Cob>c^KSWS=J1U~7{3Mf~9@ex$;1 zB9~Xhmz6v=Zggujb-p~b6qc;Eh9Cqs4%OQKGO$7~K=zMUH@(*@(VusNVQXo%v!tNz z3BOUr{OvV%&G)1v$)883GdWqH5I>{#Ha?E=d$~W~{XgG#WN`DDgo&deA(MB(x!d zihkULp+JQjd?b>R;+Qzs9-*Wv7V;^E3>pz2@5AXRL3H1cv!MH8muXoXU6``5#FYF-xSVp8pjztA=`xeZs8ovdp%a3y@_XH*#6(QqPOT%=DHp zS#+d)^KeAwB<%BKgeoVg&uMaLkFtT_0yi+zdUhUp{BB#XSrI)CA*qSxw1EkCBrlK*Nay|?^{Ecn63b+!HtMHM ztv|H!DkeFgcL1ay2`LfJt}&3a7MBPPtS>K^n{3O}f2flDlEjDv+0Uwf1yg0f!uMRS z1-;Njr)mU=r$&yZ<_!@g3B9orXX z&zIaKGe(_gl{MFn7@%SR+y2j?A|A&$2S%6#(ll9S%fIk>ygwhs;w?1>fmi(Yp56IU z0Hzeh6k5|zsdxy}m*>eD?K1V+kDji~p~TPg1W?>x9d2B)SkDsxD-GTsSsx50EBiWr zi9)@O#f$&MbUq!kO8*mw-dz?t$rh-8Ai!8rVr5hk09uE$#mXadRh&kJ4vSq=$jxZH zw%q9VI7$ld_~nPy-^G`nrX`L~h6nAPmzG zs;0kG>{B6{ zwzxv4HD|=>BH%cwhNZRxwwH-@%0EKW!yVei$nn9$VW^j@A;lC99uys2e05)9ry#Td zEz#KRsWfkHy1wL6Ww>U9ZfqIjoW{i1D7ky0u*o!;zwhiiS}l7w{3wWx&yW`#oB3>B z|3GCpS0~IK*&PY`9tsRI5~jlR;+YUAtHwOr1}kxJvClskex1Y8*#aa>JbhGCg4^LO z8im=}Vu1N!>XPV7nRpfH(>2&FR(ZUZRNb6f7Zg*3h)z8>C>SAoy*`W?5C2eTPZ~O2 z-29n(xZ=#n5%)BVs+4ytj8Cao0Qjarr!YMVBxOCH4MA4z3* zIxhAYtR`%bkWkE8dhP2YXq&VJ=c9;%noO=5ahsovy|Xs>`Y2h#*$#~1<2h7q}y(0 zVKvGOFIXwWJ$l?gOoD)SzW|WbtWF4ys+YNxtzBP+;LK7^`SoL{*UsQcJ?ESat9O?| zmo|qleY8iT!^tmKx$HZq$iorrBT0m0EJXrpf)RiCxf4+>nqxC|5Rj7ey%&Hg1*|P+ zlPmz&Xk0lK)NC3EEL793V^4ndct&qI>}4E-}K>5?l5v8CDj4Im<$n>{t_GM;|TF_U!COn7F25SM@_2?-#mTw zjbBqx7M_M!3_1yp-zsfYWhe#ubfVvBU-s`%&;5D!_LR2}69H3d1Gs~#S3{cwyicph zYE-F%q3Wo;tP-jJI5aa`_e)FXsS&~GuMt6pZ%;R-&4g;V*XP)%f(>AHC)>x4s&fho zuXnG>)C>!uu9-=8bbf{z{I5Rz=j3E=jqUUnCh~Ojv~guefK8em!e-GrecLpEb2fG! zUgDyy=|g13CHk^`z@DF7IRmnT;q;~0oFB&Ju48SpR$Vwb+!-4vC+)ZwB+TlmQ^|oi z`vL$&54<-wl{dzKUdx8C@X;`>3kaaY;Rj%CgCZvrsHp5%&&DPv_i`gC?6TM;^X4dh zkf$boN!ClN)AV|4#qKVlqoh2~`h~XTg3R8&E^yZ;TO&g619m(}sJ_vz_?~MLygZhh3@jKG?vA57q27Tt5;2=2-#V!5zZlg;a$+0@>%R@^9-(UZeD=csRtE( z__)jUc2bbxPwEmUa{5jo#~T6yf@YM^x2i)~KeN=cqget%U4+9P(i==P*BQG?jh!^I zy>Br^xvjuV=*tA=e}M#Cch*jP4&|WQs1`!Hp4h zU%!PVvz#Q(@gU4*2|2-3B`4-n2d815@@teImdna@{R2} zh>6q{XkySKcW_&`7%n7*KBVO5Rpm|?`u6c2d`w(!guJ#?4`SldgPUs00n?2rZhe&D zV8$#jZ52GEa%`?^Z;f21iq55&>jL^6F#&l3dasmXv|}GSQ_UwUB5MTZn${B%M4f<4 z^A$5Z9Ti_kclC5kY%pDKmvZXPAx5ftp`6coD3a^p0;Em5?Ex46)LV20A%nSm{=Dl~ zKI%;Bcj))2DM3NieV;GB8uWX9kd&*Qho}f|KA3&dWBHy1YYhSu_9daqK3P7R0MT98pP!J7Y$JjH#yQoh5EIO+vFYbCN#s!g~Br^ z`ZU1o4)*l(J-GI{IT_>y#EX z@%Q8&8N|>z-F(3bzW(6OZ`l2D)S_Hne>^)N9a(W|Dor?+0Hh<)ZeCrS0QkY2G`fra z428v;{o_p)(1a#9NMI*()=`QCMlouD1;lRNq6tq7N~8Vh&=YBf<{{&b8bw;)yEn;R zhPn#3v1Z~t8bMjNaD=x$vruEn#=OOg)FHUY$Hj}p!PO9%*OuY67|~4AchPFxuk+q| z#Ay!&uN4|BSJpzXGcrjfinalIFR;o(nvBb~S8|BX5`1E!2I=nDZ3{4B!%ET}>K7)A zy3=z8PiokDl=IVt{tT;ofROuh990KmEo;sSu9buFrD=W($^u=<93LJ*NSGZy40_yL zTGF5mBCT`unn`+u)ECco$nVAUc5 zgD?PqO$;Ca_Wwa|{ujK_Gcs^8aiaZi_C~`FTO;+v3-|%w@VrD%a;Cbn`dkq9Gky_z zB;6vqi5?hc&b*$Sk)%O7!IDTbs;qiCO5CO*Bzfp(VHz9Jd!m>A zbjyhtqhACDOhO}rCZ9{n)Y^?}cYXG4_2*tK@i8i%8zXVhK#zX!zHQL)72PlX8}dKU z&B9L~k9+^|!vN{~gPy2&ZG!$9`W;W0pYZX2u$%V_y|06`5vDZt4~ZHP=n8_*4;RKjGbsK9ar+L|#OVtIKro?Rg)8 zgrC$@QxizD$quk4FxB6m0MD8C&xiu zj+Hak6{2p`3;S9YCpM^#+sbET=hCvIDKKLCI6I7cxv9a4N_|RXZaWPY!M*X=uD6YR zkgMndy}J4h^!jka+XnF5#tx&pyf0nEwo+Zj+&LyWuK=kotFSK;! z)=wR}&#EzsxPXA0{SwL-KVB#`W_}cC5(DQpLoc?-MW`9&EvgaXfwRa*FX# zQ-WTOvnaS%odiFAP^i#xF!VcYB*|Xu=A5I_DgnC)=znrC-bxm1{P2FY-h9Qt4aAau>Z#_nf zFaaKS4DFfctpJXZ3?LvwlIUz#J}rZ72vWCs7^%8oP1R6si+)Mo+Gs>A&Qgnu!IlU-_n4 zH-iokyv{pY6^%9}$zu*zyqy3_bVfJbMoF}s`r=$D=b$j>bbb2OZ%Fja>NqMxRIgm@ zSH7`vQwIExe52NIzuf5R1YF*KAa-j4QnJ7j&i@FS4%YpuN?1n2B64XAO=B{IiwVRC z0bWF?@2v-;a9JR{ovi5}?Bd8H7B!+jJ>$0YMPXtI^cw1u{|^Kr*HwVF{D41g8E62I zBvx5+eYWw5Le(AG8)M1E#0DJH1t=`4t+7d(UA|e4nq*>_srgk^Lo5@OR+>2b!LpDYW`bG5#3l2X`&cI3oS5P)Fu>s<1vM)x+8=)T0E`W@#RJS1)W?4MJRO%mkdJI?6*z;hSrsF4U zcdK^y8AG*=9V%9bYG0fyEc(BO%<$P;tQM;pAbyPAo9J+2$JbIf)ZZB2{Cf2=; zZL{}jB$3EXV7gN~v6V@S=9`_ez&7PhAN*O)3mUeW!!P4AW)QuSyg`Y4;>+vCCYM;n zMy@QgjCCm?LM|TK5?}enXq&|=mFW4h(Pgs(^vl+8BM_8a;`h|eb$xVR`09j4alXsi z(K2-YFm={b1OL`9Nb@;N9OWiuo0g!$DK^$28^4&zp&BMu*fm)8Ms3F)yv?-4A9D2x zsKE#3=^-F=^(9|$KrKs`fPgK@R-I5Vo#)#mt%n4vCQkdyU)Y>=KI(# zy$HQXSu+z}aS~3-kjn+Ab5+pf)(rqfg$Mfp9S_Jj?TU5TmUfm8xQMLd|M=(PBHHr| zi+T@g>%L6Jy`kVi{3Qmep)FGpLb^A1DiVD;Q+W-MKCQDvxej;lv`NYHE9>U`Gmi?p z*SAV1w+C+<9R;XVWlR@PVP&*x$pD$jN^g`{FJV_#J;D!y-qZdGceXM11PJA5B#X%k z9P?ox{mRh3@^{VI#3m=Sua=SAUM~Bu@j?`Jn2EnUB9En`X%uG^MK+= zKxPS(JqC{Fnjyw3(q_^2O=NDh?XJJQWG$W<$u@p8SeJJz;(gBe$vYPo=SF)q>^toy zuc8?ebxyhWf#K~zs(e%u^7(WNVh}NruQ(D|Bi&`dt!yX&ql!fdX>vxpupX_+nj){_OqtYN1m*kxLX4-~#4+ zq6|Qx_WI;k$59;FWN{!1_eHn;*O;pjUag1l9diHVncmU<%{^XU8wQ#H+Nn5QhyFKv z6DzS30O5;0jy#=8r)XIKqFk3#xSwru|9`PJES(s{UKk0z4rRBp$8-`(VnkgVAcX>8 zne5GCH~g0*afb-Bvtw7F#xn;Fg&mF#qlhs@$^elro_Ia^cw6j5o1UB{33vX*6efgs z{FQu|59)7*NX`e98evUou@s8|-agnSNFo+*N(YjXj*vcG9r@6X%$#+*!wQ4iIY2Jy z(Q5;uIoo90njAB!(4fukmBlSKzv@lr#99}lXKA$Af2lX5$mOnP_eX@l7P%N-Y8z)C zf4sW`w0W8a8KX`r>Zdv#4JHspGDp|Mt-S2@w=+^Yl|E86*v>uwOTB51FxYqcxJu-Z zrittY1N*c+1$=o-{iAD**fv3tR-V3O-WJ^OOcZE?)qeS$%b8@RWmIl|qfKmb|3TFk z6xU=-cI`hEahMv#M4c8OCm|>Qk~D!1F8-M`iUIETl`2yT2s&0Aa^e{e(6}y11T2)2 zyTD*G9ycC4+uxUtLTc#E8_3F!6;JnP@$tw49@~27<=(?9~9f{0+mtc4Rli8EPxP8nyPNoE)D&) z)XH0%O7?sbkSH95E=DS}S8Tk3gfot3+A>Dry?{ZJCT_tIWOUnhQuxl@JnEo;HRg>p zTE{J9vGM8@rV{Me(M|6Fhf7^WcMxqo5Q%|Mo6LjuQld5MR^on+=E7Y$PHe!|Ww>|N5uMbMzQTA}%wOhsvg9?* zl%cqjb(JYFhYR9(|B1;}Ch^(jCDfzQ(jg|*NVP^0{gH_!?B=!=MMb@JYCRPH+vN-) zURQUf;SI~Tzi3&e8MD?VI-d76#29UQ&OdpfGe6cEAZGV0fAU>IVq*riG&o1v%zX1V zo?SjfjeF?`fHnHo_8T`1_A=e&kVSBVjioF<6Xk<0baVxQPHn}70?eA2QkrQPGm0vG ze2b;&*8X4f=FfulLGYHXwQDPH|5EN|)Xw@RM`uPkF|S1*I+WOT=bks6&0hAe=JwPE ztczbS-VWP%Nq+Nimc&bx(L=T?`F@rbpVTZB2>iYGLQWiJFw@Y+^1GOSw`lFH*V`grB(bDrprT!46Yo=PceJd5LE zR!0ZmOSw|svYb+)7lNuP(Zrl%*rn(9Xca1fuTvk?iEXS7aaQP$Zk^%8zkaW1+I>OC ztbQubqjg4+ET~O!rg8)Czh z&-;8jAdusJse*jHROkOTZQACfzjNq-8(B1J!?whbzztMsWcaJF>Od3G4)NUyT%u0491HD(|Z2$d?ZX`e`msrqXhtZdcfBAoe=VF{xdNiEAp=cR<}L>7Bnz z=1lk^>!7@7k?bXba;7G$U0deddRxjXjeW7vo(jiNN~+>6vtTO}QWXttL?Jx3UGVVL zhcoJ84@0toiRQ4oFB5q9bWrHAZFw9<@Wk$0y~yIn@L+i&VwN)zaqJrf1vAmjSm3*utByV#Ezb&cH!HJeR}M7e~7c>^YF^x%vN|75C_710tEOnfP)Ct zNH82eeEiN*4)Fu<2zXNzM-C=lMNK?pw`m$*eNC+Mbb1BYDW}TwT-S~%GPmiKs6}g; zV%1b*j%Yr60_Ur|I;kJ94xb{+CLYNP&_0{)EhIFst4I)zmltKGO!s@d9U~~M{OzVE z`Ju!3F-E^75op!9^NzR&d=$HTG1ZC0&x6 z&a(BN(BJW|cPXp#B^e1X-EHEA+(GfGP^Z?NT8SP(^km8H3jV4$cJ}q5&tcp48+$+d zu96v7vw%7IXqFOhe3OhMau(x*h;vV`{7@ z!5n*RSU_HO2rq20h%an$#l3zE2X5e7_C0!%^ydNPd;mmj;%)@ChdynZNYZh2s$%8P zjuBC1`mnFMk7L$D#~eu1-ey9tZbtH z!`|djwBskQ;pIm*^6C;dw@^v)A-0F7%p*lb4FMCA4r5fLBjZyXlYO~22U-rElW1+H zu`>eRgMZBL!TY@ijlF;e+45lp?>%CZ;n;{ZUS7F*%Th!NfELBcb9>`x)tf9lRB4}_y@LGro46dZ{h`FM-Q=-+o%IyWsY4?lhh zkqf9Dwv9L&U&|!yoogSLeH^?JJcqHQn-0#54A`iZ_m_J`LFqJhE;U|KLXHFhv*c#3 z(ctr<;&oL?f{K*hE6eIq(oxk@@ID_cYVgU?LPo;I$Q_G~sXWSIXyFVLyM$=^+Z9bt z)iCM*!`}43g9`Kw<^;Zh>s+4-_h)Vlg#N~*9 zA=m)K^SnJ@`#;&?0AK8KAFLST?vWt(Wk^rqPPP#Djp2DJOfroaCKCZ z^4?zpZQD*L-3WxDCZ3t5lKvSxA*ddYGNT@;GIp{a607b-&Zi{%Wp7eSj9imSGCM=5 zwP{P2@0b+7=andq)>D0l)5sXPB?xuaW$vNy$^qopXYY@dO%QEJEbsi$fd5EZ#AKh|o&%O)Yrb!p zCZp_zp5x)*sqBei~lj`0T9A8;##$)S(L(VJi7%nf%CtGUjXJ;l=zKL7x5*95OsVE}UPG=wDT?t2>Nu)a$2j zh2Eb%3;2tm0)f?duA`cjxkoUbU-w4tf83ilDV7h+5;dio-As2hnoc3LnE$vpzyF2& zcalWYx_V6-O9Ls*8YcU=S+Q0(hvD%}5;k@?J0rFu&0F9moB=>3c!ohCVGWX6UMJBV zL{gK#$OFqf!-`qbnX5U&|SPm#uBxO^t!2PmZdDEI)X_FdurX} zf97+M=NWa=>UEHx)zG(xgtZO#ePtKCy%+-BW*BX47>qVZm`s+SKTQQ4a{uGrsPRFu6N+L)vQ%_qa=d8&fSMp9m{F<&Xkpyn@dqg41{wA3NMk$xH^Zupx-T)Nb{#o$@iv_LZubqj6?oA-saTJfRX?&q4&?a z@Am5FzmzkiJHvMfSXJCi_MgzuqVwN{;|MS!)+q+#5n4SOgN)eUzF zO$gJG{xnW9Nqel1Y9lwsln=vn$ojFHwO6N32CCOuUw*nb574|=IL((=?)3jiNW1}j z$je?EwOd|>nEc1R$yN^Wn&HJ#67I&E6I3fN!56y(W=9kqLKpxA_NA($SC%zK=BBN* z;9SS0kKT0|qW66fe=lNT*O}58XqPh2i3%kJet4_9x`SyQy-Er5!AsjbWqe*E7hADO zO0s<~K%u005qN)&2u3_8aXa4v3m?_=?ecaJmmbm1h*p~%P3*C}t4XEOpD?_HEu<1_ zde6sdA`aLQT~8?|E#5H2dSWG``k)sir4Vdf88HUvC5?(qib_EzV2S_<@~yy;_xNO(7z#28);Tfw(+H|xyTDF`*tWFV%3LN1+gtKU;_5WNhs zAifUThD5J-@DF$Bk&$5GBZhOFjgd)+-y}Y4qD7|br%%?OW?gKpAE+m zG%=Qk8-w*G9=zs9F>)&Mc75M_0?4?HuOr01pmmye=zw=7V7q0?LMz`Gm3}U>%kv&? zD9!vI_(teDoTP;*8Y@C5l@Td;5om}I9z5qhQFUErcy?k9a*~?dOu{kM@{PF9ApUgx zD1g)gdCf#uV@pYrA(d0{MDn-ZY-=i6pHaxjBatAet?pY^e4^k@OS(t#2&+e9<&|`4 zI$thjx7IXv9-LxDp+nhJUd)D*mDl+3d*w1#^Y)(*$>zQS`$;nAAk~yz5Ycbya^xE^ zf_od_7vE9|DN*y@N0`ozS(jNj{B!jHb;+2NTh<=|%Em5qLL5Rt0Uh=? zwAjA>%3;du_pmOP&|hs?6NQ@DbilRDM}7KNRU6cCh}5^9*Cn;fc@n8}UPPv}jL@y` zq7Js0WyVhBAkPtbC}=Wxb*w~!Z$Yv>jB&b z9xz%t(6UC%LpmZlD;R72v=F6TttXVM%QDkeZxRN(Gt>=E$-xzG=%j`~g@puK>7=i0 z+!Z*NX~L~^jVuOIyE+}P#pW>A-b^(ojp6DxB=pPVkhc}7YeD+(_L#ef8u?wJ(8n7K z!ZaE(R3(mgJRSdJgoNmT8(J4MO*~RU;V&aiS7e8k9}MTA5=kKw@*GFq&y&e>I?Dea zw(c=H(ynV4c5K^DI<{@ww#|xdbZm8O+qODM$F|Lmzufop?)TZ>82eX^`n#?%YpuHG zJdb6AQyH%5uM~$;4Bv*>;Q!%S#ikrUdrXi_1&mv$)6+zJYC*i_;>=dcxzVz>RLPxq zV(eB;WdWxD1098HLW>tO(3P<2wil>e)>dOPw5M>7_YQO>~Ml8PSS6L$&epfQ-oBuuZO6D9;vqO zZR;z|MQ6NJ-uGl>YmRWk?-^OF(}H?ZF(yZn-u+9-{0T`1R>c+|-tW4IZ}!Qib|Azi z+=`dr7NxDCD41}QFjyR~@;B@NJCX1A zJJFI1-W75Hl{woxGhRY?@sD?_S;;*KRv}k07eIN{&vF{7?7vSS!klqPD8tzuo46!GlYM}oE-%#b}5Y$EMwf&lwjYltIrybY*2fjJmvT<{X{Xg)H=Rfd`6S4*% z)w^6N{eR&boqyn)e2M=HzB#hg^yQfnbB6m5e1mED4c}b!VcO~>1$;pL21PU%-YR9_ zhmT#WS4-i@`3Ju7=iFn*ZKUL#iD0A170odT~cBo9&%88$3C8li;{(Gluk9Bg_ z=V;4 z77VS%g!hRZm>+TwfCrxsIb?3D`Urny&8v2SlS)ebOQJyQ>{SX>)p^QWQohe*q}S9L z9I!1!45v~oV&{tE?QlC`wIXG56|+fJj$g7vO{DXi&=~sqRBCQA_lI0ryI50gFY=T$ z&!%yCRpzu+yWQ5b^T0{eXwq>V6NLG3&1Eudl4X$r7dSff0&uGKDfvC}PnMT>F*i9? zIe;iZYzE{JHE{pO77xR+Na$$|bwgkHD}b`l^y-Mdev*X`4X9M%zKE+ymBAy;^lxtc z`wgUw{XLLb?ipvtAk6V1+Lcm1DYhr(;eac77&!mfxu`llJ3Qg9_%NSfk=MChlq}Vr z^!j&eZpG)o$n>=4gcTc{D^SSOh~N{VsbN6hkM7gsx(jS)NT1!^Fg);&E5Ec*4b7G~ z&{RBYzwjTFgW0=0XqaZ{Lts=q%Nl2~9Wvq$t}DX~tkU3U^ywBW<+Ry$#7-s!V$CJ&)Cd*jK~UEK9r15^Gvo>jPBG3CUP^Up(+HGg)_E>bEcxa1V(PC z7UhV%0Gcp917}EUCpax}7_t*y2&CI0hXu|ysjx1lzaGvQH(2dc4I90}${NAes;{1QuJGt2#6(Hr%GG$FeG!lSNaI$G+)Od25+oNDfW7iRo{ov6rZ>=P zjWgG?yz1ar{BXVy{KgFHgAaLB|H?O-%+nC-c6Ns56pN2@|HwBF|H?P}QUN%kr3#)P zckX+bi z?C2yPEX$2cpe!*}ZgNaf(9*&^%2saI4leY;W;dFIHuz29_aXV}?K|Krh?E#fl+6O8 zawFDk8!*;;+R>V0rVom^lVisprO1G!69-tC0*l;{IZ>IjGZ;&U}g}nFZH+mXG_z ztu&P(e#$J^k@)FDQ1nUAC_j4~I;QffBC03<#K&Q$R_9Q$^%f#~Kb;}9C3kI#Wtwch zRh!mko3*gg*=Zb+9@Hjr*oW1Pv}>3PxmD1A^65s2R#S^Rm2%q`1kTMJzrWk}KFIGy zTn+xIzDd2#o)`2sBY)+|oo^*I&0ZPy>GlFH{n?dEB$4a2Egf8DGC(OTYayh^=zymY z-G~f-ZjGqH@Q`a~5aGFUSH8d!=RixWyGUlz%^S%tar{5>jqm?ozJdQA`R2R(KlCl% zT#iZ`hS8Rk zXfNtl&{vJU$^#9RjhG6juM}TgsC(%<#D|hJsiSNZR^U1rqcM1tJYa0VZf0z~#A;M0 zy8N{H6*@q&eo-3GCJ_Xr^zr+TROPJbn_b}}Dp)4CqbMkM(_CDrjLCc{e^hY=MJK~w zNY`^&#BLUF^^**wwQq%ZhjlvFL+gxPhFKEYN?dlX4<%cs%M4Qb4vberW8VSsD$h5; zUVaA9Kj-9cxO^0Oy2$yO;amp)z=;J5KSYZ7R9)O?*e<$bwG>~le6v@w$*ve{Gz z`q1hTy_UI@7M-CD7xiq9hO%+t*w9_!;iMjEy0q3u#LjP*t8o=Sn<*QPrVKMCeF7iF zeJ)};`8NNuGfyKKx@1i+)Y;s_S~wPsL0Qx)(msQl=h?cXm$5;J6Q;AMa4zb1Jv2g! z_ov(MS@$fF#ofO$B)rqf*&<>(F%=1klxQ!*%~+GrPtHOe87PCLj@vKOd>V!olt!HO zSr_8_>h4M*8bSEBK+&-<)LDlss0R2-U_8TKXPYFNvtQoNGRx2Xvn=jV;fE-a+I-A> z7DyNym-k>Fex9@TT!6_&3dnK7$8wp)a;aR!cxt*#N$u_ESk2IxSh*a;4hPtE?b@ld zF%e;-#_y9*A6<8mv6M^+S6`_X^`vu}rZiam{Y6L@BBi#1187adU#<4GJ{GExm`_5r zb!<;FDBcu(4`|H>{^U)q zMTYo=T01gwV_iv~*3nvZ*A{y5+MqUZ3AMG^!Z>p6NT`hPS%6$p;mfI)SWu77PBJdp z*x>x{gTLkiCPH3um}Xhz9CoO!lAQ zIp|AWIBff3-wKIw`&dPT@hbUpLZG9UgqWA|Q6Y#5Hn~H;bkM-Bw#+1Ilc#94xnNLj zkG1u3l+#9Sly_E#pmDxm)@#b@dB~k!x~fH98umud+oZk=`hn;xq?OL!<8*iZ0jF3> zfYPP!S#EeE=}H0VZDT7->j1%U4y?UhF?kwfrGyMQpEw9?aMtbNWDF{!q!XEvJ-Di+ zVc}WmR^({@8I=dj)6*$adwdfZ2rXe80J}*?Z#wTH6~?mb5YM;AiIqF z25~&diM4JAPT~Xk7c6XPmu>uwg!O>ktvy})Ks7}H#4%(lsACqll$P#^L5$o=Jtdnd zYOgQZ2WjY`v5?{Tg-_zat{-+P{4dtVcEHzOQy_cA!T|il5&HUPgcRmD_=UVSF9RrrfnDQ9B!ni6!s(%N$~~zmvy3P5 zf>?1!6!_yGv|{V{CV4CwrVg};1(~aU=SfCW_9sxDC?hy^0HG;h!C%$}C|lOsEe0W@ zwXg_t4sKx}m-5s5BXwDqknMNyr&aFvT|1^LRT0uHoA;5aDL*)4)sBqYW?h)r(;BgU zNfr_fqTs`M03md&-zyK8kVYS+Y@CIt1*rX1v*1K6*me8agA8~( zWTZ72<3MRIdJWFCSh+<^;(rzF6#NBN8pW@4`dg`+ zPLas$f_!HWy<3qDl$_%1Ixpp-8o?E{E(uKzyk4?EjEmRT+BK%S#5P-B8B6hHkM1A) z<^bkj`-TGM2I6rLyV&I(V~U676|#Cw7n=6-Bc{fAA* zBnU(($(2w$d#lJcsMI!Sc?YEV|JXOgg~9^dGAG1ENs|Z~j z#}gf_qwKKT3B+*eh{x-yKhJFy!(Y$g+vXf>v*{FoCfdn-9nmuBFQwGTVM|7+jG{A=HIecLy3|JXN`^2ZTLYFk?ykpI{>o*cS8-}a5=)=!*& z?3=23g6TaG!oLw8iG2&t6F}HoWi3Wrf03VM+9Ck85xfy}p&r_jpueHJBho4#A5{_w zIn=rTwQp|XWBzO3)OY;HzF8DE;oZIsMSgz+Z;QnLB}vEe@<@7mZ4E5r9+oaOL`(|2 z^ab})HTTti&W}{cfrkD(J=Nd}^3l?G@=UQ=bOy2e@hHhLCyzLh7H-+UOTw{7Oimz+ z*Jv8JfI6?v$ZCC+NEZ`LeV)>+qG3fe*nq#9s9k;*gyhuD%=6`51 zIA4HH%~M8%vhmWx6a>(TQygBpMSvWre@{=1fg_S$(l?VI+p4iNLhxJp)CkU|X3Tdc4mK=f;`dw|J8V|@ODBA^a1;*umExJb(s5oPc67^${G~f3G!V|S z!%{E_a`ffm4ExH5StRvCGLZB5Y4gJ~*cnUkS6VkL!eH6$PEYcynf}ciG`+lcI(>n) zkmd+W@aXalRDK;F%7K-KXs6yNfVAjW6^<}HUGl;oy35zbIom&Y^A0_zodq+$lo?G9 zFMlTLg7{SM4-{M2Ie>h)7n2{_CYmX;mG_~wS~dmE-W@O6mye66rympN*WZ~nd<01- zZ_Y~_AnUMKS78oLLnvjmrb||>1dMKah=Sy6RrCt|32k6>NP2KDz%-T!6qY^KI%uo@|bQ=q-5L1(Ts7 z{{&qSfH^sg^{-~QA}$+K*WWPlg@vzzNJ{F&L;r`ZIddk?igX$Fgu=F8NvAQcG`^GRHerP7x*cdR19!z~>Z_ z3a?&5aZ$UAv$*m=i`omXT}ks|K)4UG<-TFd0L+f#fdS=5c*3W@)v{-fiYiNafa?+2 zdd4L&GqKCMIa1PTiOGXYOhAhkOE{yAe!nyO7*AyP0uW1t3FXLry3vQ$! zMNF%<)UqOq=ju1`{wzHXMWjPOB(DEh%de5S*`8=Z7lOP3oYAPMYFiT194<{oYeErrG;iT8&+m=N5_ zWR8nLQmY2}S}@KEudU@FZqFqV@S)}P>i)G8-^H~2ObvRiIIp8lay{1kA~=so=6g)W zM+s>q4sN)$7|_lwdOkiFZP(~2@mne>Sj9sXtaKx z4j-=aA6}Z+>|eKmMgoe@3b7rPrc|e>V*G@hbrB)vh{;2f>){Ib*MjJJ}4cLX732AKRZE z%^<4wpCq%~OA6d8Bh>Qip%a~2sl0<7_+3>w`shBt@P{8BTi~Izp##kH!U^pQMYd!5 zB7bai2SIyvUij+DBoe>;cFm`<`)v3$6*y|UJ*@KF3{Up9ez6f$`hBQ4cI;NNg7_Nz zVK1U~#a!1$&cDXbuMHQr99}Vr{JszI9s?K3IF{&L7`XL{MBRqVGFxIY*dhM-cU9$G zC^7E3?jWRr-=;5icR|&dU1ZyCC-y}qfWJAyh0o~Iy8UE`^KSqz;@BT7&kHH?XI%dw z-G>Oya&FAXnOL--Bsh0So)n)mz!ich5iq|nj}&;kOZT>_fTC1%ZdL7JOaU&o;( zJc#NnPzXE*ub7Nuzta9dHL?E)RHl; zsM;N>u4fJT@kbcd-wjL1-fha8xaYldsxuzqPs16a;$M`-;>SUjU|4D9Js7t7w3k<5 z)PYjI#2wvDWG$<<^qUJZxI<*fY22vW3uG$SXv|fJHQ%bko?U>!0S{Vnpkl#}L>DXX z+wh>raN66f`eu*V?b`$@sD+dx;esy72V7>G2uF1>+V%2Gaety-Y&Z zT#3}+7~zw>yk80hpOD2ZqxD`OiI5KhP|(j|9SpN{@j-oR&SDQFt^87Q{>^BeADTm0=+?-EtL-p-do%lMUNQOWJucH2HVt z$}29az_OZ7Dd;DCw5DqJgV76#Soi?4uXHBT4VDJvHVlhz7Edkj1gIp#z~>V(4X?K(Q(Lh9sIdLi4>MG@R4RfDyc< z0*z<8P7+8h1AYlJ;6^qfN)PK92@{Q}d2$sw4C0?5h~kPO<|w_7#s4ORgOmufcNucs zMhgrbQhy#lp{fw7@>_!W6~BCL956<3)BtQ2mhXvHxm!gelXc;UXT|6@kX6!DawNM& zWYCx`o(g(lI*yK9F&{QPUUMu3XC*dkxp#l@Qu^^c`A;rzN_Y=r z&7bI|gnIB2cD4RC4|Opg70fWaHswVmIj8yuw$x~3X5Np|jxxjWt(=}{M@Jhj5Clk5 zHY5nC2AmW0ZGhEJDw^zxLO^omYlz!X%0#j z5820LKd z{ltTvCy*`2Bj@XGm>H=-UApf>oD^uv4HDR54?iVm>FMHOhso8$3){(6$v#De)#)fT zkt+_J$>u{dGr4R%|4#$7)t^}2c!0}12F(I?BS3gjWX{MvPm5z}E1}EDxstXFH1W7% zTCc%DiPYXr`TMdsIl6szF0e?gBoReTpuZ}1Ft?9a0@A$s)K0C;M-XaJm>en1w(TD3 zJy?T!5!aw-oReHu1?p?2JcvNE_=jDf-WxecKGUaeqEB8!U@dW%B<YH^F}{|6=JJ+MEEIPpmn`a+T059l3oc z%lwmpH(MXWcXkyLOXYcHIJiC zApa`>YeOyy?B{pvlT3&AZsXvkTKy5SqifW4wb&z-z`A2ujP}_sQp6!iv0P1O(dF<> z#vRm3r#Xn!F73d;StnRg7NW+PN+Q3}+>1gFYjAT!o_baIr9_o}CcXI&J9OPhvK+RQ zHdQ}NXL|fiiDi1PBql`)_D-HpbBx^)vkaPc@McZ>aaS>b_n)-T%19}i1kKi68`j4I zh`NbDrh5ol(fw=$omYe7u|bhl9U{fhDY{!Fu5NaozVg)$WT_Gi>46Ehjw*~6Y8l)Wd)rT>td3)b6pnMOrjg*c z#S|0u^~_2tA6b)G-mC}{LwdrXxqF$vYeHGSB#;W}yR|WzUO2&5&y76kbOJI;eqJzH)97|^atGOFDw7|}gSX$`sycxJJk?5mvo)be_UlaYhTumtAsP}$FD zGXJ=1@oGiNMbSG9V2;#--h0Ub9@I@g4s@iX?2ME&^zRIrFC!|9%E@~c^f0%3P5G~U z)3zR?5MD_*^UeAGXnWn+X;@;xVm(gYXtg88Vkk>Vu*UFVdmK>btaKKce&-lvevFt; zq)9caF5J}ys+S8eM&7S2AfJ4)YqGkr4^l9`Z(jb`PegU&X$78~y1U3)R7m5FMbG*7iwc_ADC+IBL6! ze~FSybA7d3rZZo|(}w^}O?)P>Q_?Fv-&htN6qhhN>xFayxz*sT!Byj7!vt#5duVcU z!aH*746Gl1z^nv%BI@48U;c4- zJNbLJw~He7ePBN>EQkBHgKjMAjO-pnapXi48NW~-p{_Tc7YV-eW8RS!uN-3?nlxxh zZMq(mze}@$n4u}01F%zqU}xW-xHd7)*B7tT>~iTEY+YVBQvVpK*9$Hsf|IZtJ0@el zB@_I8!?fO@*uc+`LE8ZAX`({>Ax3#^o31)&Ou*~_gysT#6?~av7#e%v0EYZZP-F)c zJ4ECNmQpW&E2-!@P@w2W_|QJ=toIEHeiA8dM&6ePbf(V{d z?}1z--A_~;;?P4`HiX&oU{IJelMH;iUU8h>#B6f9U!uqlFG(H-+Q#eqM4dL@?aN+O zEp8QOfu@nj%o_7|RB;xTv(kXihAd9Kg3REQp{5Sr*gLQ`WnXfs~*g!mmF9?wD$0PqPG73p<8s ziX}%~ZkYNw+jgjCQ$@vbjdmV$R`aNM1h*549Y9<%_(L6dTi*0-l^;C%q8fqNe z9caHNz%TIZ=w)qLJ?cY+axisjD;OXW3A7Ko^gWw?$>7m#YU6r@J{hduyTw=hqG6q=`ygv7Z=NOVVD->)ixfi2}Xit?*mv35Ui%COV)8t^R7)sEf)m; zT$Ox43Qg=IhM93ztEa!RotWCkL7F2PJb-=VWsVbH=n5Plz)gI?`{7(YgCEpA{9sA> zJWZSbH3bIq1sHVyG^LmnSRE43Q~~`Q`w3o29zGR*9xFGcZ3VtizSdC0JJ*3DZw!Lf zgy3WamsE7mgZ0>)PWp@y7Ob!p4;ON~rfTTvjd$4o=lRe$p`!FV$D+g3v}O6TSkVK1 zXr^kpm9x*fN@_aCz#TkFubGo?rQY8QaA7{MRNKq+(($>5d$2@?Kzj4oO96^HQyTYs zlqO4d{bt+$v(o>q^8dyZEx)A^eoxMuAHYCB z@*UJzjuJ7n;X)K1|OSl5kkYtp}naVeV=nzce3YZlM-vDnSfG7h07$pi#U#7V@`dPU)YBLU(K)R|x5tFUxLk4>L*L%v zJ=8Y)(Wvb9Ge3w#=e)$h!cqgK%pDe63Tfi=$lRm(6O;Hpi#AU+3KO!nfL-%$Sw0TYUxW*~<|mMm^%o<#PSxo~cC{{XK=8RaLiRWuJh_VQt5aAL*Pb;MQeJkR}9 z;^_TG49m7Gi$CS`hk()5veEp@m3QIw2he{dmpq7hU20kdLZt7t^?(5aBK=><bf=7+xxKQ8u{A+^?R9Pzq0w0Q>YI^?@KayD5BmwL@Wjm?tGmZ->!1z8g46$ zKIKfFG#GMgS;qdjL8HbFvegiN-*?SSer2#WKCUYvXmJxmB5aGoFB}80Zn@fEf(qLo zL)@5mwiKBOF1KCxMzK0W?2`5?Be12t=J_hS!*!(m1-yYSYOjo;u za!-2lYn?X=?}d3M@I9j*G-*4~36lNt)8i}P*?(GVx~yb_AVkvgev^s4l!zxAfvq>N zCAtHoIxfY($;;Rbn38`kLCgiZZ^GD6;8gvFvsmOxk!tL>{sm-n{4G*kSHE(|iw%gw z0j=+a5yfF&-cRxx;JNq`{d%5p6909Ww!i-7luOurkKwf<84G(%;n7c*5``fPrCmQz zjrzE-@V2_y6fEPo<~IQ`ir0V-X8G5NATPxQ#6{DhjPS#i_Z_YF7qI{31D)&gInIW6 zFwXf0fiaxeIoI$4nlvf8x1nz4SAEe}-%IBR2UPksZ8&OfFbC{mPBr&0d9U*5-Nxgr za}2#&TpOD1@y%|(LI+6GCjkfhCc**S^nQ$I-aeI47*;5!fIV-%2^^Xvz(v!vQ{}z<;_Yc-+r6*Mn2oMk=BoGkY|GS_Z z9loo}(a6=r(g0xQY-Mg`V&rP&VEx@W#ziaCTWJs#DjLZ;IJSg?p9z)%V zGbxBoHxA}KI05E7W|nLI+p7rqi&2y!l;xM5*Kb#y(Vm->-=)RSzpQ1`9x;&El&Awc zB3`V{W|dyeSP)GPtNUG9f>I&I;C9LNXeM`2XX?_kQrxjnpBcLMBZO)P1Eu82sk%VL zRwezE^`T_bI3+^bE-qd&TS=T`87m*+oE2&`(YuyuX0VxQycVf68EkP*L^ebcsUKd< ztulJZff{A;DR`jxz3bIPkF?Fy+Q46TAs>AQoT$%|-bNWLFs=~2it-V112jXHb=9f( z++JC*=5SgNzNN4Wt&Vp+mt{Ie-m-TKWm9yeQ-T)VHnHoasi*Lolx2oCNMQxbsyCUP zbd_acbm5Q_nc|gn_J>eLD4+!w0bShNYP7G#014l+$tgu1OP;q?=7fhIpJ;T!B+yo? z)(!8xI&-Vf!?qonRYwLjHI3dLtWudh>oT2@X@he+&iq&izw4+z&TN}HUmbf|U$M6N z3teHnHCWrO<}y#c|7f8}j}E|Ps%p>XkF8?+u7V`oqJ=VT%-H+)$BQIX=i&n* zS;*6R{@aG3POHS@Sxzw(aHMQ3O=Yoi|5an^}_p`BK@JK2*F=ZS`@}bfS>VAS2r7b+B)E;yrt3lp3$s zeThW^QdTSW_XEKE=tX1B*J=<41mqZNlnh8vHUm)zIa^FH|(hc!Dd zB9qWA9HNjF25i$Maql0oYT-Rm+-yl{IK@&hKctqAy3Nf@90(@xnrhdb*jx_kN!k7? zOOpYhW2B4_M_E-@S)wB+0XkyzP9ji8_?N%zzq)*5f2=-=Jl(bJu$0sKpb75nVWNKA z74D_Tas$`Ju(AA^M5hx)%C#=R?Bg4Ob@Z%l?&#+U-Qt={<&qE;opT7{c?Zu+5y$^Q z4N{4V;nb&;4P}De9|Rf}6BKcj`m*4p55m1lsw zWQBrBn@CjVtM?GhyjVuUr=n#2OfFh{-1WGen=P&0iSp*%xi$J`24EW3ceuM%`Skg< zskdk!_Koq}$xDLM)Q03Z9X`Nb!wA(fAavfF-u{P$r|dd=yU z7XCh`LIDD5qz3{*|L?3QF(u{YFiq?6TqBA(m37}sm~GEwe_};oeq?3Y$V6J^Y~_6)ahqoI2#;o} zF3IhO`wpIc<1~1?g*o@Mx3)RENfCwGmNfpnxV8com7ZKyO9Imr+LMe&W3|@u0m;LdsKiiit(#k{yBP5AUlbzt+_&fPUR;K94*2 zfLqr6=21{1^ST|um!F=wL#`{&;o>LC`L-jK@u!>X>q zd((JP4{P)YF-Lc+UElZ+{i*AM4X4S_!M(oq>1n(DN7HRObjROtB%s#woFgNFO+bye zn(O$gFHcdi^GStDBjZZ50GsgW7@V97ty&))CsL?3rCW( zuCr6bq=%hp7;=+a3Bs;8PJ!9@WC!~8fzkGEdAGvsxjVFsLmMV+d8I63g|@pvF~=j;df^}^>MToQ51QuGUk3^8WzQ3Zf z4nocqfS{FGO-foXHFojTjb|er7HGze_i^+onx^4n2RfQU2IbG=1%b}3m(1C zoxQctLi3%7D7+6ZIEgdqNSP58t^eaiYhspkXFT}&g78@EXXX6N;KqUk+rycb>S;+a zHEy*yzyEzReJWxYR(WIyU>!+n9q`n@Ed)Q3oRHBY@+?K?8?JwA72r+E-cjnBsLh>& zM32fRLz*&U?!g)_3o{V2>a=?lp{n(RDd!iFqxz)wyaI>U(?##|VaR+BkAVy(89y zHxgLc?nsC<5@s9nTEOE#uSf~gqCzd~(y9UpWUQm($C7W?>WQ#}icdsp%qWG1@nMdQ zD-s$4gnf~O)>?PHaNMPvU;DDy^QQvb`FsAo$q6WFjwV@6atH<-NZAT*q@%kLIP#4# zPH*zOZ$@jM`!Cia5mA1p>(a7#9_~!v(-LT2@U>85NTrZY^X{}OWrHVvT~wuEr!tZg zq5w(>q&jmYgPFOSg;R$j@4<|veXD6peqs3KtD#q+u6#6 zl`R$ByM}�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

t-c4|$< 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

nOYO?|MXt^FT2zUDe@OTc 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 literal 0 HcmV?d00001 diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index 0c1a33a..f8094ac 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -214,3 +214,36 @@ Closure statement: - QPI is accepted as a draft-callable routing asset at report level only; this does not change JSON model lifecycle status. - Selector v0.2 passes no-call, calibration smoke, model-level exclusion, QPI-before-IA, and depth-limiting override gates. - Round 04 blind input routing evaluation is the next candidate phase, but it is not started by this closure. + +## Decision 017: Treat Round 04.1 as selector rule patch verification, not a second blind test + +Status: Accepted + +Reason: + +Round 04 first-run blind routing evaluation found review-approved selector failures: + +- R04-BI-002: translation task over-selected QPI because payload text contained `模型`. +- R04-BI-024: explicit `不要进入思想考古` did not hard-exclude Intellectual Archaeology. +- R04-BI-035 / R04-BI-036: depth-limiting phrases blocked lightweight QPI scarcity judgment. + +Round 04.1 therefore patches selector rules and verifies the patch against frozen Round 04 inputs. It is not a second blind test because expected labels now exist for the four owner / GPT reviewed target cases. + +The patch remains scoped: + +- It adds translation / direct transformation no-call coverage. +- It separates task instruction from payload for no-call matching before payload complexity scoring. +- It expands IA model-level hard exclusion variants. +- It expands depth-limiting QPI override phrases for `主导稀缺` and `缺信息 / 缺路径 / 缺共识`. +- It does not add a new model, lifecycle upgrade, LLM selector, RAG, database, service, frontend, backend, user system, or QA product. + +QPI and Intellectual Archaeology remain `draft / B / pending`. + +Closeout: + +- GPT review accepted Round 04.1 and did not request a 04.2 selector patch. +- `R04-BI-022` is documented as an accepted collateral behavior change: it moved from no-call to lightweight QPI after the depth-limiting override patch. +- This is not a new failure because the user rejects deeper IA-style expansion but asks for dominant-scarcity judgment. +- IA remains rejected for `R04-BI-022`. +- `R04-BI-022` is added to selector regression as a QPI gate / IA anti-recall trap. +- Closing Round 04.1 does not upgrade either model lifecycle status. diff --git a/docs/WORKFLOW.md b/docs/WORKFLOW.md index 9c5e820..ea0cf43 100644 --- a/docs/WORKFLOW.md +++ b/docs/WORKFLOW.md @@ -74,6 +74,20 @@ python scripts\rebuild_indexes.py --check python scripts\validate_model_library.py ``` +## 5.1 Review Bundle Zip Workflow + +When creating optional raw changed-file zips for GPT / CCRA review bundles, use the installed `bundle-zip` Skill instead of ad hoc PowerShell or Python compression. + +Required properties: + +1. Provide an explicit file list. +2. Use the repository root marker, for example `the-mindscape-of-bro-tsong`. +3. Preserve source-relative paths inside the zip. +4. Verify the zip by reading it back. +5. Keep the `bundle-zip` JSON summary with the review bundle when useful. + +Do not use `Compress-Archive` for review raw zips where directory paths matter; it can flatten file-list paths. + ## 6. Supplier Request Workflow When this repository needs a capability owned by a neighboring repository: diff --git a/docs/superpowers/plans/2026-06-18-round04-1-selector-rule-patch.md b/docs/superpowers/plans/2026-06-18-round04-1-selector-rule-patch.md new file mode 100644 index 0000000..bf40ce3 --- /dev/null +++ b/docs/superpowers/plans/2026-06-18-round04-1-selector-rule-patch.md @@ -0,0 +1,108 @@ +# Round 04.1 Selector Rule Patch Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Fix Round 04 selector boundary failures without changing model lifecycle status or introducing an LLM selector. + +**Architecture:** Add targeted regression cases from Round 04 review, patch rule-based selector configuration and minimal selector logic, rerun the frozen Round 04 input pool as post-patch verification, and package 04.1 review materials. The original Round 04 blind output remains frozen; 04.1 produces comparison reports. + +**Tech Stack:** JSON, Markdown, Python standard library, existing selector scripts, installed `bundle-zip` Skill. + +## Global Constraints + +- Do not change the original Round 04 blind routing report. +- Do not introduce an LLM selector. +- Do not add a third model. +- Do not upgrade QPI or Intellectual Archaeology. +- Do not implement RAG, vector database, frontend, backend, user account, or QA product. +- Treat Round 04.1 as post-patch routing verification, not a second blind test. +- Use `bundle-zip` for source-relative review bundle zips. + +--- + +### Task 1: Add Targeted Regression Cases + +**Files:** +- Modify: `tests/qpi.regression.json` +- Modify: `tests/intellectual_archaeology.regression.json` +- Modify: `tests/regression_cases.json` + +**Interfaces:** +- Consumes: Round 04 review cases R04-BI-002, R04-BI-024, R04-BI-035, R04-BI-036. +- Produces: selector regression failures before patch. + +- [ ] Add R04-BI-002 as a QPI no-call regression. +- [ ] Add R04-BI-024 as an IA hard-exclusion regression with QPI allowed. +- [ ] Add R04-BI-035 and R04-BI-036 as depth-limiting QPI override regressions. +- [ ] Run `python scripts\run_selector_regression.py` and confirm expected failures. + +### Task 2: Patch Selector Rules and Minimal Logic + +**Files:** +- Modify: `selector/selector_rules.json` +- Modify if needed: `scripts/run_selector_demo.py` +- Modify: `selector/README.md` +- Modify: `docs/DECISIONS.md` + +**Interfaces:** +- Consumes: failing regression cases from Task 1. +- Produces: selector behavior that passes targeted regressions. + +- [ ] Add translation no-call intent phrases beyond one exact wording. +- [ ] Add instruction / payload separation for direct transformation tasks before scoring payload complexity. +- [ ] Add IA hard-exclusion variants such as `不要进入思想考古`. +- [ ] Add depth-limiting QPI override phrases for `主导稀缺` and `缺信息 / 缺路径 / 缺共识` forms. +- [ ] Document the rule patch. + +### Task 3: Post-Patch Routing Comparison + +**Files:** +- Create: `scripts/run_round04_post_patch_verification.py` +- Create: `reports/Round04_1_post_patch_routing_verification_report_2026-06-18.md` +- Test: `tests/test_round04_blind_routing.py` or new focused test if needed. + +**Interfaces:** +- Consumes: frozen `selector/round04_blind_inputs.json` and frozen Round 04 report. +- Produces: before / after comparison for targeted expected routing labels. + +- [ ] Generate current post-patch results for all 38 frozen inputs. +- [ ] Compare targeted cases R04-BI-002, R04-BI-024, R04-BI-035, R04-BI-036 against expected labels. +- [ ] Include original selected models / no-call from Round 04 and new selected models / no-call. + +### Task 4: Build Round 04.1 Review Bundle + +**Files:** +- Create: `ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.1.md` +- Create: `ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/01_RULE_PATCH_SUMMARY_AND_DIFF_04.1.md` +- Create: `ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/02_EXPECTED_ROUTING_LABELS_04.1.md` +- Create: `ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/03_POST_PATCH_ROUTING_VERIFICATION_REPORT_04.1.md` +- Create: `ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/04_REGRESSION_AND_COMMAND_LOG_04.1.md` +- Create: `ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/BUNDLE_FILE_MANIFEST_04.1.md` +- Create: `ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/optional_raw_changed_files_04.1.zip` + +**Interfaces:** +- Consumes: patch diffs, post-patch report, validation output, source file list. +- Produces: GPT / CCRA review package. + +- [ ] Write required review files. +- [ ] Use `bundle-zip` to create source-relative raw zip. +- [ ] Verify zip output using `bundle-zip` JSON summary. + +### Task 5: Verify + +**Files:** +- Read: full changed set. + +**Interfaces:** +- Consumes: completed 04.1 patch and review bundle. +- Produces: verification evidence. + +- [ ] Run `python scripts\rebuild_indexes.py --check`. +- [ ] Run `python -m unittest discover -s tests -p "test*.py" -v`. +- [ ] Run `python scripts\validate_model_library.py`. +- [ ] Run `python scripts\check_card_contract.py`. +- [ ] Run `python scripts\run_selector_demo.py`. +- [ ] Run `python scripts\run_selector_regression.py`. +- [ ] Run `python scripts\run_selector_calibration_smoke.py`. +- [ ] Run `python scripts\check_model_card_sync.py`. +- [ ] Confirm model JSON status remains `draft / B / pending`. diff --git a/docs/superpowers/plans/2026-06-18-round04-blind-routing-evaluation.md b/docs/superpowers/plans/2026-06-18-round04-blind-routing-evaluation.md new file mode 100644 index 0000000..726888d --- /dev/null +++ b/docs/superpowers/plans/2026-06-18-round04-blind-routing-evaluation.md @@ -0,0 +1,172 @@ +# Round 04 Blind Routing Evaluation Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Prepare and run Round 04 blind input routing evaluation without changing selector rules or model lifecycle status. + +**Architecture:** Round 04 uses a reviewed blind input pool as source material, freezes it into a machine-readable JSON input set, runs the existing rule-based selector through a thin batch runner, and packages the outputs for GPT / CCRA review. The runner reuses `scripts/run_selector_demo.py::recommend` and does not add answer generation, LLM selector logic, or expected routing labels. + +**Tech Stack:** Markdown, JSON, Python standard library, existing selector scripts. + +## Global Constraints + +- Do not modify `selector/selector_rules.json` before the blind evaluation. +- Do not merge blind inputs into `selector/selector_calibration_inputs.json`. +- Do not add expected behavior before the first blind run. +- Do not add a third model. +- Do not upgrade QPI or Intellectual Archaeology. +- Do not introduce an LLM selector. +- Do not implement RAG, vector database, frontend, backend, user account, or QA product. +- Run first, analyze failures later. + +--- + +### Task 1: Revise Human-Readable Blind Input Source + +**Files:** +- Modify: `reports/Round04_blind_input_candidates_2026-06-18.md` + +**Interfaces:** +- Consumes: owner review notes for R04-BI-018, R04-BI-021, R04-BI-025, R04-BI-026, and new R04-BI-031 through R04-BI-038. +- Produces: 38 candidate inputs with review-only metadata and no expected routing labels. + +- [ ] **Step 1: Mark control-case notes** + +Add metadata notes: +- R04-BI-021 and R04-BI-025: `model-name-exposed control case` +- R04-BI-018: `positive control` +- R04-BI-026: natural IA / QPI-to-IA boundary sample + +- [ ] **Step 2: Add R04-BI-031 through R04-BI-038** + +Add the eight owner-proposed cases exactly, preserving their categories, input text, and inclusion rationale. + +- [ ] **Step 3: Update coverage** + +Set total to 38 candidate inputs and include a short note that 2 inputs expose model names by design. + +### Task 2: Freeze Machine-Readable Blind Input JSON + +**Files:** +- Create: `selector/round04_blind_inputs.json` + +**Interfaces:** +- Consumes: reviewed Markdown source from Task 1. +- Produces: JSON with `blind_input_set_id`, `status`, `source_document`, `constraints`, and `inputs`. + +- [ ] **Step 1: Create JSON without expected routing** + +Each input object contains: +- `input_id` +- `category_for_owner_review` +- `input_text` +- `why_included` +- optional `control_case_type` + +- [ ] **Step 2: Preserve blindness constraints** + +Include top-level notes that no expected behavior is present and that selector rules must not be modified before first run. + +### Task 3: Add Failing Tests for the Round 04 Runner + +**Files:** +- Create: `tests/test_round04_blind_routing.py` +- Create later in Task 4: `scripts/run_round04_blind_routing.py` + +**Interfaces:** +- Consumes: `selector/round04_blind_inputs.json` +- Produces: test expectations for load, evaluation shape, and report content. + +- [ ] **Step 1: Write tests before implementation** + +Test that a blind input item can be loaded, evaluated through `recommend`, and rendered without expected routing labels. + +- [ ] **Step 2: Run tests and confirm failure** + +Run: `python -m unittest tests.test_round04_blind_routing -v` + +Expected: failure because `scripts.run_round04_blind_routing` does not exist. + +### Task 4: Implement and Run the Round 04 Runner + +**Files:** +- Create: `scripts/run_round04_blind_routing.py` +- Create: `reports/Round04_blind_routing_evaluation_report_2026-06-18.md` + +**Interfaces:** +- Consumes: `selector/round04_blind_inputs.json`, `scripts/run_selector_demo.py::recommend` +- Produces: JSON-shaped evaluation results and Markdown report. + +- [ ] **Step 1: Implement standard-library runner** + +Provide functions: +- `load_blind_inputs(root)` +- `evaluate_blind_input(root, item)` +- `write_report(root, input_set, results)` +- `main()` + +- [ ] **Step 2: Run focused tests** + +Run: `python -m unittest tests.test_round04_blind_routing -v` + +- [ ] **Step 3: Run blind evaluation** + +Run: `python scripts\run_round04_blind_routing.py` + +Expected: report written; command exits 0. + +### Task 5: Build Round 04 Review Bundle + +**Files:** +- Create: `ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.md` +- Create: `ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/01_ROUND03_CLOSURE_AND_ROUND04_SCOPE_04.md` +- Create: `ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/02_BLIND_INPUT_SET_04.md` +- Create: `ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/03_ROUTING_EVALUATION_REPORT_04.md` +- Create: `ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/04_REVIEW_QUESTIONS_FOR_GPT_04.md` +- Create: `ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/BUNDLE_FILE_MANIFEST_04.md` +- Create: `ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/optional_raw_changed_files_04.zip` + +**Interfaces:** +- Consumes: Round 03 closure summary, frozen blind input JSON, runner output report, current runtime assets. +- Produces: GPT / CCRA review package. + +- [ ] **Step 1: Write brief and scope files** + +Include Round 03 closure summary, Round 04 target, and non-goals. + +- [ ] **Step 2: Write input and evaluation mirrors** + +Mirror the frozen blind input set and routing evaluation report for upload. + +- [ ] **Step 3: Create raw zip** + +Include current runtime assets, blind input set, runner, tests, and reports. Preserve source-relative paths. + +### Task 6: Verify + +**Files:** +- Read: all changed files + +**Interfaces:** +- Consumes: full working tree after Tasks 1-5. +- Produces: verification evidence. + +- [ ] **Step 1: Run focused Round 04 test** + +Run: `python -m unittest tests.test_round04_blind_routing -v` + +- [ ] **Step 2: Run existing validation gates** + +Run: +- `python scripts\rebuild_indexes.py --check` +- `python -m unittest discover -s tests -p "test*.py" -v` +- `python scripts\validate_model_library.py` +- `python scripts\check_card_contract.py` +- `python scripts\run_selector_demo.py` +- `python scripts\run_selector_regression.py` +- `python scripts\run_selector_calibration_smoke.py` +- `python scripts\check_model_card_sync.py` + +- [ ] **Step 3: Inspect git diff** + +Confirm no selector rule changes and no model lifecycle status changes. diff --git a/models/model_index.json b/models/model_index.json index 4e7be4d..6ef2bab 100644 --- a/models/model_index.json +++ b/models/model_index.json @@ -1,6 +1,6 @@ { "index_version": "0.1", - "last_updated": "2026-06-17", + "last_updated": "2026-06-18", "models": [ { "model_id": "intellectual_archaeology", @@ -11,7 +11,7 @@ "card_file": "cards/intellectual_archaeology.md", "source_article_count": 2, "source_evidence_count": 5, - "regression_case_count": 19, + "regression_case_count": 20, "stability_level": "B", "regression_status": "pending", "status": "draft", @@ -26,7 +26,7 @@ "card_file": "cards/qpi.md", "source_article_count": 3, "source_evidence_count": 10, - "regression_case_count": 58, + "regression_case_count": 62, "stability_level": "B", "regression_status": "pending", "status": "draft", diff --git a/reports/Codex新会话交接文档_Round04.1关闭与Round05准备_2026-06-18.md b/reports/Codex新会话交接文档_Round04.1关闭与Round05准备_2026-06-18.md new file mode 100644 index 0000000..d8648bc --- /dev/null +++ b/reports/Codex新会话交接文档_Round04.1关闭与Round05准备_2026-06-18.md @@ -0,0 +1,161 @@ +# Codex 新会话交接文档:Round 04.1 关闭与 Round 05 准备 + +日期:2026-06-18 + +仓库:`C:\Users\wangq\Documents\Codex\work-projects\the-mindscape-of-bro-tsong` + +## 1. 当前结论 + +Round 04.1 已完成 closeout,可以关闭。 + +依据:已阅读 GPT 评审文件 `C:\Users\wangq\Documents\Codex\knowledge-vault\work\internal\强哥的思想宇宙\讨论\2026-06-18产品交流-GPT.md` 第 219-315 行。评审结论是 04.1 可以验收,不做 04.2 规则补丁,不引入 LLM selector;关闭前只补记 `R04-BI-022` 的联动变化,并加入 regression 或 calibration。 + +本次 closeout 已执行: + +- `R04-BI-022` 已记录为 accepted collateral change。 +- `R04-BI-022` 已加入 QPI selector regression。 +- 04.1 post-patch report 已补充 5 个 before/after 行为变化。 +- 04.1 review bundle 中的报告副本已同步。 +- QPI 和 Intellectual Archaeology 生命周期仍保持 `draft / B / pending`。 + +## 2. 关闭边界 + +本次没有进入 Round 05。 + +本次没有做: + +- 新 selector 规则补丁; +- 04.2; +- 第三模型; +- LLM selector; +- RAG、vector database、frontend、backend、账号系统或 QA 产品; +- QPI 或 Intellectual Archaeology 生命周期升级。 + +## 3. 关键变更 + +### 3.1 `R04-BI-022` closeout 处理 + +原输入: + +```text +不要展开到底层假设,只帮我看主导稀缺是什么。 +``` + +04.1 patch 前: + +- selected_models: `[]` +- no_call: `True` + +04.1 patch 后: + +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` + +关闭判断: + +- 这不是新增失败。 +- 它属于 depth-limiting QPI override 的合理联动变化。 +- 用户拒绝的是深入展开 / IA 式下钻,不是拒绝所有分析。 +- 轻量 QPI 主导稀缺判断可接受。 +- IA 应继续被拒绝。 + +新增 regression: + +```text +case_qpi_round04_depth_limited_assumption_scarcity_001 +``` + +### 3.2 报告补记 + +`reports/Round04_1_post_patch_routing_verification_report_2026-06-18.md` 已新增: + +```text +Non-target Behavior Diff / Accepted Collateral Change +``` + +其中记录 5 个 before/after 行为变化: + +- `R04-BI-002` +- `R04-BI-022` +- `R04-BI-024` +- `R04-BI-035` +- `R04-BI-036` + +Targeted labels 仍只限 4 个 owner / GPT reviewed target cases: + +- `R04-BI-002` +- `R04-BI-024` +- `R04-BI-035` +- `R04-BI-036` + +`R04-BI-022` 是 accepted collateral change,不改写为新 target case。 + +## 4. 当前关键文件 + +Round 04 / 04.1 入口: + +- `reports/Round04_blind_input_candidates_2026-06-18.md` +- `selector/round04_blind_inputs.json` +- `reports/Round04_blind_routing_evaluation_report_2026-06-18.md` +- `reports/Round04_1_post_patch_routing_verification_report_2026-06-18.md` +- `ccra_review_bundle/round-04.1_2026-06-18_selector-rule-patch/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF_04.1.md` + +Selector / regression 入口: + +- `selector/selector_rules.json` +- `scripts/run_selector_demo.py` +- `scripts/run_selector_regression.py` +- `scripts/run_round04_blind_routing.py` +- `scripts/run_round04_post_patch_verification.py` +- `tests/qpi.regression.json` +- `tests/intellectual_archaeology.regression.json` +- `tests/regression_cases.json` + +当前 QPI regression 数: + +- QPI: 62 +- Intellectual Archaeology: 20 +- Aggregate: 82 + +## 5. 验证结果 + +以下命令均已通过: + +```powershell +python scripts\rebuild_indexes.py --check +python -m unittest discover -s tests -p "test*.py" -v +python scripts\validate_model_library.py +python scripts\check_card_contract.py +python scripts\run_selector_demo.py +python scripts\run_selector_regression.py +python scripts\run_selector_calibration_smoke.py +python scripts\check_model_card_sync.py +``` + +结果: + +- Index check: PASS +- Unit tests: PASS, 22 tests +- Model library validation: PASS +- Card contract: PASS +- Selector demo: PASS +- Selector regression: PASS, 26 selector cases +- Selector calibration smoke: PASS +- Model/card sync: PASS + +## 6. Round 05 启动建议 + +新会话可以从 Round 05 讨论开始,但建议先读本交接文档和 04.1 post-patch report。 + +Round 05 不应默认继续改 selector。应先根据 owner / GPT 新讨论确定目标。如果讨论涉及新模型、第三模型、平台化、LLM selector 或 RAG,应先回到非目标边界和 `docs/DECISIONS.md` 判断是否需要新的 owner / CCRA 决策。 + +## 7. Git 关闭信息 + +计划关闭 tag: + +```text +qpi-round-04.1-closed-2026-06-18 +``` + +本文件会随 Round 04.1 closeout commit 一起提交。 diff --git a/reports/README.md b/reports/README.md index 915d5a9..ba29be7 100644 --- a/reports/README.md +++ b/reports/README.md @@ -15,5 +15,9 @@ Current reports: - `content_review_report_v0.2.md` - `model_review_status.json` - `next_action_register_v0.2.md` +- `Round04_blind_input_candidates_2026-06-18.md` +- `Round04_blind_routing_evaluation_report_2026-06-18.md` +- `Round04_1_post_patch_routing_verification_report_2026-06-18.md` +- `Codex新会话交接文档_Round04.1关闭与Round05准备_2026-06-18.md` Reports should separate verified facts, assumptions, unresolved questions, and suggested next tasks. diff --git a/reports/Round04_1_post_patch_routing_verification_report_2026-06-18.md b/reports/Round04_1_post_patch_routing_verification_report_2026-06-18.md new file mode 100644 index 0000000..6a2943c --- /dev/null +++ b/reports/Round04_1_post_patch_routing_verification_report_2026-06-18.md @@ -0,0 +1,175 @@ +# Round 04.1 Post-Patch Routing Verification Report + +Date: 2026-06-18 + +This is not a second blind test. + +Frozen input set: `round04_blind_inputs_2026-06-18_v0.1` +Original before-report: `reports/Round04_blind_routing_evaluation_report_2026-06-18.md` + +## Scope + +- Round 04.1 verifies selector rule patches after owner / GPT review. +- It reruns the frozen 38-input Round 04 pool for comparison. +- Expected routing labels are limited to the four review-approved target cases. +- It does not generate final answers and does not upgrade model status. + +## Summary + +Frozen inputs rerun: 38 +Post-patch no-call results: 18 +Targeted cases checked: 4 +Targeted failures: 0 +Behavior changes recorded: 5 + +## Targeted Case Results + +### R04-BI-002 + +- status: `PASS` +- review_label: translation no-call; payload complexity must not trigger QPI +- before_selected_models: `['qpi']` +- before_no_call: `False` +- after_selected_models: `[]` +- after_rejected_models: `['intellectual_archaeology', 'qpi']` +- after_no_call: `True` + +After selected model details: +- none + +### R04-BI-024 + +- status: `PASS` +- review_label: explicit IA refusal should hard-exclude IA while allowing QPI +- before_selected_models: `['intellectual_archaeology', 'qpi']` +- before_no_call: `False` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` + +After selected model details: +- `qpi` score=0.74 decision=selected + - reasons: trigger keyword matched: 问题; complexity signal: 边界、责任; selection_priority=9 + +### R04-BI-035 + +- status: `PASS` +- review_label: depth-limiting plus dominant-scarcity judgment should allow QPI +- before_selected_models: `[]` +- before_no_call: `True` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` + +After selected model details: +- `qpi` score=0.59 decision=selected + - reasons: selection_priority=9; QPI problem-definition gate matched + +### R04-BI-036 + +- status: `PASS` +- review_label: depth-limiting plus scarcity-set judgment should allow QPI +- before_selected_models: `[]` +- before_no_call: `True` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` + +After selected model details: +- `qpi` score=0.99 decision=selected + - reasons: trigger keyword matched: 缺路径、缺共识; complexity signal: 共识、底层; selection_priority=9; QPI problem-definition gate matched + +## Non-target Behavior Diff / Accepted Collateral Change + +The frozen 38-input pool was rerun for comparison. Expected routing labels remain limited to the four target cases above, but the full rerun records five behavior changes from the original Round 04 report. + +### R04-BI-002 + +- label: target fix: translation no-call +- before_selected_models: `['qpi']` +- before_no_call: `False` +- after_selected_models: `[]` +- after_rejected_models: `['intellectual_archaeology', 'qpi']` +- after_no_call: `True` +- closeout_judgment: Expected target change; translation instruction should not be routed to QPI because the payload contains `模型`. + +### R04-BI-022 + +- label: accepted collateral change: depth-limited QPI override +- before_selected_models: `[]` +- before_no_call: `True` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` +- closeout_judgment: Not a new failure. The request rejects deeper IA-style expansion while asking for dominant scarcity judgment, so lightweight QPI is acceptable and IA should remain rejected. Added to regression as a QPI selector-gate trap. + +### R04-BI-024 + +- label: target fix: explicit IA refusal +- before_selected_models: `['intellectual_archaeology', 'qpi']` +- before_no_call: `False` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` +- closeout_judgment: Expected target change; explicit refusal should hard-exclude IA while allowing lightweight QPI. + +### R04-BI-035 + +- label: target fix: dominant-scarcity depth limit +- before_selected_models: `[]` +- before_no_call: `True` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` +- closeout_judgment: Expected target change; depth-limiting language should not block lightweight QPI scarcity judgment. + +### R04-BI-036 + +- label: target fix: scarcity-set depth limit +- before_selected_models: `[]` +- before_no_call: `True` +- after_selected_models: `['qpi']` +- after_rejected_models: `['intellectual_archaeology']` +- after_no_call: `False` +- closeout_judgment: Expected target change; depth-limiting language should not block QPI scarcity-set judgment. + +## Full Pool Rerun Summary + +- `R04-BI-001`: selected=[]; no_call=True; category=explicit_no_call_fact_lookup +- `R04-BI-002`: selected=[]; no_call=True; category=explicit_no_call_translation +- `R04-BI-003`: selected=[]; no_call=True; category=explicit_no_call_rewrite +- `R04-BI-004`: selected=[]; no_call=True; category=explicit_no_call_formatting +- `R04-BI-005`: selected=[]; no_call=True; category=explicit_no_call_direct_execution +- `R04-BI-006`: selected=['qpi']; no_call=False; category=qpi_light_problem_definition +- `R04-BI-007`: selected=['qpi']; no_call=False; category=qpi_light_problem_definition +- `R04-BI-008`: selected=['qpi']; no_call=False; category=qpi_light_problem_definition +- `R04-BI-009`: selected=['qpi']; no_call=False; category=qpi_light_problem_definition +- `R04-BI-010`: selected=[]; no_call=True; category=governance_responsibility_consensus +- `R04-BI-011`: selected=[]; no_call=True; category=governance_responsibility_consensus +- `R04-BI-012`: selected=[]; no_call=True; category=governance_responsibility_consensus +- `R04-BI-013`: selected=[]; no_call=True; category=governance_responsibility_consensus +- `R04-BI-014`: selected=[]; no_call=True; category=capacity_resource_path +- `R04-BI-015`: selected=[]; no_call=True; category=capacity_resource_path +- `R04-BI-016`: selected=['qpi']; no_call=False; category=capacity_resource_path +- `R04-BI-017`: selected=[]; no_call=True; category=capacity_resource_path +- `R04-BI-018`: selected=['qpi']; no_call=False; category=model_extraction_or_depth_modeling +- `R04-BI-019`: selected=['qpi', 'intellectual_archaeology']; no_call=False; category=model_extraction_or_depth_modeling +- `R04-BI-020`: selected=['qpi']; no_call=False; category=model_extraction_or_depth_modeling +- `R04-BI-021`: selected=['qpi']; no_call=False; category=qpi_allowed_ia_refused +- `R04-BI-022`: selected=['qpi']; no_call=False; category=qpi_allowed_ia_refused +- `R04-BI-023`: selected=['qpi']; no_call=False; category=qpi_allowed_ia_refused +- `R04-BI-024`: selected=['qpi']; no_call=False; category=qpi_allowed_ia_refused +- `R04-BI-025`: selected=['intellectual_archaeology', 'qpi']; no_call=False; category=likely_intellectual_archaeology +- `R04-BI-026`: selected=['qpi']; no_call=False; category=likely_intellectual_archaeology +- `R04-BI-027`: selected=['qpi']; no_call=False; category=likely_intellectual_archaeology +- `R04-BI-028`: selected=[]; no_call=True; category=ambiguous_low_context +- `R04-BI-029`: selected=[]; no_call=True; category=ambiguous_low_context +- `R04-BI-030`: selected=['qpi']; no_call=False; category=ambiguous_low_context +- `R04-BI-031`: selected=[]; no_call=True; category=explicit_no_call_how_to +- `R04-BI-032`: selected=[]; no_call=True; category=explicit_no_call_how_to +- `R04-BI-033`: selected=[]; no_call=True; category=explicit_no_call_dictionary_judgment +- `R04-BI-034`: selected=['qpi']; no_call=False; category=direct_execution_with_analysis_override +- `R04-BI-035`: selected=['qpi']; no_call=False; category=qpi_allowed_depth_limited +- `R04-BI-036`: selected=['qpi']; no_call=False; category=qpi_allowed_depth_limited +- `R04-BI-037`: selected=[]; no_call=True; category=ambiguous_growth_how_to +- `R04-BI-038`: selected=['qpi']; no_call=False; category=likely_intellectual_archaeology diff --git a/reports/Round04_blind_input_candidates_2026-06-18.md b/reports/Round04_blind_input_candidates_2026-06-18.md new file mode 100644 index 0000000..c8ad743 --- /dev/null +++ b/reports/Round04_blind_input_candidates_2026-06-18.md @@ -0,0 +1,329 @@ +# Round 04 Blind Input Candidates + +Date: 2026-06-18 + +Repository: `C:\Users\wangq\Documents\Codex\work-projects\the-mindscape-of-bro-tsong` + +Status: `draft_owner_review_needed` + +## 1. Purpose + +This document is a draft input pool for Round 04 blind input routing evaluation. + +It prepares candidate user inputs only. It does not run the selector, does not add expected selector behavior, does not modify selector rules, does not add regression cases, and does not upgrade model lifecycle status. + +Owner review should decide which inputs are retained, edited, removed, or recategorized before a frozen Round 04 blind input JSON is created. + +## 2. Scope Guardrails + +- Do not modify `selector/selector_rules.json` before running the blind evaluation. +- Do not merge these candidates into `selector/selector_calibration_inputs.json`. +- Do not add expected behavior before the first blind run. +- Do not add a third model. +- Do not build QA, RAG, frontend, backend, database, or any platform feature. +- Do not treat category labels below as answer keys. They are coverage labels for owner review only. + +## 3. Review Instructions + +For each input, mark one of: + +- `keep` +- `revise` +- `remove` +- `recategorize` + +Optional review notes: + +- Is the input too obvious? +- Is the input too close to existing regression / calibration cases? +- Is the wording natural enough? +- Is the input too leading because it names QPI or Intellectual Archaeology? +- Should the category mix change? + +## 4. Candidate Inputs + +### 4.1 明确 no-call:查事实、翻译、润色、格式化、直接执行 + +#### R04-BI-001 + +- category_for_owner_review: `explicit_no_call_fact_lookup` +- input_text: `查一下《原则》这本书的作者是谁,只要事实,不要分析。` +- why_included: Tests whether direct fact lookup stays outside model routing. + +#### R04-BI-002 + +- category_for_owner_review: `explicit_no_call_translation` +- input_text: `把这句话翻译成英文:这个模型还处在草稿阶段。` +- why_included: Tests pure translation as no-call. + +#### R04-BI-003 + +- category_for_owner_review: `explicit_no_call_rewrite` +- input_text: `请把这段话润色得更顺一点,不要改变意思,也不要解释原因。` +- why_included: Tests polish-only request with explicit no-analysis boundary. + +#### R04-BI-004 + +- category_for_owner_review: `explicit_no_call_formatting` +- input_text: `把下面这组要点整理成 Markdown 表格,直接给结果。` +- why_included: Tests formatting / direct execution without cognitive model need. + +#### R04-BI-005 + +- category_for_owner_review: `explicit_no_call_direct_execution` +- input_text: `把这个 JSON 压缩成单行,不用说明:{"status":"draft","level":"B"}` +- why_included: Tests direct transformation request. + +### 4.2 QPI 轻量问题定性 + +#### R04-BI-006 + +- category_for_owner_review: `qpi_light_problem_definition` +- input_text: `我们现在反复开会但没有推进,我想先判断这是缺信息、缺路径,还是缺共识。` +- why_included: Tests lightweight problem-definition language without asking for depth. + +#### R04-BI-007 + +- category_for_owner_review: `qpi_light_problem_definition` +- input_text: `这个项目卡住了,我不确定到底是问题没定义清楚,还是执行方案不够。` +- why_included: Tests QPI-like framing without naming QPI. + +#### R04-BI-008 + +- category_for_owner_review: `qpi_light_problem_definition` +- input_text: `我们有一堆材料,但不知道下一步该问什么问题,先帮我定性一下。` +- why_included: Tests question/problem boundary and data/path scarcity. + +#### R04-BI-009 + +- category_for_owner_review: `qpi_light_problem_definition` +- input_text: `这件事到底算一个简单问题、复杂问题,还是已经变成组织议题?` +- why_included: Tests lightweight classification among question / problem / issue. + +### 4.3 组织治理 / 责任 / 共识类输入 + +#### R04-BI-010 + +- category_for_owner_review: `governance_responsibility_consensus` +- input_text: `每个部门都说支持这个项目,但一到分工就没人愿意承担主责。` +- why_included: Tests responsibility ambiguity and consensus scarcity. + +#### R04-BI-011 + +- category_for_owner_review: `governance_responsibility_consensus` +- input_text: `老板要创新,财务要控成本,业务要短期业绩,最后方案总是被折中到没有方向。` +- why_included: Tests cross-stakeholder conflict and governance weight. + +#### R04-BI-012 + +- category_for_owner_review: `governance_responsibility_consensus` +- input_text: `我们不是不知道怎么做,而是每个人都在等别人先表态。` +- why_included: Tests responsibility / commitment issue where path may already exist. + +#### R04-BI-013 + +- category_for_owner_review: `governance_responsibility_consensus` +- input_text: `这个流程改造牵涉教务、学院和信息化部门,谁都能提意见,但没人能拍板。` +- why_included: Tests multi-party ownership and decision authority gap. + +### 4.4 容量 / 资源 / 路径类输入 + +#### R04-BI-014 + +- category_for_owner_review: `capacity_resource_path` +- input_text: `团队现在知道目标,也认可方向,但只有两个人能做关键模块,进度一直被产能卡住。` +- why_included: Tests resource / capacity scarcity rather than data scarcity. + +#### R04-BI-015 + +- category_for_owner_review: `capacity_resource_path` +- input_text: `我们知道要做知识库,也有材料,但不知道从哪条最小路径开始。` +- why_included: Tests path scarcity with sufficient source material. + +#### R04-BI-016 + +- category_for_owner_review: `capacity_resource_path` +- input_text: `预算不是最大问题,问题是现有系统、权限和审批流程都接不上。` +- why_included: Tests operational path constraints and institutional friction. + +#### R04-BI-017 + +- category_for_owner_review: `capacity_resource_path` +- input_text: `这件事大家都觉得重要,但每周只能挤出零散时间,所以一直没有稳定产出。` +- why_included: Tests capacity scarcity mixed with execution continuity. + +### 4.5 模型抽取 / 深度建模类输入 + +#### R04-BI-018 + +- category_for_owner_review: `model_extraction_or_depth_modeling` +- input_text: `请从这篇长文里抽取一个可复用的认知模型,重点看它的核心机制和适用边界。` +- why_included: Tests model-extraction intent and possible depth-modeling route. +- owner_review_note: `positive control; obvious model-extraction / depth-modeling case rather than a natural boundary sample.` + +#### R04-BI-019 + +- category_for_owner_review: `model_extraction_or_depth_modeling` +- input_text: `这套说法背后好像有一个稳定结构,不只是观点总结,帮我判断它能不能沉淀成模型。` +- why_included: Tests model-mining request without naming Intellectual Archaeology. + +#### R04-BI-020 + +- category_for_owner_review: `model_extraction_or_depth_modeling` +- input_text: `我想把这段讨论拆成原始判断、隐含假设、适用条件和误用边界。` +- why_included: Tests structured depth analysis intent. + +### 4.6 明确拒绝思想考古但允许 QPI 的输入 + +#### R04-BI-021 + +- category_for_owner_review: `qpi_allowed_ia_refused` +- input_text: `先不要思想考古,只判断这是不是一个 QPI 意义上的问题。` +- why_included: Tests explicit IA refusal while allowing QPI. +- control_case_type: `model-name-exposed` +- owner_review_note: `Kept as a control case for explicit model instructions, not as a fully natural blind input.` + +#### R04-BI-022 + +- category_for_owner_review: `qpi_allowed_ia_refused` +- input_text: `不要展开到底层假设,只帮我看主导稀缺是什么。` +- why_included: Tests depth-limiting QPI override without naming QPI. + +#### R04-BI-023 + +- category_for_owner_review: `qpi_allowed_ia_refused` +- input_text: `这次先不做深度建模,只做问题定性,看它是缺数据、缺路径还是缺共识。` +- why_included: Tests QPI-limited intent plus explicit depth refusal. + +#### R04-BI-024 + +- category_for_owner_review: `qpi_allowed_ia_refused` +- input_text: `不要进入思想考古,我只要一个轻量判断:现在应该先问问题、找路径,还是处理责任边界?` +- why_included: Tests model-level hard exclusion for IA while preserving QPI-like routing. + +### 4.7 真正应该进入思想考古的输入 + +#### R04-BI-025 + +- category_for_owner_review: `likely_intellectual_archaeology` +- input_text: `QPI 已经判断这是中重型课题,现在请继续分析它背后的底层假设、生成机制和长期稳定结构。` +- why_included: Tests explicit post-QPI depth handoff. +- control_case_type: `model-name-exposed` +- owner_review_note: `Kept as a control case for explicit post-QPI handoff, not as a fully natural blind input.` + +#### R04-BI-026 + +- category_for_owner_review: `likely_intellectual_archaeology` +- input_text: `这个现象反复出现在不同项目里,我想知道它背后的思想结构是什么,而不是只做问题分类。` +- why_included: Tests repeated-pattern depth modeling beyond lightweight QPI. +- owner_review_note: `High-value natural boundary sample because it avoids explicit model names while suggesting IA or QPI-to-IA routing.` + +#### R04-BI-027 + +- category_for_owner_review: `likely_intellectual_archaeology` +- input_text: `请分析这套判断为什么会长期成立,它依赖哪些世界观、因果假设和行动边界。` +- why_included: Tests deep assumption / mechanism request. + +### 4.8 模糊短句 / 低上下文输入 + +#### R04-BI-028 + +- category_for_owner_review: `ambiguous_low_context` +- input_text: `这个不太对。` +- why_included: Tests very low context and likely need for clarification. + +#### R04-BI-029 + +- category_for_owner_review: `ambiguous_low_context` +- input_text: `怎么又卡住了?` +- why_included: Tests short ambiguous frustration signal. + +#### R04-BI-030 + +- category_for_owner_review: `ambiguous_low_context` +- input_text: `还是那个老问题。` +- why_included: Tests prior-context dependency without enough current evidence. + +### 4.9 Round 03.2 / 03.2a trap coverage additions + +#### R04-BI-031 + +- category_for_owner_review: `explicit_no_call_how_to` +- input_text: `如何在 Excel 里冻结首行?` +- why_included: Tests whether generic how-to stays outside QPI after broad "如何" gate was narrowed. + +#### R04-BI-032 + +- category_for_owner_review: `explicit_no_call_how_to` +- input_text: `怎么把 Markdown 文件转成 PDF?` +- why_included: Tests tool/how-to request as no-call. + +#### R04-BI-033 + +- category_for_owner_review: `explicit_no_call_dictionary_judgment` +- input_text: `判断一下“alignment”在这句话里是什么意思。` +- why_included: Tests whether ordinary word-meaning judgment avoids QPI over-selection. + +#### R04-BI-034 + +- category_for_owner_review: `direct_execution_with_analysis_override` +- input_text: `请把下面内容总结成三点,但不要只执行,先判断它背后的问题定义。` +- why_included: Tests whether explicit analysis override can escape direct-execution no-call. + +#### R04-BI-035 + +- category_for_owner_review: `qpi_allowed_depth_limited` +- input_text: `不要深入分析,只判断这件事的主导稀缺是什么。` +- why_included: Tests Round 03.2a depth-limiting override without naming QPI or IA. + +#### R04-BI-036 + +- category_for_owner_review: `qpi_allowed_depth_limited` +- input_text: `不要展开到底层理论,只判断现在是缺信息、缺路径还是缺共识。` +- why_included: Tests QPI-limited routing while rejecting deeper modeling. + +#### R04-BI-037 + +- category_for_owner_review: `ambiguous_growth_how_to` +- input_text: `如何提高这个账号的流量?` +- why_included: Tests whether generic growth how-to is routed to QPI, no-call, or low-confidence provisional handling. + +#### R04-BI-038 + +- category_for_owner_review: `likely_intellectual_archaeology` +- input_text: `这类失败在不同项目里反复出现,我想抽出它背后稳定的生成机制和可迁移框架。` +- why_included: Tests deeper modeling intent without explicit "思想考古" or "底层假设" wording. + +## 5. Coverage Summary + +- explicit no-call: 5 +- QPI lightweight problem definition: 4 +- governance / responsibility / consensus: 4 +- capacity / resource / path: 4 +- model extraction / depth modeling: 3 +- IA refused but QPI allowed: 4 +- likely Intellectual Archaeology: 4 +- ambiguous / low context: 3 +- Round 03.2 / 03.2a trap additions: 8 +- model-name-exposed control cases: 2 +- positive control cases: 1 + +Total: 38 candidate inputs. + +## 6. Frozen Asset and First Run + +Owner review has been incorporated. The frozen JSON asset is: + +```text +selector/round04_blind_inputs.json +``` + +The frozen asset preserves reviewed input text and non-answer-key metadata only. + +The first blind routing run has been written to: + +```text +reports/Round04_blind_routing_evaluation_report_2026-06-18.md +``` + +Expected selector behavior should be added only after owner / GPT / CCRA review of the observed routing results. diff --git a/reports/Round04_blind_routing_evaluation_report_2026-06-18.md b/reports/Round04_blind_routing_evaluation_report_2026-06-18.md new file mode 100644 index 0000000..fa3cc04 --- /dev/null +++ b/reports/Round04_blind_routing_evaluation_report_2026-06-18.md @@ -0,0 +1,771 @@ +# Round 04 Blind Routing Evaluation Report + +Date: 2026-06-18 + +Blind input set: `round04_blind_inputs_2026-06-18_v0.1` + +Expected routing labels: `not included before first blind run` + +This report records current selector routing only. It does not score correctness, does not generate final answers, does not modify selector rules, and does not upgrade model status. + +## Scope + +- Round 04 target: test routing stability on new inputs. +- Runtime surface: current rule-based selector plus model-level QPI / IA gates. +- QPI contract status: represented here by QPI selection and routing details; no full QPI answer generation is performed. +- IA status: represented here by selector selection / rejection only; no Intellectual Archaeology answer generation is performed. + +## Summary + +Inputs evaluated: 38 +No-call results: 20 + +### Selected Model Distribution + +- `intellectual_archaeology`: 3 +- `none`: 20 +- `qpi`: 18 + +### Coverage Categories + +- `ambiguous_growth_how_to`: 1 +- `ambiguous_low_context`: 3 +- `capacity_resource_path`: 4 +- `direct_execution_with_analysis_override`: 1 +- `explicit_no_call_dictionary_judgment`: 1 +- `explicit_no_call_direct_execution`: 1 +- `explicit_no_call_fact_lookup`: 1 +- `explicit_no_call_formatting`: 1 +- `explicit_no_call_how_to`: 2 +- `explicit_no_call_rewrite`: 1 +- `explicit_no_call_translation`: 1 +- `governance_responsibility_consensus`: 4 +- `likely_intellectual_archaeology`: 4 +- `model_extraction_or_depth_modeling`: 3 +- `qpi_allowed_depth_limited`: 2 +- `qpi_allowed_ia_refused`: 4 +- `qpi_light_problem_definition`: 4 + +## Case Results + +### R04-BI-001 + +- category_for_owner_review: `explicit_no_call_fact_lookup` +- input_text: `查一下《原则》这本书的作者是谁,只要事实,不要分析。` +- selected_models: `[]` +- rejected_models: `['intellectual_archaeology', 'qpi']` +- no_call: `True` +- routing_notes: hard no-call gate matched; explicit analysis override was not present. + +Selected model details: + - none + +Rejected model details: + - `intellectual_archaeology` score=0.0 decision=rejected + - penalties: hard no-call signal: 只要事实、查一下 + - `qpi` score=0.0 decision=rejected + - penalties: hard no-call signal: 只要事实、查一下 + +### R04-BI-002 + +- category_for_owner_review: `explicit_no_call_translation` +- input_text: `把这句话翻译成英文:这个模型还处在草稿阶段。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.49 decision=selected + - reasons: complexity signal: 模型; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.17 decision=rejected + - reasons: complexity signal: 模型; selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-003 + +- category_for_owner_review: `explicit_no_call_rewrite` +- input_text: `请把这段话润色得更顺一点,不要改变意思,也不要解释原因。` +- selected_models: `[]` +- rejected_models: `['intellectual_archaeology', 'qpi']` +- no_call: `True` +- routing_notes: hard no-call gate matched; explicit analysis override was not present. + +Selected model details: + - none + +Rejected model details: + - `intellectual_archaeology` score=0.0 decision=rejected + - penalties: hard no-call signal: 润色 + - `qpi` score=0.0 decision=rejected + - penalties: hard no-call signal: 润色 + +### R04-BI-004 + +- category_for_owner_review: `explicit_no_call_formatting` +- input_text: `把下面这组要点整理成 Markdown 表格,直接给结果。` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-005 + +- category_for_owner_review: `explicit_no_call_direct_execution` +- input_text: `把这个 JSON 压缩成单行,不用说明:{"status":"draft","level":"B"}` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-006 + +- category_for_owner_review: `qpi_light_problem_definition` +- input_text: `我们现在反复开会但没有推进,我想先判断这是缺信息、缺路径,还是缺共识。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.99 decision=selected + - reasons: trigger keyword matched: 缺路径、缺共识; complexity signal: 反复、共识; selection_priority=9; QPI problem-definition gate matched + +Rejected model details: + - `intellectual_archaeology` score=0.0 decision=rejected + - reasons: complexity signal: 反复、共识; selection_priority=7 + - penalties: QPI-before-IA gate: 缺路径、缺共识; no IA heavy-depth gate + +### R04-BI-007 + +- category_for_owner_review: `qpi_light_problem_definition` +- input_text: `这个项目卡住了,我不确定到底是问题没定义清楚,还是执行方案不够。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.59 decision=selected + - reasons: trigger keyword matched: 问题; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-008 + +- category_for_owner_review: `qpi_light_problem_definition` +- input_text: `我们有一堆材料,但不知道下一步该问什么问题,先帮我定性一下。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.59 decision=selected + - reasons: trigger keyword matched: 问题; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-009 + +- category_for_owner_review: `qpi_light_problem_definition` +- input_text: `这件事到底算一个简单问题、复杂问题,还是已经变成组织议题?` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.89 decision=selected + - reasons: trigger keyword matched: 问题; input type matched: 复杂问题; complexity signal: 组织、复杂; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.32 decision=rejected + - reasons: input type matched: 复杂问题; complexity signal: 组织、复杂; selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-010 + +- category_for_owner_review: `governance_responsibility_consensus` +- input_text: `每个部门都说支持这个项目,但一到分工就没人愿意承担主责。` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-011 + +- category_for_owner_review: `governance_responsibility_consensus` +- input_text: `老板要创新,财务要控成本,业务要短期业绩,最后方案总是被折中到没有方向。` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-012 + +- category_for_owner_review: `governance_responsibility_consensus` +- input_text: `我们不是不知道怎么做,而是每个人都在等别人先表态。` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-013 + +- category_for_owner_review: `governance_responsibility_consensus` +- input_text: `这个流程改造牵涉教务、学院和信息化部门,谁都能提意见,但没人能拍板。` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-014 + +- category_for_owner_review: `capacity_resource_path` +- input_text: `团队现在知道目标,也认可方向,但只有两个人能做关键模块,进度一直被产能卡住。` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-015 + +- category_for_owner_review: `capacity_resource_path` +- input_text: `我们知道要做知识库,也有材料,但不知道从哪条最小路径开始。` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-016 + +- category_for_owner_review: `capacity_resource_path` +- input_text: `预算不是最大问题,问题是现有系统、权限和审批流程都接不上。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.74 decision=selected + - reasons: trigger keyword matched: 问题; complexity signal: 系统; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.17 decision=rejected + - reasons: complexity signal: 系统; selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-017 + +- category_for_owner_review: `capacity_resource_path` +- input_text: `这件事大家都觉得重要,但每周只能挤出零散时间,所以一直没有稳定产出。` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-018 + +- category_for_owner_review: `model_extraction_or_depth_modeling` +- control_case_type: `positive_control` +- input_text: `请从这篇长文里抽取一个可复用的认知模型,重点看它的核心机制和适用边界。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.49 decision=selected + - reasons: complexity signal: 模型、机制、抽取、边界; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.17 decision=rejected + - reasons: complexity signal: 模型、机制、抽取、边界; selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-019 + +- category_for_owner_review: `model_extraction_or_depth_modeling` +- input_text: `这套说法背后好像有一个稳定结构,不只是观点总结,帮我判断它能不能沉淀成模型。` +- selected_models: `['qpi', 'intellectual_archaeology']` +- rejected_models: `[]` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.49 decision=selected + - reasons: complexity signal: 模型、结构; selection_priority=9 + - `intellectual_archaeology` score=0.42 decision=selected + - reasons: trigger keyword matched: 沉淀成模型; complexity signal: 模型、结构; selection_priority=7 + - penalties: no IA heavy-depth gate + +Rejected model details: + - none + +### R04-BI-020 + +- category_for_owner_review: `model_extraction_or_depth_modeling` +- input_text: `我想把这段讨论拆成原始判断、隐含假设、适用条件和误用边界。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.49 decision=selected + - reasons: complexity signal: 边界; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.17 decision=rejected + - reasons: complexity signal: 边界; selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-021 + +- category_for_owner_review: `qpi_allowed_ia_refused` +- control_case_type: `model_name_exposed` +- input_text: `先不要思想考古,只判断这是不是一个 QPI 意义上的问题。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.59 decision=selected + - reasons: trigger keyword matched: 问题; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.0 decision=rejected + - reasons: trigger keyword matched: 思想考古; selection_priority=7; IA heavy-depth signal: 思想考古 + - penalties: negative trigger: 不要思想考古、先不要思想考古; model hard exclusion signal: 不要思想考古、先不要思想考古 + +### R04-BI-022 + +- category_for_owner_review: `qpi_allowed_ia_refused` +- input_text: `不要展开到底层假设,只帮我看主导稀缺是什么。` +- selected_models: `[]` +- rejected_models: `['intellectual_archaeology', 'qpi']` +- no_call: `True` +- routing_notes: hard no-call gate matched; explicit analysis override was not present. + +Selected model details: + - none + +Rejected model details: + - `intellectual_archaeology` score=0.0 decision=rejected + - penalties: hard no-call signal: 不要展开 + - `qpi` score=0.0 decision=rejected + - penalties: hard no-call signal: 不要展开 + +### R04-BI-023 + +- category_for_owner_review: `qpi_allowed_ia_refused` +- input_text: `这次先不做深度建模,只做问题定性,看它是缺数据、缺路径还是缺共识。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.99 decision=selected + - reasons: trigger keyword matched: 问题、缺数据、缺路径、缺共识; complexity signal: 共识; selection_priority=9; QPI problem-definition gate matched + +Rejected model details: + - `intellectual_archaeology` score=0.0 decision=rejected + - reasons: complexity signal: 共识; selection_priority=7 + - penalties: QPI-before-IA gate: 缺数据、缺路径、缺共识; no IA heavy-depth gate; model hard exclusion signal: 只做问题定性 + +### R04-BI-024 + +- category_for_owner_review: `qpi_allowed_ia_refused` +- input_text: `不要进入思想考古,我只要一个轻量判断:现在应该先问问题、找路径,还是处理责任边界?` +- selected_models: `['intellectual_archaeology', 'qpi']` +- rejected_models: `[]` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `intellectual_archaeology` score=0.97 decision=selected + - reasons: trigger keyword matched: 思想考古; complexity signal: 边界、责任; selection_priority=7; IA heavy-depth signal: 思想考古 + - `qpi` score=0.74 decision=selected + - reasons: trigger keyword matched: 问题; complexity signal: 边界、责任; selection_priority=9 + +Rejected model details: + - none + +### R04-BI-025 + +- category_for_owner_review: `likely_intellectual_archaeology` +- control_case_type: `model_name_exposed` +- input_text: `QPI 已经判断这是中重型课题,现在请继续分析它背后的底层假设、生成机制和长期稳定结构。` +- selected_models: `['intellectual_archaeology', 'qpi']` +- rejected_models: `[]` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `intellectual_archaeology` score=0.97 decision=selected + - reasons: trigger keyword matched: 底层假设; complexity signal: 长期、底层、结构、机制; selection_priority=7; IA heavy-depth signal: 底层假设 + - `qpi` score=0.74 decision=selected + - reasons: trigger keyword matched: 课题; complexity signal: 长期、底层、结构、机制; selection_priority=9 + +Rejected model details: + - none + +### R04-BI-026 + +- category_for_owner_review: `likely_intellectual_archaeology` +- input_text: `这个现象反复出现在不同项目里,我想知道它背后的思想结构是什么,而不是只做问题分类。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.74 decision=selected + - reasons: trigger keyword matched: 问题; complexity signal: 反复、结构; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.17 decision=rejected + - reasons: complexity signal: 反复、结构; selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-027 + +- category_for_owner_review: `likely_intellectual_archaeology` +- input_text: `请分析这套判断为什么会长期成立,它依赖哪些世界观、因果假设和行动边界。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.49 decision=selected + - reasons: complexity signal: 长期、边界; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.17 decision=rejected + - reasons: complexity signal: 长期、边界; selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-028 + +- category_for_owner_review: `ambiguous_low_context` +- input_text: `这个不太对。` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-029 + +- category_for_owner_review: `ambiguous_low_context` +- input_text: `怎么又卡住了?` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-030 + +- category_for_owner_review: `ambiguous_low_context` +- input_text: `还是那个老问题。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.59 decision=selected + - reasons: trigger keyword matched: 问题; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-031 + +- category_for_owner_review: `explicit_no_call_how_to` +- input_text: `如何在 Excel 里冻结首行?` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-032 + +- category_for_owner_review: `explicit_no_call_how_to` +- input_text: `怎么把 Markdown 文件转成 PDF?` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-033 + +- category_for_owner_review: `explicit_no_call_dictionary_judgment` +- input_text: `判断一下“alignment”在这句话里是什么意思。` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-034 + +- category_for_owner_review: `direct_execution_with_analysis_override` +- input_text: `请把下面内容总结成三点,但不要只执行,先判断它背后的问题定义。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.59 decision=selected + - reasons: trigger keyword matched: 问题; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-035 + +- category_for_owner_review: `qpi_allowed_depth_limited` +- input_text: `不要深入分析,只判断这件事的主导稀缺是什么。` +- selected_models: `[]` +- rejected_models: `['intellectual_archaeology', 'qpi']` +- no_call: `True` +- routing_notes: hard no-call gate matched; explicit analysis override was not present. + +Selected model details: + - none + +Rejected model details: + - `intellectual_archaeology` score=0.0 decision=rejected + - penalties: hard no-call signal: 不要深入分析 + - `qpi` score=0.0 decision=rejected + - penalties: hard no-call signal: 不要深入分析 + +### R04-BI-036 + +- category_for_owner_review: `qpi_allowed_depth_limited` +- input_text: `不要展开到底层理论,只判断现在是缺信息、缺路径还是缺共识。` +- selected_models: `[]` +- rejected_models: `['intellectual_archaeology', 'qpi']` +- no_call: `True` +- routing_notes: hard no-call gate matched; explicit analysis override was not present. + +Selected model details: + - none + +Rejected model details: + - `intellectual_archaeology` score=0.0 decision=rejected + - penalties: hard no-call signal: 不要展开 + - `qpi` score=0.0 decision=rejected + - penalties: hard no-call signal: 不要展开 + +### R04-BI-037 + +- category_for_owner_review: `ambiguous_growth_how_to` +- input_text: `如何提高这个账号的流量?` +- selected_models: `[]` +- rejected_models: `['qpi', 'intellectual_archaeology']` +- no_call: `True` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - none + +Rejected model details: + - `qpi` score=0.09 decision=rejected + - reasons: selection_priority=9 + - penalties: QPI positive signal missing + - `intellectual_archaeology` score=0.02 decision=rejected + - reasons: selection_priority=7 + - penalties: no IA heavy-depth gate + +### R04-BI-038 + +- category_for_owner_review: `likely_intellectual_archaeology` +- input_text: `这类失败在不同项目里反复出现,我想抽出它背后稳定的生成机制和可迁移框架。` +- selected_models: `['qpi']` +- rejected_models: `['intellectual_archaeology']` +- no_call: `False` +- routing_notes: selector is rule-based and driven by selector/selector_rules.json; no LLM, no vector search, no answer generation. + +Selected model details: + - `qpi` score=0.49 decision=selected + - reasons: complexity signal: 反复、机制; selection_priority=9 + +Rejected model details: + - `intellectual_archaeology` score=0.17 decision=rejected + - reasons: complexity signal: 反复、机制; selection_priority=7 + - penalties: no IA heavy-depth gate + +## Review Reminder + +This is the first blind routing output. Failure labels, expected routing, and rule changes should be added only after owner / GPT / CCRA review of these observed results. diff --git a/reports/content_review_report_v0.2.md b/reports/content_review_report_v0.2.md index 34c2568..dd41f64 100644 --- a/reports/content_review_report_v0.2.md +++ b/reports/content_review_report_v0.2.md @@ -111,7 +111,7 @@ Coverage: - 已覆盖误用、防误召回、no-call 和 pipeline gate。 - 仍需人工审查用例真实性和遗漏边界。 -Round 03 / 03.1 / 03.2 / 03.2a update: QPI has since expanded to 58 regression cases after owner-reviewed case promotion, selector/no-call repair, broad-gate no-call traps, and depth-limiting QPI override traps. Intellectual Archaeology has expanded to 19 regression cases after Round 03.2 IA hard-exclusion traps. This v0.2 table is retained as a historical baseline, not the current count. +Round 03 / 03.1 / 03.2 / 03.2a / 04.1 update: QPI has since expanded to 62 regression cases after owner-reviewed case promotion, selector/no-call repair, broad-gate no-call traps, depth-limiting QPI override traps, and Round 04.1 translation-payload / depth-limit / IA anti-recall repairs. Intellectual Archaeology has expanded to 20 regression cases after Round 03.2 and Round 04.1 IA hard-exclusion traps. This v0.2 table is retained as a historical baseline, not the current count. ## 6. Selector Regression 结论 diff --git a/reports/selector_regression_report_v0.2.md b/reports/selector_regression_report_v0.2.md index c062fe5..1f89e68 100644 --- a/reports/selector_regression_report_v0.2.md +++ b/reports/selector_regression_report_v0.2.md @@ -2,7 +2,7 @@ Status: `PASS` -Cases checked: 21 +Cases checked: 26 Failures: 0 ## Cases @@ -15,6 +15,7 @@ Failures: 0 - `case_ia_pipeline_after_qpi_001`: PASS; selected=['intellectual_archaeology', 'qpi']; no_call=False - `case_ia_negative_explicit_do_not_call_001`: PASS; selected=['qpi']; no_call=False - `case_ia_negative_only_qpi_001`: PASS; selected=['qpi']; no_call=False +- `case_ia_round04_do_not_enter_archaeology_001`: PASS; selected=['qpi']; no_call=False - `case_qpi_no_call_direct_edit_001`: PASS; selected=[]; no_call=True - `case_qpi_selector_gate_fact_001`: PASS; selected=[]; no_call=True - `case_qpi_pipeline_before_ia_001`: PASS; selected=['qpi']; no_call=False @@ -28,3 +29,7 @@ Failures: 0 - `case_qpi_depth_limited_problem_definition_001`: PASS; selected=['qpi']; no_call=False - `case_qpi_depth_limited_dominant_scarcity_001`: PASS; selected=['qpi']; no_call=False - `case_qpi_analysis_override_should_call_001`: PASS; selected=['qpi']; no_call=False +- `case_qpi_round04_translation_payload_no_call_001`: PASS; selected=[]; no_call=True +- `case_qpi_round04_depth_limited_specific_scarcity_001`: PASS; selected=['qpi']; no_call=False +- `case_qpi_round04_depth_limited_scarcity_set_001`: PASS; selected=['qpi']; no_call=False +- `case_qpi_round04_depth_limited_assumption_scarcity_001`: PASS; selected=['qpi']; no_call=False diff --git a/requirements/skills-vault/2026-06-18-review-bundle-zip-packager.md b/requirements/skills-vault/2026-06-18-review-bundle-zip-packager.md new file mode 100644 index 0000000..5565a3c --- /dev/null +++ b/requirements/skills-vault/2026-06-18-review-bundle-zip-packager.md @@ -0,0 +1,184 @@ +# Skills-Vault Request: Review Bundle Zip Packager + +Date: 2026-06-18 + +Client repository: `C:\Users\wangq\Documents\Codex\work-projects\the-mindscape-of-bro-tsong` + +Requested supplier repository: + +```text +C:\Users\wangq\Documents\Codex\skills-vault +``` + +## 1. Product Context + +The Mindscape of Bro Tsong repeatedly prepares CCRA / GPT review bundles under directories such as: + +```text +ccra_review_bundle/round-04_2026-06-18_blind-input-routing-evaluation/ +``` + +Each bundle often includes an optional raw changed-files zip. The zip must preserve source-relative paths so GPT / CCRA can inspect exact files in their repository context. + +This is reusable automation, not product behavior. It belongs in `skills-vault`, not in this repository. + +## 2. Repeated Action / Friction Point + +Manual zip creation has repeatedly failed or required retries because of: + +- PowerShell `Compress-Archive` flattening paths when given a flat file list. +- Windows / .NET compression API differences. +- Existing destination zip overwrite behavior. +- Need to verify that zip entries preserve source-relative paths. +- Need to confirm every requested file exists before packaging. + +This has happened during review bundle preparation and slows down otherwise deterministic handoff work. + +## 3. Proposed Skill Name + +Candidate name: + +```text +review-bundle-zip-packager +``` + +Alternative names: + +```text +source-relative-zip +review-zip-packager +``` + +## 4. Inputs + +The Skill should accept: + +### 4.1 File List + +A newline-delimited list of files. Files may be absolute paths or paths resolvable from the current working directory. + +Example: + +```text +C:\Users\wangq\Documents\Codex\work-projects\the-mindscape-of-bro-tsong\cards\card_index.md +C:\Users\wangq\Documents\Codex\work-projects\the-mindscape-of-bro-tsong\cards\intellectual_archaeology.md +``` + +### 4.2 Relative Root Marker + +A repository or path segment used to calculate source-relative zip entries. + +Example: + +```text +the-mindscape-of-bro-tsong +``` + +For the first example file above, the zip entry should be: + +```text +cards/card_index.md +``` + +### 4.3 Output Zip Path + +Absolute or cwd-relative path for the destination zip. + +Example: + +```text +C:\Users\wangq\Documents\Codex\work-projects\the-mindscape-of-bro-tsong\ccra_review_bundle\round-04_2026-06-18_blind-input-routing-evaluation\optional_raw_changed_files_04.zip +``` + +## 5. Expected Outputs + +The Skill should produce: + +- The output zip file. +- A validation summary printed to stdout. +- Optional machine-readable validation JSON next to the zip or printed to stdout when requested. + +Recommended validation summary fields: + +```json +{ + "status": "PASS", + "output_zip": "absolute path", + "source_file_count": 2, + "zip_entry_count": 2, + "entries": [ + "cards/card_index.md", + "cards/intellectual_archaeology.md" + ], + "warnings": [] +} +``` + +## 6. Required Behavior + +- Preserve source-relative paths inside the zip. +- Use forward slashes in zip entry names. +- Fail fast if any listed file does not exist. +- Fail if any file cannot be made relative to the requested root marker. +- Fail if duplicate zip entry names would be produced. +- Overwrite the destination zip only after inputs validate. +- Verify the written zip by reading it back and comparing actual entries to expected entries. +- Print a clear PASS / FAIL result. + +## 7. Safety Boundaries + +- The Skill may create or overwrite only the requested output zip path. +- It must not delete source files. +- It must not modify source files. +- It must not recursively package directories unless a future explicit option is added. +- It must not silently ignore missing files. +- It must not flatten paths. +- It should reject output paths that are the same as one of the source files. + +## 8. File Edits Allowed + +Inside the client repository, this Skill should not edit files other than the requested output zip and optional validation sidecar. + +Inside `skills-vault`, implementation may add normal Skill source files, tests, README updates, and install metadata. + +## 9. Validation Expectations + +Minimum validation cases for `skills-vault`: + +- Two absolute files under the same root marker produce two source-relative entries. +- Mixed absolute and cwd-relative files produce correct entries. +- Existing destination zip is replaced safely. +- Missing source file fails before writing output. +- File outside the root marker fails. +- Duplicate relative entry names fail. +- Zip readback verifies exact entry list. +- Windows paths with backslashes are normalized to forward slashes in zip entries. + +Suggested command shape: + +```powershell +review-bundle-zip-packager ` + --file-list files.txt ` + --relative-root-marker the-mindscape-of-bro-tsong ` + --output C:\path\to\optional_raw_changed_files_04.zip ` + --verify +``` + +Exact CLI naming can be decided in `skills-vault`. + +## 10. Why This Should Become A Reusable Skill + +This is a deterministic file transformation and validation task that recurs across CCRA / GPT review workflows. It is not specific to QPI, Intellectual Archaeology, or this product's model library logic. + +Moving it to `skills-vault` will: + +- Reduce repeated manual zip failures. +- Preserve review bundle path correctness. +- Provide a reusable Windows-safe packaging command. +- Keep automation tooling out of the product repository. + +## 11. Current Blocked / Affected Task + +No current model extraction task is blocked. The need surfaced during Round 04 review bundle preparation, where manual zip creation required retries before source-relative paths were correct. + +This request should be treated as a reusable workflow improvement before future review bundle rounds. diff --git a/scripts/README.md b/scripts/README.md index b4e9cf4..c10feae 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -11,6 +11,8 @@ Current script: - `run_selector_regression.py` - `run_selector_demo.py` - `run_selector_calibration_smoke.py` +- `run_round04_blind_routing.py` +- `run_round04_post_patch_verification.py` Run: @@ -51,4 +53,20 @@ python scripts\check_model_card_sync.py `run_selector_calibration_smoke.py` checks selector calibration inputs, including strict `no_call`, `no_call_or_low_priority`, `select_qpi_reject_ia`, and IA heavy-depth gate expectations. +Run Round 04 blind routing evaluation: + +```powershell +python scripts\run_round04_blind_routing.py +``` + +This reads `selector/round04_blind_inputs.json` and writes `reports/Round04_blind_routing_evaluation_report_2026-06-18.md`. It does not score correctness or use expected routing labels. + +Run Round 04.1 post-patch routing verification: + +```powershell +python scripts\run_round04_post_patch_verification.py +``` + +This reruns the frozen Round 04 input pool after selector rule patches and writes `reports/Round04_1_post_patch_routing_verification_report_2026-06-18.md`. It is not a second blind test. + Prefer Python standard library before adding dependencies. diff --git a/scripts/run_round04_blind_routing.py b/scripts/run_round04_blind_routing.py new file mode 100644 index 0000000..d86a962 --- /dev/null +++ b/scripts/run_round04_blind_routing.py @@ -0,0 +1,174 @@ +import json +import sys +from collections import Counter +from pathlib import Path + + +SCRIPT_DIR = Path(__file__).resolve().parent +if str(SCRIPT_DIR) not in sys.path: + sys.path.insert(0, str(SCRIPT_DIR)) + +from run_selector_demo import recommend # noqa: E402 + + +REPORT_NAME = "Round04_blind_routing_evaluation_report_2026-06-18.md" + + +def read_json(path): + return json.loads(Path(path).read_text(encoding="utf-8")) + + +def load_blind_inputs(root): + return read_json(root / "selector" / "round04_blind_inputs.json") + + +def selected_model_ids(result): + return [item["model_id"] for item in result.get("selected_models", [])] + + +def rejected_model_ids(result): + return [item["model_id"] for item in result.get("rejected_models", [])] + + +def evaluate_blind_input(root, item): + selector_result = recommend(root, item["input_text"]) + return { + "input_id": item["input_id"], + "category_for_owner_review": item["category_for_owner_review"], + "control_case_type": item.get("control_case_type"), + "input_text": item["input_text"], + "why_included": item.get("why_included", ""), + "selected_models": selected_model_ids(selector_result), + "rejected_models": rejected_model_ids(selector_result), + "no_call": selector_result.get("no_call"), + "routing_notes": selector_result.get("routing_notes", ""), + "selected_model_details": selector_result.get("selected_models", []), + "rejected_model_details": selector_result.get("rejected_models", []), + } + + +def format_model_details(details): + if not details: + return [" - none"] + lines = [] + for detail in details: + lines.append( + f" - `{detail['model_id']}` score={detail['score']} decision={detail['decision']}" + ) + if detail.get("reasons"): + lines.append(" - reasons: " + "; ".join(detail["reasons"])) + if detail.get("penalties"): + lines.append(" - penalties: " + "; ".join(detail["penalties"])) + return lines + + +def render_report(input_set, results): + selected_counter = Counter() + category_counter = Counter() + no_call_count = 0 + for result in results: + category_counter[result["category_for_owner_review"]] += 1 + if result["no_call"]: + no_call_count += 1 + if not result["selected_models"]: + selected_counter["none"] += 1 + for model_id in result["selected_models"]: + selected_counter[model_id] += 1 + + lines = [ + "# Round 04 Blind Routing Evaluation Report", + "", + "Date: 2026-06-18", + "", + f"Blind input set: `{input_set['blind_input_set_id']}`", + "", + "Expected routing labels: `not included before first blind run`", + "", + "This report records current selector routing only. It does not score correctness, does not generate final answers, does not modify selector rules, and does not upgrade model status.", + "", + "## Scope", + "", + "- Round 04 target: test routing stability on new inputs.", + "- Runtime surface: current rule-based selector plus model-level QPI / IA gates.", + "- QPI contract status: represented here by QPI selection and routing details; no full QPI answer generation is performed.", + "- IA status: represented here by selector selection / rejection only; no Intellectual Archaeology answer generation is performed.", + "", + "## Summary", + "", + f"Inputs evaluated: {len(results)}", + f"No-call results: {no_call_count}", + "", + "### Selected Model Distribution", + "", + ] + + for key, count in sorted(selected_counter.items()): + lines.append(f"- `{key}`: {count}") + + lines.extend([ + "", + "### Coverage Categories", + "", + ]) + for key, count in sorted(category_counter.items()): + lines.append(f"- `{key}`: {count}") + + lines.extend([ + "", + "## Case Results", + "", + ]) + + for result in results: + lines.extend([ + f"### {result['input_id']}", + "", + f"- category_for_owner_review: `{result['category_for_owner_review']}`", + ]) + if result.get("control_case_type"): + lines.append(f"- control_case_type: `{result['control_case_type']}`") + lines.extend([ + f"- input_text: `{result['input_text']}`", + f"- selected_models: `{result['selected_models']}`", + f"- rejected_models: `{result['rejected_models']}`", + f"- no_call: `{result['no_call']}`", + f"- routing_notes: {result['routing_notes']}", + "", + "Selected model details:", + ]) + lines.extend(format_model_details(result["selected_model_details"])) + lines.extend(["", "Rejected model details:"]) + lines.extend(format_model_details(result["rejected_model_details"])) + lines.append("") + + lines.extend([ + "## Review Reminder", + "", + "This is the first blind routing output. Failure labels, expected routing, and rule changes should be added only after owner / GPT / CCRA review of these observed results.", + "", + ]) + + return "\n".join(lines) + + +def write_report(root, input_set, results): + report_path = root / "reports" / REPORT_NAME + report_path.write_text(render_report(input_set, results), encoding="utf-8") + return report_path + + +def main(): + root = Path(__file__).resolve().parents[1] + input_set = load_blind_inputs(root) + results = [ + evaluate_blind_input(root, item) + for item in input_set.get("inputs", []) + ] + report_path = write_report(root, input_set, results) + print(f"round04 blind routing report written to {report_path}") + print(f"inputs evaluated: {len(results)}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/run_round04_post_patch_verification.py b/scripts/run_round04_post_patch_verification.py new file mode 100644 index 0000000..a5a58f1 --- /dev/null +++ b/scripts/run_round04_post_patch_verification.py @@ -0,0 +1,276 @@ +import ast +import re +import sys +from pathlib import Path + + +SCRIPT_DIR = Path(__file__).resolve().parent +if str(SCRIPT_DIR) not in sys.path: + sys.path.insert(0, str(SCRIPT_DIR)) + +from run_round04_blind_routing import evaluate_blind_input, load_blind_inputs # noqa: E402 + + +REPORT_NAME = "Round04_1_post_patch_routing_verification_report_2026-06-18.md" +ORIGINAL_REPORT = "Round04_blind_routing_evaluation_report_2026-06-18.md" + +TARGET_EXPECTATIONS = { + "R04-BI-002": { + "expected_selected_models": [], + "expected_no_call": True, + "must_not_select": ["qpi", "intellectual_archaeology"], + "review_label": "translation no-call; payload complexity must not trigger QPI", + }, + "R04-BI-024": { + "expected_selected_models": ["qpi"], + "expected_no_call": False, + "must_not_select": ["intellectual_archaeology"], + "review_label": "explicit IA refusal should hard-exclude IA while allowing QPI", + }, + "R04-BI-035": { + "expected_selected_models": ["qpi"], + "expected_no_call": False, + "must_not_select": ["intellectual_archaeology"], + "review_label": "depth-limiting plus dominant-scarcity judgment should allow QPI", + }, + "R04-BI-036": { + "expected_selected_models": ["qpi"], + "expected_no_call": False, + "must_not_select": ["intellectual_archaeology"], + "review_label": "depth-limiting plus scarcity-set judgment should allow QPI", + }, +} + + +DIFF_CASE_NOTES = { + "R04-BI-002": { + "label": "target fix: translation no-call", + "judgment": "Expected target change; translation instruction should not be routed to QPI because the payload contains `模型`.", + }, + "R04-BI-022": { + "label": "accepted collateral change: depth-limited QPI override", + "judgment": "Not a new failure. The request rejects deeper IA-style expansion while asking for dominant scarcity judgment, so lightweight QPI is acceptable and IA should remain rejected. Added to regression as a QPI selector-gate trap.", + }, + "R04-BI-024": { + "label": "target fix: explicit IA refusal", + "judgment": "Expected target change; explicit refusal should hard-exclude IA while allowing lightweight QPI.", + }, + "R04-BI-035": { + "label": "target fix: dominant-scarcity depth limit", + "judgment": "Expected target change; depth-limiting language should not block lightweight QPI scarcity judgment.", + }, + "R04-BI-036": { + "label": "target fix: scarcity-set depth limit", + "judgment": "Expected target change; depth-limiting language should not block QPI scarcity-set judgment.", + }, +} + + +def parse_original_report(root): + report_path = root / "reports" / ORIGINAL_REPORT + text = report_path.read_text(encoding="utf-8") + case_pattern = re.compile(r"^### (R04-BI-\d+)\n(?P.*?)(?=^### R04-BI-|\Z)", re.M | re.S) + cases = {} + for match in case_pattern.finditer(text): + case_id = match.group(1) + body = match.group("body") + selected = extract_list_field(body, "selected_models") + rejected = extract_list_field(body, "rejected_models") + no_call = extract_bool_field(body, "no_call") + cases[case_id] = { + "selected_models": selected, + "rejected_models": rejected, + "no_call": no_call, + } + return cases + + +def extract_list_field(body, field_name): + match = re.search(rf"- {field_name}: `(?P.*?)`", body) + if not match: + return [] + return ast.literal_eval(match.group("value")) + + +def extract_bool_field(body, field_name): + match = re.search(rf"- {field_name}: `(?PTrue|False)`", body) + if not match: + return None + return match.group("value") == "True" + + +def evaluate_expectation(result, expectation): + errors = [] + selected = result["selected_models"] + for model_id in expectation["expected_selected_models"]: + if model_id not in selected: + errors.append(f"expected selected model missing: {model_id}") + for model_id in expectation["must_not_select"]: + if model_id in selected: + errors.append(f"forbidden selected model: {model_id}") + if result["no_call"] is not expectation["expected_no_call"]: + errors.append(f"expected no_call={expectation['expected_no_call']}, got {result['no_call']}") + if not expectation["expected_selected_models"] and selected: + errors.append(f"expected no selected models, got {selected}") + return errors + + +def build_results(root): + original = parse_original_report(root) + input_set = load_blind_inputs(root) + after_results = { + item["input_id"]: evaluate_blind_input(root, item) + for item in input_set["inputs"] + } + targeted = [] + for case_id, expectation in TARGET_EXPECTATIONS.items(): + after = after_results[case_id] + errors = evaluate_expectation(after, expectation) + targeted.append({ + "case_id": case_id, + "review_label": expectation["review_label"], + "status": "PASS" if not errors else "FAIL", + "errors": errors, + "before": original.get(case_id, {}), + "after": after, + }) + behavior_diffs = [] + for case_id, before in original.items(): + after = after_results.get(case_id) + if not after: + continue + if ( + before.get("selected_models") != after["selected_models"] + or before.get("no_call") != after["no_call"] + ): + behavior_diffs.append({ + "case_id": case_id, + "before": before, + "after": after, + "note": DIFF_CASE_NOTES.get(case_id, { + "label": "unclassified behavior change", + "judgment": "Requires owner review.", + }), + }) + return input_set, list(after_results.values()), targeted, behavior_diffs + + +def build_post_patch_report(root): + input_set, all_results, targeted, behavior_diffs = build_results(root) + failures = [item for item in targeted if item["errors"]] + no_call_count = sum(1 for item in all_results if item["no_call"]) + + lines = [ + "# Round 04.1 Post-Patch Routing Verification Report", + "", + "Date: 2026-06-18", + "", + "This is not a second blind test.", + "", + f"Frozen input set: `{input_set['blind_input_set_id']}`", + f"Original before-report: `reports/{ORIGINAL_REPORT}`", + "", + "## Scope", + "", + "- Round 04.1 verifies selector rule patches after owner / GPT review.", + "- It reruns the frozen 38-input Round 04 pool for comparison.", + "- Expected routing labels are limited to the four review-approved target cases.", + "- It does not generate final answers and does not upgrade model status.", + "", + "## Summary", + "", + f"Frozen inputs rerun: {len(all_results)}", + f"Post-patch no-call results: {no_call_count}", + f"Targeted cases checked: {len(targeted)}", + f"Targeted failures: {len(failures)}", + f"Behavior changes recorded: {len(behavior_diffs)}", + "", + "## Targeted Case Results", + "", + ] + + for item in targeted: + after = item["after"] + before = item["before"] + lines.extend([ + f"### {item['case_id']}", + "", + f"- status: `{item['status']}`", + f"- review_label: {item['review_label']}", + f"- before_selected_models: `{before.get('selected_models')}`", + f"- before_no_call: `{before.get('no_call')}`", + f"- after_selected_models: `{after['selected_models']}`", + f"- after_rejected_models: `{after['rejected_models']}`", + f"- after_no_call: `{after['no_call']}`", + ]) + if item["errors"]: + lines.append("- errors:") + for error in item["errors"]: + lines.append(f" - {error}") + lines.extend([ + "", + "After selected model details:", + ]) + if after["selected_model_details"]: + for detail in after["selected_model_details"]: + lines.append(f"- `{detail['model_id']}` score={detail['score']} decision={detail['decision']}") + if detail.get("reasons"): + lines.append(" - reasons: " + "; ".join(detail["reasons"])) + if detail.get("penalties"): + lines.append(" - penalties: " + "; ".join(detail["penalties"])) + else: + lines.append("- none") + lines.append("") + + lines.extend([ + "## Non-target Behavior Diff / Accepted Collateral Change", + "", + "The frozen 38-input pool was rerun for comparison. Expected routing labels remain limited to the four target cases above, but the full rerun records five behavior changes from the original Round 04 report.", + "", + ]) + + for item in behavior_diffs: + before = item["before"] + after = item["after"] + note = item["note"] + lines.extend([ + f"### {item['case_id']}", + "", + f"- label: {note['label']}", + f"- before_selected_models: `{before.get('selected_models')}`", + f"- before_no_call: `{before.get('no_call')}`", + f"- after_selected_models: `{after['selected_models']}`", + f"- after_rejected_models: `{after['rejected_models']}`", + f"- after_no_call: `{after['no_call']}`", + f"- closeout_judgment: {note['judgment']}", + "", + ]) + + lines.extend([ + "## Full Pool Rerun Summary", + "", + ]) + for result in all_results: + lines.append( + f"- `{result['input_id']}`: selected={result['selected_models']}; " + f"no_call={result['no_call']}; category={result['category_for_owner_review']}" + ) + lines.append("") + return "\n".join(lines) + + +def write_report(root): + report_path = root / "reports" / REPORT_NAME + report_path.write_text(build_post_patch_report(root), encoding="utf-8") + return report_path + + +def main(): + root = Path(__file__).resolve().parents[1] + report_path = write_report(root) + print(f"round04.1 post-patch verification report written to {report_path}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/run_selector_demo.py b/scripts/run_selector_demo.py index 2c9a0c3..ba2dfa8 100644 --- a/scripts/run_selector_demo.py +++ b/scripts/run_selector_demo.py @@ -23,6 +23,14 @@ def hit_any(user_input, signals): return [signal for signal in signals if signal in user_input] +def instruction_segment(user_input): + segments = [user_input] + for delimiter in (":", ":", "\n"): + if delimiter in user_input: + segments.append(user_input.split(delimiter, 1)[0]) + return min(segments, key=len) + + def has_analysis_override(user_input, global_rules): return bool(hit_any(user_input, global_rules.get("explicit_analysis_override_phrases", []))) @@ -30,7 +38,24 @@ def has_analysis_override(user_input, global_rules): def hard_no_call_hits(user_input, global_rules): signals = list(global_rules.get("hard_no_call_signals", [])) signals.extend(global_rules.get("direct_execution_no_call_signals", [])) - return hit_any(user_input, signals) + hits = hit_any(user_input, signals) + instruction_hits = instruction_task_no_call_hits( + user_input, + global_rules.get("instruction_task_no_call_signals", []), + ) + return hits + instruction_hits + + +def instruction_task_no_call_hits(user_input, signals): + instruction = instruction_segment(user_input) + if instruction != user_input: + return hit_any(instruction, signals) + stripped = user_input.strip() + return [ + signal + for signal in signals + if 0 <= stripped.find(signal) <= 4 + ] def depth_limited_qpi_override_hits(user_input, global_rules): diff --git a/selector/README.md b/selector/README.md index 10304b6..426e635 100644 --- a/selector/README.md +++ b/selector/README.md @@ -30,11 +30,19 @@ Round 03.2a selector rule: - Depth-limiting phrases such as `不要展开` and `不要深入分析` remain global no-call signals by default. - If a depth-limiting phrase is paired with explicit QPI-limited intent such as `只做 QPI`, `只做问题定性`, or `只判断主导稀缺`, the selector should continue scoring, allow QPI, and still reject IA. +Round 04.1 selector rule: + +- Translation / direct transformation instructions should no-call even when the payload contains complexity words such as `模型`. +- Task instruction and payload content should be separated for no-call routing when a direct transformation phrase appears before a colon. +- IA refusal variants such as `不要进入思想考古` and `不做思想考古` are model-level hard exclusions for IA. +- Depth-limiting phrases paired with `主导稀缺` or `缺信息 / 缺路径 / 缺共识` intent should allow QPI and reject IA. + Current files: - `selector_rules.json` - `selector_examples.json` - `selector_calibration_inputs.json` +- `round04_blind_inputs.json` - `qpi_case_digests.json` The selector does not call an LLM. @@ -45,6 +53,12 @@ Selector regression is `scripts/run_selector_regression.py`. Selector calibration smoke check is `scripts/run_selector_calibration_smoke.py`. +Round 04 blind routing evaluation is `scripts/run_round04_blind_routing.py`. + +Round 04.1 post-patch routing verification is `scripts/run_round04_post_patch_verification.py`. + +`round04_blind_inputs.json` is a frozen blind input pool for first-run routing evaluation. It intentionally contains no expected selector behavior and should not be merged into calibration inputs before owner / GPT / CCRA review. + `qpi_case_digests.json` stores owner-reviewed QPI case digests that can feed selector calibration or later regression selection. It is not a model status upgrade and should not include unreviewed draft cases. Digest field notes: diff --git a/selector/round04_blind_inputs.json b/selector/round04_blind_inputs.json new file mode 100644 index 0000000..c1985d6 --- /dev/null +++ b/selector/round04_blind_inputs.json @@ -0,0 +1,253 @@ +{ + "blind_input_set_id": "round04_blind_inputs_2026-06-18_v0.1", + "status": "frozen_for_first_blind_run_after_owner_review", + "source_document": "reports/Round04_blind_input_candidates_2026-06-18.md", + "created_date": "2026-06-18", + "notes": [ + "This file is the frozen Round 04 blind input pool.", + "It intentionally contains no expected selector behavior and no owner answer key.", + "Category labels are coverage labels for review, not expected routing labels.", + "Selector rules must not be modified before the first blind run." + ], + "constraints": { + "no_expected_routing": true, + "do_not_modify_selector_before_first_run": true, + "do_not_merge_into_calibration_inputs": true, + "do_not_add_third_model": true, + "do_not_upgrade_model_status": true, + "do_not_run_answer_generation": true + }, + "inputs": [ + { + "input_id": "R04-BI-001", + "category_for_owner_review": "explicit_no_call_fact_lookup", + "input_text": "查一下《原则》这本书的作者是谁,只要事实,不要分析。", + "why_included": "Tests whether direct fact lookup stays outside model routing." + }, + { + "input_id": "R04-BI-002", + "category_for_owner_review": "explicit_no_call_translation", + "input_text": "把这句话翻译成英文:这个模型还处在草稿阶段。", + "why_included": "Tests pure translation as no-call." + }, + { + "input_id": "R04-BI-003", + "category_for_owner_review": "explicit_no_call_rewrite", + "input_text": "请把这段话润色得更顺一点,不要改变意思,也不要解释原因。", + "why_included": "Tests polish-only request with explicit no-analysis boundary." + }, + { + "input_id": "R04-BI-004", + "category_for_owner_review": "explicit_no_call_formatting", + "input_text": "把下面这组要点整理成 Markdown 表格,直接给结果。", + "why_included": "Tests formatting / direct execution without cognitive model need." + }, + { + "input_id": "R04-BI-005", + "category_for_owner_review": "explicit_no_call_direct_execution", + "input_text": "把这个 JSON 压缩成单行,不用说明:{\"status\":\"draft\",\"level\":\"B\"}", + "why_included": "Tests direct transformation request." + }, + { + "input_id": "R04-BI-006", + "category_for_owner_review": "qpi_light_problem_definition", + "input_text": "我们现在反复开会但没有推进,我想先判断这是缺信息、缺路径,还是缺共识。", + "why_included": "Tests lightweight problem-definition language without asking for depth." + }, + { + "input_id": "R04-BI-007", + "category_for_owner_review": "qpi_light_problem_definition", + "input_text": "这个项目卡住了,我不确定到底是问题没定义清楚,还是执行方案不够。", + "why_included": "Tests QPI-like framing without naming QPI." + }, + { + "input_id": "R04-BI-008", + "category_for_owner_review": "qpi_light_problem_definition", + "input_text": "我们有一堆材料,但不知道下一步该问什么问题,先帮我定性一下。", + "why_included": "Tests question/problem boundary and data/path scarcity." + }, + { + "input_id": "R04-BI-009", + "category_for_owner_review": "qpi_light_problem_definition", + "input_text": "这件事到底算一个简单问题、复杂问题,还是已经变成组织议题?", + "why_included": "Tests lightweight classification among question / problem / issue." + }, + { + "input_id": "R04-BI-010", + "category_for_owner_review": "governance_responsibility_consensus", + "input_text": "每个部门都说支持这个项目,但一到分工就没人愿意承担主责。", + "why_included": "Tests responsibility ambiguity and consensus scarcity." + }, + { + "input_id": "R04-BI-011", + "category_for_owner_review": "governance_responsibility_consensus", + "input_text": "老板要创新,财务要控成本,业务要短期业绩,最后方案总是被折中到没有方向。", + "why_included": "Tests cross-stakeholder conflict and governance weight." + }, + { + "input_id": "R04-BI-012", + "category_for_owner_review": "governance_responsibility_consensus", + "input_text": "我们不是不知道怎么做,而是每个人都在等别人先表态。", + "why_included": "Tests responsibility / commitment issue where path may already exist." + }, + { + "input_id": "R04-BI-013", + "category_for_owner_review": "governance_responsibility_consensus", + "input_text": "这个流程改造牵涉教务、学院和信息化部门,谁都能提意见,但没人能拍板。", + "why_included": "Tests multi-party ownership and decision authority gap." + }, + { + "input_id": "R04-BI-014", + "category_for_owner_review": "capacity_resource_path", + "input_text": "团队现在知道目标,也认可方向,但只有两个人能做关键模块,进度一直被产能卡住。", + "why_included": "Tests resource / capacity scarcity rather than data scarcity." + }, + { + "input_id": "R04-BI-015", + "category_for_owner_review": "capacity_resource_path", + "input_text": "我们知道要做知识库,也有材料,但不知道从哪条最小路径开始。", + "why_included": "Tests path scarcity with sufficient source material." + }, + { + "input_id": "R04-BI-016", + "category_for_owner_review": "capacity_resource_path", + "input_text": "预算不是最大问题,问题是现有系统、权限和审批流程都接不上。", + "why_included": "Tests operational path constraints and institutional friction." + }, + { + "input_id": "R04-BI-017", + "category_for_owner_review": "capacity_resource_path", + "input_text": "这件事大家都觉得重要,但每周只能挤出零散时间,所以一直没有稳定产出。", + "why_included": "Tests capacity scarcity mixed with execution continuity." + }, + { + "input_id": "R04-BI-018", + "category_for_owner_review": "model_extraction_or_depth_modeling", + "control_case_type": "positive_control", + "input_text": "请从这篇长文里抽取一个可复用的认知模型,重点看它的核心机制和适用边界。", + "why_included": "Tests model-extraction intent and possible depth-modeling route." + }, + { + "input_id": "R04-BI-019", + "category_for_owner_review": "model_extraction_or_depth_modeling", + "input_text": "这套说法背后好像有一个稳定结构,不只是观点总结,帮我判断它能不能沉淀成模型。", + "why_included": "Tests model-mining request without naming Intellectual Archaeology." + }, + { + "input_id": "R04-BI-020", + "category_for_owner_review": "model_extraction_or_depth_modeling", + "input_text": "我想把这段讨论拆成原始判断、隐含假设、适用条件和误用边界。", + "why_included": "Tests structured depth analysis intent." + }, + { + "input_id": "R04-BI-021", + "category_for_owner_review": "qpi_allowed_ia_refused", + "control_case_type": "model_name_exposed", + "input_text": "先不要思想考古,只判断这是不是一个 QPI 意义上的问题。", + "why_included": "Tests explicit IA refusal while allowing QPI." + }, + { + "input_id": "R04-BI-022", + "category_for_owner_review": "qpi_allowed_ia_refused", + "input_text": "不要展开到底层假设,只帮我看主导稀缺是什么。", + "why_included": "Tests depth-limiting QPI override without naming QPI." + }, + { + "input_id": "R04-BI-023", + "category_for_owner_review": "qpi_allowed_ia_refused", + "input_text": "这次先不做深度建模,只做问题定性,看它是缺数据、缺路径还是缺共识。", + "why_included": "Tests QPI-limited intent plus explicit depth refusal." + }, + { + "input_id": "R04-BI-024", + "category_for_owner_review": "qpi_allowed_ia_refused", + "input_text": "不要进入思想考古,我只要一个轻量判断:现在应该先问问题、找路径,还是处理责任边界?", + "why_included": "Tests model-level hard exclusion for IA while preserving QPI-like routing." + }, + { + "input_id": "R04-BI-025", + "category_for_owner_review": "likely_intellectual_archaeology", + "control_case_type": "model_name_exposed", + "input_text": "QPI 已经判断这是中重型课题,现在请继续分析它背后的底层假设、生成机制和长期稳定结构。", + "why_included": "Tests explicit post-QPI depth handoff." + }, + { + "input_id": "R04-BI-026", + "category_for_owner_review": "likely_intellectual_archaeology", + "input_text": "这个现象反复出现在不同项目里,我想知道它背后的思想结构是什么,而不是只做问题分类。", + "why_included": "Tests repeated-pattern depth modeling beyond lightweight QPI." + }, + { + "input_id": "R04-BI-027", + "category_for_owner_review": "likely_intellectual_archaeology", + "input_text": "请分析这套判断为什么会长期成立,它依赖哪些世界观、因果假设和行动边界。", + "why_included": "Tests deep assumption / mechanism request." + }, + { + "input_id": "R04-BI-028", + "category_for_owner_review": "ambiguous_low_context", + "input_text": "这个不太对。", + "why_included": "Tests very low context and likely need for clarification." + }, + { + "input_id": "R04-BI-029", + "category_for_owner_review": "ambiguous_low_context", + "input_text": "怎么又卡住了?", + "why_included": "Tests short ambiguous frustration signal." + }, + { + "input_id": "R04-BI-030", + "category_for_owner_review": "ambiguous_low_context", + "input_text": "还是那个老问题。", + "why_included": "Tests prior-context dependency without enough current evidence." + }, + { + "input_id": "R04-BI-031", + "category_for_owner_review": "explicit_no_call_how_to", + "input_text": "如何在 Excel 里冻结首行?", + "why_included": "Tests whether generic how-to stays outside QPI after broad \"如何\" gate was narrowed." + }, + { + "input_id": "R04-BI-032", + "category_for_owner_review": "explicit_no_call_how_to", + "input_text": "怎么把 Markdown 文件转成 PDF?", + "why_included": "Tests tool/how-to request as no-call." + }, + { + "input_id": "R04-BI-033", + "category_for_owner_review": "explicit_no_call_dictionary_judgment", + "input_text": "判断一下“alignment”在这句话里是什么意思。", + "why_included": "Tests whether ordinary word-meaning judgment avoids QPI over-selection." + }, + { + "input_id": "R04-BI-034", + "category_for_owner_review": "direct_execution_with_analysis_override", + "input_text": "请把下面内容总结成三点,但不要只执行,先判断它背后的问题定义。", + "why_included": "Tests whether explicit analysis override can escape direct-execution no-call." + }, + { + "input_id": "R04-BI-035", + "category_for_owner_review": "qpi_allowed_depth_limited", + "input_text": "不要深入分析,只判断这件事的主导稀缺是什么。", + "why_included": "Tests Round 03.2a depth-limiting override without naming QPI or IA." + }, + { + "input_id": "R04-BI-036", + "category_for_owner_review": "qpi_allowed_depth_limited", + "input_text": "不要展开到底层理论,只判断现在是缺信息、缺路径还是缺共识。", + "why_included": "Tests QPI-limited routing while rejecting deeper modeling." + }, + { + "input_id": "R04-BI-037", + "category_for_owner_review": "ambiguous_growth_how_to", + "input_text": "如何提高这个账号的流量?", + "why_included": "Tests whether generic growth how-to is routed to QPI, no-call, or low-confidence provisional handling." + }, + { + "input_id": "R04-BI-038", + "category_for_owner_review": "likely_intellectual_archaeology", + "input_text": "这类失败在不同项目里反复出现,我想抽出它背后稳定的生成机制和可迁移框架。", + "why_included": "Tests deeper modeling intent without explicit \"思想考古\" or \"底层假设\" wording." + } + ] +} diff --git a/selector/selector_rules.json b/selector/selector_rules.json index 41068a6..1ae3338 100644 --- a/selector/selector_rules.json +++ b/selector/selector_rules.json @@ -1,5 +1,5 @@ { - "selector_version": "0.2", + "selector_version": "0.2.1-draft", "selection_method": "rule_based_no_llm", "global_rules": { "negative_trigger_first": true, @@ -35,6 +35,14 @@ "不用解释", "生成图片" ], + "instruction_task_no_call_signals": [ + "翻译成", + "翻译为", + "把这句话翻译", + "翻译下面", + "译成英文", + "译成中文" + ], "depth_limiting_no_call_signals": [ "不要展开", "不要深入分析" @@ -44,6 +52,10 @@ "只做问题定性", "只做问题定性复核", "只判断主导稀缺", + "只判断这件事的主导稀缺", + "主导稀缺", + "只判断现在是缺信息", + "缺信息、缺路径还是缺共识", "只判断这是问题还是课题", "只判断问题类型" ], @@ -84,6 +96,7 @@ ], "qpi_gate_signals": [ "缺数据", + "缺信息", "缺路径", "缺共识", "问题到底", @@ -95,7 +108,10 @@ "如何定义这个问题", "如何提高流量", "如何区分 Q/P/I", + "主导稀缺", "判断主导稀缺", + "只判断这件事的主导稀缺", + "缺信息、缺路径还是缺共识", "判断这是问题还是课题", "判断应该调用哪个模型", "只做 QPI", @@ -221,17 +237,31 @@ "马上执行", "不用解释", "先不要思想考古", - "不要思想考古" + "不要思想考古", + "不要进入思想考古", + "不进入思想考古", + "先不进入思想考古", + "不要做思想考古", + "不做思想考古" ], "hard_exclusion_triggers": [ "不要思想考古", "先不要思想考古", + "不要进入思想考古", + "不进入思想考古", + "先不进入思想考古", + "不要做思想考古", + "不做思想考古", "不要调用思想考古", "不调用思想考古", "只做 QPI", "只做问题定性", "只做问题定性复核", "只判断主导稀缺", + "只判断这件事的主导稀缺", + "主导稀缺", + "只判断现在是缺信息", + "缺信息、缺路径还是缺共识", "只判断这是问题还是课题", "只判断问题类型" ], diff --git a/tests/intellectual_archaeology.regression.json b/tests/intellectual_archaeology.regression.json index 74cdeca..3b2238b 100644 --- a/tests/intellectual_archaeology.regression.json +++ b/tests/intellectual_archaeology.regression.json @@ -19,6 +19,7 @@ {"case_id": "case_ia_selector_gate_no_heavy_signal_001", "model_id": "intellectual_archaeology", "case_type": "selector_gate", "input": "底层这个词怎么翻译?只要一个英文。", "expected_behavior": "虽然有底层一词,也不应召回思想考古。", "failure_signal": "关键词误召回。", "expected_output_elements": ["rejected_models"], "should_call_model": false, "expected_primary_model": "none", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "no_call", "minimum_required_elements": ["negative trigger"], "forbidden_elements": ["七层"], "evaluation_mode": "structured", "notes": "关键词误召回防护。"}, {"case_id": "case_ia_pipeline_after_qpi_001", "model_id": "intellectual_archaeology", "case_type": "pipeline", "input": "QPI 已判断为中重型课题,且需要抽取底层机制和验证路径。", "expected_behavior": "IA 可作为 QPI 后续模型被调用。", "failure_signal": "在 QPI 放行后仍拒绝。", "expected_output_elements": ["QPI 后续", "should_call=true"], "should_call_model": true, "expected_primary_model": "intellectual_archaeology", "negative_expected_models": [], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "core_mechanism", "minimum_required_elements": ["entry_reason"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "QPI 后续 pipeline。"}, {"case_id": "case_ia_negative_explicit_do_not_call_001", "model_id": "intellectual_archaeology", "case_type": "selector_gate", "input": "QPI 已判断:这是 Issue。先不要思想考古,只做问题定性复核。", "expected_behavior": "selector 应选择 QPI,并硬拒绝思想考古。", "failure_signal": "因为“思想考古”和“QPI 已判断”加分而仍选中 IA。", "expected_output_elements": ["selected=qpi", "rejected=intellectual_archaeology"], "should_call_model": false, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "no_call", "minimum_required_elements": ["model_level_hard_exclusion"], "forbidden_elements": ["selected IA"], "evaluation_mode": "structured", "notes": "Round 03.2 hard exclusion trap: explicit IA refusal must override score."}, - {"case_id": "case_ia_negative_only_qpi_001", "model_id": "intellectual_archaeology", "case_type": "selector_gate", "input": "不要思想考古,只做 QPI 复核。", "expected_behavior": "selector 应选择 QPI,并硬拒绝思想考古。", "failure_signal": "IA 负触发只被当作 penalty,仍可能被选中。", "expected_output_elements": ["selected=qpi", "rejected=intellectual_archaeology"], "should_call_model": false, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "no_call", "minimum_required_elements": ["model_level_hard_exclusion"], "forbidden_elements": ["selected IA"], "evaluation_mode": "structured", "notes": "Round 03.2 hard exclusion trap: only-QPI instruction rejects IA."} + {"case_id": "case_ia_negative_only_qpi_001", "model_id": "intellectual_archaeology", "case_type": "selector_gate", "input": "不要思想考古,只做 QPI 复核。", "expected_behavior": "selector 应选择 QPI,并硬拒绝思想考古。", "failure_signal": "IA 负触发只被当作 penalty,仍可能被选中。", "expected_output_elements": ["selected=qpi", "rejected=intellectual_archaeology"], "should_call_model": false, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "no_call", "minimum_required_elements": ["model_level_hard_exclusion"], "forbidden_elements": ["selected IA"], "evaluation_mode": "structured", "notes": "Round 03.2 hard exclusion trap: only-QPI instruction rejects IA."}, + {"case_id": "case_ia_round04_do_not_enter_archaeology_001", "model_id": "intellectual_archaeology", "case_type": "selector_gate", "input": "不要进入思想考古,我只要一个轻量判断:现在应该先问问题、找路径,还是处理责任边界?", "expected_behavior": "selector 应选择或允许 QPI,并硬拒绝思想考古。", "failure_signal": "因为“思想考古”和复杂度信号加分而仍选中 IA。", "expected_output_elements": ["selected=qpi", "rejected=intellectual_archaeology"], "should_call_model": false, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "no_call", "minimum_required_elements": ["model_level_hard_exclusion"], "forbidden_elements": ["selected IA"], "evaluation_mode": "structured", "notes": "Round 04.1 target from R04-BI-024: explicit 'do not enter IA' must hard-exclude IA."} ] } diff --git a/tests/qpi.regression.json b/tests/qpi.regression.json index 38a9b79..0b2d71f 100644 --- a/tests/qpi.regression.json +++ b/tests/qpi.regression.json @@ -1748,6 +1748,124 @@ ], "evaluation_mode": "structured", "notes": "Round 03.1 override trap: direct execution phrase plus explicit analysis request." + }, + { + "case_id": "case_qpi_round04_translation_payload_no_call_001", + "model_id": "qpi", + "case_type": "no_call", + "input": "把这句话翻译成英文:这个模型还处在草稿阶段。", + "expected_behavior": "应 no_call:翻译任务不应因为待翻译内容里的“模型”触发 QPI。", + "failure_signal": "selector 选中 QPI,尤其是把 payload 中的“模型”当作复杂度信号。", + "expected_output_elements": [ + "no_call=true", + "selected_models=[]" + ], + "should_call_model": false, + "expected_primary_model": "none", + "negative_expected_models": [ + "qpi", + "intellectual_archaeology" + ], + "expected_classification": "no_call", + "expected_dominant_scarcity": "not_applicable", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "translation_no_call" + ], + "forbidden_elements": [ + "payload_complexity_trigger" + ], + "evaluation_mode": "structured", + "notes": "Round 04.1 target from R04-BI-002: translation payload must not trigger QPI." + }, + { + "case_id": "case_qpi_round04_depth_limited_specific_scarcity_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "不要深入分析,只判断这件事的主导稀缺是什么。", + "expected_behavior": "应选择 QPI 并拒绝 IA;“不要深入分析”限制深度,主导稀缺判断仍属于 QPI 轻量判断。", + "failure_signal": "selector 返回 no_call=true 或选中 IA。", + "expected_output_elements": [ + "selected=qpi", + "rejected=intellectual_archaeology", + "no_call=false" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "unknown", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "depth_limited_qpi_override" + ], + "forbidden_elements": [ + "global_no_call" + ], + "evaluation_mode": "structured", + "notes": "Round 04.1 target from R04-BI-035." + }, + { + "case_id": "case_qpi_round04_depth_limited_scarcity_set_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "不要展开到底层理论,只判断现在是缺信息、缺路径还是缺共识。", + "expected_behavior": "应选择 QPI 并拒绝 IA;“不要展开”限制深度,不应阻断缺信息 / 缺路径 / 缺共识判断。", + "failure_signal": "selector 返回 no_call=true 或选中 IA。", + "expected_output_elements": [ + "selected=qpi", + "rejected=intellectual_archaeology", + "no_call=false" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "unknown", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "depth_limited_qpi_override" + ], + "forbidden_elements": [ + "global_no_call" + ], + "evaluation_mode": "structured", + "notes": "Round 04.1 target from R04-BI-036." + }, + { + "case_id": "case_qpi_round04_depth_limited_assumption_scarcity_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "不要展开到底层假设,只帮我看主导稀缺是什么。", + "expected_behavior": "应选择 QPI 并拒绝 IA;“不要展开”和“底层假设”限制深度,主导稀缺判断仍属于 QPI 轻量判断。", + "failure_signal": "selector 返回 no_call=true 或选中 IA。", + "expected_output_elements": [ + "selected=qpi", + "rejected=intellectual_archaeology", + "no_call=false" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "unknown", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "depth_limited_qpi_override", + "ia_heavy_signal_rejected" + ], + "forbidden_elements": [ + "global_no_call", + "selected IA" + ], + "evaluation_mode": "structured", + "notes": "Round 04.1 closeout from R04-BI-022: accepted collateral change; combines `不要展开`, `底层假设`, and `主导稀缺`." } ] } diff --git a/tests/regression_cases.json b/tests/regression_cases.json index f3e122a..77131de 100644 --- a/tests/regression_cases.json +++ b/tests/regression_cases.json @@ -2244,6 +2244,152 @@ ], "evaluation_mode": "structured", "notes": "Round 03.2 hard exclusion trap: only-QPI instruction rejects IA." + }, + { + "case_id": "case_qpi_round04_translation_payload_no_call_001", + "model_id": "qpi", + "case_type": "no_call", + "input": "把这句话翻译成英文:这个模型还处在草稿阶段。", + "expected_behavior": "应 no_call:翻译任务不应因为待翻译内容里的“模型”触发 QPI。", + "failure_signal": "selector 选中 QPI,尤其是把 payload 中的“模型”当作复杂度信号。", + "expected_output_elements": [ + "no_call=true", + "selected_models=[]" + ], + "should_call_model": false, + "expected_primary_model": "none", + "negative_expected_models": [ + "qpi", + "intellectual_archaeology" + ], + "expected_classification": "no_call", + "expected_dominant_scarcity": "not_applicable", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "translation_no_call" + ], + "forbidden_elements": [ + "payload_complexity_trigger" + ], + "evaluation_mode": "structured", + "notes": "Round 04.1 target from R04-BI-002: translation payload must not trigger QPI." + }, + { + "case_id": "case_qpi_round04_depth_limited_specific_scarcity_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "不要深入分析,只判断这件事的主导稀缺是什么。", + "expected_behavior": "应选择 QPI 并拒绝 IA;“不要深入分析”限制深度,主导稀缺判断仍属于 QPI 轻量判断。", + "failure_signal": "selector 返回 no_call=true 或选中 IA。", + "expected_output_elements": [ + "selected=qpi", + "rejected=intellectual_archaeology", + "no_call=false" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "unknown", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "depth_limited_qpi_override" + ], + "forbidden_elements": [ + "global_no_call" + ], + "evaluation_mode": "structured", + "notes": "Round 04.1 target from R04-BI-035." + }, + { + "case_id": "case_qpi_round04_depth_limited_scarcity_set_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "不要展开到底层理论,只判断现在是缺信息、缺路径还是缺共识。", + "expected_behavior": "应选择 QPI 并拒绝 IA;“不要展开”限制深度,不应阻断缺信息 / 缺路径 / 缺共识判断。", + "failure_signal": "selector 返回 no_call=true 或选中 IA。", + "expected_output_elements": [ + "selected=qpi", + "rejected=intellectual_archaeology", + "no_call=false" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "unknown", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "depth_limited_qpi_override" + ], + "forbidden_elements": [ + "global_no_call" + ], + "evaluation_mode": "structured", + "notes": "Round 04.1 target from R04-BI-036." + }, + { + "case_id": "case_qpi_round04_depth_limited_assumption_scarcity_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "不要展开到底层假设,只帮我看主导稀缺是什么。", + "expected_behavior": "应选择 QPI 并拒绝 IA;“不要展开”和“底层假设”限制深度,主导稀缺判断仍属于 QPI 轻量判断。", + "failure_signal": "selector 返回 no_call=true 或选中 IA。", + "expected_output_elements": [ + "selected=qpi", + "rejected=intellectual_archaeology", + "no_call=false" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "unknown", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "depth_limited_qpi_override", + "ia_heavy_signal_rejected" + ], + "forbidden_elements": [ + "global_no_call", + "selected IA" + ], + "evaluation_mode": "structured", + "notes": "Round 04.1 closeout from R04-BI-022: accepted collateral change; combines `不要展开`, `底层假设`, and `主导稀缺`." + }, + { + "case_id": "case_ia_round04_do_not_enter_archaeology_001", + "model_id": "intellectual_archaeology", + "case_type": "selector_gate", + "input": "不要进入思想考古,我只要一个轻量判断:现在应该先问问题、找路径,还是处理责任边界?", + "expected_behavior": "selector 应选择或允许 QPI,并硬拒绝思想考古。", + "failure_signal": "因为“思想考古”和复杂度信号加分而仍选中 IA。", + "expected_output_elements": [ + "selected=qpi", + "rejected=intellectual_archaeology" + ], + "should_call_model": false, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "not_applicable", + "expected_dominant_scarcity": "not_applicable", + "expected_max_depth": "no_call", + "minimum_required_elements": [ + "model_level_hard_exclusion" + ], + "forbidden_elements": [ + "selected IA" + ], + "evaluation_mode": "structured", + "notes": "Round 04.1 target from R04-BI-024: explicit 'do not enter IA' must hard-exclude IA." } ] } diff --git a/tests/regression_index.json b/tests/regression_index.json index 6334cd3..e4c1186 100644 --- a/tests/regression_index.json +++ b/tests/regression_index.json @@ -1,33 +1,33 @@ { "index_version": "0.2", - "last_updated": "2026-06-17", + "last_updated": "2026-06-18", "source_of_truth": "per_model_files", "aggregate_file": "tests/regression_cases.json", "models": [ { "model_id": "qpi", "regression_file": "tests/qpi.regression.json", - "case_count": 58, + "case_count": 62, "case_type_counts": { "boundary": 13, "misuse": 16, - "no_call": 6, + "no_call": 7, "pipeline": 1, "positive": 16, - "selector_gate": 6 + "selector_gate": 9 } }, { "model_id": "intellectual_archaeology", "regression_file": "tests/intellectual_archaeology.regression.json", - "case_count": 19, + "case_count": 20, "case_type_counts": { "boundary": 3, "misuse": 3, "no_call": 3, "pipeline": 1, "positive": 5, - "selector_gate": 4 + "selector_gate": 5 } } ] diff --git a/tests/test_round04_blind_routing.py b/tests/test_round04_blind_routing.py new file mode 100644 index 0000000..11eaffb --- /dev/null +++ b/tests/test_round04_blind_routing.py @@ -0,0 +1,65 @@ +import importlib.util +import unittest +from pathlib import Path + + +def load_round04_runner(): + script_path = Path(__file__).resolve().parents[1] / "scripts" / "run_round04_blind_routing.py" + spec = importlib.util.spec_from_file_location("run_round04_blind_routing", script_path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +class Round04BlindRoutingTests(unittest.TestCase): + def test_loads_frozen_blind_inputs_without_expected_routing(self): + runner = load_round04_runner() + root = Path(__file__).resolve().parents[1] + + input_set = runner.load_blind_inputs(root) + + self.assertEqual(input_set["blind_input_set_id"], "round04_blind_inputs_2026-06-18_v0.1") + self.assertEqual(len(input_set["inputs"]), 38) + for item in input_set["inputs"]: + self.assertIn("input_id", item) + self.assertIn("category_for_owner_review", item) + self.assertIn("input_text", item) + self.assertNotIn("expected_selector_behavior", item) + self.assertNotIn("expected_primary_model", item) + + def test_evaluates_blind_input_without_answer_key_fields(self): + runner = load_round04_runner() + root = Path(__file__).resolve().parents[1] + input_set = runner.load_blind_inputs(root) + + result = runner.evaluate_blind_input(root, input_set["inputs"][0]) + + self.assertEqual(result["input_id"], "R04-BI-001") + self.assertEqual(result["category_for_owner_review"], "explicit_no_call_fact_lookup") + self.assertIn("selected_models", result) + self.assertIn("rejected_models", result) + self.assertIn("no_call", result) + self.assertIn("routing_notes", result) + self.assertNotIn("expected_selector_behavior", result) + self.assertNotIn("expected_primary_model", result) + + def test_report_states_results_are_not_scored_against_expected_routing(self): + runner = load_round04_runner() + root = Path(__file__).resolve().parents[1] + input_set = runner.load_blind_inputs(root) + results = [ + runner.evaluate_blind_input(root, item) + for item in input_set["inputs"][:2] + ] + + report_text = runner.render_report(input_set, results) + + self.assertIn("# Round 04 Blind Routing Evaluation Report", report_text) + self.assertIn("Expected routing labels: `not included before first blind run`", report_text) + self.assertIn("Inputs evaluated: 2", report_text) + self.assertIn("R04-BI-001", report_text) + self.assertIn("R04-BI-002", report_text) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_round04_post_patch_verification.py b/tests/test_round04_post_patch_verification.py new file mode 100644 index 0000000..cf89b5a --- /dev/null +++ b/tests/test_round04_post_patch_verification.py @@ -0,0 +1,44 @@ +import importlib.util +import unittest +from pathlib import Path + + +def load_post_patch_runner(): + script_path = Path(__file__).resolve().parents[1] / "scripts" / "run_round04_post_patch_verification.py" + spec = importlib.util.spec_from_file_location("run_round04_post_patch_verification", script_path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +class Round041PostPatchVerificationTests(unittest.TestCase): + def test_targeted_labels_are_limited_to_review_approved_cases(self): + runner = load_post_patch_runner() + + self.assertEqual( + sorted(runner.TARGET_EXPECTATIONS.keys()), + ["R04-BI-002", "R04-BI-024", "R04-BI-035", "R04-BI-036"], + ) + + def test_report_marks_target_cases_pass_after_patch(self): + runner = load_post_patch_runner() + root = Path(__file__).resolve().parents[1] + + report = runner.build_post_patch_report(root) + + self.assertIn("# Round 04.1 Post-Patch Routing Verification Report", report) + self.assertIn("This is not a second blind test.", report) + self.assertIn("Targeted cases checked: 4", report) + self.assertIn("Targeted failures: 0", report) + self.assertIn("Behavior changes recorded: 5", report) + self.assertIn("## Non-target Behavior Diff / Accepted Collateral Change", report) + self.assertIn("### R04-BI-022", report) + self.assertIn("Not a new failure.", report) + self.assertIn("lightweight QPI is acceptable and IA should remain rejected", report) + for case_id in ["R04-BI-002", "R04-BI-024", "R04-BI-035", "R04-BI-036"]: + self.assertIn(f"### {case_id}", report) + self.assertIn("status: `PASS`", report) + + +if __name__ == "__main__": + unittest.main()