From ddaa0cf35b1768ec05face0a6bdf3960e45bacb2 Mon Sep 17 00:00:00 2001 From: wantsong Date: Wed, 17 Jun 2026 22:10:58 +0800 Subject: [PATCH] fix: harden qpi selector round 03.1 review --- README.md | 12 +- cards/qpi.md | 18 +- .../00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF.md | 61 + .../01_PATCH_MATRIX.md | 28 + .../02_CURRENT_ASSET_PACK.md | 51 + .../03_VALIDATION_AND_COMMAND_LOG.md | 31 + .../04_REVIEW_QUESTIONS_FOR_GPT.md | 18 + .../BUNDLE_FILE_MANIFEST.md | 50 + .../optional_raw_changed_files.zip | Bin 0 -> 107867 bytes docs/DECISIONS.md | 5 + docs/FILE_TAXONOMY.md | 152 ++ docs/KNOWLEDGE_ASSET_RULES.md | 7 + docs/QPI_CONTEXTUAL_ROUTING_RULES.md | 13 +- docs/WORKFLOW.md | 2 + .../09_数据治理与模型调用机制说明.md | 629 +++++ knowledge_assets/README.md | 13 + models/model_index.json | 4 +- models/qpi.model.json | 2 +- ...话交接文档_Round03.1评审后续_2026-06-17.md | 151 ++ reports/content_review_report_v0.2.md | 4 + reports/selector_calibration_smoke_report.md | 96 + reports/selector_regression_report_v0.2.md | 5 +- scripts/run_selector_calibration_smoke.py | 101 + scripts/run_selector_demo.py | 19 +- scripts/validate_model_library.py | 35 + selector/README.md | 12 + selector/qpi_case_digests.json | 551 +++-- selector/selector_calibration_inputs.json | 14 + selector/selector_rules.json | 77 +- tests/qpi.regression.json | 1623 ++++++++++++- tests/regression_cases.json | 2081 ++++++++++++++++- tests/test_validate_model_library.py | 46 + 32 files changed, 5586 insertions(+), 325 deletions(-) create mode 100644 ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF.md create mode 100644 ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/01_PATCH_MATRIX.md create mode 100644 ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/02_CURRENT_ASSET_PACK.md create mode 100644 ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/03_VALIDATION_AND_COMMAND_LOG.md create mode 100644 ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/04_REVIEW_QUESTIONS_FOR_GPT.md create mode 100644 ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/BUNDLE_FILE_MANIFEST.md create mode 100644 ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/optional_raw_changed_files.zip create mode 100644 docs/FILE_TAXONOMY.md create mode 100644 knowledge_assets/09_数据治理与模型调用机制说明.md create mode 100644 reports/Codex新会话交接文档_Round03.1评审后续_2026-06-17.md create mode 100644 reports/selector_calibration_smoke_report.md create mode 100644 scripts/run_selector_calibration_smoke.py diff --git a/README.md b/README.md index 1c111b3..6a70044 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,7 @@ Foundation repair in progress for: Current foundation assets include: - GPT plan localization protocol. +- File taxonomy for canonical, generated, review archive, and temporary files. - Model extraction rules. - Model card contract. - Model extraction workflow. @@ -161,7 +162,7 @@ Current foundation assets include: - A standard-library validation script that writes `reports/validation_report.md`. - A standard-library index rebuild/check script that writes `reports/index_rebuild_report.md`. - ChatGPT handoff rules. -- Long-term knowledge asset rules and initial `knowledge_assets/` documents. +- Long-term knowledge asset rules and `knowledge_assets/` documents, including `09_数据治理与模型调用机制说明.md`. Current QPI and Intellectual Archaeology model contents pass the local contract and remain `draft` pending product review. @@ -171,7 +172,8 @@ CCRA review packages are archived by round under `ccra_review_bundle/round-NN_YY ## 13. Next Steps -1. Review QPI and Intellectual Archaeology content for product correctness. -2. Review whether the new `knowledge_assets/` package is sufficient for ChatGPT / CCRA reuse. -3. Decide whether to expand to a third core model. -4. Decide whether extraction, inspection, and stability scoring should become CCPE or skills-vault requests. +1. Submit the Round 03.1 selector/no-call/regression patch for GPT / CCRA review. +2. Keep QPI and Intellectual Archaeology at `draft / B / pending` until Owner / CCRA review accepts stronger status. +3. Run a QPI blind-test round with new unlabelled inputs after Round 03.1 passes. +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. diff --git a/cards/qpi.md b/cards/qpi.md index 384acee..7648bc5 100644 --- a/cards/qpi.md +++ b/cards/qpi.md @@ -202,7 +202,7 @@ QPI 的三分结构、核心匮乏物、主体性和动态性有清晰来源支 - 机制稳定性:中高,扫描匮乏物和匹配处理范式的机制明确。 - 边界清晰度:中等,混合型问题、多视角分歧和上下文不足场景仍需更多测试。 - 来源证据质量:较高,主体性和动态性来自 2025 原文,核心匮乏物和误框定规则来自 2026 原文,应用规则来自综合文档。 -- 回归测试表现:pending,已有五条样板用例,尚未经过真实案例扩展。 +- 回归测试表现:pending,当前已有 52 条 QPI 回归用例;其中 Round 03 / 03.1 已纳入 owner-reviewed case layer、selector no-call、multi-perspective 和低上下文 provisional 边界用例。生命周期仍保持 draft。 评级理由:三分结构清晰,适合作为入口路由模型,但需要补充大量边界案例,防止过度升维或降维。 @@ -212,13 +212,15 @@ QPI 的三分结构、核心匮乏物、主体性和动态性有清晰来源支 `pending` -当前已有五条回归用例: +当前已有 52 条 QPI 回归用例,覆盖 positive、boundary、misuse、no_call、selector_gate 和 pipeline。Round 03 / 03.1 重点新增: -- `case_qpi_positive_question_001` -- `case_qpi_positive_problem_001` -- `case_qpi_positive_issue_001` -- `case_qpi_boundary_mixed_001` -- `case_qpi_misuse_inflation_001` +- owner-reviewed flow / disappointment / organizational year-end-review cases; +- `case_qpi_international_logistics_no_call_001` +- `case_qpi_research_capacity_problem_not_issue_001` +- `case_qpi_multi_perspective_requires_viewpoint_output_001` +- `case_qpi_low_context_provisional_no_high_confidence_001` +- `case_qpi_direct_summary_no_call_001` +- `case_qpi_analysis_override_should_call_001` ## 示例输入 @@ -283,5 +285,5 @@ selector 应优先使用 `trigger_keywords`、`negative_triggers`、`pipeline_po ## 版本信息 - version: `0.1` -- last_updated: `2026-06-16` +- last_updated: `2026-06-17` - status: `draft` diff --git a/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF.md b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF.md new file mode 100644 index 0000000..3479dd7 --- /dev/null +++ b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF.md @@ -0,0 +1,61 @@ +# CCRA / GPT Review Brief: Round 03.1 Selector No-Call Regression Patch + +Date: 2026-06-17 + +Repository: `C:\Users\wangq\Documents\Codex\work-projects\the-mindscape-of-bro-tsong` + +Phase: `model_library_mvp` + +## 1. Scope + +Round 03.1 is a small patch over the formal Round 03 review package. + +It fixes: + +- selector over-selection of QPI by base score; +- direct-execution no-call coverage; +- selector calibration smoke coverage; +- QPI regression coverage for no-call, low-context, multi-perspective, and capacity boundary cases; +- QPI digest field drift; +- stale QPI card / report counts; +- review bundle hygiene. + +It does not: + +- add a third model; +- upgrade QPI or Intellectual Archaeology to stable; +- introduce an LLM selector; +- introduce RAG, database, frontend, backend, user system, or full QA system. + +Lifecycle states remain: + +| Model ID | Status | Stability | Regression Status | +| --- | --- | --- | --- | +| `qpi` | draft | B | pending | +| `intellectual_archaeology` | draft | B | pending | + +## 2. Main Fix + +QPI can no longer be selected only by base score plus selection priority. + +The selector now requires a positive signal for QPI unless the request is explicitly in the problem-definition path. Direct execution inputs such as summary, table formatting, bed assignment, and narrow translation are no-call unless an explicit analysis override exists. + +## 3. Current Counts + +| Artifact | Count | +| --- | ---: | +| QPI case digests | 62 | +| Selector calibration inputs | 85 | +| QPI regression cases | 52 | +| Aggregate regression cases | 69 | +| Unit tests | 17 | + +## 4. Review Focus + +Please review: + +- whether the selector no-call gate now blocks direct execution without suppressing explicit analysis override; +- whether the calibration smoke test is an acceptable Round 03.1 guardrail; +- whether `misclassification_risk` and `qpi_complexity_pattern` resolve the digest contract drift; +- whether multi-perspective digests now have enough viewpoint traceability for draft-callable review; +- whether QPI remains a routing model and not a solution engine. diff --git a/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/01_PATCH_MATRIX.md b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/01_PATCH_MATRIX.md new file mode 100644 index 0000000..7bf26d9 --- /dev/null +++ b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/01_PATCH_MATRIX.md @@ -0,0 +1,28 @@ +# Round 03.1 Patch Matrix + +| GPT / Owner instruction | Status | Evidence | +| --- | --- | --- | +| QPI must not be selected only by base score + selection priority | Done | `scripts/run_selector_demo.py`, `selector/selector_rules.json` | +| Add direct execution no-call signals | Done | `selector/selector_rules.json` | +| Preserve explicit analysis override behavior | Done | `scripts/run_selector_demo.py`, `case_qpi_analysis_override_should_call_001` | +| Normalize rule-level selection priority scale | Done | QPI rule priority `9`, IA rule priority `7` | +| Add required Round 03.1 QPI regression cases | Done | `tests/qpi.regression.json` | +| Sync new QPI cases into aggregate regression file | Done | `tests/regression_cases.json` | +| Add selector calibration smoke test | Done | `scripts/run_selector_calibration_smoke.py` | +| Normalize `misframing_risks` to `misclassification_risk` | Done | `selector/qpi_case_digests.json`, `scripts/validate_model_library.py` | +| Rename/document `mixed_or_multi_perspective` | Done | `qpi_complexity_pattern`, documented in `selector/README.md` and `docs/QPI_CONTEXTUAL_ROUTING_RULES.md` | +| Require viewpoint detail for multi-perspective digests | Done | validator requires `classification_by_viewpoint` or `viewpoint_summary` | +| Update stale QPI card count and date | Done | `cards/qpi.md`, `models/qpi.model.json` | +| Mark v0.2 content report as pre-case-promotion | Done | `reports/content_review_report_v0.2.md` | +| Preserve source paths in review zip | Done | `optional_raw_changed_files.zip` uses relative paths | +| Exclude `knowledge_assets` from review resources | Done | Not included in Round 03.1 raw zip | +| Include IA model/card if IA contract completion is referenced | Done | `models/intellectual_archaeology.model.json`, `cards/intellectual_archaeology.md` included in zip | + +## Added QPI Regression Cases + +- `case_qpi_international_logistics_no_call_001` +- `case_qpi_research_capacity_problem_not_issue_001` +- `case_qpi_multi_perspective_requires_viewpoint_output_001` +- `case_qpi_low_context_provisional_no_high_confidence_001` +- `case_qpi_direct_summary_no_call_001` +- `case_qpi_analysis_override_should_call_001` diff --git a/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/02_CURRENT_ASSET_PACK.md b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/02_CURRENT_ASSET_PACK.md new file mode 100644 index 0000000..d8b7614 --- /dev/null +++ b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/02_CURRENT_ASSET_PACK.md @@ -0,0 +1,51 @@ +# Current Asset Pack + +## 1. Selector And Calibration + +- `selector/selector_rules.json` +- `selector/selector_calibration_inputs.json` +- `selector/qpi_case_digests.json` +- `selector/README.md` +- `scripts/run_selector_demo.py` +- `scripts/run_selector_regression.py` +- `scripts/run_selector_calibration_smoke.py` + +## 2. Regression And Validation + +- `tests/qpi.regression.json` +- `tests/regression_cases.json` +- `tests/test_validate_model_library.py` +- `scripts/validate_model_library.py` +- `scripts/check_card_contract.py` +- `scripts/check_model_card_sync.py` +- `scripts/rebuild_indexes.py` + +## 3. Model/Card Sync + +- `models/qpi.model.json` +- `cards/qpi.md` +- `models/model_index.json` +- `cards/card_index.md` +- `models/intellectual_archaeology.model.json` +- `cards/intellectual_archaeology.md` + +## 4. Reports + +- `reports/validation_report.md` +- `reports/index_rebuild_report.md` +- `reports/selector_regression_report_v0.2.md` +- `reports/selector_calibration_smoke_report.md` +- `reports/model_card_sync_report_v0.2.md` +- `reports/content_review_report_v0.2.md` + +## 5. Rule Docs + +- `docs/QPI_CONTEXTUAL_ROUTING_RULES.md` + +## 6. Excluded From Review Zip + +`knowledge_assets/` is not included. The owner manually syncs long-term knowledge assets into GPT knowledge storage, so review bundles should focus on current executable / auditable project assets. + +Current long-term related asset, manually synced by Owner rather than included in this patch zip: + +- `knowledge_assets/09_数据治理与模型调用机制说明.md` diff --git a/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/03_VALIDATION_AND_COMMAND_LOG.md b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/03_VALIDATION_AND_COMMAND_LOG.md new file mode 100644 index 0000000..23688b9 --- /dev/null +++ b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/03_VALIDATION_AND_COMMAND_LOG.md @@ -0,0 +1,31 @@ +# Validation And Command Log + +## 1. Commands Run + +```powershell +python scripts\rebuild_indexes.py --write +python -m unittest discover -s tests -p "test*.py" -v +python scripts\check_card_contract.py +python scripts\validate_model_library.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 +``` + +## 2. Results + +- Index rebuild `--write`: PASS. +- Unit tests: PASS, 17 tests. +- Card contract: PASS. +- Model library validation: PASS. +- Selector demo: PASS; selected `qpi`, rejected `intellectual_archaeology`. +- Selector regression: PASS. +- Selector calibration smoke: PASS, 85 calibration inputs checked. +- Model/card sync: PASS. + +## 3. Notable Debugging Notes + +- Lowering QPI base score exposed that existing owner-reviewed calibration inputs needed richer QPI semantic signals rather than default QPI selection. +- Broad `翻译` matching was narrowed so literal translation stays no-call while metaphorical organizational translation can still select QPI. +- `先不要思想考古` was added as an IA negative trigger to preserve QPI-before-IA routing when the user explicitly asks not to call IA. diff --git a/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/04_REVIEW_QUESTIONS_FOR_GPT.md b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/04_REVIEW_QUESTIONS_FOR_GPT.md new file mode 100644 index 0000000..22ecfb0 --- /dev/null +++ b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/04_REVIEW_QUESTIONS_FOR_GPT.md @@ -0,0 +1,18 @@ +# Review Questions For GPT + +Please return: + +1. pass / revise / block judgment for Round 03.1; +2. whether selector no-call behavior is now safe enough for draft-callable review; +3. whether the calibration smoke test should become a permanent gate; +4. whether any new no-call or override traps are missing; +5. whether digest field normalization is acceptable; +6. whether QPI lifecycle should remain `draft / B / pending`. + +Required non-goal check: + +- no third model; +- no stable upgrade; +- no LLM selector; +- no full QA system; +- no RAG / vector database / frontend / backend platform. diff --git a/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/BUNDLE_FILE_MANIFEST.md b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/BUNDLE_FILE_MANIFEST.md new file mode 100644 index 0000000..ef03a0a --- /dev/null +++ b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/BUNDLE_FILE_MANIFEST.md @@ -0,0 +1,50 @@ +# Bundle File Manifest + +## Recommended Upload Order + +1. `00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF.md` +2. `01_PATCH_MATRIX.md` +3. `02_CURRENT_ASSET_PACK.md` +4. `03_VALIDATION_AND_COMMAND_LOG.md` +5. `04_REVIEW_QUESTIONS_FOR_GPT.md` +6. `optional_raw_changed_files.zip` only if exact file inspection is needed + +## Zip Policy + +`optional_raw_changed_files.zip` preserves source-relative paths. It is not a flat archive. + +`knowledge_assets/` is intentionally excluded from this review bundle because the owner manually syncs long-term knowledge assets into GPT knowledge storage. + +Current related long-term asset outside this review zip: + +- `knowledge_assets/09_数据治理与模型调用机制说明.md` + +## Raw Files Included In Zip + +- `selector/selector_rules.json` +- `selector/selector_calibration_inputs.json` +- `selector/qpi_case_digests.json` +- `selector/README.md` +- `scripts/run_selector_demo.py` +- `scripts/run_selector_regression.py` +- `scripts/run_selector_calibration_smoke.py` +- `scripts/validate_model_library.py` +- `scripts/check_card_contract.py` +- `scripts/check_model_card_sync.py` +- `scripts/rebuild_indexes.py` +- `tests/qpi.regression.json` +- `tests/regression_cases.json` +- `tests/test_validate_model_library.py` +- `models/qpi.model.json` +- `cards/qpi.md` +- `models/model_index.json` +- `cards/card_index.md` +- `models/intellectual_archaeology.model.json` +- `cards/intellectual_archaeology.md` +- `reports/validation_report.md` +- `reports/index_rebuild_report.md` +- `reports/selector_regression_report_v0.2.md` +- `reports/selector_calibration_smoke_report.md` +- `reports/model_card_sync_report_v0.2.md` +- `reports/content_review_report_v0.2.md` +- `docs/QPI_CONTEXTUAL_ROUTING_RULES.md` diff --git a/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/optional_raw_changed_files.zip b/ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/optional_raw_changed_files.zip new file mode 100644 index 0000000000000000000000000000000000000000..4da5fde4324ebfe1d99f48361514534adf13a274 GIT binary patch literal 107867 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
Ou}nK$S;JsjeE6& zW~Z?NWHG9=<3J55Yvnk=?P{(0q8A4AC=t)hN`$hca__M(czA-14KD88T|I2tg6O-j zXFbwcZJZ@2Jtw@R*=11yl();s(7WsZRzuisO8-3cnsZw~A#i0-Ws7uVSL ze}k#Tui_7~0S2OtUyE3O( zph)+frJ`5VL&?-ONM&?nflN!%RW@cmd`(S3M=udpoMr<`R}omFTJW+saW&~}P+0}G zf4Kj$4W0AnRx+z^EiamlE zmm*aQ?8A+x0`O;+I`3wi6(Abrpz)V{+H+YU`!dVpHxz~67LDjzCo&Q!(L166H5!Qne%mN6+ zf3-$$Xa?uqQL0T+f|y{&8AFt^Z;$VPVsC|ZeP;mF*hC(884*~+O7}9H1#kvYFSd&l z2e-@<;W6Luwty%Nhu2z{t_WpSwf90NO}cw>!&zrq{!k~b+G#!#nDcGBs>5sJf} zH%D%tpl1)R?GViarrKi8)Q7}K|D#V=oS_qVK=}}wL>f41zCvadE0G6giRGW7b2r$W zm|q-At#3D(u#4u74W1p0ARr7oL{lu`Dayto?z=f{5~VpGOb~J5P#B1TPn|7I{}2Fu z(;XPO%2T%c;COl;#PYVd%G}-Q%(o!jIr-BTmP=lVRL7-1OGpjh4tDef2vR>kQ}$-i zug)r;8@Wrwd5#G*xFdu=MrS?B;B1E+L6aK`^3q!0^HdgAJDaf&z`+4bRO<>b_-7JgKRY^5FPgp3IFA>fcMQZdM_FB?%t& zPj-N@d~Y4TOCSb9kzq@ngt_zBlGWqUA&$+4o?8FLC9689C?~SE!d9CKn968GZXz^Q zK%-S^JVtXw^b?^5j5wV70`r+n;_upTw|k6X90fhtJ8yn{roeD~ZOD!1n_{dQ?Tf`2 zee32{x_{mfSeOvrJY9F?x`H)r+Xq0|I;)r#171zs1}M?gd}Zyg!!`l%v?ojHGxsrp zoH`MAVO)0pUXkYCFfGb)GuPvsn+aLgB7b_cQ4*p^Be~o#BX7L~a=Biyv2PH41^^wo zoC(L+m)}IzAx`#^N>fsD#h*gu1K42vW{@FBqa8fhy=5t_{okfUj47#9neO%gp)R`- z$D2_@Ys(tk-(;U6!u7X6KE&8#ospZ2!g8UMUpO;nqFCijn{Dg8LqjUngf!6HWr?)* zAmOg*)cM6XQ&&pFjN%bY9<3JF6c{xq$OTeM&@bg_Pdz^CwBS1s@u21qi{Pghf*PL3 zG(vfrPf>KBv=BoDLT3668#^E_ud49TYY=}<7KAvnu<)m_Mf+9qGYlmcFN=?_6lVjz z;1alyn8h`a*cOEQDIg;L{Vn8Cueb&nD6>!!|z6ZMH@$(D%n z^o0x3AgQ~%+k|1%qPtER*DxH3wcFZFkefs;avbEl-?nHBu*X5F zPoYcKVGO$s2dguf>R+wnQTwYZ4?&rlnnTM?>xrGpO2eFTs5=@Y2hjr>jQyiRg21Ms zT>;k&8~$*p!=eTlpnrm1xy|kf2H+pn19mkoa{m*M(tSLJSBSR9ZS{Diy^6tU9JF-} z8fIhLV3E_h>dsWmz?v)6d;h^BR^hJk2StiM6SicJySiU`2!lqqeO_A}zbs>QB@s}q zOf{nBQWe?)ZW^1ltoKx!PY<NOBMs`4K^ zJ3`9oa0GsKw0{UQF9ATyxnBE~NBLF1R5y$CS7l67n)|jR35B+e2y)ronj=(ntvXB; zeTbHZDC8B*kSh9uGTZ>us%|n<1(%^)E;TRQ$R~tIp1f`dD5}(Lso*Jxx1*@>lIz}Z z`y!5Th*yQ|r{d<;A5{ke8XLNoo2NZd&>}h|nX>mpGIBq1BsL2Kv<2}v#eHw-0t&1R zC9iO(BY^)8*#0g#$ICS+B0Hj=$dSIS@l+$iBXCAu*JeVYY~HvE7@nyBednB#h;Ah& z3@8xl9~pdfyx-UN**(5CD;LnNTJ!@DhIOK7hFoI<>$C{e;2!VLRU%tr5+4eIWyKnb zufo^Jg>xGYg)x^-+B**wa5l$kizfCJ&Ia)95`mnhJB|sembeZgOQg0ISlK`ixY43f zhSjK*36(Ug(L7D< z_$8Ao-573X)=WD4n-o2{N=Xr5ry?#ZQNDhCaNcV>#IXu>-vy2C0P`ruMtbk`^)5Ll zkOq( zzR+!N7w-;_4*hd6u0x(6+24r>0M?_%TS>1k>Nh-|lUC-+=|a`LPjn4f9W}H^MtN$) z8&=58RB(?jinOq2I+)cYdObOeE3&6H`yfr~y(E*DCa&9Cp4ymY2tJQtN}W%!4u5Qy z^JrjA>xbj(bvjl9`wd#zjO&On7WxrBx`z{xy<8%&5O`f{h2x1;A=B`$8oZ<1pH2c; zZM(+#Tm$#x)TVuFhWH6yff(BsbR71~OQmEwV>6+L<44&Ej~dYMnHxjoicKd=6rR0h zhzY#~3ItK`AVMTHIuwZ|5}Oziy71>3e+Ok+t13bL#m$Iq0+iB%kimaSHJjyp-}ij{!_g^n7m@8kS${@*%6fIl@Q&JH7vS)Q<*&}j zDSH~i5jReGa(edC!h4e)g6&7f5nHQC#51K4I*eaXh)xYIcvhw}%xzihEEG3Z`b$f*FP? zQ$0I@c=_Sk-As=bP19d_Koca@7in9*BOnCVvtBP4w5m0crZ;^26oMvcb@)(j1ge)s zz;X-I_{Aj0MvO~`tcQ`C!#vUE7HX4;oJg^ci%XL|y0gCD!DjeYiO`RY$gr^rEyy zew0SfD&bu3;*2bDO5o^u@>|r_>iWu#>-wzh;{yC!xH`5ON$ogxM&GMx#2r^e6nX{t zzJnsx^`<*IXWo@5+rMFOcGZ{zaAc}{+SJ-{ihUQJl@+vZ0-nrS;Z!Hj#JlvqWmSjp z(gFFn63sJk3D1?`;EcwImQBTr*Ppw7GT-g0o?fTr-VSF0^#1zMZZfL#5(52jVCQ$2 z_4{$~G5Y(l%=fz(mFN3*dFt0-JQ5|x*YR^6SNnTPSI76Bb~*cVGkp5%`@O!a=l6B~ z?B{!bJnQHBy|35%_IA38_bb?o;P$;9_Ae2!R}*%rHud-8{q-7=mAT#2`MWCa?^l*w z9pCTXuvo7)Y!(fZ(hHH*?|a;--gjT0{su&wWUE5VPjxitt*Xbm(V4?$u#7(a&9Lp_2#o%~+`W@TPanuZ zuu5hkF>d{=ByUNNdb)*^4AvP62AptSKT%!2g9&?^DW{a;u?5KTl?X=y}P1saJpvlG5>2ZJn0F?j9-u@?i^Z)LLjm%Aqtp25MIvVR4 z+1WZf8W=hMn`!2#>ey}2Bm2zO)lcCjrj}H_FcK6%v|L%}kgc#yR5QDlFAvRFFDerJ ze0t+>4JFHLJQ!zxI?Q~t2e8#BgHoj4-4yG&C{nEFx6;S4`0@YzbbV(KLztwn{Iu*x zDm;uqP7G_7NlGTkAR6Z>LKa0Xz~6}}ov!wXp@A!DSVD(oZC<{sIkISJCsl3Qxkarn z>+Hy13En|MSR9CRY&zOFUo`a<&0Tn9FxL-z(9ru$JQ%Xm46>HeS zQ3~;k6@C5So}T41d;Pe=!R^9UFv+%H!k6)1t>xxPtRR0zs@eHUpbww`r zyxt1LziWvHP(g+Py5j0ipRKh!$(KB&rPvQ_q|v_evX=$e0#HvdUXlsJ0(1i?Icun~ zdXGO~x|;>)z=9P=Yb6eh$3ePc%)vil)NaqAYu5oKn3pNYE%!z!Pe@*7P#AtHWd+*j z67|Y1Z^4!3AC;pX0Fc!||CtKB`J8`E6Lqb@6L+|Uc=wU_hd+>uZ6R5Ev-D86V;Mq% zMpWF_3ATwFAP&C2BGMXOdw;|gi`qB(=rOm>Swx!T2lw^?AE$Ppxim{P_0S@ZQlz8n zGJNg2H*NcAMv=#L11pZx`v-{u^~}fN16KwCE;FP%ICgDPFe^6ZZ?$S5Bdt=FB8Gdo z)J71IEqTO);1qar00LdfYd+95t|V8J@x{4!%M$-dd(0U>(Kr+P!lRE1anuY?d zb_5x^w4khbx&anTQ|yP$Xh0-22NJHL3wItek&`5)aiojMb7W3*2Rt0n7!FO_0#=fL zCsPZY+c?ut-sFi5>I@Hr0&}8p_{-7TuO{MUP5Cje$um628kkWaTPq4fVGnb0Cuc%TC~UYm$Sy(Jxx*NfZYyJYPk{5b6ym#&p-oCxLRz|q(4zI)g_<1t7&Mp-*fjN6 zc4=fh?A&@3?eV4=zH*-=7ZRVMI*6E58OS*eR>^DqJ$<25_7vrA*e(61fp?_Z1V+*l ze=j*bj1g58bq*}Of9CYBgP1X^{wYuMS>=O{6dpw8fg~9((!5mXbUiygi4~hBbwT^tEG6GR0YMhbQoO1+ack;fKpDy*ydwbwZ{^#F6o4F&cJ@*LOaIKJJII&WK z+bBnX>WW_$>92QVkVQSifQT}-gTJr`<-IseZX?M8TxeF*4q(t)?Muohwy{4`4!D54 zA;K*S+hBcbj?~^Z#UQP=bG%OezYL|+If;=J&!g^1@8}YksJqoq{>Alf#jZZe-B=<5 z^)~OvqgVfhluSBRWaF`fALvw1HN3@(DUggi!y0$K$U1 zfMqFZcJ=sjbeNTumE>w(i~$7s?eXw3-PJ4Wniq$z(M&@&@p@0@Z&Upig?5z)oTvpy z0*jt5!!T8r-YVcWYGe^|8gF+$gtrFumIv@m_Hpr41FTZmq+Rs&c;6Dec=Y1tr{6bd zJ&;Eqa#xnaS)IcvE=3}-prf;(wHm(82p}lQm!O`FP9C-oORXFqEr;$r5N$ zL)D1Z>eg0|4m2V2c7HRDC1M4YZ<3ziJeJNP5hS8m(oGPL-fqoR-)6PW?6c=VTnh_s z;bmy@@)B;R3$Bm~?RIZzDxEd=K; zmOT{y=?v+Ai&At9=CsS;LTCfQ008FD001!mi@%O0hAtM?#(EaE#wPA2PXEZ8qAq8* zDT>;AsWinHCSEZ`%tHeVUXIWuf+~)=2J*7Ug06`@uB1fF#pFyw{%6A~>Q7V;DtUd` zN%LBvIULP{&C31i+Uw3#JQH#WG4I$>ckknym!IiSBV~zcg|>2qvN!(JXIdroR+DB$ zzjmrrY6)k~afPBbgOpV&CT#6+qL;BPxk@FSlfynZ-JT0QI`{Y0`zhI|*m%-lQqj@- ze$$~6tI6fr(c9hGxEB>>DRf_LAL~prBZjQamsVAfUU77^L z>Uei`l=T4Z1S4COA@6A-8dEJPHJapN<6vvB3sLpl#;L)@AX9!%(T zXeK~Z7SP*x@DTaT;fS^0kU}gWZ`?|(Q&75F!494&)FAir0VcjerX5xpWrZY(Z79+1 zen-Pgz0sJpzcfIo^a{zUw&C2Xen>KUy}D0wEnaxinZnmvy;X;0g_r%HooP4YFy+tY z`RQyNyMG>@l*R5xRhCgXE1g#<2d}#uPVqAhmv%4(N)n`AR2G*at3Y3PmyA+sg9_Bj5a?Q^8(_s$ut;hwQ=jQN_sh(3X=oY~ z`t<6uXREU=O;IvTDE@j2$}rVoJWR5xbW|e3*tE(tfVq~WLr;s$YV;X5a;Wn?Bn{a{PfjBDG_ib-!PcJVlAGPvJd=c6z^`FJ-rOzwd+F zv%ev$U3x#kYTCcon_a8BzqiwHZgxLFb;ZjNhE@DKtGzovZ=;)bzM-d^cz&Hek9A$Q zzJ8z6ZQ_k^1?xdUKrj8hsv=s?1e%T^AiGdw8K3#5HacZz?V8wxFDO=@tX8`9W1e;D z!sjkkoClW3mfjt<6PqU_@p`qJkrGgsvLlHnHOyP;vXAJ)s2y;)bETWmkfsR2GG8VX zkpwm!K*bsvr{1MVcFt`jsk_Sjdjd|fSIAf5G(U)T8@W0U>nh>hwwu>ECNCS!iEwSj z-Q760)1Enp)3&SE65>42Afmk8-RL1np&WM1l`((0d;E<7@H6e3$2R$DT%b9E2j(Op z*`&!^k^LhL_m`z1y)^h4sy&+0XPk3Rj$q$DYn_sB^XT5wEZUpk?3dwDiij=((XwXTehm9S*TE6@F`K>WVdv)VzzG-SH--puRjNDR;&NGb zbjx8j+92#zWx~1jt<+@52=CdVopqmy>|!JK{qp>zO9j2U4I{v=#d@2`-{Ti0hmkQA z3bh1lCsw(~&Ez8A&WAYzDV9xkf!+17?x<)1nS1?_d1PfLMw00v!79Dx(k4nQb2eGv zxj@&zzhUQd;m|?2BSZ8vq<7(>j-dIBWiZ;ym#A&SzbksyHR-)PGtaBsZt2;K*ObMS7=5dE5abugj_H9|jFiYAHWIn6Vzg7A04hKPV7V3`0`lt@rTVp$s-Je9p z-_qt4A0}zvr=>X*>L^d6H|)lrpg*)E6$vStVRl48tV^~RV#Qb-kRuus$U=hBSV3VS zQbsAm&~F>jO{zomWty}KDHAyel>V$lO*Gpn!A20LY~dA9#Y-2DZLms^lT4!*wTcfM zmdaIIJcD>&u@JbESp>P#wg?SMH`Igj(OAjk1!xv6rF&<*^PX%5oY7tM6HCQi>esJACuU|R9S8sDpnSA~1;g+v@OXLKA_QvSr|9ll%lCB}wYcRj z@wb_l>2gj)r6c}h^XFR^>$)MVIA%LEU2CzyPh^XAs3!EF{j)Rc7RhB+Vl8i@xG~~x zZ8LN`M8G6u^+H2E9S`uWe><4;lh{B>e1f=NSv+x!y+Cyh8zg&yLO?X=7wA7Xr^gg>Hm+0jsE{=jfg4=H)y4!~J{z>Q_d-3nMI~$(|qf_cQ2WyBFqS z_Zvtj#=?hz26we6fnPqx%Hi$#cMmS|0q+a19n3EtZXxf^S)U$r73l-%O-wP0?CxIg z>mcn**0c0{b*qge7sm1}=^JzQ*3+0iqi;9*Y4XBhMSHs%rl*zCE?UmRh=YpJKs}b-IPXs6d^jtdi`!H&<3wPBjNC=3Pc118tJ);5lq#?MP2?mM3o^ z7uK>r7!{Ix;bWQ1lQ}dGr39mjopJ%MYLtYCO(%=4k1D3cNC5*iDda+82HOu#kID2k zn)-)$f}~0wp2*@*XM$Tj4bPk99D4e9T2}>*%t#Zz_Eltwewrx>A>`kbgJ}}%PNwN= zfI3cN_;KUoU*s^487&UFQkLm^3_4XrOm)M<)|)nKnb`XzO)0VrsXh*nraIOfA;j$8 z2hw1bwI^Mk@`Ii2Hnw>mge{~<*fRu{MDU>?OX_m6+-EgyePJ)i zHqz$)&u;kL_1Etzu1{xuW_s;JuI!en))x#UGlA(Y*%LE_U>&fgqrOvp58rlTCCl>iXz; z-R)0D>}e#PVv#`2d^sHJR`{OzH6kA1w&pL}UfkG`qC31b3H)4nYE17fXNkP>ec~EI z8#q}`*iV>Ez@~>AQ)Yp=$8EUC4n0=aU6om~JMBl9-&Z_Nk$*!nw1lZRyQ&fg1#X5B zvdYnni+eC54j6J`$f)IqgbpsV8QVXW7->#Fb82<67yLz%#FD~=>ZfEUSH(oG^i?&v zCeuv9z;F5Jn#{2;25Q2dOYU6TxpxLOy;U(L(NE3qCDy5GF-xqIcsTt6NE5wD7`7C` z&T6#qb$n6VG!2@FdAn{Pu+>eDHq>SCl+Mv$t;x(8-aWWf7M+f;k&nvGD29E10Kx^-iKWPbg2!JR?YIJopya}P;3FD2v!H9dc3aSh;4TeWra}fV*IIsR=TwKbpL0_ut68VQe z5LUsH?N-sJKpnUQWM}9A0Gtr|o_fkzcwyQ+9oB{UB>OV2ZpVIdyr)H=z>9Nm8Uyal z_)*{%Q`K1`q^w%1PmHGR0m7IrBJ5nc%91Ks>PdFv25kViQ!}Yi++hkzdd?> z%i*C_qN|_qjcu^)*`2$>Mb8tBC{OrCUAng%=631CP53@o#KCl>FKYObz{wlY#>-42 zAI8ZP%sff1lUzD70jKqmW1vo9s^ADt(S=tBix=ozJ$oi{OUlT0R@>Xa*q4#1KD!`{S;m%>DgSg$Do3F#?+D4S}T!PCL>mr-?CsN`UC~DSn>Nf!xH`poYfi7Ji(AuICias|%Hu3`XCWZ=+s8QCTTrwEg}!CW7X-bF)!P(x znZP2b=@cUC<#o$3a`@f?o7$GK4ps**zkorzQYa1o;SQFm?^G=d6^n+J$D|N^83%Iv zzqQFk@hFvQ!_Zb*p8k8G)X?N%&~f9#JJ&!DgcJr~%h<^tz4MuYl);{qWtLknm1kpz z1MC1rmnSFDx!Alhv2a&R{BDM|ZEsOUQI4_AoZIloUk(=1Mx&NEV$j(-sTOt~%UnBl z26o1SFcJg&&jnWSTWfHAr4$tn{)`Ob4@(j~nlw6QgXIJ^(AR1NCSFd&MGGb;aOK0Z zIaS{#S5_LCmqjH*=1KiO2f^gIoQ$6)#WM=L;DTHfu?Y6TKw=hkxU+lQ6o_M#u>D|N zX4+;qJ}7>3HiBWD^Ll}>G`Bajq;IHqf-I+(_Rgsc>mlAYiMRZ~z2Qe0rd6XDP0E0k zZLo9pw2mVBoBWXWQyG2o`@=-Pir8>XJkjI39ZH^Mkz~~sLDUone-_x>G;3A+4vbu?#z*fBGgY((V-v~vEOQ=--uMKibc zwl>}~YEmRk-ulL@8_5-JZPEK0MrU*G35R>?7*c7tLM>cs#&8(ok5gy8ZLm8ndzUgt z7ZoxIS+BApM?1<=NH_|`Zqd`ttz2L$YE6!MtACG|V>)rC1ijUaSLms|O;0P0VU?r~ zmc{MVuetYfcNYetXn@or95W&{VnXxiS9C?|WeC%@*I3IU4Smp2Zl;-vr8|2;x!;^} zuZLFgole@9ACk$B_LL@omcElO?r9N!-^`+e_`GOFn*9G*F9Ti2T1#vfF5bzb(a>c9&; z_%mf@pk1g(goRAp#U!=u<@w0=xQP9pLSc-~VJ?sECXa_5ICD(~UR)nDn(X087c*(~AO zW68dQx-C+OaD5TI*5Mv9P;<>CJc68+>rzFDr+ONJ%oVNyyfGy7&Ru#4FQIzhou)v>7 zuSi83aXTBisEjpa6UProS(htAz|&PhH5SJcVOGefIGGlJfrV5z^)OMA__3h*+zuRU zCwo1=wm*$+WrfnDYN>d{8&T3W5ya;T4Ad5N^V?hS$oGj_!1RuZG}kFOI^s#w17P zq}&qk8Y{`krfUE_Gy(ixrAUL}BV^mw(6fr6znP~Et+(mf>Dsgq_Cm4_H;T-*YtNg? zW^c&)-5+#WTpSFwLMMQ_F6H(8P5>@RdNzoU^5tADK1nA9*lTbePeC+xFxzfKQPlb| zXidF3b=N>&>^_A2X!t0+gWKTS*|^%;P}$sIA)SYwG3&rYRC8PmR%E{>hfj0lhyuRC z?O|kyvQd<=Cu6e8K91vl{ENMy+^4<~QYlnr4auy@k4NXv!7FIB{>{l9Mx({sui0ce zW9KJqk(9XjU&Fgd9FNwq`O<|KF$hZOZElL@*^)W%a&x&BeMB{Ng`@~y^qN?*7rF|9 zwJ|`Jt-+zn;1*sUKwy-iJj40=(zP2BxM*W1f zs@AGGuX{S-6U!CHAp3SW6bY6xaB*{I?{j`J|f>R zYB<0#O6G32pEGIb_(2B{YAoMi&f<}8SHOWT>;r|0#USV1pEPJrM>P1}a!1LL!<7E! zZ~L6ac_)f}VtP)e*9viFx*PgXO0BL_KY2;uHm{2=8y*2q@Z3hm6#-B9hWRL^d;=8# z3!DoOnjIm5-g98}Nmq8v9+{xBP2pFYFmL8_FST=NrokQHDstoXfye^ktkL}SOMq&4 z*;(-wTJNV6re8jH#6MaO%Zd@pc^D|KXS&j{X~FwfpGEDiH#W;lacLh^aolAF!c8|- z$=p#CreoWO@JeGu-59?Ll?Pig(bY$w5Zv__45oZ(9FH+#kjJKfyaalz7$GI(`EH+BXPc##+QKv=~-E_LPDO0^N?iR9n4N|O>^3jN_ zqZ7c4V-iie?mYTtye6SD^jsRNtG$cdiGfM4#>YSgfyt^*z?u*O2J`7n5s8A#)PhoYBsBJG7YC-c~ z0L}1*X+svqd)bo@su2V#VssO#@hd8im-ek8KPMjkk-Zirz`l=+?jI~*Ax?^8rqH9TUQ`rFE1ucrnYF{KXOf2kSIwoEudNH`?iiR|`$ zTeV?EGC;L_|kj37&Df=9RZGmd9roUc0C z{(WnNva`*MlZT@kawE^QcsL<{qZiq8BX6HXvlqQo72g6TMJwS|2g7A}9h8)^62`ga zB)9}lYf7X`*=ggV4)H_cq2mSKpx}Ro>TpK-^e~i%&Jlr?Y;)~e@XR;PlCr&||Af(l zWwm}ujAW}uhfuTVGaezv+*UR=$V8LuT$KQnsS!6C*o?Cx%!?E!XQne|jiWc%**lr&l@LBr}MDV&kS>Apf z@dV==)?%uC=(OpB3f*b~-Cmvt+}d+P>~C)>6YM$lqNSXmb`nwnBh)Zs`D0v&4?&B1 zdBEZd?zlLgn2}h8ndrgh0P8?5{;u6##zygC^b?tO60;VwfU{zl0?8NyT6>IBLq0G4 z!}4w+J!+B+2@@VYj%cyw@b#$hb)ILWI?U*u$?8VRSH)}KIV%;@d%ZLsnXuM-!^+H( zeoq=+^mCRZM?So53`w-7;+WTLqKGa4#U^oXH}@8cjADHZvGkC2_+JGJ){(7YcarujZ8OLn?QiM(D%q+4Hu)TH*br%gOG zhBmBL5!Sz2vreZ%#26Y|NM>@5Esk|pZsNG!MNFO;aY`_nuPQ3KEj<%=jYIx3v>%ohOuY#`e3^!?XzZJ@tsVCBEnnl# z7@AlowvkB3>#k|#2L=o3J&zd!l2D%4`!^}CI{?EkD6{W=+dcZYr>Ep2=@M3Thxb|B z*k1tv<&_SFMixl$+&EzDK$jObFisj1aBQVP81o4Jwxlsym4_V(k;IvgTZiqefen#> zE%!Z4%oXG-b8q+MR0& zol*J5H|!54A+GB^?Lb&;&@dgprZ6l<9a`SJNi2sbo~Qd2<(i|{K(Si0FS!rMMmsdU zPPt^Xa^IpO8QP@!JT%J}C#@$tf+&xq>tx(f-yAeUPAv|&tZQ72%TlZnK7 zdzbr|LibZgh0wmeODW!^?dLp!|p6N>KN!rK?yhslUYB@TK>F z_KBjv4tKM|XYQ98X!lvP?4+cVSJas(#45)d*}5WtlhJ9@ENy%0hXu4#TBvMFnt?Oh z2#{b8vc+V)!X}jyOv8b@EG`D>)=nM|Cb9+hMLA)YArRHWNLf8h3l&=?f}+s}-u188ivXZ)eq%jq zQd%$7SO5UzwsAQk-X#P&Gj;@`h|bLYdOLc2bJL0Myi@-s1|I^HnEMUGM(rBGp1z0) z4M@*MP=6U%6keOrU1ApaX)99FDfSS*At7nSNT~ZG?%C+_?k(LCsIjC*FVu-ptbN7{ zr``xP&s=IkYHJ8S@?L_aD3kv&ocyNG0UFJSQerffL8A;yzpD>wqp-ncn&5KD{&FFM z@vMl4tlQN1_i=uTqIuP@m9JR6CG>qz=mYqao7y z2RzocM);j}4oeqe#RDx;k@d|+m*La!#Gu=UVq~Yip~3sL%EAY}an?fg!Mk=&>}Q;C z!6iNrtMts*6msn7M&^^39c5K9Y(m)WT(hIcex1B8t-)@CEYyEysf1`x^JggkE+BA- zs8)~{z^_Bx`Hh7<0EHP7{Mp&B$dw?gprbP3QeV@{=;uxsdfVYW{`aHr)aeRlT36^? zhq;#@{E`AlTzDhN}T)uTIrR zk?)@|#eS8H*wS5HVU4DrExJ^CeY#i3iIl}Mmdd^>+06!L2TD`$WXd10f~m0?{wxK_ z*!ap8Ca&J=iF^{L+j|fbiUy8yQkoKW+jtV*h%VKeK4f#QeMZJ0SRt?+J?I=x50B-5`?WJ@2>oTGFc?BqsP z3Ipb#1bTsnRCDdNRtKaUMPY-ki(Cdd&~%~W5`Qt~GG4?W79~)Oos(F3yl>n9GM)PN zDeN#yw^Xem-(JJ`;xGxdAH$=Q`7b)yK_#;sKJ6B^aZ&f4CG=g!Ge#AtYSo7>Wt*J|x|gdT z$=hXBm82c{z&InM7nbfXfBPrOZk+1rK{C*e@Qn7skNEn=7nE%novU2Sl&sZ0 zR38zyxvDVL1MnOpt}EqNr1jbjB2--z8&1pgV}ko10~)7aU0vhObGz`Q7%PD*-`TJ@ zUo>umCRu?t?9(L2B2a_;o0{*3W!Bv1Z^3I2`D^@)&xKZ=?X~kg;ehV`5c>gT)$sq{x@2g(y}5<>*L1D;zpJGSJ2{V|V+u5M`BN)K1^V zx<9pB+Xq)-4r}w(YM%B0xvo0CSEYokw}gI(0L&XOks$jAT#8MHb0wAXY{E*bTxH^V zR`ePh#|t~XOI6J(YJ%6tK%KXtLPh409;1dxI}z!X%RO4D#N>3*Q+q*UYv3))Et$%` z*EaqWcgDCY0mOu>Nq!&9Cfe?GIkfO^h=u&YnXF^0#n5NZx`a{G(qnO!kViJ0V7ndy zdfXg8(fR_Bnyl)6z!upBLv1eMd2C{KlDW4GRT52agp~f!`DQSAqp^(D5Q?9>yeB|9 zw{^p0Bkmyofm3Bb>=eOspumCz86Qdkn$CrMND%+pE4^H%a(xxUo-#U!*(_Vi=I@}{ z5zzHMrAE7{F`O=Xh$C2oyYlcNyOFh}u#7x*dUdiX7DrvKvqcscyRbrR9 zRD)R=2!l{>(H92(UAQQWp9;aRgWRDyr5s>{G!eO7T&Y@pSbl^cjT)p)QXuC^s}D`y zJa{U^6U$i%u_w>KlSm3T%SyORY3!_*VLV|@QK+#!y>mj-x}XormWWaEFLMn_wQ3JZ zL1jmyq{2{x5>c!_EYr3t>y8pz?^N`0 zcQRL;L#~|Qym(RkLdsDL=HdySx-m`g5KCC=00_$is~RvczYy0%t{Z-tlXiqTyZm_g4vfS!X`UljOg@!jzr>GMi3sMa-1!tOpV*sg5KjwNf z1@L=94kV13@Rm6PKVs}gUE6r()K3)uog#0ZSBxee!SNsti@dS?v+WLp>~xF%xCc9k?)m3Ii%8x_olu6JSdg_Ho~!7M!>!T~IBOVo3CyqN=~F zLPfEjh!fBrlPA&y>ITpFX!DG!YYm|kbcDGWZivzz^052g7>by_^s=h| z<;X;ZvP@0<6y*MycA{Th{{?qWFn`?MMK}gBPX9#`=r6*sitXZ}%t}R%`X*exKlcOM z%~k+TRv=N*mcR!Pt~tzbCX(^mTXP=WOoWyrw{xT7cxhoZezVig%XINkbI~mR;UxE4evcjr_@MQ?tozhW=xKO`9&%5~d1t3co0F$7v0M_B zsgpi16;Q}Vb>Wk`TeT=+j-wj6C+c>2gS^(C1*)%9%8jQY9OL{)D@xKEz!VXS`R6a&59 zg$D_?(eC!&Org{|Br!g=v$z{}cVKQqtXjgjCNOnGJfCGO+05wKt@}DM`50c*?F{Kg zWuUSI>5rqFyY0evBo6sFvK$+GpxkVd=x95y7o&V^Cw2O;kTdybP*XU|3p6Z`UWU4fY?~CfBu7+z;0Z^@g2gU?ZO7Uh?G7d=R#3?1w1eIq;8_nLq zECP7%={>I}LRvZIA~|;VF|EJ{@jNbCu1s01NM^pvL9qj(B>vb~M`??f8HVnu*q4YtwUdoQsV*tj5 zI;odWF15H&k2mMeK6>{hY45yI)isnDTRMwR*nU1T9G+10FwS36cYXYkveEz}+31}>qXuw~`VVrk>DoEK(WU!k3T6sVB4lc;zxy_@^ znp6xR%Pv&_Ui5sUwlYt-FQpTp=CM}f2zZqA~{ zK7i{b9B<>!;e`zg=Jn?uk$XQGVFa84)EVxL5N~ln(THTsVd3OT8avdRA0jC|acr)i z{_kA_`y|()Qxk&tE4xiT9iXCNUeg20n3MUOy+&3a(w@8a_emQ5mWYIc zUyQ&wRWkny#&=1&%&+LND>8X)R4S(_2Zys{UK+B+SEVez>4tw2$<>>zmU{ml+6K&U z)4*FtbjDz`rfQ*z7*7k7UA%5+{W>fsNZLO-s|M!fQ!l*R-?+%@fnN)nQv1iS!JZem zF)e53$(?5|*~MN_{N;K{E%l`$A0J;b*D_Cbmd+H3+|ZCqpUx3`p4gBOyRO44 z%GcCqB}ZUX3jBps9s7RFzdf!#lKwPF`+mLwT`s*KI+rT_im_>dh-bW%l|z!xi0XU{RhdPRqt(FcQF~>^M^+h@fv#XDhi-^5Zp?(#HUPr? zYLD~+;p@E@#?ux;NoR#-4i)^^9+H6t-Z3tn#-TEtvQgoLZJnsw>>VWN`Kn~BjDFi= zjuxE&N5y_eqn6c}qpGV!s2Vt)RUiy}bRG5zWBE>=d@#32c=mSD+T8EBAC4C{w`$B5 zIshX<<{CE{!vaNk^#oS1Tf4ks$K|%&Kma-R_o9sEYBAY>c02`xkIeRZs7WJaDwZ!B zvE3e4`@cq=+OXgOvzXgwfVP|DP-Mz9O0T&n1p^GFh7?%*{SB-)p+aNMCXfy~Y1q;o zo~aTX&!>RS2DZ0WsXJ6pA-n%(JBkFPR8&nEm{ZsXWkaKBWu?;IM+9oG8UE!B(a?$c z{Q#0&jM-G(^il(i44Ce6uI#MxW_+0~V)%fJ336qbdS@^e8r=CCs)hdmo~@bpI5j*! z-_)NQUaA_m{9OG$cmy%XffXfgAL;dzbB8!{-#~Wc-vAS3z{D0~2D2R(YHP;)oRO)W z%;AYY#)y~gR8YV_0zof4M*dQ^IR+EPI_2hp8WW%`N)vWVTI{PyYkFnWI!Y>zGaCaK zX1ob5c0=D>Pp<5m0f==+e^yh_^w5*|f{g{qj9L$TG;{pw0U(pc4cFao5Yd3m4x{h3 zgiJ9SaZ44OoIew&M|)B2XdX;&;4$wG=D$p*yAB@QzLq3xje4TSr4#&S{6NY}q{|*u z3evcB4UF)kdYA5aXnIHow7G7gDupeb-REZvV$yWf% zj5U6)M~gpkJ*biUatWgju~E4Q!;W!TZfF=%rd?vj(0%?+5uNeXMFg!|15k96tV_Sb zxh_u8ppY!2t5aT~!z>`@P!1t|9$kl5Fp($2F~;}X5IK}K)F0)YI=XNC8Za6A7H19* zNYb1UC=fY%L^>Dc1#M`gi~7##D$Y0;+48&*=(;E35RsFaC_QNQ=D)313fyDYub&4QYir1;{blP@6wkZQl)Xcrx z?d`mD3xg^i=LrQ$L6kvdN-#n)v}R7~Nf@#na#b_(C{TlTE*~$4&w+cmof;RC5)VR! z&kx=Uq8u#*Wlg3u;6ej>%b;7}z{SprxZ5)Met8#@-bRB@moc=?Dp_?EsMIv$r?FJlbzM zCRsb8a+vNbDj|lQO*HdJ8Ajpf^P(yN5L z-gv(B&~(sLV`b5xzLXlK={Ce95rv*)xbsoZbx3xU_TRlL(*61z&l{4k8x&}6YJ7E>OkmoqdB_hxbLGFPft~Qz!;Mx zuW82mlE9WrY#rLaf-2S6(xXpq{r;Q(F^TGd@?43l+kX~uAv@;R=an#UZI~)2L|eJ* zsFMh8!^B*+suxBjXlLvPj}L1e6}?j5-mXlOSfP~=7uY~rb$OiMIv%HU((zgjsOFDM z!o#?9MI@Mb&B1Bif;>xoM(C@-+*9!fcpF<~>*v|^Wo`6ExQI;w`IFEx#x+|nHRGE@7_|W(V|Dy05SD5t12|B<+CT|_k@e)ib zz2b|raKR~1?fLus5zu0IiC*o-2Q*{EG#mbeW~qhS8J9|wvE_a#WXgbHX$MI|s%Q@* z+|kwOdn|dXWq&!`;K8)m96XIHtQGmMsjN!1D{(^hNY-dUl`~^zuYDV9nf2;rnCV7J z=&yf1)tCOq+ZIDWzPE#}M*7e&3Lv_)jm^UxcVD2!kk%bzVVZ7GmLk+w`SxoQDo#0~ z>#z^Fqc*eeUCH(fXvt3)xjNl^GMjA*6bMQPPJ642AWaD1mcgC=Dvx4+wDQyItkJ|E zU^%HWIMHC`Ik4_WDaN!j;^l1C&1o_g-$8B=m$y&X_=i!UEyCnddd`V>V+>8>&My>o zq_yZ*cYI=99WcSOSbi{w&HZml6C=-=X}Ru6kbc|i&O1I#!E$fcrmUh>O`ndoq~_oI+|yQMf**d5ms z?=KjMHVc9{h<+OrLO@@Tm?e+{L@i#uI4g3{qD`Dc{7W5C2)(7ZJN(K7mMW+3!1U8g zK)Rs|fyvS45OFp8Fv8T{j8d=eG99{*Zj`Bir?8bs=u{_zT+c6(7EBj#C$76tH}a+l z9MFs}AKMc2fIOTCiR;$Z2}DP9P5U_UFxzBw5f~w9x%r4H_YyWJ*t#gC8qi=f%5w@C z68SQP+vjWR$Dbz?`CxJT85{Uj_I!(x1z2}1-3b&0b<{R72a`ZS-D*OX0rXCUS#HbG zN83pX1qQ2M^kUsoEYe;C{Bb@eUWu3pG=&V~q3BpjUd(>JE|73h2v*Oy%f}$tlPzHI zC=U1NU6&UA6IHmEc7g+%7mVmpZ;IYT$C(fU>`gS@jG0+ASR~gjyLk(n`$cXP5fyok zoNuIDZi?T(2Lw{2L1JOs<-6{i&J8Bf(M@zd7GqWWa-+2fifkZZyU=$k_qc#B&&b0y z_@;p(XE|I)8dHUWZf^UeuuWrelq-oG&+ecz)SsW|W9h^5;Rv*OVk;s(&^ufOF zzK3lKoPhnxtd!O*)L%d^XW4%(_C>C4KY#gqwSV`|ZMIWu+M4-}6Xlc1>E6I|F47xb znlUeZ>mAO%X(5`s0dvm;h9aEJpGb^*`)DcwA8nKH!k(6XpuZxZ> zYSQuq4%SH^aIGrTW%X>9+;(@H+^`;Lq_ZQgQa@J9*DZ0+7a5`^vERU|5u0kZO~HX3 z2Fd~1N?Jx%+;CA+@7aYZoMIP2xEVB1B++O*%{$|;>dbBqrTpnK%%0zW*djf?hNbs( zFw2S%uB}S*>o|a>>Pts}*nsj<>n2po|7Go%W!=OV2`W;hQ5xjmgO=#0MY5 z>2oI*oJRnLisIrYZ=q~Sf5_Dbu?UJW+V$mU;I+Rm4MM+35 zr%)-O`ODl_{qk$~H=OpI(ZI*6Mt}X^4&Q?~0q)(vnY8a;YA}6d-1-)F7kh!1m`v!MYXG%luDa#q%B<9?$py zwlxH11gR(>gB(OQaUXhVL%ZrxR6_MQaI;=1j`wctIV$5^-3OR=L8nvd?FeqaPHrc5 zR~fg^l#B@MIq`xKyP(!3f%LGjBH}zq?s`T*kv%Gh=tD_icschJ{h-E>M~1PC158yQ zK%dg~E%d-YoJJ|VLpyiPV3|sP>w$eZNKafNKn6;w1bp|(f!w~3MqZmPkoz9O55NAp zyX=z`H|#OwF;IK@r(%TX<#*dvn4P+~kGPbH&AZ|<@cnMu68_-+DN1&E|8C`&aagl> z`p1e`mCi?rBMBf(+oDIOYc(>lKF^<<>IEUeR`tzVO(dwIfi^d}~ry?eU%hxxtav8N~{-LJ1Cs;#S`hLQQZfJ4eseJh%I_z5fcMY8?AZUeus(eEIY=wLlU!si&Mr>Ly>smpq zv>f?Yra=k_4X!^Rc(aw3v-}S z5gZAUFL1FC!%t4;se~*t&zhJtw72nqAcP`00r2qi6w(m>kHIQ~m*AvyKem{|t6V$m zc4IA=mI2vzKt$^T>bvJ31;;>m(4-^66Wo(1S}dUT78r=U1|SBtSKD0{augW)m8OJyR)0G^hC<3+Rl&o2E?{3xdk9iyB6w}r z=Fj~4ZOhb$;VcY9v~bi{>gNFzts);?zgeBpiIxu%0eNqkswaHHsjujd6Y@%|-?a%L zt0&)O`2NR^SSX#&*1&-IVjZj;m3}Jq5d4Q=xs0K#yzSz$dlviRT;eh|8neb_ZL(Q% zXn=j&ytonJ#7umqZLJMrrc&3w-mb4I+8+K~_Di5qn!$Ibci}D-o6j|?%YoWjM2QP# zy3A|ZrOM(ZWY3`aE%`u@`^T3zjIC>67aF^D4Kmv=9irO$>d1Z;7OQa=s!jYSuoiv< zmKHnY{|c;BZl&F{fw;RzbjzNgd8;SkS-EZGsa7 z8-E0r00!?lDaONp0!y8vr6NS>(F#Y@#BM3+>+zK(!gSt-LDmMojl%p#V4bDW&T?*e z%p_8-KQa9$u;}dFM0YH9aG^h_-pScB5?=5Uj?7CGf;8GntFjuBNTS0-13(W30?^D&65S!x} zW|-&SouAF)3{|K0(-JPCpqw|46*V`I9K+;*vZZ?U-o?kddNrxQV))5)GMo7g>r7~* zz7Tu*9{F~5CtpC|rbY`~X27s7v)D(vj zYrg!T^pC)rZ&(xW?}C-ahO|nZ?lnA_A4u)(O&cV>^wWPZvAu=}R(5)H5uayB_86UU z$0hFJS=;mwR~F|Ppssj!%SRlB;}tb%GzBec*`KzXaaa1(;kL1XI*) zYTQPTDNq55boGMn&c)w$5p9lfks{p(mSj1*TO=*}T1y`(53!t$pld)dXW&yd!@PU6 zO_oF}I-ZH3DH~ILxWx&iADuht)XNlvcXozYG-Nh{#dUoOcd>q?)uzK}ns3WkccxY* zBrG+SK068F&dJ-+K$cF+5^my2qWlkF4W9HY%m_6855Q{kP1UTE4>4UXANo^GHP1h6 zrnON3dcIY;*|pws(XO~1q{+E$T80k?tIvCuJZWg<_`$}C_25S6Aa8HEJA@HXk>wN- zDH#(gjb+V1vTBwvafNT??Ago{3iIrTO`Wu@4@%&ZO3vemXd;K#qLpFX2InK?725t+ zg$|GOR{pOcp3f_OrW`0tyd><@BN4DkLsJ)?!U+FbB1st&t7cVs@la+?rfkoMcp-_DAacK z*f$WGr=TVB;@-?%Pb#(zJEXd%6o(M5!!ErC}m!&sZoc{ z7dV`3<9&>p()JmH)AbYYC;CAeHM;bVr)`Y}=0f?kpP4hu`lC2o1OY?5RCvGSm>VT$ zywJ2ulH!Yvd#wR(-9A!c+j&6L9pWa%io7M!y(Hem7gCk&1`oLwGR)QOz@o21?MHxy zy9yjqNs{ zHpZICv9~J7@#DtFutukJ6YQgOhW+B})h0;|Wvcty2zo;#*e<1lQ22r(@L@eb!~9K|O_KZ8XXJ+6Svq>BBd$0>D)C=w^ud zwEyE*wh`u)%!(7K0PG4DSS`zns>1F%WjeHgo2E8Yem4)6q4l%Z#+-E1KMXeeT@M%T zx_!L^`S0JXE?>Kp6iNnGXYX(eYD_15ZGeT*o?-B!#~6g`O> zF;j%B6zT2G-g7+K0>|vAYa6r8y9{4eX$k-q~d5%Z6OWQI;aP zE)>r4rwNkgl6_OX@3rfd<~~7KNiElMnm@ zM9@>QYkHH5?g?!=-Szi1k~_*iN$W8%y!Q|ZHP;m zhYY`0kyu>1FNj6h^B+3J?7vmfyrRwBGmM$M_D*3_w0T|}EPDy?VeE3*IR%oU=&0AH zNv1R2)S?88i6+=n5$CLmh&cFQioxsq;Rn`FT^C4D~xgcc!CT)u$b(B z1~!2Lb?Av^<==tRVZ@&O9*m}JJy#X{0?r-2jSjv}+3BO4?*R)9h1{9^g{#gdYAV~Bu4e2GoG{zTv z>PK>oV=?l<7+5S~A#*d#G%AIr$gg#c*M(Y+ws#mdog+HVnhY8xO-gk|ZLVy$ul({)>PKDh}h`;_jr^03WdrD-sS&B9}shhmq7IF5Jg$_5bRtvSe=d zyjc5{Wz41^luXX@82q|BkbXr+x%bYQ>glqm9~TbfBH&oW^rG)>`@AMwgJwe)OQcw zRiB;ZmdODr*zf9p^c81uQafl*=`}}_Qerm6<}1Z22?aqZkNVjWrc-n{w;yByqh4Q$ zRFRcuncZ*Q|MV5lC>;hg9Q@MUS2(5|?g!!)peg@Eg(rfQAY#YzA<>(Ys>e&FuLHNF z(0HlqmI{dUl6=&yIDI)geR?KLpCB0cE+vMF5%NP!*`Nn^@Kbdq{Jny5Uf>%G!AnGs zbGwEd>(PK03nT%zkO!&dmS2Ysx_Csrf^reOZE!%j76MdYD`72s!kJ7XaSnh~+6>OT z-RRY+Uv*Gxq~Y{ONnmwJ)7Cw!ULYga)-HNHAt5XFTC+>RS)eRJL=gS)(<6Ivy^QKp z=73~bjK)Toj3Aww`bc6Z>qUZE;Pm($UImxEWbG(nFabJV-!lNh|An-aXq!-}Q-~F+ z@03HHb3N8%?YsZnd(2h@87#|UM-<3iO-cQ@(MC?UO`&9=f0~&k0^pqiBuCEYZf-ry ziMku-UM7|Zudgr0V>gbtL}gfgG=5#i#_ksh zpHYo>TGD4F7d++OB6i7;-;^U%N5272C1=}REnMK9HR9gJXTWVu2gJU+NnSig)6!R92{h8i`Rfx&QLuL) zJMfi;;F^YfNBlnAjaQdWH$!>uo_dGM>*H9H}sDxb*2>T`?$pZmuHp1&2&^rJ=ai&|n0HmbqK{?DMmaCV^4oX@K-z~glX z#Bz^+f7KX7uOvI5;ZM4Es_npk{L1}@Uq$(B<`7+gYM{Ei=>B~hY=DL9pqBrkscI6% zJeurmlI)O%vU+U>(0b&V#-#jvAK5^vpY6b$n%aEE9Gc~A*5mz4N?N!*M2CcYDZ;Ur zr7zXDv+W7K@feBETih)^Hbj%?Q7030JwXxk28vmoa-~rm7H2Pv>e}y6{<%8*DZ7#| zr|UwA>NkSmfN?*y8Z#>z3(`5Mkwz>=MJek8-Y|7U&h6!eH2Q+V7j_MA2PZ9U>HT0Z zSd4g?ejnse=HaIa8ye>{c9V@=&~ZGlUBW_0Kw43 zVb!-EggFx5CNIL|oHGMb2ZZEAfxsjn&=Cf`+?O|49~iJ;LG!SG03&?MkezBV=smPy zrw;jwHEjJY$(-!~U+>Qat6lsF-P(_ooS(ZL`-gkd@lg<91%WKHKdL#d0i$3$aO)hy z%?Bewa76~w?PsM#t_=$uDm$VZqlOjWmD4T?UF(V*QM8_Y2wN%>(q~3`x*iqNa<~1q z)wFo%UcNC-VXdpqdW`bA(z5~*=hTu?A+~8ulIo*!La1{}WYF=SOyM{O| zF*PwUE5gh$?G7jz=nS^`{mO))gt4Qwb;R-1Z}4&SvGUjHYy3n_gpQT2uuEKSV#ZQf zBF6cyrBLC)oe?}jz(kp8!)N|fy0*XIgBLxs*?1xWt7UmI zi*Ed8W)kL5fgmJQ7qyN>7cXmx!C34dz~^*S-s`c}GF9bDPL44;=XRcM7Y6yh zgC{=ApDzw&0S&zC0fu1C;iNqKj`PCRBHTON{Z)YaCuD_|v0r@t*JxQ4o(fIXSzA~4 zae+GQ$Y(E1AlU1O#^45hSmTT^Bm`{AkzmH`opPxZy}adLp>HlVWz$s6=7XO(<2#|$ z`ipJyNN%lE0ah8vCn6esVkHkc6(n@F;4p(#Q(#n4G4o*D?vbLGjlsJjW$;H*$-Tq$ z_Uek`%#)TsVJQfr?te;rgeF504}hJbB0+FIrnuI`jx3K}a{-ublC6Z{vT zmKoj{CpF}2C@isC-igQ5yi4E;nGc^Iwnepd@#vuK3#L)OYO7A1O za|;P{G0HMkGQoyOrWLlK)bU`eqJrnb1kW-a*Ycl&GlhL(jjkN&1Te+7LbLUkj&Alq z`oBAr2;xg99Al9e5y9`DU6hCGGUk-SzWa7Ut?^r8hfXzg1GC+mhr>l;MLkzxn48<@5kNUYP z=`A6q67Re})~uw4o;?>i0Qsr@pn zxrzL`)05cZZNq>)3pi-Aa{hafd3Vo<5;*F=U!3E(ffqPfIYvxH3-nQj5b`4SOo&lI zLvK|iQsv@9V{DhGXm@a-*o4CFxY(X0m&q7~VO1pEd=CZmsW|OjJMs^@wdBB0dWx%|qy6+`fd1^2y8e8n*lY?&=b{3RRSJJ%RGahfGJ?Dg5?6wwvNhk^ zTkDjJO7}kgn68=&<(1rl?C5M^sxIcVU-{@xV)D1nxY9q!7>*p46;+INEWxV=3e_gg zpeHInln!bJ^MZYLQ<8Uy5wEYraZwr$(4 zv~AnAZQEAo_n*_IhZHqSG^@^Io!Sga}TuaYVB!AETZ~Pr3O7cis zSO@qY*y5g^xL`sXq;IL4%LFKi{uLTy@~4$q*%Ii(b}e-^O;&Xtiha$HY*&p!K$W(^ zgB1-5-JlG&>wm^reBN*+I2>_TGN%Gs`@_Jt~p)TB8-hgmC0r!TKMQh`8z6Q zd_h9CQ5E8*g@|2F$NIB$#TWGO0S{+l>UPTVU>;ba4_0s;dU33u{Xc-=a;@ii8t1vC zK66mo-b;yhNEkscI;~v&8pe<;bC<5&ur9{pYH)wIk`=Dq2WzCu$8{m5tTbyCc&{IxuE3Ks z!dn;svA}q!s}k&wPd}I`d5Vj&ez;%9F80(5k(WMHOQVt9#_`SI?-TENf`BAJPS;<0 z;Cy(aqt|JionhBg5WMAN=4VCU*E@=NRG;>*Y|8nSfk>tFPdrW3ydPo6E@f7HU@bp2 zuu_YFe%Te{Y9D-1DPk0KI&9MvZj(Z`K+eMLP>t~=u#sDTP;K=rTwbqseeJr4Y)wzY zcD}Np;olHPyDApv=V?+Y2ctjj`h&PLzT%BbVstaa;NDu2A8qG+$tWmxsG)|fl%~n- z$Y!~&?0>Y-?A*>4z4)+Lohqt_pamarSE26+4AgR14_R_!JN-=%GT$20Ip*Q!gp^n|tOQrR>h0&iPn{hQCU+$h5DRY`C?Nvp4TzeAH zB_cWka=A~zYq95A92~h67xgc03&8=uODozGirP~lXBUoQ?XqhhH_E>;`m!}v@T7&s zXfN~fe)1GThXwhfl58wkglR9_26 zDbpe5v*@SEiK?2UE{>Qhc~eXoE)pC6xUTscy_)k?iG34?>_2mDd^Fw;S=Ff+ax+8O z%0Qin$FJte<2sMRcGeoYnz}W}uK|$bm}&B-0sBQq!Q*M~LOI6<)+isxgKqI)_3$uu zfP_`EVXL`(Y2QIN)s5Y{NyO*buW2=ja4Lp|CgS*GQF%c-Y!y9tFt@Gv_F>xXR(=HJ zx$sVa66O3uZk-5GCK)$ZYo%(q#Ue+H*100@MJ46R>-jO`$zE#u-9cPwf6~hb6-rCV zkH+CfNwssOMfLM8J9+IA(z1p9mzX;b5Z|JIBFp(35%`##@xBtur(74-&NoFdQL%=X z?|KBMED&pKV=|c0!RMDj^WLiJI>bAWZm`x3QyZO(HBAn@quMPg0v@!U#J~=t{JW{T zW4|Q=(1etMwLSNK$dQ`MLKbebrQwe)vW32YrKwULc=sW7Uh{H12*Kc8@?&)<3auFt zd82Y(t8Jjoa50QHHEIMXH|;`yEmZ;nbnFu>APke6S}Od8-{0cXHAysX?AasR<>ePT z0IWwj+(@Oj`QIb5s+1RVysxHI0esMn-!}&OHmu{2a){kGu^E={J;_RwAX3Pv5}4fO}FH3j5WUUsCcQ=GYxVJ+gAYtW@MMN=_!iE9mLH=ftT-~ zF=A(0k2%;L4nmMYW~A3MGds1R7T$?@uWm1D6#fdSR`;9D-It4u032Lv=hMhK;H@+v z!8;m(OE>z_)Q=B}HO`TFd;qRQv`=KoAT;oBwSf_Gy;n6u(?t)U)Fi)rCrGK-_~6&IwOi0#x9M(qg!`6lT=U=8wLkN;74{5;AXJ{{Y)&ad z?NxbqAEQqK4z;V`>CFYa(6=`n$Ug)69z+GE17L-cU|?~+7MGoA2q(eTX4gHJV>#7N z#S(Ua@6d37{qwE^G;OYnSJBAQbhH1CP_8=$8vpP@*w^7@|5A`g&jVt!yBb*{cmzJ8 z>`0FTJ(+q%FQM$Vds)CK!g3C1?G)_seiq>kK;ADy7i9OB;`9);cs$%H;N`*m46g$` zkg)7<|0)Lh%c6Xm+@tF(($roY>eSc z&LJ`TgW~HtJtzy7+H!rLEo?+BarZqaEviqJAsmxbU0`mLD+OT+wQkA90B|n3K;4iT z!xPZT16!m&KPB!w&75UDGxKu5>Q1CB`iYGU`4xA|m$Qw-9grz8Egyum0(=r%i=cdK zs!HTINMvN_P=vNlh@VZ-R|~V?^?mle05*2yxgbPeld*vX8LZ)!rNP2n<}%ot7%yN8 z61~>l5c$Dt<6qx5sC^u`ja7es7!%(`-5ruuPX3~`A~Aj&H7`lT-UrhpGntqiCT4<= zL*l<};%zw`NB#pZm*L&$VY<0J0Y$cD-D88@M}SiSon2EpTDhm#wM*F^&u82btO`fY zYXUEw2v|?Ugw<&Z3li=6q*|a7(8MFLBpY{$k0dweOX>-l3UmoXggAas95DB6DZHh9 zLX{b9d{tGrrN041GD|}dE}d3s>BXyB5?NVjd0-SYHDzU_C^^)Mwxk(UwhacwM<&7!mXoz?Izpq3~1p<73R&=%{YU&JJ_rHK=XhC*gP7PRJVC z?jh`Bs2~AE#xJ`6gTfn^+-t2Y2R%KbAFElwT)Y4RC}&Jp2gmcvNO}2bFE`SaUBVOW ztS?KO9fV;A0p;c6Xs3}sGqRQ9(T920`=E0rjHbO#lzzl4YtJdGiVDTG zh@ZzK%t@}_rrp8~;#t&s((9a%(ey<#mZ3_%ULl`h()k-%C+hPfMKb9rz+x749KzBk zsYzkp-QEg0k%}a37=(6M)sSHU-QXH1Uq2wZNTRR8owCAnl*;Iqm3cR_2UkaIvIMM! zaynll)HQJo9G@szHFVd|b$z{g0CU&-W9h5K2%q8V&_n`72t!BjC#Y2RN+Q^~>+jOJ z4|3VAlk%pv2BM9Oe;DrDl__I+3Ejg^bf*d;T#&-OK=dwJ(!O(HC5jcAe*Q{vG8yw< zDSmvZu!Xh2roeI6WgKLOM<~41`?xi;IIBJ3lZW&}_c>E5L$vmf9@31;#42GHA<8A& zqP#N4Wa)^~N_51X-W(`t4q^v{&%bKNwnE6I2Bu(5pLIX(^5w3T2e0~jl+t4l<VVnVu#iyiu(l2hO545A8a*I8uE?EK`JHahMxt*^&<{?#I44jp2`3TaTEY4j08d$ z31lAAH%{ zq|y%HrJ+rt9%w0)6fw;~jG7W@eNWTcG+v_~5X7+d>4sKVp_P zy4vx+liSc^j$U7wV=v(rqU8LE>kaX8u6Ec(tr{!?Gi*7`qXmFFn7t2OOEb~$3t|Qs z{y#5H!v_nutx7$kIiArcP-ylk!gAb%-9W)J9mPtPEt-8D+N=97)3zkZTzb?nBM#gj zEneZ;lj+)*Da3H#pNDeo(0a>yPca?oMB-utI?x&<4tz`;tQWYji<$#yWN;AR2ri(a zJSm24a`TohnUVf0fQj1ZUKmco0pg=yYgBaowq9iTJ2`ZR=%E_PZlYOAh|fGoa{Dna z3HdJLfo^>p(8o2D_tnfgbkg*|FqRjSPD9aIYQzO4Lw zP>QDD$9sUD%KIDL^5M+!<0jrsU$`hy`S45zUrm5ptaEhpbH$K3%e-x7UuYu{A-*@BBGM?vj|@J83a4p&g!ok?-XKU@DuzDftLkHxyOS7g;7ft-~fcex?BF3 zu{~j3A0(`$WO1a`nFU)tD5MBXvZ#cZ3eg3f8oq9u{foa;MB*X`xIA(YWlmX#w(vAP zFxF_svCvp4!?~_848HgM9jQmRU-^xA%>d63Qbt6?!Ty+%B`C%o3pQl@M^~I4&pK{b z-vyT9BwGK@0JDN|$#a|`j&ykIzIgZ{`YjB5M2r}pQ5!F0ZPdYiu}`Ma^4P!aZ*Q^S z%C7#XXoB@ll_mjt0jB8@kci2pW1~zA;9nJElD3;P-k4btdA zq_3LhxpFZRTE;ke4Lr^4qtaW746pjvHVrCvU^DhRx%W>WYexSg5B7&7C;ixJ(5~2{ z<)t%_W6=a%D&MK&opnPi(o0S_)1#&!Sh&eqIxeny-u8=(2ROq*Ji|hnYC+=erQ-Wh zdaZ}Z4Rmg-$PbBE*JBgAi8TCzY^(yAtaEe4p?*i@#LjJKrQi(#{Mx3C*tT*>P) zMALmu$8cTOAyS_&;rE+A?}8KP(h@+=mL}_vSp$Gi+RQM0KJt*PnQC7yamb!&8AM-w zi_}sVDHK*bihWU*F;6s4+mBw*i3q7a@+Lbx1}h?Gx{T@GHekYA7W!bh%^Ez5%Omp0 zgdz0|)EHA|8SBe*qN-OY7CFK@GoFmDeIz0%0{iPU1!iBPib8&_dvRr31hKO9_grr0 z!%M-4P<{&~?(G$grPkB6hmc+~T0XCVq%UrMOtQ{6Tc$&j)WM!gr{X5tzjM}_l2U>9 zf;!~#5)m(|ss9b64bSZ%Whl{3a{4skmWK8UUrww`T{gkK#0NeO3c?^98*uL?isx9( zL5%EDoVvn$;B@xadE?X`ieGShMZh?Q+{kGqnIj<=ZgzFg+b!}kc@z}j`Q)in<=XXi zg5<&)8VLWs-oA`Q_$;7Ozr&IOV>KfXIrVvmSfg7FE)e2F!TLMFXhKc$9!JBBIgfF= z?j?;tbvP2#`|gE}5LeoeshtzYZv8zqH0E`!Om-`ILlK{KhauSikB!?U!nhmW-W~Gn zGCHKM8K-=f>fq@0bdRTrLsNF@XOzOo{l~^nY*x3GnzZ^*KzHS|vP!FPEFIky*V>u@ zY;-Y@0ePC?S9y?r_cEDCl-YCWOJ%4vWC3EZa;EM=68jTmN|TaAf-`)p#_YNU?4ws3 zbcTU^3e}IDY^IM`WTf=w!_%B#MH4_+g!#{vMz}Z`>iQ z%7*5-fB{|u)c3?S;Ppk*7};a~kiUC-2g@5oayvHIp|$y@dQcQma$gp9Voj&os`E zOTi#ic&wl*$Z@A~!P6gzE^A&FaFpXZ77+9dRC$Etodl1b)){l%nf<#Vt1H(=Y~a#Y z2(sQT_JWV@6}KphtBu8<0*C zk>nGhnobS6$KPNNq!QJy;P+1Mg!bZ83gHCFZou6eZmwjhb&GZqYJrJhI?*tI;@gij zbKuCphJ<>pxd~+1Qvv*sj6ZVX!+-}snG)UU{gUx!m;o;QJ&s}{g+{x`kS3m!r1ABC zI7b_`kg77TqHK4rzvojnG9CaB!ZnC|Pf>m7?%Hv%u+NNc&kgls+FOA0Aj&^o0#>|R zrjCguF%1{&m2w1Rgr6Xt$_U3l(aE3!I$32Wq?2+vgH)s_C#3Bkc2oJr<(#TQ!jse@ z&<~YSCKMN3l(VqJ>Bg$)tNs)jiGL!%ODW5P{uEw)0C!{9VbM?q4wLd}Om2da^@>p| zywE-T=C_jBW+T|=&wQ}hs1+HQ%`G%Y-!LbL)bzCrFBlD4__|BNZ3MoMO#=HHKsl_c z|5l7~i$JSMT~<$%-ek2RGG3a5`xSUiN}8?=QQbVqW;&Ab5<ja-=92zaNe`LtNatjMHWRga6w-LeHgZH;>5ly&3m?c>W7CH zxgk%gzv0LPQ5mc4d@;vwM#8jSRdvSvQ*e2NuSZ8$y^f0=Y^#K0fSJ+%f(}>|b6)x7s z5;aerx!E2^h~G<0D(yLY4S#w+i#ZOwA}j2@WKt{}l(3BEp;B*+_lJ#MWzGU?$b+py*C*H!7V12!2zhvG1WD^((@n@WEfS;TNfvK|GzH}LNRKO&r$M$_e8Tr9^jKl$f<#6d*d~zN ze}q4syp?J~ZQZj`^G$+gB6DUyLrkXHDAfG)mzj!l|*mL@Y zPT1kK{OjcUo&F=_#pdLJ_CcxvxVC;cs7h=Vma?6!`54d5&#eC=to3H14LMIzV|*q(F96%4C&RS$wc z*7_YcmXfIVadNAbTwjQG6BK1?bBX3~x8^D1^_!?ENPvf(uYb3}QL0Q|094loMVcBX znJI@SzwuM9qIhUKT_L&(n-$EoAq%04hUSET+Jv4XRe0oDn%(z5lQDaXb@Ap1)(+F3 z%~48*O{IScxdSL!0G;J5*{kBY`q;AjfcJVnMF4AyfMl3pUu`wN|1-PjoJmMYW=S9U z2_6F*6aZQn(ueV*B0(W7!W>Hk1In8e9K2xFF|~#=c?lv{|`ec1Sl8fH9uNP zFvu`{gbV}2Tu0`_XVnk;MNE;+&peEb^WUgdTCEu_i6gFuJ^;~rmFjDci2Uxg_GNiW zx)`;XeZp00(-fw)cPAZawzQAP0pDi2xY>j)Wmi^pdARqbtGxR}0{)n6@5R}@l7~(~ zs%v}iAQzH3+NQ=%o8 zVtF;@yAcOQRB-=#0Sx%wev>>u@@X_N0Xemof8VLTLS`EVfA0y8o zpa04IkCD@?WyvP+-2VyrW#m^hgZbGytzdG&vEcXj5rs-XSX7K&z zP70bmf{{J)zm8nawR&xv{MV7wtt|TiYpDPx*1V`)SHP)3$zmQkEKMjHF;%!DE{YVj z{}s78`l&1Bc6Agfb3p%6yPF}h$&<+J3)MNWhc~tk-)sc*A0Yp$AGQ}*Y-W*Z zjr*?1?BBfxdUiof(g4MTaAui_mCWL#uINpU4feV{sjSqxbd*PGEt0Y~2CC;a3B5{agjg!F zt1sxFF;K$YLl56K;SAwPelJV-%V{V?H@`SvAyG=^i9aZtN6_;r)~kuDZwX;G+MPE< z=j>vRYW&Bq5v1tn5!UH#cqUl++L-xy%FvFDsOR!3S?0=T-#Tq0)+L=)z6bFckAu>c zNzv$c0<*fh&09)PnwJptpVv>2AwY?#hSLb!c(_=6m_atoOp~W~bAv&~a4eTkU5{{i zNw5~2N({`p^#?n@GpBO)$ha$poU|lWya6LVeDu0FyE@?a8vmX2IvR?z+odSy1 z>YiyGAg>w+5wQ=qtUZ0W$tbM4(4zv_e=&IqBS;$FFD7@$wwYyvvf8IcE${bwrTNqy zxsHGfbQA%?w_P<}v??G8lmE`}=5^0^O>~j}jfW8$2>!$5NsgtqUfKri%sY@;Cs%1& zr)c?zde0Cn9EkQAUocTi^2b4;|6y{Qtjw#Ovt-&=ykPHiQp_^maPMDCzLAn+tEZAN zg-Bk})!`1|^^2E3Y}|n4b)4q9v7IwR-uE~Rc{PSY`R);4Nd3!hk|CKo<*gSSZuM_0 zTfJ9A0+Z7MIB63`VD^9Pu~a_7VQ(19X%O^43@k0w`- z9(L3!EF%3=NBf7t>zcn-NQE@m%J8$DV@* z_Hy5p*G+Pb#9jL(Hn6YpHR=wJ_7o~eetdKc zN&G!T2E9SY&lK`|P6g3m;bPRNYzc&g2t(`$83O2Vaslz8m+sA9EhYOKB#w0W%sg;~ z__Qd!hwayskrd-``}2f+_QIlDo_7lS2HP1gHGhiqHo)WuVUv*#zxuLEj+m2lFb14N zF5psj-~N6C<_JI`=<(8^!ZRzIa7^zPVP+(2+t8(G1WjJz@r?s*V*i$EpxXvCUvBBr zqXZ^jMTG+onm>?ah7X)R@<3&w$^MP3B1>ZX_nmq<66XV=fd$$?A2#-nJWB1*Xklju zoV?%W`8XUG+W1A#N`8C0I(0(1hCM#0vDkU2t(s2;UfYtZV~yXnH{y{)8j~3=Pr`#W ztKAj+BJB-vzzf=coE)5Zo2%!~RsefjV21y{x3;UN4cekg>bMimOea3!l%T6%I81@b zO|}L?oLhDQ7xpXu^Z2jd38R^*cuB7z*s|@v8wdO^`xVXoLweerSx&)s`+Ft`Gfm@ajlU`lcl!M$|)Y)3mn%O3amMhWzKuW^V`v8V+p>GULwY0 zK}~Yg9drU*nIX_KCKXQZR#0wvg%ML-g3UZA+vQH)CF6NT1pOiA+A3%)7Rg;D(B;!0 z^VsTfcqEFkKIO^O&7}fgvS7KVYg5uOV&kjF6~){veHnKgTE(2Gunq2mEwO`BBQI|J zm;dXi5V|L}$=34 z;E=f8*g^C{IZT(C*kyBcGHM zILV@#$Z1pzO%K*Ba6fPi#s2$+5Y%=NBuAP*fjFC9()e7v{C3=-8?a^^(b{Cjchie( zi*LpHaniJtY^%pMYA`A6A9uG4JbERrMB&o_oTZ<=+MT5#`OtpoGC;-9SaMz1%{OjR zO{l^_pPTVIeYa5>XvWsaa92&ckDst3>&-TO7KET2{oYX&0TtBfX7LchSIk}!N)WnC zWcbm<;IO??y8OW+ebm2G5mg{Hz^)Ae{Z!TQ5ORBRWYHjQ-3@ic*8UC;5ED$9okf4S zOBJoqmYR4%FtOg0NPaY~DyY?+S>PSZBMp9+qF%qb&b0rTAfr}9e_nBlKDY9S3Eu&$ zTK@Z;TGHwVkIT+2=@%WU6Ox4g$2B&!rK)vn5Ck~_1Wfm!N_1M@^~g@c#&AO0DKcvc z0Uix%1m1M2pNGQ<*q}Y(YH%5nA&W2^^TPL=*}`W-i#gUZ zdk+sr?sC32xw}k6g1XXnExU{8Y)DozJ606HANNc0D(ZGNh@$FjA@D`%XCbK9!CiTo zdb1rNTssAC{+igS`nNW&t&z*2k*vN0C7=ONxzY;uOD98Rva@8+Cy+=K)0?9N#GE)!4G(3r=7MyEt5Xf&x5V+m+I}#5B&e%!P{7w8zsiP^6iHp*n^ za?wvyF;(jfwdeQ%^Q6LhgIEBT5#ldkyjUF01aeRb=A=%Zax)8^I#}in*YhwCUzKU4 ziRLK1c>>(*WMg6a32$JsIvDFDqYtq02nnYRE^jY!59x6R0_wmVPEn%ND4sc^v<;=n zJO6vPkUjcD9D*1dOMsqa`z|Z0sZq*ii_D!s!dYra-d5>_LNoG!UqGKw^k@8r76J9f%9^&(yHEG_kXPvEzA^bsN) z+VT4*Qm8Hgof8_u)Q^(I`m49}b9yZWK{my@K%G$F{ruCAI8cYtQPEL*G?)}wV-+ST z52m-?3xr=tn2NNTY}2zN-4qy_Nz%iYG}TrFH%a3vXy|};?MG?CDwUb#aNo*vG`&UV z?!7#2`S8BenC{B-a3(k%c8@RV-Nbz=@gP#IUfE;B5u_I(Qc?>Hw153(>3}(ds)j+C zF`Q&T6<+t@Ktx4>k6V-y5A_b+nq?Je#^{nW+$f>rowQQ+M!H91Tj68^6Ur+{NfGL4 z`tNApe68;MXwb#c_fLy&CbCj;Y0@>A547 ze&M$ZNYh3=t*_N{3Gjn)5cj^0gp6C@)tc&g74ut%RVP8fdEDUNh%Zg4yPkJ;xJ+cc z&VQWedD`;fPUF!lax4H~7o&>+PgtazmBXd<)+({2aCBQ?4Pa4@5y%isK57D%0?MIL zFeX>b$_dDIyem6 z7I8m$cQJkKgv*LN9KtZ*nc^Z?#%yhM?N8G&bzV=lcX-3z(dk-vg}7n2WV5Q+Fmyga z`FtOpeJOR4CSc1uEm08~*gk98y03ZGo?U0TqA!|BBa;b39|<6j?ZQBo;0Kh~`Fqq9@xb!yGmu;6-SE{(>7XfZ($ATWUU{NH~A~ z{qbf#yz-wHB0BDbtWDd#55->Qyzf3m%ZyIV)^H+g)-y65OvpRA8?FmPZmvtNUy!3a zsG}b`uJ?!5r)8I>tcQIG+XM0~PLt&nF`7M!0y4rKbSLTZ{hNUQj2SDk_JTwK2PBRJ zMJ_`}mDG!hhKDGq5V5g^Va3^J3Kxuk#Yl2&Z1LK7 zh7iqWrHenxEnDW19uf3HV(z@scRyX#!Fz)P3FS4V0J)kAVt9$NPoE(z$c0nap{Snw zbmR4Xzwl$Ocv0Fw{!1J(=yy9sgo95PV-N*I0h!18y;^-yhC=aw#;B}Fc;70mT-|ct}gpm?eRP6`&T&+8> zFQ9nT)zYA>gdn@_5TLW*pJv3)#>li&yPjlm%NT6+<}N#Nl*8OmiWD&zHywTD9GG+r zt#?IU)!a%iwVA4IL$>3htQU?V-p$bb9`5KFCzJJ?-Hbj=w_(^wi^J~9Eo&N&VJkfdf!9Ar^yu-yH>sQ&~!fq*vS#W zQz9p^9rI#wEMQ0}o(s_HN@hprava(}wmgY&y$NXHJlfK#xt3YUv0kdCb%Qr8pE<6` zh$N_>v@eHq_i%EqPk5kJ{n{(%W<9dDYE5lj_28dbp?j7dY?DWajN(Dp5m?L)r-X zYEbqY>TaEyjQq#}mGfI)x=EZj%|IaV-#k7dLGs@eKCoOH$22w}r8RvOiZg_Qlk%_3 z9(Ii}2^<3TloKVy9|8b|DLz602!^Vj#E;#%0Bh3N2kHCcj;9G<+>8#T30k z2<#k=2>En~bs)l&cB2N)AA12-U-2C`3>zrVNfsBi5ieQ{#C(9O=t0ggB~CW>ov-Qb2A;+ z{nc>x7(CB|(>wNm&>tkPg=qVb#*N#W3{sE=dp?uXxIpG6UatU$6{OS~u2g~y0#klq z;6+h1Jx|Xawmm=1G^Po}cd?}N#s!&03v-{Wj0i+}^FW_0esFbv1BCt^0sX@!Pt;9e zy2(h(?@S%0rx)~BOS4_r+dAIN<80*?r;dt*iZj#HRvemT*Wj;JTb&YMIuW!b| zrWRx!>E5olTH&HRCE|O&6GeJ1^~XS}Fs{r;M)iC@FxNc|k-^8t(o^^s?H^oj^1+j3 zuBnA!tZIdV{Mxu4$WU9C-dG!y*Uq}r>T!`;(o)VX88__4PqUb^ObF_Cncw|f>f+n< ze6(`?>~OUlJUk>anxiqATtg72ht{WQITer-)^#_SNo5`B;hWe;258)mg<1tx=-6H( z*-RqSJm{P;%b4m%>q8oPN2;?Tv7@u{yBwvqY3o6CkGb?oKKUrgPG?8B{bHeWw9YRb zk7HI%AFjd&^;s~DpBt?b$qR>@J3Qq~_>=F#uLrIUdwwOe_I{f3#FcLMw^>mV)ETB> z>I5OG(NW@kmXgI3W*rJYn~!C$p>x0w^IA%mJsN~j?Q;;;SGTo?-~k&l?G;ca+X~mr zKk^;5`I%$9RK<&CE(GQ*tA!xv9a=yF-#6En2A9`EY5!-Rm}0 zwT^ab11GU?Sto!wG03f`&}eah(YgS?tXP4c|F42la(|QR0-1-dtaqn*pgC_?O1mkY zkQVH4JEMD%{gX+TLK$xw43&^US0TnI#^y^n*OaxH9M>jxw#HH34RC$agGfx<))AL^?|kQ{fvr*Y|C1knDYgnmx&nu7Se{N z9U{aqR9I6R`SzfZ>Z1#K4PeOnf$8=Eedk52`qekU=~VejS25ebddl*30sZes5!WLg zh_>HW)F~MySCzI&-LLX)`<`ys4QzhZdVa+Tk|FD?@E`ai{T|o z*EbVq&u;*6{CYZaoiOLJEgfLY2OF9tylQ3F62Zma|4Rg-Ke?^^>F_X7_ySJWdTGX7 zB)|)b<*rtGn;X>8*e~hn`p&2f%-dP&!{D|y{T+&B+V1meXY1X}iHcjB_SCW&-~}_q zy>0?zn^|vb8&%qx(V8`Q4FRgl9@bu;0ovT6i`3X|!*0&dJk()TAFmBIka&xo3}_cJ z>o0We8@d9kS6dy6K(knkIJ7gRgX2ggBtDN(OKEiP=sdKwi`1`4a9=Lf9oma_WcsHT46WHw8ZkGJ66O0;-8`^_>NphGi+||~f5Ee_K zsDWc&G@Gi_fBywO-1c}A;^AFlXMY8dU0r%OR$L#o2~A<9#Y6Yk1QuN1=oo!AavoJ} z2fU7b?CF1Y4sNnOD+qT5*L?OxD&zK7*u{W2)wYn$chi4^%aWm~?nk+y!# zTdJxtv{NPSbwTcW?Q(ETv^qO{A{m{bdqW&=ybGQ(%69OYjnuus(cRplSfe#OTz0hN zadh1s_<91h3r|;lVQrne&>EAC@XA}TD$dq*D)R$@nC)p^*8IS6<;5#NLiV(+ZL5FJ z3EWAhmv9_!O9T%5=(um9)@k@;+=EHht`eFG3X;{bSM5L0$<`}Doqkve+%YW)nr!Ay zS@%cqhtD{=yrCjyY5uXc4#~2f0exs*Di1bo070^rCr#@@W9Cw+P1(SUxFd(-7C{_dZ&uR)M{wjpb>WCb8w9jqjQrQBRKxGD|Fi^abM6a zS1`pv8f;FpXDMA+{Q17LunPC%cTkuFJ%(#B<4?~SU1D{oqyy`fI*d`(N7*bbHHTY% zt;ElmF?kh38e4v-wI)~BC}b5j^KA?MYz(e2GrVx=x0^*|076M*|2MxY%OuU;Z-{1I z^5=|A&`TX(i?uXf^v^1cHnK~2x7G4qP!a(t_Iae+W(Hg=yDO!?7JJL(j^w4%R!k|V zL~%=(ar#bdi7Dv!)$49k-z#nD#1Fv#AG=We#x5lVGZ&Od000ei005}JvCID=7Dsw} zJ9E1K-TrT3U$Ta#BDO@mPmbd)+Tp?#s;l^ zLjy7)rX)mMoE7jfQD7Tp6f6*SU|ifAy{Yn6RmmGPc|(1BhX(p24`KO5LUQukQL6gW zg=z#-3d@1VAJ%=tgYi}V`QghJ|Fx+kbKAMKxqGD7B?Cn&TNKQJy6=+slg@2OF(d7pH>onzP4G%hIZcpCE}* zoraILiUw>f`<*i$wvGcDm^Q5Oetfh| zY_pxXCoUUL7h5vlhkuSzHir~l>d%(AF7F4|=GUXFzszgvJ+};&v@u4G;j^^1+jI<$ zP@g+5S+N@RY+dVGo}YKx$Q$p{AlqL<5dc~)vX1rnw_K_{l?|R!8kYUS^`%XHvaxK} zq7=)WHASBHM|mw@bg~~^RD653Z*7(Zbn^!+0++V^qWn7v${ahPsS^roWnDU9%NJ;U;G-IJ!I`9(lUYdAd)_XjVRf{m?G0ex^Klq)ed+)?Gh)s#HC0 zC#f|7ngBgRdWyn^G|S!5@%58zpP*Yc7ZuVvj@JrqX#5E$W!YdOi%JVQSJmSpH5Y(h zwVMR7^vd-2?ggRg+4gLK+IO{W9)r}2-}XpeLd$xCtEh(IML|IO1e*>>mTgy6cD=UN zL+@IGJ~>3bJ{H=jLhX8>t#RNqBP$(ph)j;C1T#3?O>A)QivX?V2!?6c(0ZhUml)U< zoa1(b>&iL^?CrgbN*P;sle3r17!4C;w)8JBR~Zf?b^3fqW*GpV%LhU!HJ=c-SZ?(A z`DXW0+A+<`txS>Y>H4|yg}FduCZCHfaaw9r_T)--FAW@d$ez73RY&n24=Z>G%|DGb zY)_sR7Oq?HpfNN~yf+wle}j7}@-cUKp?79RfbQls9Pn;bJ=nm<@u%}Rj}!6*w4 za@jzT*l>C7+Yy8vPKriSLZCzDl_XA{HgRK#lY;6G z{;<#99nJZ7rJSiMn{T~!%$2cI%vPfDWFzxMZ}U;Mk!?H#e=VP_yi!QttI-}HagI7kS$q%*6hOfoX1Kkp0Wkc7Ay#|hqIX*Tfa?`wiGU!l z!)bX%G#7ii_jwsOH}FQVA*e!7vuSV2iK5;ew>F|euR{UB9-bem82keZg0hbRvMR87 zMmEcY&|*S|_(n-43>xH1hkb2Isx&1`5a3z}*x!di?{2nYadlf!>%P8^k016~S<`7_ zWN@H!0kg5)WrCX%k{08j_Wd+38)^#ORiS;5KyCG=!7I$J7L?!U7L;LA4&C+yS5&}i zPjq9u#5XIM+C^Jr4bG(~uQ4id1H2!s8xp@Gi-=p>^<1pcSU zH^jygkOr|0aEB9YdS27j5YHE7I?h}0^k>y&L(}FXxZzDHJKU3pdcQ28I4DL3$5|6w z7)Qc&o`5{nQ8gR!#eR8a?NijYYQH%?hT{$T#5`HqWKTEfUmGX`V_3)aFeHYYt$CGd z>8_Oj{Xy|RCg$@|X1yh1KQIDO9m5fIZKoF5&#hWsMp^(6zrSVN zSyWQz&Al;fa+~{DyYek;EVegmbG{_58GvzZqbspNnudTDU6(Dn&zy;M-1A76ek0uj+bu%ZK?Qv@z>LT*) zwc+i||2(cRt3@@nG!lzpmq8}|TEWCXDX`w3x)U`AW3>nehdyfmSQKIR6FXWYL>af42xlVivHhBNthoHwv=!3U6#|~Xtk7Lsk zur0#qWFKkWdHvzgJX!5H55qu80h3sCkeU~j0_P>j3oy0DvIM21ol) zCbLn_G3j5fB-?;b>c{n7fNcpxZ2j#RNiCT;Q@u+N$V5uZ@mCXJaMc)|>$^KGT$Llw^eAyJ;DF}^j1IgIS^9QH87B&1LqPUNr-W!ijXytcx&pHi$VR8sdsXL&wAb)ueWY=MiSUfBRdc#G>cb1IJT<@xkmnu8p)XHq}w7w%DJu;DQ@G$IDJ~w zYGfHPfUze~X{nK54g~mp2Ea#xhBZ(246>4jV!d#b)l;Ox&&yF zFfPlTh(;Xlg~9td9jCZv-J0TTcLm!sSe(pDMy!@G?S0=fRC7>%>>`ye!^n;VG#l1Hr508JWNB=%**ya!|Suxaapsg`{=^AVvNX z`4Hm>G2GU1(gHi={|{a76x~_a^b5x6q~nfl+qToOZQHhO+qP|+9otU+F(>aiXXgE8 z&6UluBl#($8J`jo4bhE^FQ8E~#WiN^a*4A@G z!M{P!THCH-bpDpzAt&5evuNMoSinJ-cs@>6oT2K1C~E_t)e+cB_CoQpnxC{b$>#jd zBc8@qcs|f(CqD9xzs<_2kCrwI1cLGwSk{9$MP#$|#@?Yb3q49+U>ZC0ctty%dv#_+ zUGdnfRm!j3y-1U`M}^f5KQh#A^A-pat#WCB!m#{S0499vEM16e@_zpGjKLQhICBen zw#fm9`Hjw)@i-pk$S_&~n1OA3NY8B&jo2s{01u}@>0+-=O%znCP{!4Y5HzeqJ}O4W za)0fJ_VJ7cMxavY%R-f5P(Vm0*c|RMJHxt`pkr6!MpQ0jPJeF*Q@m_70PoAfSt1DkXpXpA4C4O z-mU}$vJrkt=eKT+SmI#gcgpEv}MoMe!t8+UV9n7}_J z4PDJET+tz9Jm(DxVdP;a*X9QSxXFhUej6|XUA$uBHwe(=eH z9bRqpd^$h=zDzLGFy z_+c4Ek1CFLT>~}3!RCMQj zJN1LasS*b6UOb?z(!=<(`0K0(cJ*Ll_mg8>e9g9Ruz))EJzAqOjM{#44r%^PC=l?p`6`HL3Gk>8ou&n*A`^BZ5M$7@>B zQapa!Kpn+Qh4}(}1Yy#MCeA(X^Mf z9FYUdE)XSjiwIaEv3A<0X9Zkk>uUH@#MJ5(yr zXA+f45_S@UU5TC&9!o!uMM|;sH`>)hXFkjUtF-XikTs8xDE~1+90+Z-9yoDr9{2+= zz5ePK!<(jP(bWAP^syv?b7;QNKwqZ(eS#?qQH!N6p;J-4T>&&6pGg~vVp%!u(-avb zZH)E!=XYx`?Ret|yJSrmeY;V&u)?ruyzEm{RHxB$LM&W-Aups&%9wBjLZ2piQK!mR zVf~0%EN;ekPI^l?QS@md$H&1raSbQP(5_&N;2CoVP%KDXQ4 zxB!^NQG^jDBy7<}lzXcg1+(~DSAO-7YTk_c4}#y9rZm1*byHfR*WT=V=xd)+%=N#-y~0Sh-@GY)(!kQcTzHa*gA870b$fqP>D%+b#*7m6rvC!<#XKDC z6w&T-hl#u%hVEv`b7J%|cX~3~RhXGcGtc6*c{zU_A4PpS4sTRPlLajj19p;+yg0m= zxr5`C-ECEK1GaM(xZxEyjhC!VyS@)}W2;+_%Y_45l;=pTs2&^vLSn+I~7JEjk89K)~G4j~O*K1w~pl{qz7Eb@F4@7u(uF}z7E zFV2bj6^9fJxQjWc?;cXq2yiTEII!5Zo@(;qob<l&&gSmFDOr+%K|sNDUbr{PjoS)3>E2Pt`B~L+ zm8@U-s@aP#lM)h0Ge3jb3|gr2nN*Q>VQv4lKnXuI-7Y^nL83hyD?yVpN3=Iv{s3P; zb`ZxJtGhFLAOZV*@~GRKH#%nRIS{|*$A?Tf(E3k>ips%Op@LAI;_{YYq&dj~5v0kJ2cBpI__(uA+L=MAx)FY7MQ)u9O4 za!lJtiso4FO;o1KDuB(%4As0(h;&lNIYQs#l8XPBmYVG8?+iAi=Ml8Q@KVeow(YC$ zk3C^-q?`lTsOfz>IYVHi{Cck{m38u*%vY3ykHDmaCrkcFkw1SFBE*{c2~)CE52Ga~ z-FgVRr8UwY3bj&Tj@|p+mJwYi3+#BiXwqNVF6oOBck(|Q8vs!2qUA6Y;VU#S{i_y% zLZmN{P6e05e~d&u@d(UGL4{E8^6Q%Fy)CtD;vaq8Ab`E%>tuM@1Xe7f#~UJsu8Ngw z7te|vILjGa z1_fXdUhw%7R6lYg+D{?S2EW{SZh@?yO7wkgn^YNfv|@F%;@4X?20J_AZ9Z$hNI$0W zqC+0~yd@gVEK0ln065m$Lo5+DwxC5|pgiD2B~17JnVM9&U`B>^FWs_^5(cpYSB#uf z?tBEs=^suE+NfCN^#4xZw*9PdZjCG}(g89^l|_KUrirIx*8MXxAq1)*;s}|lD8JYG zw*1e_yV~YLl=ifCuoa4S{9KWTA_Q8_uA9+Htqb~ zG$gp9t{e9<~uX8zmDGOVpnI=%*;kn(%LzW33a6M=M4_svwJL zf(39MH}k`pmR=yFXhiD= zUljG$J`sa24&{jbiM<~cXt-akX(V2Byq|M=ayokTKEKxpr6%k|*QcV~MqX>!?A&UY zJx2ixMrmGb6>39XMAV@dMGLUJt&}%bz0VmL7d{R#xI98F|7MjPXwziS>9SuctxCzS z1mc<@1ewe$4gJH=`z$fVSL<$U1D=X%yebeO9nKn;Y9%*A!qqxvB2Fsi=|oI+n>;T1 zN(?Pq7l{g>Jzb}p|K;Nu=$E*PjS2cukNSiX}}u^ds-L^yEDeFB1bZm`J8hEhgY;wJUbgXCkW!D+IJW99g4Y35_ESh zV2*h)2U<77X;J~79#PJKHwLS8r zpyqA7Qn*+B84~Mj=w78AnhSrkk&P9RQkT`5?f)uRcD?2@Wt&t#+&++kplSyjF=L6t z;5!j>67!(PqSj8)@MC|HvIJt;LIT)LErT8`N2rZwl%`&?4_SO>lcR`{aa08~y_VeN zpx4#FRqexSci_hqO}H0RbDy3mshC+p)xNlvuw8!is zndGSD`$SkNKd8>2S~pGT@{7U07> zfuv*>r?*R}=~J+u5!DxdNePYX1FTl7E0A}}8}Ub!CN{TU2qPv4Bjl1OW6wDrYzEH~ zDm)_LBhliMD!M?GhC)YXI6;EFYwDARrajw`#3Xz|9l>8P@q>4aSp1XLf-#iB>o05m zeo;2HayJ(W1n;$or}OITkQrj%P%xh=^Vxs)M+R+RtC^@IS|4H|8;-6-#!kRK^ZOp%k6p0%4iiEJAaAWgFhU zBthpN5G_%w5|WlXGAriq(3Hkt8Ac~0x+A(2~aMHz1bR4M9?Vx>SQChlw7|J$l`vb=NwG8Z5k4aY0q<{G@wEF_1{UBPsn{g#} zO_20j$tK?*oX@nVP(~EFl^7t>U%`)Vd|y?A>5gufqb}qDWQ0xwe@zlKS@?isG$|v=KRuv}6-Xm~ zH~vdTod{`S=q+Q-m&g%2PdAm~*1?oOL4Z;spUXXt;S=g1QC*>Ycn{*{mX?wq|2rXV zgaAe#bG)d~o^oQPC3-4f-c!sOXQO3m5sJ--u=aElcB=ZIoEl`(9cqwB3#dQrfCVK2 zX<|gsE}1!w!;qnSWP;C((A3DnXtljTvBk~j<1Mtd*Y#A5t@Q7Z1Wc4k;J&R(>V6N^ zh6wNPH{A4JTo9g4`r0^(KJp#u?RazTg+M!C0{0mzI~wf@`I4v@zo>R2`YiG!VZo$z zj4$aDHHypQ^z7pne(SB**&Zm^Y*ck&C^Nc{O|3L^J_l^_SHvE7;oC zAA*s_Q zlc-*UqZd)1t2H@8A=NP`RUIEOvFBuXlAY0)sS57zRyHYtKtu8VvE$)BHyJ(jcUz!k zF#-SD$BP42r1yk1)2dczuGJuP)^E;%eYZZ7B$L{|2F=A5EUvj7HFjfo4G>IdvhFiy z6#+??NOwRr@;D@rOTrzNpQuD<|%Zz+6qaxRJ&iBXZX{>5d@{xq~ani9fsg};Zi z5{{Ba!Kv{NT?U%Ej#2&e?uvMKx<;GQ$$ewkpc2&{CYARN4;$egT+|ERrLPDM^l+1D z5o48KBNPf2@%(zCfm1p`ph}fTyCsUNnFz$3DGof5B0d6I13fnJlCLV=X|npF#jR%WR=#O8OY15` zrtva|=a&S{8|_y)kB%QSSr?6osH;-k;&U$Uf^fq;Q2-64y!H4c!z_}=ckJizbHW3- z&p|{`|AI^m;+-ICCvo_XPm16)YH+oP)5A#rJfj^nxy(IwbcLuDm0jS7ZM|Ctu7cKc z=VYY<(sy{0c>oWhs7-1xOI>%R@kZpQ9@-&Mg|yUuhIkamiWMe@tRda51s?3{9P}C_ z2iiCsEz2DR9_|-0+-fcSYX@c3VHQoVm~cn0x{Os%;A<*1(T9jP>(`3>H0;VP>xn^u zvgO{Urhr|yr0t>!7-NLk<<86}6%ijwMh*+m+tZrP@nGtH-vG7k5uXV-d&)XN%^1W zI0wbmGR@}Bq63ASP&V8! z;qt3Xqnv}i^b@`u&ze9_5B40dfJe@cZ6B=GWao{Iz6|Z_09f3tF?L1dw}t-HFcKEe z&u(G0l`G~=SLq3g!6eu%I-ED1ua9hP!&Fv;+p-9SKLvaxpi^O@1NNWwxP-U$!D1-n zX_h%Kwz~4`gJ0yo71s8-nis&&8z!(ZU5mDr4wR0c7daLD4t{a+d;iY;3&=-KH#&f< z8`ojr@oqSp&hEdv9l+JBYesTxpmZF8p5gZ&&5P);w!IT)Bn?Hb$XwGraY1q3ku*l9 zBGKe-kGD3S=g6Npxx#!(<{53M-*l^s0FXSm_u*29McGulw4%{^FB!Kc`j(Z|{=(8y}CCcVkwL#cMEKJ9@Rf?*OFE|2cd;9S#(#+E*Zva)5Z>;iWoC3(Ln6TNB>feaU za(^2?f8=Ple;Qoo%BRjS&_xQZV8-FlE5#O9j$2rN>6hBvyYON_?5BTj*B5v%t^=Yc z|L-4IA^!!86__1D__dp>!^Utd%G|L*aI1f~S4(lvEas{@bK88^YANhw#f(cv9`>gB zvWLD`a!FD$>RTX7`!%E&c!F_IyFr`;NeCFz4#d2#LI@a46akUj_&PvZA&XcpkMC9N z>-&{;`VMqgCww0yT3|2wVgXdUp7k_Us@AYR88lqsBfoKgKI9Kj#$t^VJ_>ca6-Gt? z0->QT9c}0Z3rw=*!eijX%NTQMuHTNsvy}_wX^pG`F<)zxD$R_ga1lr7C@u*)qpw07~m6chLG*^*L zdiB`5RmL&sOk+82krNiJEPnS}S7|}aZn;zcrg?#ptrhR3!(r7rY?@hl$bz48a?B=} z$^l$sIn|`Gz$B_~F7)Y;PO}|BRabi*kL3;_2dg`2pVn0P3ADd{YZk&@X+43cR78OK z!8I>(Zx^nK;$ZRQ7~#oh0o7NaEMl?_eMPQZA-yE$Uc1xGxmmP4<&nXDAdnoXD=jLU zTwG~KbS6GKN0ZldX`6vKz8~a@oCkc0=Pi0;Q&3@AxeL=hjpFWtLKwG za>Bl(c(|*1dr}c~@~~s;BuhOQK^()7Iv81cVQNg$UP%T2lUYN=l-7_h|p9 zLjHDIR^n%;l9POyyjzRG-lF@KEZGCEZV&L7caJ?=+;60v^%pOZ=fv*r+2d4%==AeL zT|-$D`%?z^d;}P$u?F5+q!&je#C}Tt%?FAQ3I8T3XJ$buTtW5&mb#GhhViK)krpNK zamlI2z@Wh(+$g!%=3kqdU(Y(!`{n|I*yReydz--4>cK_I)i$A-!KT&q5Dm0|{)ev; z%Xm&}*c(oK;D_|y!T|!J{BOOR+c+6pSs5ETIqO^L>N^;k=^NWx*_yil53^;k`VTX% zj=KF^i?8J>tMptzR$x$o)|k09IZn8B`Jh{xeIWM?4 z?bk=zj3<+$^3P7>b}|VY5SQw)wj0lD*B(IjV684V2$MWdm1uy5+p)WzXk_t{xG-$- zf+TSnu^=F#LhPYEIK5Vk$WT&gxSrc_D0RcdBt2PXZ8@ErxETRWXrKZUK7y2nRSb`r zx@Ndu8g}HdC}rUxjZGt*B0jh%rO2KWMxw&5Oidg%WLcf&I2v~&=caW^W`vV2ZL2`L zSC36F6%Ew&-6?Ppk>nGpVb8sj0sDi_s15e*I)-kZy8_6}GZ#VEcIO z4SbfGv)M6+<3tSBCh2>MdOljvLlE{WOC@p8vu+zzlZxF_`eci@2F$elM2~8HQD>&n z0WsznJLRf7!Mv)jT57TEc7g^6c*elF_2mw0H6jM^T2E??qP&M_sKH2S)zUNbrryD9 z$+ODl+_Po67P6)uQfw!15cN;><~ zqF|UA=Ay)s?s?TCSi=Y)GJJ`5stZ}UxE#VZ(HP3rxUsto(@9%zm2#xA zE8$){5y6ter5CB}^9Wbn#ICm%u*T3Q=a#MYZ|3l9(9_>YQldB!#16`s^@#QS42=J; zL{XER@bLDxAd^!YO@Apj5xT6IJV`x**VCnDeG)TS(JXkTMS-scHtR$ z7C}zN_rL^Qau}*gm!pU4vca8`WL%(;o{Pq=m{idBUWQ7irL(1VXo| z(;A`fP5lDx;~!*w%|^$um5amD!p^g^rKU;X2>sX(+U#WITJ>VSO;Ga4I6)vjgC%zi!HaN6D&O(=g?XE1+)QOZLj+!c3$r7!M$3n9qPA*NvWRm zZ1pt?&CyL#dyH#CRo%hk-?u_rs)lywc@q@SSBbjPouL`yZ5x__$IC6Y%exWEmdi(y zo3bOqtnni%`@Q&nAxUB+FP7R7(Uq^+-fxsV9xX?@luH#nUO$=XndC+dzeV;?@BXH3 z((Bbrp4u7?yeD9Nbcl{;Y5;k30BcUCX*PGQ3jWaTmh#0Q6tyHmex&4J`0^FtdFGrG zeRG{dZ}~SH?G~F|<7Q2Bt3~zBIGMdbD{r`Q&yE=Au`5{!(VB!nM01B%HT<4`RSY)e zu9SdahIHcQ7*jV^_>2Cu9B3H^o~_hmTHvLX!v31AF>_2TKVcYC zG2?>tezq#-t!zUTi4Fn%SdT+*M|H+ zLj$1oUpW_4LGu2{ugf8MA*ZoSD$ri<{>e{JBJa(&N{D&0`2#b|XFs+alG5O^=^98-mZ?Y0uO2|FajV^mN?Yp&KV8il8lr~zwU zH(-aqCb4#vRhl855;1-q20wQ8Z=kTH46F~3_Jm53G_`ZEAbv<_yA_iSAQ81!2;}vH zULb=!XrYzw74Qf~>$@-=3(1UxeQ(L(WOD;;3Y4=~y4&{0T7K{jI{vgCXxg1hH4wQw z2GKWWf{X|t@8pW!2CG*_GD4 zT0kyk{nmRp5>Of9=zgvXe3fO5@I7&1#nQ0?~ebPo+pN*RtZI+)@ zT3GDgD9MPTq+6Na^sBuQ@iY0bL4&bqSisUyPsJeLeajSBpOHc?fTMr&i=CQ9uCBzy z*A4tEw8ORu-F_9_)BQq8=EXi4jZSaIEW2l`N(l6tOq&}sSW2YXh?7E0MQ^+wrq8B1 zu8k`svUJ+p3qmiak%aYSNXBnP#_NMjc;5$)-G~_FStcux@h+Gdl}&S!-wPj!FpF!F zr>Fj++|6mEr)pDs=+&;iL`?x4Po8gBRwfRhAB!7;%IYVJ@FCXvmhThYG7a>0+`msvV}t7 z*8swmOn9uBZJI0ib3Zn?>?uuw3G2RbW+IPctl0^Ak=u}sPns5syve?f3!W+EA)$S$ zc@v|ayEf5mmkU(2j3yL$#3N*4AJP!O2c?y0R*A_rg;l4lY4QWAJoTDM96gB&^99&~TE; zErJ2K8ivJ5>UxJ51r_LbbXUZVLMlU2+U-od<>~7!G-@DGpX~b$_OhT5^A2suU!?D3e;IQIv z0eu^u&#_$I*+gK1T+=~P#WU`;XF(0I6Kqq`rJ8ROcO;06H)m~y!v0+oSx4@|vlbbk zEm^rK4CQCPgx(_r?2#?fw+OsKCH~955{oORtglPQjeHhaUg1{>MhaaVROCN??-G5t z3Q!$5W{jK70O(f8QG9~n^#M_p3Hi=M^_H2A!R_@i>rmGsCFzc$$5Ff@6~xW85KDWH z%FRbLZBTgWByubNVE7Kr{1|Y=h%~~?K@Ug-hZ`D#fG{Ks<17q&U!t2U_z&0$aoXP1 zYPPgEZfzgnqF5Bou=#OllTval@Y1AvAYum!yykXu>Nzz^;9a~ma*oAJttW7e%7=?I47eNsY zpf-{AqOKByA%Gter2ikJZO~Ha3-OR!U>Gcrr2|z?#D9ryM!wQ8n8%CqBoO~1Iu9cY zPnyGWmi8cJ5WVt4^s{q|6x)`QlVpY`beB$mCtAYw#_k_z5%6ATnwPx~04_Yd!{U+3 zQwaU)!dVIC67UAb$V(q~30W0^;M1c*(92B;%*qm^i}UR3Bp6QD4T zCL1#@j%wzWx97!LEcB3Kaa{%@3_kGX6M=gYuz?uD)(g`86l_Qx;0fR-)S)#EjO?yU`FyzB^X{m?F_K^5SBbw(J zWBxMeV=|lictNMR>5#`gU(k37r6AAhT4p~a75gicVk&=`YIB1Vkn*BW45L-Z z&7)^l*^9oHaeIcCXnacsA%p%w=aT&f_vc{vb|>dPwR9yH#ODmSD^Dg_4cL^2QIJV| z0o}yw0dG3!<+hveFI=QYgDgwKd#p;U(N1&yz6?j7_T9it89rMTS39QS;einF>AzYv959E24R3Tt z6}X{?5XxXrSEb&3yWtG?9!DxjnqFdF%>Zo>MG1Vpr-%~yEL`bL5LDseWvQj9f=&9T z=cORp72OIb@qobEBw?6%`X@4U>ak}{hlpU7`)l4)<}Y(ZW>Cshft7Msb=FXLZZ&6X z8jI{Q2HaW!aWG+wX7^thowCAj$`)D#IgW`e`7sn+sFyw>czT9(x}xLc=jOzrhf1;w zD@worBzUa7AH*zxb39&Ru7tv>ZyKuqortg3@v-P5HnDmI0il;fCmaY`O`+isagfr` zrDaK2anW5|CADn41XrQdhHV?lm@IOrzQSsv$q0td8e|3mAeWy{HL&UZdjE(@X6^Q^ z-n~ksMdW_R`g{fP%KZzzct@WSTX)cDy5s#l-FVac`t+XuzidGN#ghL)Lc8UR26nJO zKquHhKm`8}mi+$*LPpu@QmRSpsuY}pPyH}e_XrL?F1XU z$kOU?u8GKVA)AWj&$;ddA4zCl)`l%dczfYOdwYt#jP?czF4h~3gpEd z=T6czeUa1AokM94Sj72EnH~@9L8qH2F|VZ!XET=Pj9<&z;7nOFZ2uR3d~UlI>^JZ< z4D>B{f-#tuEm>p|<6{K_ zZc|X27LV(y;UlS0R>eyqrLn+$z;Y#S=Jqh0nCMRRObs)kZLQ<S29-Lsl*xuQg7Aa~pmg0^BVChne z8Zq6IxJ!XZxQ@hyvm>KoOFA^8=fs5N7Y>W5X_FEIMBNIE z1NSIeDU!!mY`kYJk%WpDVkWQ8Jh#JShSVJPp`XSRh6r?|;n|%pFF48(Ls3SHzu1UT z>@L%TM5I&6eyriIU=KfXT9#6II?4%4{A}btl2O87Nm+}q{qqLnCvy0x2_d`{QOf=G zez+og^3RCwLhm0Zrl3jqb&nP8VQDs=cBr(l+^d>Xh)-(=qbVe)>}oRcH{{DC@-WVmp7wQbh(5b^?`8|gzq)R`W36&x zQTG`B`A&PAb*3cI09RnomSBNczYW!3I?#_AWI$w9py1 zUmI$lNVN#e^>-}H?sIH2omc*u@5CL$wjAggVTIuBJ57+IPrFgN{q_dsglsm#)}iz8 zGC=EL^OoFo@4J8OH3MaV7=HWVm9E z9rln(%QR}b?8B(mpSL!lxRn%=-`H2RV%E}syeL>YRs$H*rU9qxTV$!Pn2~3k6fg{M z0^gq_T2A|k6Gmgnv7_rFCs#`GTX9s3F&VS1}M1vNFABZtJeAo}y8*Yt_Un$1ZhzZ24e`8~CgPeO9!F z1H$r|*l#{fHE#4zm<@&ytLIY3*d7Pk$L@9fO|m+(y(z-5hzzU@u8Q1xc@?0&P<9b4 za;EP#o{gAZ(uJ~V{y2>rN@JcGPPhOvkoxKo41Ck zvgNAm`plCEkv4`Aoo3p1Y0y-CkOnH%uJt|;$pKXW2wziL2iV!12S?hRByHUacW(zzB;9gq%xZqmzkWGo~^ z8>1|G8!u(tG^X2urCq8D^=dvcL(=dMD-EW)Hf@ zqtuM$jjm|Pf4HC9$S?>$YL17uOH}?uCMj#^uKdrIhSX+Q_9SBW(vQ_G{mRbCHXv>W3b>69E$9 z)+t2q|Mx0I){1zaJy87HCIIr2a%@%$-+j2&4j*m^b15`R>6t!)*9to?Yw{e*r2<|| zrZw7>Q)PVdhHI3g^j{&T2!Rsi)?)BZKRoB*ipyBFUuq#Z!xu4}pDHA7NxGhH8;%S< z01Z+mWnp?t+t_H=+G*GUwQNSk7&2gVESV-($G*?(p(Z;*Ym1eS;BULZo|=rEyF-LX zwgH}>-Xw1b*nt-7$jUAbKxPC_R!{j`rSjeo>mGl-oUiH;Jt=O!F5!kfxn!k{#^T?E zu~veZh#B-;iCHK#@Eo9D+A_a_`i*l4Tz+$7p$ zt5sO|D?gC~5)EBv^`Ym?3s~`7ei48qB9xVA@+1ii)mAvKpI2bq#UB6BQ&7IUW6g?c*A5H5)sKHW6jzj5Is!!Uj2nwBE{41a8{%AJ6G2M|olsQ{Z#>RgZk0PZ zYnkyMl-6k?6b)u;Z&BHm=ahP3UQKv zLw$!`k;Q;on@+Z)U)Sy_8L~5TOM81@L~S&PQnLrTPEa9vf7J4rdx^UfBQ8qO_;=AX{@3rKx=Y=BScj4K-4|#oGx?>6u4@yt zt3v;0m2B2>?f#|pwcf7@Yp{zchN?i&HF}O}eDn4d3ZglykmL$Kha+a+d8U3X`V6nS z`-|=D0E9m3cMv&s45iO;XlEpTO(*}4%jutmm$p@c=!_hKdm7W{nx7VPm=6-wQP+#P z9quFZ!_AE*nPTFeU&SWm1zBj7cwIoUy?>`iO-l;m-LN<9IhojOgT8TmaKlTZ&29Bk zrpns2iL)gQX0<^P4lDf$UyoY)VG^PtjgA6vWJ+-7dGse1Lrk<69YvXw#qnvP)60bq zO=lpGNEo@WVnvjNg$mM@2$2dy*V>hq#7oc2ec)b2_eB*QN0bJ_dZLI8&%jW1X2=L7 z$XT%5Lzt(!3buR*1wzVAM_^`NLrV*C%uN)yxxR++ajQ+xqRcNrTo7&*ZE`k1r6o!h z)0Zy)RV7*~WX2fDZwlLr79a(nJG$y_VyURNIv?wMMSamG$jp+NjH90Y&_obYjuZC{ zqwKBY{T20qk|0>6fZfw!%$v2$&LupEVfbCq1^QiZ1?^~j=g*o)n3WUN+p78mEtrz#%txM z#mHIgE3QHB8@^hUlOO2rl>lsY6U(WYPp6Z4uJxAXhxbNg>wAGyUMNlRh%jFbx?c`M zY`>ty)Rby7QT1Ss9t1U|E8sz<9abDoXe=LVmC6MRg2;%Xm2- zw-57)rLjG}l5~sd;wHS&N9pZjfGMZb-v7ciG3VwAMz-u?$j!{Mf_Kg1v(RCRf*_HgJ>>S{ncdGyLh`&PZlWO0!~A z7z3p`k}x%v8S{`YV(#H89=%xtELu+O8zzIW?}$+b5{clW;t94RNbH1X!71tWkOr)m7(8 z+Pj07oDH8iLLyUN7X#0Q7jNAV%Zq+zJHGJxUo$<}F73j;wa&@x8fHD=5^ySB;WmYa z(W^TAB@Xa;aCFV61qX2C|8g|{6Dl+40cRF1cP#|78(r(DPPhSj7?Ef3S4gRJb5~YT2x4JAzo2zW z0r$LB#M@_L8luQrryCAdyT9VLZFALcel)r5VJaHgj0?Dzm2L!;%fvF2t@~bSq#MA7 znA0p(4{!ztps|)(-oBjN>||jw$6O55NoDK=o8sh6ZYlQ|9o(G(+)wX{L|=&Sa2qwt zX#c&x=Fk15O`tere#%1UN5lV*rul!DhNJO+6ir))pR1cX7&|)tw?=eb=xG^$3Z*!K zL3WTHA^2JH6F!C02{>sWr9vop2?LQeC~L5tm<*fiB`e~?^KyMBSMIcFFeINH?L?@xeA3+^F1mUd>N1u}yV};YDHlEu z7(Z=8nHu#FaRi{5Tse)zpIL=+PGcpnYpOvxJ@S|K?;I<=W_KU;$UqCgA;brOQ^jfA zSz7vn#3v8aYb=w0U&yinIQG7qOg-^HF(*Z!?!$k>|JboB&l2&e(8vPj6wH_Bv1~jq zXuU8KCZ|qxq%cNT=mn8|8AQW6)83urs~#tRRFujAIKC-0>=lRa$X3fVIp#|rCq(OA1P+aib(ycGH!HHJDNk=`K`bjBuEmSp+1rCh zG8iAp9veOWgfxacY|H*}Jg!A^y;>KuLdP2)UtCJ=qPF?yG99_Is*XoTM@x52IE>6o zeeL^sbbZYm>($^bD-=l38cF4a)P#mM_{){pVFGQ+=+9}Ef zi{WstZ%5b5UxNfw{_VpvRaFE!yRq3F+Us1cUJ{(-dYA01j`r8RuR+4!o}IhZgGM&I zaICXzt&wMrQ6G0FR|b4n1W`F1}^Y(*q0gw#t;-XB2aM)7F@!*qUo-nojk`JHO<}T zK5U@)A(lPP)gK#H0cem^aP1pQaAcT$o8C|KR!? zd!ml2w6Tq`EeU1}V}9MvZmqR?mVAz3gh%`k@mB0aAtje4*c8N6oadl`GI;=w!8vI7 z>eo6i+V$NTQmy7zLarxIwV?%>RTe%I5}KC{;5kKIG521%TqwyW(A5||pam5L=w3)_ zn!$G{fVpGk+td+6z@f}6)WdT~KocZy=Ram^ATGcz?XbEV-9|4{a0OEifp{pu5f45^>>iag}XNs7CYQ)U0c;PjQ)7nKIH9Ldbls{1zx z&;DAbD2!Q8y_J%7FtfQW{MBJ`GhS@4G=+S)cgbayD-DN2_J(nFV|g2VvQ-3>!`cejMJ($Xc;A>Ab{9l|^3oYx2B@w~rx zf0{4*KWpD>&04e9b*=l>2f%=m-;Nm%l73;U6Ufxxe??40L$zU=-%aXNLzD`0+#KHv z+_#ld!MWneBC^-62fMbwAG<8O9)@49c=U$aD?8Z4)rTPLR7AK1K8q8CsX?tSI{5)L z%c{=#JnjeY%8hop@b@dt@FrRx50wsTGvi0pFWxRwG05jT!|%ynUEQ;!{k5Ex%tbt* zg)C>d&;S7Ky@~T5PukyRCtGI=(ErYszm~EZ1!)r)R@6BJ8w8<`lJr`JYD!WfNU;M@ z*!Cs*qAw~zUt$J!pKQQ133B7RL@xl@zrh1ZClZM{a;gu+SgHM%j4xiK$jpKdBT>`+F;H+pV(M+qS>hGW?eAdxXz1ssxQ{9F1;#|?nmz5-zS9nB`Y`HVuquf z%GpliFok~`F@RB5A{&&Qx(gyn&frCjHF=4Ei$GenCuLW-3W(YI_B;q0#f&vgvlg-1 z@HunwAO;}?ZkSjWS~k*~rV*at>8BqQ4l-jeuM^Cj7{CD{5C^I%qdyw>>dye)Hq|LnO2$JyS7%RhK@(uLS zfSh)T>)q4!X45PFF~TtDp#}yjpA-kWa(L0g2=R&i>SSQQu&b-Fd>2MGGVBe8iQt+j zUv8<#;?a6#e~m}j>#Y#bOIB5G&aM$0HL6PuV)?0~7i+!@T<}jq{oafUwAYq9$t1Ht zBVVB-c_W!cHb9=w9ega8b(3nq+EAXiVbFswE>p)>{%Txty7eQ-agK9*Y-)Ne;$v39 zXW^}qsMh4UPETr;!Np!HDfrUmOK%hJR&gD{_V=R8BQ#?%!qwNUFW=V}sMOntCQSZx z^b-{h9sc?BwTB?twXlcQiGZ8cHpb>2zVpRF#EKrviBXDjh}}tfjjDOmTe?AQmpHur z%q>pt9L`mzxPFVA?MX|~e1G0EBlg6%$!COoJr1i_Xt(K~GbGA!9+Ae>X(;jkaKMnT z2jga3zL{CAJ?uUdr;HLk-XeAWiJiypujhDzF;9GRvtG`@F?+V#a^n5@3=IQyKGtH6 zl$dmftTDaMaAar93g>;v@OMiYJzTV4R_~|Is5vD&>fdwK(bmZ=6C%x5nbdvg@XV6X ze{dNN%@M=W|2Tc=`bH&rA**ct=lAq)u!KHEv!!p3klcCOac{4E`?-5gD<_>EX^R~( zZytMRWYFe)%2mjZn=Gx-svsxD#^mL~CM8F4tyaY*739~Zy3~^{iJ(;fhCLDFbmnN- z(^fTc*{oe0HG*&;H;cV#DFWuEFtY5KNJE8XqKpWsu9RI^-CB2;X=51_^@z?0k?4*= z_c_MW;K`px|5&?Ep6&8#7SQIITMt)Y4T^28qLc3d(^wu-eSHM2mf!h)%ak6}npbv)lgws}Dc($MqC?xM5;q@{i9`k58XBcyui=<$6(7NvjQTvhD7Zh=wlxxVh@Fu# zV$ffgKCG9Ptf$DK8(q3)Ki3Zlmny}NZzZ%t6X4&XhjU9ODCpgx#_sjOA$d(n$MZ8G zEe6B*_2>o@OO0`8`4X@r&+HH98!uoG1| zAvHcKG0%4}(@91WKYq8R)4E%KO_BjD`!03R=m+jcvtCwejf9%_p0H4B5KZ{AMGL-} z-V*^t*2pi(OweY=uom5N%Q!fdUBvw#@{{)t@T2Jq3QKhIsCse$E{_qc}JXXnArBV=iKK%H?TXdb^&^R2K%+d77T+pcV@$ zlTZMw7ZTh}Gt_Bb+4$H3_j<`EEIKjjv5Y?+<**?Q%EH(8_#JgaL5+z4JWwSC2n{_0 zNvR1uuV~k;9;;wt8MnzaA`3R1XKkxaw(MU(KlVKjrRe1D;FcJ5sp6PT^B1 zPK>lk--+wlVbVyn-Nx9GBzQLDqJ3-%M}K`hd3Ec(dJykNf3kRiI`Iv*Orqp@V!VlZ zIkb?`&`Gk6I3}T2Zc^&9Z;edpqlPy5usKMw>WN+5^@o1fVD@*RIzZ2)dv9eRwexOwt8mk z!*WGVUT?9p#YKI#p!2hu+jRu4{8kR*#{hq840o7}F9%x&Fz?7d?nrY5pT0#peQWVD zhiaHo3dVcGGxbD%Lvb*U-2z5q<8#VU`b#);7#5g{@qu^9^{rT;8@l=c!$?364`p2# z{6#g1*HYgz+-GHtNEC3qt!=#BZ)Eh4eu>ni==8PE};*Kz)*W!X88(0xb{}>qeSq)Sb-17+WOn}YvKGt&}CUU}B z2Yk?o(I>E*dbUVmgbii9JBiK$mKT<5IIjW=hF!6x5j|k$1Soh0hc1MAQ8S4Nsm%%h z6er0Qe(*-Jic|ZCT#AP|0ZTvsJSG+)(AZjeh|#(>f9))LCd-seqaC+^Ca(r%$9Hp? zt=k^TPrIPGWmzNvnQMR0Oi<)e1wp5hEK3|)cpM*=aWz{sf8G-Y949lKCAk>~rk^+s zE^o+urh7Sq31a$5t5u77dUy>7cuhMs;BA+w{ZY}Lk0xsuv-qga^EXhu0w7Ak@idVraY0@vaV%A7skh+YA0!hF&p_}V^752DY*Y5w-*2R_MNk0xxnjSAOZB)E zC1pmeN68C%;eqh3;`PP#km*3H4?6S?*V#{QxG3(8CpA2ft%A+vq6U2uPeU{3eS%Q3z@n@*#&8nos;Eecq!%+A-dLxt#1f_@rXf=TY^*s?L!KUkpIDdvsE?W z7R8#6{oM}WczXCzCBe{T16O~s5TrC!rAKP&>&r<;k= z&yP0PC0@7-g^`^`y=h35L{@$Uwwd2ZOqH5j&+sX`gTdD&U*O-DI_ zaj*@Bdrlg8W-UV-m?eM*#q=3ID0Yq;CnbWmZ&> z)E1GKQx;QKRuPiXR+3jymXrf(E2+qcy@G7;_^B&K5CgG17PN;e7l!uc(?p1CdoXn9 zqG+OdxYq6S9rGPOxwDV1>?O_3kW{mOF-xnsXrk``#={JY+ zh_2xgohx&gI5*)`wT1So>Hv{$g$z^PR~0esuVHw`#x^R{e(4&<+>&)gqr;om&K2Bv z+}p&bHr8Ta?emDti-rSFC*_p$v6LboQ9jAFb@>pNb~*WJ+AS+pJ()9J-%u#yL#);A zPJCZ-#Sq@hGPYtuv6nsl>iwlmhe;*A&r2#4M*MM#^|MmK)O%h_(2dNL+8k4ogj9bt zR4t75Fxhx5_EO5d(B?WbMuoOlUorP!J3yM|JTu!&iz+#<61hOls%zNrDrZ=N$`5$Z!tD z(Ai%x67xUOFfA=I67jS!9v?y)otCMqh%~R_z(?uI9zGvi$~5W6Uzb{APa+9yOPr2^ zqEJ(MgkA9?AD1LUYccVafR;#EH#CKoaX?J39urSIai1AOF&rklfstlnFwst6?eI4) z)7Qmr>)@kKNSQ$g7E7t&60}7nSxgoE55~@POY)S+b&3<#$FGcu((oATw6>`s+bMvr z%(M*+u3H{5p>Gdc`BqcC6DoSRJjwH}>=CND51zy(hiy zA`pUO{iyMc*Jpa{9QLB{>+30`0CwQ4CR1=|X+)<~N?QRZu;m=fS*dMGCMCX{mDz_5 zRrPrdB6_C}J3GRYu;k!kL5(+)e&VgDn0!bSNgd!bgbp_H!jC3!+{B}Z@80DD_?Mv> zX0bbcviY^fdoEC39r`C}b|D`UO6YRbe~3Jj%AKK;)igA*XHX^e4hwG&TL-{g^@h7 zM6B_wzUf*Sy_}N{6GuU~!OXnGk|6kRO%qv^UQ|*DOOw4}5ze4UdJVIA)xh>A0ZBz$ zU)-}cZqNAkp;*E}8ls?fhJ?Kq*278-AQn=7k>-@1NHc;S(a}+#41K&HhgqBrI5uc1 zUwlku&-TcC3=>ohRtaq-PC4|hmEcCM_#;jfbM(^)`(g|N`jYkGj!`w8$CKhhKIS3?%_L}CE%U6^D3BMI8YIktyHZB-b zGLJ)c{)z+J@txOzI|zGS$v>89TbSa5aq`HgoML5$tL07keSwR!xs?b3kJAm;?pvpg zDQ1Do^hA1U+0pVxqA9dRFBq^tx&I@liyQ zS;ojyD;|-BZwMJo#38JOygKajN+?5k>mfVAb1XH579tGGO@UWP6>jCF9hKvv@Led8 zFV9zolSz+GKbkaZr2ZrIgg-)0QVIE3rowZ#Hx;I!R%)t|gO>)+71#(j_M@f|?AKQ>mi~5-jf5sDsV?j0Egy-bmZe(r7 zi9k84K3{vP!>u-N%Sd|1DXVMdOs*UARcN-B4`X6&Sm>)WkIo=!gwmbfDXcy8vvw=Y~ag`AET&j$Ad z1a5ZKx;;OKsL40idtQIZAmP7Z5a7LBJu2I8v^_rH271;3UkZ3yT~7r7Ki@2#AExD; z-8x)Pwdb7OTpVkkWw>1|#V{}2UJf*n_Txeu#Kfs?PcJ$~Q{_6eYF6ym43X8ZUEr9@B+&TSd;Kx)IP zRo1NXSGMD*-;%&C{Z2$`am%RUD}aXPx5Mj{;Wul|C;ol2kZeU~S#9Ts%nsNpI>~NR zrtlisPe`|?eb#ThQiHaOHplQjhNgROR@wc)I7xGsuuB~XM2Wr0Y<71Yq^ag@Nq z_lAY$C))?z=7P`j7R`A=-hR9En#r1=OeI)Kmg3d-xk#W0Ek|}YiN5ubNy)BmgA1qs+Ojo;c~3NkLjL|)tBRMlhkvE67#YX%s1UQ z;=P8!9fP>VevGF1vVv!Pk(@=)hx~MJxAmTR=;+I(w!!(3)0ai7&RKAx39|rqw7^YK zBA`c=BbMFGSM_7K(p(Lyf#NGyYS`Edxx5%^)x&_0$$Z4HP~T3IUKFFjk0UzZp$$jT zxkcu6OER0nN3(%o00I$GJ{um4&PsQ-RjH$xNbuGY&Wq3F`>IX_>BLbboRBN|2YjvQt>@(bgBC>@?0 z*Em{#PL~xZF2tveN5R~$r0cQ|SG-!SYP0l73-cHR`34e(9pBekQ)jz{_(JufO%oKg z!)uv(34E0wNa!es9$}fKowNFaV=HM&91*WV&!|d1g;10-OsSp}+>phy<*)Y`^|Q0m z?z0HWuBN5nWR1~mTtl%!5ZAZIuc+y1=A|02C+L;Uc2-wskGKn>bd+r-bYRvu5S6p? z(0q}9s`lVSCz{E>_~vu->^yn5G|iMxEegHa>bWgG!SR4=!|0yjzU*GGI~6W6=Z3?S z(gu1sx;eY}3FQznEaoVD{1&6;eqGv3P5O_)t*5|ILiv=(b$aHjL7&>eP@MA~{)%|1 z13JjEcEtqW#|PbhC|W50x4xAb)5yNzN8)69eLqpw5%Bi#+X3*0Lzx1 z&fy54aO#oiz;1}G+14!2i{tuaT$4Oxmn-+%t|B;a_%q6S=Jy>~y|y_S=ci%NjRAl! zHMODjq8mA0IsIUJ4wslB$hl*3cy8T_{sha%GSHkrFWW?G`o@~Cy}E>|hHXws64f+|OLo5!^)&bbR{4Lzh*unUu@V_{Y^uqV&xCI&(Y; z#fzvzm2W8K@aPW3S&_~H>pjWFn1jA=WU$Rpi+nsBY_CyXj&~t->y)%Ex7y;GIW8^s z{5qCshdw&acB0t|THIuT+TS1zpRxQ|pc>Vg+lJ*fPaxw@y?gTmpYl<&jgtae-un<;ku>k- zM({sNEgRhBJVekcQmi;kL&gwpUqf>r@S9KY_T=X|wPS{kL;?*N&mU{e1r>ksl_1li z%}Sq#f4|uMjK-KU3;H8NAZ}T@A|<<+cv6?_HJl|eI3~Hlt7u_0GSe7mPbIpZth&Od zel&4i^3(W)0za=QSh^r!ca&r~D5Y51gQSaH*2e&bA%osluWxg_%!0j&xt;G`6s^xBG7_90V&Y(VXim2>{SlKmka9!-g{7!$RtxXoGZZ4Yc)* z-$6>y{x|EdZS74e^rK{mcmM+r064@roS z&_T=qzXuE74RSxo#@GsCys)u{$hN-}c6|eLOGx3{`=l#~$G)8UyA?G=1HOg4wo%?| z2LQ0;`!A$Bt^NUz7t*r#^-9a>5Z)-nxBq+aWrO~OcR&7rtIQ9u7?6PBey`#wAx-8L5m#Y2h>DH@$=83^F32an{D-Uu0?`ASmhO;d0fyf*AILBrf}}ct zyhY!;mW%IbzZ@Tb`#&H*gWvnL2+|MW;C>24P5?j~8wx;hj{*RsRsjHi6-WLjpX$BN zG_kd`xF4uW2xhR(v>HJGqI9W10f>IXP;dRh+#&uR`2RiP|5T*;j-^ir^}p@;ze_gX zZ`xnKp@;Q{?uauyP=BsQ^bqkd&Fme5TN>)Oq_g+${8LhjyE{d+|MTS!Q&c>JJj|7F z2RYRF_4U7HPPh;FQ>uVF0K49QTJi7aW&Wy({a-WapAO#KarrHOHSFK9zs**EGKSsZ zcHE%;<2w11P3-;y|H%h+M*@1>k^aRMbszR8Q_>v_!SfFGp9%EdF#pHC^h?)$$bD$5 zx#OmJ{ek;m)8C!R<{|l^?tDj{@Vg^Fm}DM^qxYGAQdsYpf&q8T|5I1R#OT(e!B$wH@$31F{XV literal 0 HcmV?d00001 diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index 210faf4..72552b9 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -153,3 +153,8 @@ ccra_review_bundle/round-NN_YYYY-MM-DD_topic/ ``` This keeps second-round and third-round materials comparable without overwriting prior evidence. Temporary review bundles remain session evidence and should not be copied into `knowledge_assets/`. + +Round 03.1 added two bundle hygiene rules: + +- `optional_raw_changed_files.zip` must preserve source-relative paths. Do not create flat archives that can collide on names such as `README.md`. +- `knowledge_assets/` is excluded from review bundles by default because the project owner manually syncs stable long-term knowledge assets into GPT knowledge storage. Include it only when the current review explicitly targets the knowledge asset itself. diff --git a/docs/FILE_TAXONOMY.md b/docs/FILE_TAXONOMY.md new file mode 100644 index 0000000..200cab0 --- /dev/null +++ b/docs/FILE_TAXONOMY.md @@ -0,0 +1,152 @@ +# File Taxonomy + +Date: 2026-06-17 + +Status: accepted + +## 1. Purpose + +This document defines file identities for the `model_library_mvp` phase. + +The goal is to prevent every generated report, review bundle, cache, and model asset from being treated as the same kind of artifact. + +`docs/KNOWLEDGE_ASSET_RULES.md` governs one specific category: long-term reusable knowledge assets. + +This document is broader. It governs the whole repository. + +## 2. File Identity Classes + +Every meaningful file should fit one of four classes: + +| Class | Meaning | Default retention | Examples | +| --- | --- | --- | --- | +| Canonical source of truth | Files that define model/library behavior or reviewed content | Keep and version | `models/*.model.json`, `cards/*.md`, `sources/*.json`, `tests/*.regression.json`, `selector/*.json`, `schemas/*.json`, operative `docs/*.md` | +| Generated / derived | Files rebuilt or checked from canonical assets | Keep when useful, rebuild at handoff/release | `models/model_index.json`, `cards/card_index.md`, `reports/validation_report.md`, `reports/index_rebuild_report.md`, `reports/model_card_sync_report_v0.2.md`, `reports/selector_regression_report_v0.2.md` | +| Review archive | Per-round evidence for Owner / CCRA / GPT review | Keep by round, do not treat as runtime truth | `ccra_review_bundle/round-*`, `reports/Codex*.md`, `reports/GPT*.md`, `reports/model_case_preprocessing/*` | +| Temporary / local runtime | Caches or local command byproducts | Do not commit | `__pycache__/`, `*.pyc`, temporary extraction folders, ad hoc local scratch files | + +## 3. Canonical Source Of Truth + +Canonical files answer: + +```text +What is the current model/library behavior? +What is the reviewed source or contract? +What should code and future agents trust? +``` + +Canonical files include: + +- model JSON specs under `models/`; +- human-readable cards under `cards/`; +- source records and evidence excerpts under `sources/`; +- regression source files under `tests/*.regression.json`; +- selector rules and calibration files under `selector/`; +- schemas under `schemas/`; +- operative rules and protocols under `docs/`; +- stable explanatory assets under `knowledge_assets/`. + +Canonical files should be edited deliberately and validated after change. + +## 4. Generated / Derived Files + +Generated files answer: + +```text +What did the current canonical assets produce when checked or rebuilt? +``` + +They may be committed when they are part of the file-first workflow, but they are not independent truth. + +Examples: + +- `models/model_index.json` +- `cards/card_index.md` +- `tests/regression_cases.json` +- `reports/validation_report.md` +- `reports/index_rebuild_report.md` +- `reports/model_card_sync_report_v0.2.md` +- `reports/selector_regression_report_v0.2.md` +- `reports/selector_calibration_smoke_report.md` + +Rules: + +- Rebuild indexes after model/card/source/test changes. +- Regenerate reports after validation or selector checks. +- Do not manually edit generated reports to hide validation failure. +- If generated output disagrees with canonical source, fix the source or generator, then regenerate. + +## 5. Review Archive Files + +Review archives answer: + +```text +What was submitted, reviewed, or handed off in a specific round? +``` + +They preserve evidence and context, but they do not override canonical files. + +Examples: + +- `ccra_review_bundle/round-*/` +- `reports/Codex*.md` +- `reports/GPT*.md` +- `reports/model_case_preprocessing/*` + +Rules: + +- Keep review bundles under dated round directories. +- Do not place new review files directly under `ccra_review_bundle/`. +- `optional_raw_changed_files.zip` must preserve source-relative paths. +- Do not flatten zip contents, because duplicate filenames such as `README.md` can collide. +- `knowledge_assets/` is excluded from review zips by default because the Owner manually syncs stable knowledge assets into GPT knowledge storage. + +## 6. Temporary / Local Runtime Files + +Temporary files answer no durable project question. + +Examples: + +- `__pycache__/` +- `*.pyc` +- local unpacked zip folders; +- scratch command outputs not referenced by a report; +- editor backups. + +Rules: + +- Do not commit these files. +- Add broad safe ignore rules in `.gitignore`. +- If a temporary command output becomes useful evidence, convert it into a deliberate report under `reports/` or a review bundle. + +## 7. Relationship To Knowledge Assets + +`knowledge_assets/` is a canonical long-term explanatory layer, but not every canonical file belongs there. + +Put a document in `knowledge_assets/` only when it answers: + +```text +What durable context, mechanism, rule, or map should ChatGPT / CCRA / Owner remember across sessions? +``` + +Do not put these in `knowledge_assets/`: + +- concrete model cards that already live in `cards/`; +- machine-readable model JSON; +- validation reports; +- per-round review bundles; +- command logs; +- temporary handoffs. + +See `docs/KNOWLEDGE_ASSET_RULES.md` for detailed knowledge-asset rules. + +## 8. Commit Checklist + +Before commit: + +1. Confirm new files have the correct identity. +2. Confirm temporary files are not staged. +3. Rebuild or check indexes when canonical model/card/source/test files changed. +4. Regenerate validation reports after validation commands. +5. Keep review-bundle zips path-preserving. +6. Keep lifecycle status conservative; validation pass does not imply stable. diff --git a/docs/KNOWLEDGE_ASSET_RULES.md b/docs/KNOWLEDGE_ASSET_RULES.md index 7292ab9..67b7cbd 100644 --- a/docs/KNOWLEDGE_ASSET_RULES.md +++ b/docs/KNOWLEDGE_ASSET_RULES.md @@ -6,6 +6,8 @@ These documents are not raw source archives, not temporary handoffs, and not implementation-only files. They are the durable explanation layer that helps the project owner, ChatGPT, Codex, and future CCRA work understand the model library without reconstructing context from scattered files. +For the broader repository-wide distinction between canonical, generated, review archive, and temporary files, see `docs/FILE_TAXONOMY.md`. + ## What Belongs In `knowledge_assets/` Use `knowledge_assets/` for: @@ -17,6 +19,7 @@ Use `knowledge_assets/` for: - stability rating rules - durable process records - reusable architecture summaries +- durable data-governance and model-invocation mechanism explanations Do not use `knowledge_assets/` for: @@ -26,6 +29,7 @@ Do not use `knowledge_assets/` for: - generated cache files - implementation scripts - source-of-truth JSON model assets +- per-round review bundles or optional raw changed-file zips ## Relationship To Other Directories @@ -39,6 +43,8 @@ Do not use `knowledge_assets/` for: `knowledge_assets/` contains stable explanatory knowledge distilled from those sources. +The project owner may manually sync stable `knowledge_assets/` documents into GPT knowledge storage. Review bundles should therefore not include `knowledge_assets/` by default unless the current review explicitly targets the long-term knowledge asset itself. + ## Naming Rule Use numeric prefixes for reading order. @@ -54,6 +60,7 @@ Examples: 03_核心模型抽取样板.md 06_模型稳固性评级规则.md 07_产品规划过程记录.md +09_数据治理与模型调用机制说明.md ``` ## Model Card Sample Rule diff --git a/docs/QPI_CONTEXTUAL_ROUTING_RULES.md b/docs/QPI_CONTEXTUAL_ROUTING_RULES.md index 5230911..1f2f3fd 100644 --- a/docs/QPI_CONTEXTUAL_ROUTING_RULES.md +++ b/docs/QPI_CONTEXTUAL_ROUTING_RULES.md @@ -174,5 +174,16 @@ Each case digest should preserve: - `codex_candidate_judgment`; - `owner_review_needed`. -Raw case processing is intentionally deferred until owner materials are available. +Round 03 completed the first owner-reviewed QPI case promotion into: +- `reports/model_case_preprocessing/qpi/round-01/*.cases.md`; +- `selector/qpi_case_digests.json`; +- `selector/selector_calibration_inputs.json`; +- `tests/qpi.regression.json`. + +Round 03.1 digest field rules: + +- Use `misclassification_risk`, not `misframing_risks`, to match the QPI structured output contract. +- Use `qpi_complexity_pattern`, not `mixed_or_multi_perspective`, for judgment-structure complexity. +- `qpi_complexity_pattern=intra_frame_mixed` does not require `classification=mixed`; final routing classification and judgment complexity are separate. +- If `classification_scope=multi_perspective` or `qpi_complexity_pattern=inter_viewpoint_divergence`, the digest must include `classification_by_viewpoint` or `viewpoint_summary`. diff --git a/docs/WORKFLOW.md b/docs/WORKFLOW.md index 566146a..9c5e820 100644 --- a/docs/WORKFLOW.md +++ b/docs/WORKFLOW.md @@ -117,3 +117,5 @@ For long-term reusable knowledge rules, see `docs/KNOWLEDGE_ASSET_RULES.md`. When a rule, model map, schema explanation, workflow summary, or product context becomes stable enough to reuse across sessions, create or update a file under `knowledge_assets/`. Do not leave durable knowledge only in temporary reports. + +For repository-wide file identity rules, including canonical files, generated reports, review archives, and temporary files, see `docs/FILE_TAXONOMY.md`. diff --git a/knowledge_assets/09_数据治理与模型调用机制说明.md b/knowledge_assets/09_数据治理与模型调用机制说明.md new file mode 100644 index 0000000..0a9cbc5 --- /dev/null +++ b/knowledge_assets/09_数据治理与模型调用机制说明.md @@ -0,0 +1,629 @@ +# 数据治理与模型调用机制说明 + +version: 0.1 + +last_updated: 2026-06-17 + +status: stable explanatory asset + +source_basis: + +- `C:\Users\wangq\Documents\Codex\knowledge-vault\work\internal\强哥的思想宇宙\GPT成果\CCRA_数据治理与模型调用机制说明_v0.1.md` +- current repository contracts, selector rules, regression files, validation scripts, and review-bundle workflow + +## 1. 文档定位 + +本文档是 `model_library_mvp` 阶段的数据治理与模型调用机制说明。 + +它不是某一轮评审的 PASS / FAIL 记录,也不是对 Owner 质疑的逐条回复。它沉淀的是长期可复用的项目机制: + +- 为什么模型库不等于普通知识库; +- 文章、模型卡、selector、regression、validation、review bundle 分别承担什么治理职责; +- QPI 和思想考古学未来如何被调用; +- 哪些文件是长期源头,哪些只是过程证据; +- 后续新增模型应按什么最低资产结构进入系统。 + +具体模型内容的 source of truth 仍在: + +- `models/*.model.json` +- `cards/*.md` +- `sources/*.json` +- `tests/*.regression.json` +- `selector/*.json` + +本文档只解释机制,不替代上述文件。 + +## 2. 项目当前性质 + +`the-mindscape-of-bro-tsong` 当前处于 `model_library_mvp` 阶段。 + +它不是: + +- 完整产品; +- 聊天机器人; +- 前端平台; +- 后端服务; +- RAG 系统; +- 知识图谱; +- 数据库应用; +- 商业交付系统。 + +它当前验证的是: + +```text +少量核心认知模型 +能否被整理成 file-first 的模型资产, +并具备可读、可追溯、可调用、可拒绝调用、可测试、可路由的最低能力。 +``` + +第一批样板模型是: + +- QPI:前置问题定性和路由模型; +- 思想考古学:中重型问题的深度建模模型。 + +QPI 的价值不只在于它本身,而在于它能压力测试一整套模型治理机制:调用条件、拒绝条件、输出契约、误用边界、selector 校准、regression 防退化、Owner / CCRA 审核。 + +## 3. 为什么不是直接把文章喂给 AI + +如果只是让 AI 读取文章并回答问题,确实不需要模型库结构。 + +但这种做法不满足模型资产化要求: + +- 不可追溯:很难回查系统用了哪篇文章、哪段证据、哪条人工判断; +- 不可稳定调用:同一输入可能每次触发不同判断和输出结构; +- 不可拒绝调用:模型容易被滥用,例如所有复杂问题都套 QPI 或思想考古; +- 不可回归:改规则后无法知道旧边界是否被破坏; +- 不可交接 Codex:Codex 不能只凭一篇文章稳定构造 schema、selector、validator 和测试; +- 不可产品化:文章是内容资产,模型库需要可组合、可运行、可验证的认知工具资产。 + +因此本项目做的是: + +```text +原始文章 / 人工素材 +-> 来源记录 +-> 证据片段 +-> 人读模型卡 +-> 机器可读模型卡 +-> 输出契约 +-> 调用规则 +-> 负向触发条件 +-> selector +-> calibration input +-> regression cases +-> validation scripts +-> review bundle +-> Owner / CCRA 审核意见 +``` + +这些文件不是平行内容,而是不同治理层。 + +## 4. 数据治理的六个目标 + +### 4.1 来源治理 + +每个模型必须知道它从哪里来: + +- 来源文章是什么; +- 代表性文本是什么; +- 哪些字段由原文直接支持; +- 哪些字段是从原文推导; +- 哪些字段是产品化决策; +- 哪些字段是 Owner / CCRA 人工判断; +- 哪些证据仍是 placeholder 或需要复核。 + +目标是防止模型后来变成“像作者思想,但已经无法回到原文”的漂移资产。 + +### 4.2 结构治理 + +模型不能只是一段定义。 + +每个模型至少要被拆成: + +- `model_id` +- `model_type` +- `pipeline_position` +- 核心问题 +- 核心机制 +- 输入类型 +- 输出类型 +- 适用场景 +- 不适用场景 +- 负向触发条件 +- 常见误用 +- 失败信号 +- 稳固性等级 +- 输出契约 + +结构治理让模型既能被人审,也能被机器读取。 + +### 4.3 调用治理 + +模型进入系统后,不能默认“能用就用”。 + +每个模型都必须回答: + +- 什么输入应该调用它; +- 什么输入不该调用它; +- 是否必须先经过其他模型; +- 是否只能在某个流程阶段使用; +- 是否需要重型分析门槛; +- 是否存在 hard no-call 条件; +- 是否存在 explicit analysis override。 + +这就是 selector 的职责。 + +### 4.4 输出治理 + +模型输出不能随意发挥。 + +以 QPI 为例,它不是简单输出“这是 Question / Problem / Issue”,而是必须围绕主体、场景、责任范围、期望现实落差、主导稀缺物、分类置信度、证据缺口、误分类风险、下一步候选模型等字段工作。 + +以思想考古学为例,它不能无限哲学化,而是必须说明是否应该调用、为什么调用、最多下潜到哪层、哪些层需要分析、什么时候停止。 + +### 4.5 边界治理 + +解释力强的模型更容易被滥用。 + +典型误用包括: + +- 暴力降维:把复杂 Issue 当成简单 Problem; +- 恶意升维:把简单执行任务夸大成复杂课题; +- 手段错配:本该查资料,却启动深度模型;本该组织协商,却只做文档润色; +- 认知重工业化:一个轻量问题被多模型、多智能体、深层考古压爆。 + +边界治理不是削弱模型,而是让模型该用时有力,不该用时安静。 + +### 4.6 生命周期治理 + +模型不能因为 JSON 能解析、schema 通过、demo 能跑,就升级为 stable。 + +升级至少需要经过: + +- evidence review; +- content review; +- regression review; +- selector review; +- Owner / CCRA review。 + +当前 QPI 和思想考古学仍保持: + +```text +status: draft +stability_level: B +regression_status: pending +``` + +`draft-callable` 只能作为评审报告语言,不能替代模型生命周期字段。 + +## 5. 文件身份治理 + +项目中的文件应按身份区分,而不是都视为同等资产。 + +| 文件身份 | 是否长期保留 | 典型路径 | 作用 | +| --- | --- | --- | --- | +| Canonical source of truth | 是 | `models/*.model.json`, `cards/*.md`, `sources/*.json`, `tests/*.regression.json`, `selector/*.json` | 模型本体、来源、测试、调用规则 | +| Stable governance docs | 是 | `docs/*.md`, `knowledge_assets/*.md` | 长期规则、协议、解释层 | +| Generated / derived artifacts | 可重建,但可保留报告 | `models/model_index.json`, `cards/card_index.md`, `reports/*_report*.md` | 检查、导航、验证结果 | +| Round / review artifacts | 阶段归档 | `ccra_review_bundle/round-*`, `reports/Codex*.md` | 交接和审核证据 | +| Temporary / cache files | 不应提交 | `__pycache__/`, `*.pyc`, 临时 zip 展开目录 | 本地运行产物 | + +判断标准: + +```text +回答“以后一直怎么做”的文档,可以进入 docs/ 或 knowledge_assets/。 +回答“这轮做了什么、哪些 PASS/FAIL”的文档,应留在 reports/ 或 ccra_review_bundle/。 +``` + +## 6. 主要文件层 + +### 6.1 来源层 + +用途:回答“模型从哪里来”。 + +典型文件: + +- `sources/source_articles.json` +- `sources/source_excerpts.json` +- `sources/evidence_coverage.matrix.json` + +### 6.2 人读模型层 + +用途:让 Owner、CCRA 和协作者读懂模型。 + +典型文件: + +- `cards/qpi.md` +- `cards/intellectual_archaeology.md` +- `cards/card_index.md` + +### 6.3 机器模型层 + +用途:让 selector、validator、未来运行时读取模型。 + +典型文件: + +- `models/qpi.model.json` +- `models/intellectual_archaeology.model.json` +- `models/model_index.json` + +### 6.4 契约与规则层 + +用途:约束模型卡、输出字段、数据结构和调用规则。 + +典型文件: + +- `schemas/model_card.schema.json` +- `docs/DATA_CONTRACT.md` +- `docs/QPI_CONTEXTUAL_ROUTING_RULES.md` +- `docs/INTELLECTUAL_ARCHAEOLOGY_DEPTH_GATE.md` +- `docs/DECISIONS.md` + +### 6.5 Selector 层 + +用途:决定当前输入该调用哪些模型,以及不该调用哪些模型。 + +典型文件: + +- `selector/selector_rules.json` +- `selector/selector_examples.json` +- `selector/selector_calibration_inputs.json` +- `selector/qpi_case_digests.json` +- `scripts/run_selector_demo.py` +- `scripts/run_selector_regression.py` +- `scripts/run_selector_calibration_smoke.py` + +### 6.6 Regression 层 + +用途:保护模型边界,避免以后修改规则时把模型改坏。 + +典型文件: + +- `tests/qpi.regression.json` +- `tests/intellectual_archaeology.regression.json` +- `tests/regression_cases.json` + +### 6.7 Validation 层 + +用途:机械检查文件是否一致、字段是否完整、index 是否漂移、模型卡是否同步。 + +典型文件: + +- `scripts/validate_model_library.py` +- `scripts/check_card_contract.py` +- `scripts/check_model_card_sync.py` +- `scripts/rebuild_indexes.py` +- `reports/validation_report.md` +- `reports/index_rebuild_report.md` +- `reports/model_card_sync_report_v0.2.md` + +### 6.8 Review Bundle 层 + +用途:每轮把 Codex 工作打包给 CCRA / GPT 审核,避免散文件上传。 + +典型文件: + +- `ccra_review_bundle/round-XX_YYYY-MM-DD_topic/00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF.md` +- `ccra_review_bundle/round-XX_YYYY-MM-DD_topic/BUNDLE_FILE_MANIFEST.md` +- `ccra_review_bundle/round-XX_YYYY-MM-DD_topic/optional_raw_changed_files.zip` + +Review bundle 是交接层,不是长期核心资产。 + +## 7. Selector 机制 + +Selector 是模型库的入口调度器和误召回防火墙。 + +它不负责回答问题。它负责判断: + +- 当前输入是否需要模型加工; +- 如果需要,优先调用哪些模型; +- 哪些模型应该被拒绝; +- 拒绝理由是什么; +- 是否命中 no-call; +- 每个模型的分数、触发信号、惩罚项是什么。 + +当前 selector 仍然是 rule-based,不是 LLM selector。 + +基本流程: + +```text +输入 +-> 检查 hard no-call +-> 检查 explicit analysis override +-> 检查模型触发词 +-> 检查复杂度信号 +-> 检查模型特定 gate +-> 计算 score +-> 输出 selected / rejected models +``` + +### 7.1 为什么当前不用 LLM selector + +当前阶段最重要的是可审计。 + +LLM selector 可能更灵活,但会带来: + +- 为什么选这个模型说不清; +- 为什么拒绝另一个模型说不清; +- 修改后是否破坏边界不好测; +- 容易把所有复杂问题交给重型模型; +- 不利于 Codex 本地测试和回归。 + +规则 selector 更保守,但更可控。 + +### 7.2 Selector 的核心价值 + +Selector 保护三件事: + +1. 防止不该调用时调用:明确事实查询、轻量改写、直接执行任务不应启动 QPI 或思想考古。 +2. 防止重型模型过早进入:思想考古学不应仅因出现“底层”“模型”“哲学”等词就被召回。 +3. 让模型组合可解释:未来不是一个模型回答所有问题,而是多个模型按流程协作。 + +## 8. Regression 机制 + +Regression 在本项目中不是普通单元测试,而是模型边界保护机制。 + +它要回答: + +- 该调用模型时是否调用; +- 不该调用模型时是否拒绝; +- Q / P / I / mixed / no-call 是否被误判; +- mixed 输入是否暴露证据缺口; +- 是否出现暴力降维; +- 是否出现恶意升维; +- 是否把轻量问题过度重型化; +- 是否把深度模型误召回; +- 修改 selector 后,过去关键边界是否被破坏。 + +Regression case 是“防止系统退化的钉子”,不是普通示例。 + +至少覆盖: + +- `positive` +- `boundary` +- `misuse` +- `no_call` +- `selector_gate` +- `pipeline` + +## 9. Digest、Calibration、Regression 的区别 + +以 QPI 为例,Owner 提供人工素材后,Codex 将材料拆为 `.cases.md`、digest、calibration、regression 四层。 + +### 9.1 `.cases.md` + +人读的案例审阅稿。 + +作用: + +- 保留原始案例; +- 保留 Owner / GPT 审查判断; +- 保留人能看懂的推理; +- 便于后续人工复核。 + +### 9.2 Case Digest + +压缩后的结构化案例摘要。 + +作用: + +- 让案例变得可检索、可审计; +- 保留核心分类、主导稀缺、误用风险、边界说明; +- 作为 selector / regression 的候选素材池。 + +Digest 是案例资产层,不是最终测试层。 + +### 9.3 Calibration Input + +给 selector 调参和校准用的输入。 + +作用: + +- 告诉 selector 哪些输入应该选 QPI; +- 哪些输入应该 no-call; +- 哪些输入应该低优先级; +- 哪些输入需要先 QPI 再进入思想考古; +- 哪些输入容易误召回。 + +Calibration 是“调方向”。 + +### 9.4 Regression Case + +高价值边界测试。 + +作用: + +- 以后每次改规则都要检查; +- 防止关键边界被破坏; +- 不要求覆盖所有案例; +- 只保留最容易出错、最值得保护的判断。 + +Regression 是“守底线”。 + +## 10. QPI 调用机制 + +QPI 不是最终答案模型,而是入口路由模型。 + +它处理的不是“怎么解决问题”,而是: + +```text +当前输入到底是什么性质的问题? +``` + +运行方式: + +```text +用户输入 +-> selector 判断是否需要 QPI +-> QPI 分析主体、场景、责任范围、期望—现实落差 +-> 判断主导稀缺物 +-> 输出 Q / P / I / mixed / no-call +-> 给出证据缺口、误分类风险、下一步模型候选 +-> 进入后续模型或直接行动 +``` + +QPI 的五种结果: + +| QPI 输出 | 含义 | 系统下一步 | +| --- | --- | --- | +| Question | 数据不足 | 搜索、查证、补信息 | +| Problem | 路径、方法或资源不足 | 做方案、流程、SOP、资源约束分析 | +| Issue | 共识、秩序、确定性或治理结构不足 | 做多视角分析、动态权衡、思想考古或冲突处理 | +| mixed | 多类稀缺同时存在 | 拆分问题,分别路由 | +| no-call | 不需要问题定性 | 直接执行、改写、翻译、查事实、整理格式 | + +QPI 不应直接输出组织、人事、法律、财务、运营解决方案。 + +它最多回答: + +- 这是什么类型的问题; +- 为什么这样分类; +- 证据是否足够; +- 误判风险是什么; +- 下一步应该进入哪类处理。 + +## 11. 思想考古学调用机制 + +思想考古学不是默认分析流程,而是深度建模模型。 + +适合使用的条件: + +- 问题表层现象很多,但底层假设不清; +- 需要识别概念、模型或判断背后的深层机制; +- QPI 已判断这是中重型 Problem / Issue; +- 继续下潜会改变判断、路径、验证方式或行动边界。 + +不适合: + +- 明确事实查询; +- 低风险轻量改写; +- 用户只需要直接执行; +- 材料不足,无法区分真实假设和空泛哲学化表达。 + +关键原则: + +```text +最小充分下潜。 +如果继续下潜不再改变判断、路径、验证方式或行动边界,就应停止。 +``` + +未来系统不是“QPI 一调用就自动思想考古”,而是: + +```text +QPI 先判断问题性质 +-> selector 判断是否满足思想考古 depth gate +-> 思想考古只分析必要层级 +-> 达到充分深度就停止 +``` + +## 12. 未来新增模型的最低资产结构 + +每个未来模型都不应只是一个概念。 + +最低需要七类资产: + +1. 人读解释:`cards/*.md` +2. 机器可读定义:`models/*.model.json` +3. 来源证据:`sources/source_articles.json`、`sources/source_excerpts.json` +4. 调用规则:`selector/selector_rules.json`、`selector/selector_calibration_inputs.json` +5. 输出契约:模型 JSON 中的 `structured_output_contract` +6. 回归案例:`tests/*.regression.json` +7. 审核与版本状态:reports、review bundle、model/card index + +新增模型不得用来绕过当前模型边界未稳定的问题。 + +## 13. 未来运行时调用流程 + +未来真正运行时,系统可按以下流程工作: + +```text +1. 用户输入问题 / 话题 / 文本 / 任务 + +2. 输入预处理 + - 识别语言 + - 判断是否是直接执行任务 + - 判断是否需要认知加工 + - 抽取显性任务目标 + +3. Selector 路由 + - 先检查 hard no-call + - 再检查 explicit analysis override + - 再根据模型触发条件打分 + - 输出 selected / rejected models、分数和理由 + +4. 前置模型 + - 常见情况下先调用 QPI + - QPI 判断 Q / P / I / mixed / no-call + - 输出下一步模型候选 + +5. 深度或专项模型 + - 如果是中重型 Problem / Issue,可能进入思想考古 + - 不满足 gate 的模型不得调用 + +6. 多模型结果汇总 + - 比较不同模型输出 + - 标记冲突 + - 标记证据缺口 + - 标记适用边界 + +7. 输出给用户 + - 包含判断路径、模型调用理由、边界、下一步动作 + +8. 记录反馈 + - 用户纠正分类或边界 + - 重要反馈进入 calibration 或 regression +``` + +## 14. Codex 运作原则 + +后续 Codex 应遵守: + +1. 不把 GPT 规划直接当本地规则,必须先本地化为 schema、workflow、validator、index。 +2. 不把文章摘要当模型抽取。 +3. 不把模型卡完整当成模型稳定。 +4. 不把 selector demo pass 当成内容稳定。 +5. 不把 validation pass 当成 Owner 审核通过。 +6. 不因为素材增多就无限扩展 regression。 +7. 不把 calibration 全部升级成 regression。 +8. 不新增模型来解决当前模型边界没稳定的问题。 +9. 每个新增文件必须说明身份:canonical / generated / report / temporary。 +10. 每轮交接必须用 review bundle,不让 Owner / CCRA 面对散乱文件。 + +## 15. 与 GPT 知识库同步的关系 + +`knowledge_assets/` 是长期解释层。 + +Owner 可以手动将其中稳定文档同步到 GPT 知识库。评审包不应重复打包 `knowledge_assets/`,除非某轮评审明确要求审核长期资产本身。 + +当前规则: + +- 长期机制说明放在 `knowledge_assets/`; +- 当前执行资产放在 `models/`、`cards/`、`selector/`、`tests/`、`scripts/`; +- 每轮评审资料放在 `ccra_review_bundle/round-*`; +- `optional_raw_changed_files.zip` 应保留源路径,避免扁平化覆盖; +- `knowledge_assets/` 默认不放入评审 zip,由 Owner 自行同步到 GPT 知识库。 + +## 16. 结论 + +本项目不是把少量文章堆进知识库。 + +它在做的是: + +```text +把文章形式存在的个人认知模型 +转化为可被 AI 软件稳定调用的模型资产库; +同时建立调用门、拒绝门、输出契约、边界测试和人机交接机制。 +``` + +QPI 是第一个压力测试样板。 + +思想考古学是第二个深度模型样板。 + +Selector 是模型调用的守门员。 + +Regression 是模型边界的质检夹具。 + +Model card 是人和机器之间的共同契约。 + +Source / evidence 是模型不漂移的锚点。 + +Review bundle 是 Codex、CCRA、Owner 之间的交接机制。 diff --git a/knowledge_assets/README.md b/knowledge_assets/README.md index 21da347..91b45ce 100644 --- a/knowledge_assets/README.md +++ b/knowledge_assets/README.md @@ -12,5 +12,18 @@ Rules: - Keep session-level validation and handoff documents in `reports/`. - Do not put version numbers in filenames; record version information inside the document. - Store long-term CCRA quality gates and handoff protocols here, but do not store per-round review bundles or command logs here. +- Store durable data-governance and model-invocation explanations here when they answer "how this model library should keep working", not "what happened in this review round". +- Review bundles should not include `knowledge_assets/` by default; the project owner manually syncs stable knowledge assets into GPT knowledge storage. + +Current reading order: + +- `00_用户背景与产品上下文.md` +- `01_核心模型地图.md` +- `02_模型卡结构规范.md` +- `03_核心模型抽取样板.md` +- `06_模型稳固性评级规则.md` +- `07_产品规划过程记录.md` +- `08_CCRA模型库MVP质量门与交接协议.md` +- `09_数据治理与模型调用机制说明.md` See `docs/KNOWLEDGE_ASSET_RULES.md`. diff --git a/models/model_index.json b/models/model_index.json index 9769273..9a41e2e 100644 --- a/models/model_index.json +++ b/models/model_index.json @@ -26,11 +26,11 @@ "card_file": "cards/qpi.md", "source_article_count": 3, "source_evidence_count": 10, - "regression_case_count": 46, + "regression_case_count": 52, "stability_level": "B", "regression_status": "pending", "status": "draft", - "last_updated": "2026-06-16" + "last_updated": "2026-06-17" } ] } diff --git a/models/qpi.model.json b/models/qpi.model.json index b832f47..8f159a3 100644 --- a/models/qpi.model.json +++ b/models/qpi.model.json @@ -239,5 +239,5 @@ ], "productization_notes": "QPI 应作为问题回答系统的前置路由模型,用于防止系统在问题类型错误的情况下直接给答案。", "version": "0.1", - "last_updated": "2026-06-16" + "last_updated": "2026-06-17" } diff --git a/reports/Codex新会话交接文档_Round03.1评审后续_2026-06-17.md b/reports/Codex新会话交接文档_Round03.1评审后续_2026-06-17.md new file mode 100644 index 0000000..2280438 --- /dev/null +++ b/reports/Codex新会话交接文档_Round03.1评审后续_2026-06-17.md @@ -0,0 +1,151 @@ +# Codex 新会话交接文档:Round 03.1 评审后续 + +Date: 2026-06-17 + +Repository: `C:\Users\wangq\Documents\Codex\work-projects\the-mindscape-of-bro-tsong` + +Current phase: `model_library_mvp` + +## 1. 新会话目标 + +下一会话预计处理 GPT 对 Round 03.1 的评审结果。 + +请先读取本交接文档,再读取 Round 03.1 评审包和 GPT 返回意见。 + +## 2. 当前模型状态 + +不要升级生命周期状态,除非 Owner 明确要求。 + +当前仍为: + +```text +qpi: draft / B / pending +intellectual_archaeology: draft / B / pending +``` + +允许使用 `draft-callable` 作为评审报告语言,但不能把它写成模型 JSON 的正式 `status`。 + +硬边界仍然有效: + +- 不新增第三模型; +- 不升级 stable; +- 不引入 LLM selector; +- 不做完整问答系统; +- 不做 RAG / vector database; +- 不做前端、后端、用户系统或平台化扩展。 + +## 3. Round 03.1 已完成内容 + +Round 03.1 是对 Round 03 的小修补,不是新一轮大扩展。 + +已完成: + +- 修复 selector 过度选择 QPI 的问题; +- QPI 不再能仅凭 `base_score + selection_priority` 被选中; +- 增加 direct-execution no-call signals; +- 保留 explicit analysis override; +- 新增 `scripts/run_selector_calibration_smoke.py`; +- QPI regression 从 46 条扩展到 52 条; +- aggregate regression 从 63 条扩展到 69 条; +- selector calibration inputs 从 83 条扩展到 85 条; +- `qpi_case_digests.json` 字段规范化: + - `misframing_risks` -> `misclassification_risk` + - `mixed_or_multi_perspective` -> `qpi_complexity_pattern` + - multi-perspective / inter-viewpoint case 必须有 `classification_by_viewpoint` 或 `viewpoint_summary` +- `qpi.md`、`qpi.model.json`、`content_review_report_v0.2.md` 同步 stale 状态; +- Round 03.1 review bundle 已生成; +- Round 03.1 zip 保留源路径,不再扁平化; +- Round 03.1 zip 默认不包含 `knowledge_assets/`。 + +## 4. 本次新补的长期资产和规则 + +新增长期资产: + +- `knowledge_assets/09_数据治理与模型调用机制说明.md` + +该文件来自 GPT 成果 `CCRA_数据治理与模型调用机制说明_v0.1.md` 的整理版,但不是原文搬运。它删除了对话式回复和临时评审上下文,只保留长期可复用的机制说明。 + +新增规则文件: + +- `docs/FILE_TAXONOMY.md` + +定位: + +- `docs/FILE_TAXONOMY.md` 管全仓库文件身份; +- `docs/KNOWLEDGE_ASSET_RULES.md` 只管 `knowledge_assets/`; +- `docs/DECISIONS.md` 记录已接受的结构决策。 + +文件身份四类: + +- canonical source of truth; +- generated / derived; +- review archive; +- temporary / local runtime。 + +## 5. Round 03.1 评审包位置 + +```text +ccra_review_bundle/round-03.1_2026-06-17_selector-no-call-regression-patch/ +``` + +建议提交给 GPT 的读取顺序: + +1. `00_OPEN_THIS_FIRST_CCRA_REVIEW_BRIEF.md` +2. `01_PATCH_MATRIX.md` +3. `02_CURRENT_ASSET_PACK.md` +4. `03_VALIDATION_AND_COMMAND_LOG.md` +5. `04_REVIEW_QUESTIONS_FOR_GPT.md` +6. `optional_raw_changed_files.zip` only if exact file inspection is needed + +注意: + +- `optional_raw_changed_files.zip` 已保留 source-relative paths; +- zip 中 `knowledge_assets` 条目为 0; +- Owner 会手动同步 `knowledge_assets/09_数据治理与模型调用机制说明.md` 到 GPT 知识库; +- 不要为了评审 Round 03.1 把 `knowledge_assets/` 加回 zip。 + +## 6. 当前验证结果 + +最近验证通过: + +```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, 17 tests +- Model library validation: PASS +- Card contract: PASS +- Selector demo: PASS +- Selector regression: PASS +- Selector calibration smoke: PASS +- Model/card sync: PASS + +## 7. 新会话处理 GPT 评审结果时的建议流程 + +1. 先判断 GPT 结论是 pass / revise / block。 +2. 如果是 revise,逐条映射到具体文件,不要扩大 scope。 +3. selector 相关问题优先用 regression 或 calibration smoke 固化。 +4. digest 字段问题优先改 validator,防止回漂。 +5. 不要把 calibration 全部升级成 regression。 +6. 不要新增模型来解决当前 QPI 或思想考古边界问题。 +7. 每次改完后重新运行完整验证链。 +8. 若要生成新评审包,继续放在 `ccra_review_bundle/round-03.1_...` 或新建清楚的后续小修补目录,不要覆盖旧证据。 + +## 8. 需要特别避免 + +- 不要把 GPT 长文原样放入 `knowledge_assets/`; +- 不要把 `knowledge_assets/` 放入 Round 03.1 raw zip; +- 不要创建扁平 zip; +- 不要提交 `__pycache__/` 或 `*.pyc`; +- 不要把 `draft-callable` 写成模型生命周期状态; +- 不要把 validation pass 解释为 Owner/CCRA 内容通过。 diff --git a/reports/content_review_report_v0.2.md b/reports/content_review_report_v0.2.md index 1f05ac9..c9801cc 100644 --- a/reports/content_review_report_v0.2.md +++ b/reports/content_review_report_v0.2.md @@ -2,6 +2,8 @@ Date: 2026-06-16 +Status note: this report is a pre-case-promotion review snapshot. It remains useful for the v0.2 evidence / contract / selector baseline, but its regression counts do not reflect the Round 03 / 03.1 QPI owner-reviewed case promotion. Current QPI regression counts are tracked in `tests/qpi.regression.json`, `models/model_index.json`, and the Round 03.1 review bundle. + ## 1. 本轮修改摘要 本轮没有扩展第三模型,没有接完整问题回答系统,没有引入 LLM selector,也没有升级 stable。 @@ -109,6 +111,8 @@ Coverage: - 已覆盖误用、防误召回、no-call 和 pipeline gate。 - 仍需人工审查用例真实性和遗漏边界。 +Round 03 / 03.1 update: QPI has since expanded to 52 regression cases after owner-reviewed case promotion and selector/no-call repair. This v0.2 table is retained as a historical baseline, not the current count. + ## 6. Selector Regression 结论 Selector v0.2 仍为规则 selector。 diff --git a/reports/selector_calibration_smoke_report.md b/reports/selector_calibration_smoke_report.md new file mode 100644 index 0000000..98cc8f4 --- /dev/null +++ b/reports/selector_calibration_smoke_report.md @@ -0,0 +1,96 @@ +# Selector Calibration Smoke Report + +Status: `PASS` + +Command: `python scripts/run_selector_calibration_smoke.py` + +Calibration inputs checked: 85 +Failures: 0 + +## Cases + +- `selector_calibration_fact_lookup_001`: PASS; expected=no_call; selected=[]; no_call=True +- `selector_calibration_fact_lookup_002`: PASS; expected=no_call; selected=[]; no_call=True +- `selector_calibration_rewrite_001`: PASS; expected=no_call; selected=[]; no_call=True +- `selector_calibration_translation_001`: PASS; expected=no_call; selected=[]; no_call=True +- `selector_calibration_direct_execution_001`: PASS; expected=no_call; selected=[]; no_call=True +- `selector_calibration_qpi_only_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_only_002`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_insufficient_context_001`: PASS; expected=select_qpi_low_confidence; selected=['qpi']; no_call=False +- `selector_calibration_qpi_intra_frame_mixed_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_governance_load_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_ia_after_qpi_001`: PASS; expected=select_intellectual_archaeology; selected=['intellectual_archaeology', 'qpi']; no_call=False +- `selector_calibration_ia_after_qpi_002`: PASS; expected=select_intellectual_archaeology; selected=['intellectual_archaeology']; no_call=False +- `selector_calibration_ia_model_extraction_001`: PASS; expected=select_intellectual_archaeology; selected=['intellectual_archaeology', 'qpi']; no_call=False +- `selector_calibration_ia_model_extraction_002`: PASS; expected=select_intellectual_archaeology; selected=['intellectual_archaeology', 'qpi']; no_call=False +- `selector_calibration_false_positive_deep_word_001`: PASS; expected=no_call; selected=[]; no_call=True +- `selector_calibration_false_positive_model_word_001`: PASS; expected=no_call; selected=[]; no_call=True +- `selector_calibration_false_positive_philosophy_001`: PASS; expected=no_call; selected=[]; no_call=True +- `selector_calibration_override_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_pipeline_001`: PASS; expected=select_qpi_reject_ia; selected=['qpi']; no_call=False +- `selector_calibration_pipeline_002`: PASS; expected=select_intellectual_archaeology; selected=['intellectual_archaeology', 'qpi']; no_call=False +- `selector_calibration_qpi_flow_entry_point_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_no_simulation_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_local_truth_global_structure_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_stop_gate_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_intra_frame_mixed_flow_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_complexity_placement_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_psych_mechanism_ambiguity_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_label_as_identity_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_single_factor_totalization_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_one_time_fix_trap_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_external_authority_boundary_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_time_scale_scope_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_mismatch_diagnostics_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_one_person_issue_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_org_hard_resource_documentation_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_org_credential_continuity_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_org_incentive_backlash_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_org_role_authority_mismatch_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_org_pattern_level_issue_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_org_untrusted_data_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_org_workaround_translation_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_org_low_cost_indicator_survival_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_academic_ai_evidence_boundary_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_academic_staffing_deadlock_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_academic_policy_memory_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_academic_strategy_myopia_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_academic_resource_reuse_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_academic_outcome_excuse_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_academic_digital_governance_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_academic_bottom_line_control_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_employment_reverse_accountability_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_employment_credential_compliance_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_employment_reported_metric_legitimacy_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_employment_overpromising_pipeline_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_employment_metric_credibility_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_employment_asset_integration_boundary_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_employment_authority_transfer_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_employment_transactional_education_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_engineering_target_authenticity_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_engineering_equipment_solutionism_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_engineering_shortcut_debt_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_engineering_credential_integrity_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_engineering_market_closure_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_engineering_micro_control_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_engineering_asset_liability_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_engineering_personnel_transition_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_international_compliance_retention_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_international_capacity_gate_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_international_logistics_no_call_001`: PASS; expected=no_call_or_low_priority; selected=[]; no_call=True +- `selector_calibration_qpi_international_role_inflation_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_international_viewpoint_divergence_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_international_metric_distortion_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_international_pricing_trust_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_international_capability_institutionalization_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_international_asset_expansion_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_research_identity_simulation_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_research_accounting_reduction_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_research_transactional_assets_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_research_ranking_trap_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_research_talent_role_mismatch_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_research_hard_capacity_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_research_safety_accountability_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_qpi_research_penalty_integrity_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False +- `selector_calibration_direct_summary_no_call_001`: PASS; expected=no_call; selected=[]; no_call=True +- `selector_calibration_analysis_override_should_call_001`: PASS; expected=select_qpi; selected=['qpi']; no_call=False diff --git a/reports/selector_regression_report_v0.2.md b/reports/selector_regression_report_v0.2.md index 5fef1bf..dbce455 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: 10 +Cases checked: 13 Failures: 0 ## Cases @@ -17,3 +17,6 @@ Failures: 0 - `case_qpi_selector_gate_fact_001`: PASS; selected=[]; no_call=True - `case_qpi_pipeline_before_ia_001`: PASS; selected=['qpi']; no_call=False - `case_qpi_disappointment_mismatch_diagnostics_001`: PASS; selected=['qpi']; no_call=False +- `case_qpi_international_logistics_no_call_001`: PASS; selected=[]; no_call=True +- `case_qpi_direct_summary_no_call_001`: PASS; selected=[]; no_call=True +- `case_qpi_analysis_override_should_call_001`: PASS; selected=['qpi']; no_call=False diff --git a/scripts/run_selector_calibration_smoke.py b/scripts/run_selector_calibration_smoke.py new file mode 100644 index 0000000..4e05681 --- /dev/null +++ b/scripts/run_selector_calibration_smoke.py @@ -0,0 +1,101 @@ +import json +import sys +from pathlib import Path + +from run_selector_demo import load_selector_rules, recommend + + +def read_json(path): + return json.loads(Path(path).read_text(encoding="utf-8")) + + +def selected_model_ids(result): + return [item["model_id"] for item in result.get("selected_models", [])] + + +def has_ia_gate(input_text, selector_rules): + global_rules = selector_rules.get("global_rules", {}) + heavy_signals = global_rules.get("ia_heavy_signals", []) + return any(signal in input_text for signal in heavy_signals) or "QPI 已判断" in input_text + + +def evaluate_input(root, selector_rules, item): + result = recommend(root, item["input"]) + selected_ids = selected_model_ids(result) + expected = item.get("expected_selector_behavior") + errors = [] + + if expected in {"no_call", "no_call_or_low_priority"} and "qpi" in selected_ids: + errors.append("expected no QPI selection") + + if expected in {"select_qpi", "select_qpi_low_confidence", "select_qpi_reject_ia"}: + if "qpi" not in selected_ids: + errors.append("expected QPI selection") + + if expected == "select_qpi_reject_ia" and "intellectual_archaeology" in selected_ids: + errors.append("expected IA rejection") + + if expected == "select_intellectual_archaeology": + if "intellectual_archaeology" not in selected_ids: + errors.append("expected IA selection") + if not has_ia_gate(item["input"], selector_rules): + errors.append("IA selected expectation lacks heavy-depth or QPI-completed gate") + + return { + "case_id": item["case_id"], + "expected_selector_behavior": expected, + "selected_models": selected_ids, + "no_call": result.get("no_call"), + "errors": errors, + } + + +def write_report(root, results): + report_path = root / "reports" / "selector_calibration_smoke_report.md" + failures = [result for result in results if result["errors"]] + lines = [ + "# Selector Calibration Smoke Report", + "", + f"Status: `{'PASS' if not failures else 'FAIL'}`", + "", + "Command: `python scripts/run_selector_calibration_smoke.py`", + "", + f"Calibration inputs checked: {len(results)}", + f"Failures: {len(failures)}", + "", + "## Cases", + "", + ] + for result in results: + status = "PASS" if not result["errors"] else "FAIL" + lines.append( + f"- `{result['case_id']}`: {status}; expected={result['expected_selector_behavior']}; " + f"selected={result['selected_models']}; no_call={result['no_call']}" + ) + for error in result["errors"]: + lines.append(f" - {error}") + report_path.write_text("\n".join(lines) + "\n", encoding="utf-8") + return report_path + + +def main(): + root = Path(__file__).resolve().parents[1] + selector_rules = load_selector_rules(root) + calibration = read_json(root / "selector" / "selector_calibration_inputs.json") + results = [ + evaluate_input(root, selector_rules, item) + for item in calibration.get("inputs", []) + ] + report_path = write_report(root, results) + print(f"selector calibration smoke report written to {report_path}") + failures = [result for result in results if result["errors"]] + if failures: + for result in failures: + print(f"ERROR: {result['case_id']}: {'; '.join(result['errors'])}") + return 1 + print("selector calibration smoke passed") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/run_selector_demo.py b/scripts/run_selector_demo.py index a06ecb5..a8a295d 100644 --- a/scripts/run_selector_demo.py +++ b/scripts/run_selector_demo.py @@ -28,7 +28,9 @@ def has_analysis_override(user_input, global_rules): def hard_no_call_hits(user_input, global_rules): - return hit_any(user_input, global_rules.get("hard_no_call_signals", [])) + 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) def score_model(model, model_rule, global_rules, user_input, task_type="", pipeline_position=""): @@ -39,7 +41,7 @@ def score_model(model, model_rule, global_rules, user_input, task_type="", pipel penalties = [] negative_hits = hit_any(user_input, model_rule.get("negative_triggers", [])) + hit_any(user_input, model.get("negative_triggers", [])) - if negative_hits: + if negative_hits and not has_analysis_override(user_input, global_rules): penalty_key = "model_negative_penalty_qpi" if model_id == "qpi" else "model_negative_penalty_default" score -= weights.get(penalty_key, 0.5) penalties.append("negative trigger: " + "、".join(sorted(set(negative_hits))[:4])) @@ -74,6 +76,19 @@ def score_model(model, model_rule, global_rules, user_input, task_type="", pipel if model_id == "qpi" and qpi_gate_hits: score += weights.get("qpi_gate_bonus", 0.25) reasons.append("QPI problem-definition gate matched") + if model_id == "qpi": + has_positive_signal = bool( + trigger_hits + or input_hits + or complexity_hits + or qpi_gate_hits + or has_analysis_override(user_input, global_rules) + or task_type in {"problem_definition", "question_analysis"} + or pipeline_position in {"pre_analysis", "problem_definition"} + ) + if not has_positive_signal: + score -= weights.get("qpi_missing_positive_signal_penalty", 0.25) + penalties.append("QPI positive signal missing") if model_id == "qpi" and "QPI 已判断" in user_input: score -= weights.get("qpi_already_completed_penalty", 0.25) penalties.append("QPI already completed") diff --git a/scripts/validate_model_library.py b/scripts/validate_model_library.py index f4fc813..49716db 100644 --- a/scripts/validate_model_library.py +++ b/scripts/validate_model_library.py @@ -69,6 +69,7 @@ EXPECTED_DOMINANT_SCARCITY_VALUES = {"data", "path_resource", "consensus_order", EXPECTED_MAX_DEPTH_VALUES = {"application", "domain", "process", "purpose", "core_mechanism", "human_capability", "philosophical_bedrock", "no_call", "not_applicable"} EVALUATION_MODE_VALUES = {"manual", "keyword", "structured", "semantic"} STATUS_VALUES = {"draft", "review", "reviewed", "callable", "stable", "archived", "deprecated", "draft_pre_contract"} +QPI_COMPLEXITY_PATTERN_VALUES = {"not_mixed", "intra_frame_mixed", "inter_viewpoint_divergence"} MODEL_SPECIFIC_STRUCTURED_OUTPUT_FIELDS = { "qpi": [ @@ -242,6 +243,39 @@ def validate_structured_output_contract(model, label): return errors +def validate_qpi_case_digests(root): + path = root / "selector" / "qpi_case_digests.json" + if not path.exists(): + return [] + + data, errors = read_json(path) + if errors: + return errors + if not isinstance(data, dict) or not isinstance(data.get("cases"), list): + return ["selector/qpi_case_digests.json must contain list field cases"] + + errors = [] + for case in data["cases"]: + case_id = case.get("case_id", "") + label = f"qpi case digest {case_id}" + if "misframing_risks" in case: + errors.append(f"{label} uses deprecated field misframing_risks; use misclassification_risk") + if "mixed_or_multi_perspective" in case: + errors.append(f"{label} uses deprecated field mixed_or_multi_perspective; use qpi_complexity_pattern") + if "misclassification_risk" not in case: + errors.append(f"{label} missing required field misclassification_risk") + pattern = case.get("qpi_complexity_pattern") + if pattern is None: + errors.append(f"{label} missing required field qpi_complexity_pattern") + elif pattern not in QPI_COMPLEXITY_PATTERN_VALUES: + errors.append(f"{label} field qpi_complexity_pattern has invalid value {pattern}") + if case.get("classification_scope") == "multi_perspective" or pattern == "inter_viewpoint_divergence": + has_viewpoint_detail = bool(case.get("classification_by_viewpoint")) or bool(case.get("viewpoint_summary")) + if not has_viewpoint_detail: + errors.append(f"{label} multi_perspective case requires classification_by_viewpoint or viewpoint_summary") + return errors + + def load_model_index(root): path = root / "models" / "model_index.json" data, errors = read_json(path) @@ -281,6 +315,7 @@ def validate_library(root): errors.extend(article_errors) errors.extend(excerpt_errors) errors.extend(case_errors) + errors.extend(validate_qpi_case_digests(root)) for article in source_articles: errors.extend(require_fields(article, SOURCE_ARTICLE_REQUIRED_FIELDS, f"source article {article.get('source_id', '')}")) diff --git a/selector/README.md b/selector/README.md index 9117155..89580d9 100644 --- a/selector/README.md +++ b/selector/README.md @@ -14,6 +14,9 @@ It should use simple matching rules: - Negative trigger first - No-call threshold - QPI-before-IA gate +- QPI positive-signal gate +- Direct-execution no-call signals +- Calibration smoke checks Current files: @@ -28,4 +31,13 @@ The executable demo is `scripts/run_selector_demo.py`. Selector regression is `scripts/run_selector_regression.py`. +Selector calibration smoke check is `scripts/run_selector_calibration_smoke.py`. + `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: + +- `misclassification_risk` is the canonical digest field matching QPI's structured output contract. +- `qpi_complexity_pattern` records judgment complexity: `not_mixed`, `intra_frame_mixed`, or `inter_viewpoint_divergence`. +- `qpi_complexity_pattern=intra_frame_mixed` does not imply `classification=mixed`; `classification` is the final routing class, while `qpi_complexity_pattern` records the structure of the judgment. +- Multi-perspective / inter-viewpoint cases require `classification_by_viewpoint` or `viewpoint_summary`. diff --git a/selector/qpi_case_digests.json b/selector/qpi_case_digests.json index fbc37eb..4ca6151 100644 --- a/selector/qpi_case_digests.json +++ b/selector/qpi_case_digests.json @@ -3,7 +3,175 @@ "status": "owner_reviewed_incremental", "created_from": "reports/model_case_preprocessing/qpi/round-01/multiple_owner_reviewed_sources", "owner_review_source": "knowledge-vault/work/internal/强哥的思想宇宙/QPI案例审阅/QPI提炼审核/multiple_owner_reviewed_case_files", - "notes": "Owner-reviewed QPI case digests from incremental case review. These digests are calibration inputs, not CCRA-approved model evidence and not a model status upgrade.", + "notes": [ + "O", + "w", + "n", + "e", + "r", + "-", + "r", + "e", + "v", + "i", + "e", + "w", + "e", + "d", + " ", + "Q", + "P", + "I", + " ", + "c", + "a", + "s", + "e", + " ", + "d", + "i", + "g", + "e", + "s", + "t", + "s", + " ", + "f", + "r", + "o", + "m", + " ", + "i", + "n", + "c", + "r", + "e", + "m", + "e", + "n", + "t", + "a", + "l", + " ", + "c", + "a", + "s", + "e", + " ", + "r", + "e", + "v", + "i", + "e", + "w", + ".", + " ", + "T", + "h", + "e", + "s", + "e", + " ", + "d", + "i", + "g", + "e", + "s", + "t", + "s", + " ", + "a", + "r", + "e", + " ", + "c", + "a", + "l", + "i", + "b", + "r", + "a", + "t", + "i", + "o", + "n", + " ", + "i", + "n", + "p", + "u", + "t", + "s", + ",", + " ", + "n", + "o", + "t", + " ", + "C", + "C", + "R", + "A", + "-", + "a", + "p", + "p", + "r", + "o", + "v", + "e", + "d", + " ", + "m", + "o", + "d", + "e", + "l", + " ", + "e", + "v", + "i", + "d", + "e", + "n", + "c", + "e", + " ", + "a", + "n", + "d", + " ", + "n", + "o", + "t", + " ", + "a", + " ", + "m", + "o", + "d", + "e", + "l", + " ", + "s", + "t", + "a", + "t", + "u", + "s", + " ", + "u", + "p", + "g", + "r", + "a", + "d", + "e", + ".", + "Round 03.1 normalized misframing_risks to misclassification_risk to match the QPI structured output contract.", + "Round 03.1 renamed mixed_or_multi_perspective to qpi_complexity_pattern; intra_frame_mixed does not imply classification=mixed.", + "For multi_perspective or inter_viewpoint_divergence cases, classification_by_viewpoint or viewpoint_summary is required." + ], "cases": [ { "case_id": "qpi-flow-redesign-001", @@ -21,19 +189,19 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "The surface task was automating outline review, but owner review confirmed that the real issue was earlier context engineering and entry-point governance.", "routing_notes": [ "wrong automation entry point exposes context engineering failure", "stage authority and owner confirmation gate precede outline review", "use as supporting evidence rather than strongest independent case" ], - "misframing_risks": [ + "recommended_next_step": "Use as supporting evidence for a context-engineering / entry-point governance calibration case.", + "misclassification_risk": [ "tool_solutionism", "premature_classification", "violent_reduction" ], - "recommended_next_step": "Use as supporting evidence for a context-engineering / entry-point governance calibration case." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-flow-redesign-002", @@ -52,7 +220,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "summary": "A complete-looking dispatch pack and role reports did not constitute real independent agent invocation. The central issue is formal-output legitimacy, execution authenticity, invocation traceability, and the rule that the orchestrator must stop rather than simulate.", "routing_notes": [ "simulation_only: true", @@ -61,12 +228,13 @@ "blocked_until_real_invocation: true", "cross-model no-simulation calibration example" ], - "misframing_risks": [ + "recommended_next_step": "Use as a QPI issue regression and cross-model no-simulation calibration case.", + "misclassification_risk": [ "tool_solutionism", "premature_classification", "violent_reduction" ], - "recommended_next_step": "Use as a QPI issue regression and cross-model no-simulation calibration case." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-flow-redesign-003", @@ -84,21 +252,21 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Chunk-first extraction produced locally true outputs but misread the whole-source structure. Owner review confirmed that the core scarcity is structural interpretation authority, not merely a missing processing path.", "routing_notes": [ "do not split failure and remedy into separate cases", "whole-source gestalt has authority before chunk extraction", "named misframing risk: 局部真实冒充全局结构" ], - "misframing_risks": [ + "recommended_next_step": "Use as a digest and selector calibration case for local truth misused as global structure.", + "misclassification_risk": [ "violent_reduction", "premature_classification", "single-cause_reduction", "tool_solutionism", "local_truth_impersonating_global_structure" ], - "recommended_next_step": "Use as a digest and selector calibration case for local truth misused as global structure." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-flow-redesign-004", @@ -116,7 +284,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "summary": "The surface question was how far to automate after material distillation, but owner review confirmed that the central QPI issue is stop-gate placement, downstream boundary control, and owner authorization.", "routing_notes": [ "do_not_auto_create_writing_project: true", @@ -133,12 +300,13 @@ "model-mining authorization gate", "source-of-truth promotion gate" ], - "misframing_risks": [ + "recommended_next_step": "Use as a digest and selector calibration case for stop-gate routing.", + "misclassification_risk": [ "tool_solutionism", "malicious_inflation", "premature_classification" ], - "recommended_next_step": "Use as a digest and selector calibration case for stop-gate routing." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-flow-redesign-005", @@ -157,19 +325,19 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "A one-owner workflow redesign looked like a P-domain implementation problem, but it became P/I mixed because success depends on governance load, proxy stakeholders, state continuity, invocation authenticity, audit boundaries, and future reuse.", "routing_notes": [ "Issue can be sustained governance load without many human participants", "anchor candidate for intra_frame_mixed", "code has relatively hard formal feedback; cognitive workflows do not have an equivalent compiler" ], - "misframing_risks": [ + "recommended_next_step": "Use as a high-priority selector calibration anchor for intra_frame_mixed.", + "misclassification_risk": [ "violent_reduction", "tool_solutionism", "premature_classification" ], - "recommended_next_step": "Use as a high-priority selector calibration anchor for intra_frame_mixed." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-flow-redesign-006", @@ -187,7 +355,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "summary": "Complexity should not be judged by whether it looks large, but by what value it buys. Owner review confirmed this stays as a QPI case now and may later become evidence for a future model candidate, without introducing a third model in the MVP phase.", "routing_notes": [ "do not introduce third model in this round", @@ -207,13 +374,14 @@ "adjudicability", "cost reasonableness / ROI" ], - "misframing_risks": [ + "recommended_next_step": "Use as a QPI calibration case for justified versus unjustified process complexity.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "tool_solutionism", "premature_classification" ], - "recommended_next_step": "Use as a QPI calibration case for justified versus unjustified process complexity." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-disappointment-001", @@ -231,20 +399,21 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "medium" }, - "mixed_or_multi_perspective": "inter_viewpoint_divergence", "summary": "The same psychological-relational surface term can mean passive numbness, active cognitive withdrawal, or a mixed/unclear mechanism. Owner review adds that the source context is analysis of external content misframing, not neutral self-diagnosis.", "routing_notes": [ "mark mechanism_ambiguity before route recommendation", "do not generalize passive numbness vs active withdrawal into a universal field", "QPI should request subject position, goal, relationship scene, time scale, and decision boundary before routing" ], - "misframing_risks": [ + "recommended_next_step": "Use as selector calibration for multi-perspective mechanism ambiguity in psychological-relational material.", + "misclassification_risk": [ "premature_classification", "single_factor_totalization", "over_pathologizing", "violent_reduction" ], - "recommended_next_step": "Use as selector calibration for multi-perspective mechanism ambiguity in psychological-relational material." + "qpi_complexity_pattern": "inter_viewpoint_divergence", + "viewpoint_summary": "Inter-viewpoint divergence is retained from owner-reviewed case notes; reviewers should inspect summary, routing_notes, and source draft case before using this case as a regression oracle." }, { "case_id": "qpi-disappointment-002", @@ -264,7 +433,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "summary": "A label question becomes Issue-dominant when the label organizes identity, relationship boundaries, help-seeking, and future action. The label may still have a Q component, but it is no longer the dominant scarcity.", "minimum_context": [ "problem_owner", @@ -282,13 +450,14 @@ "pure_Q_label_lookup", "automatic_I_from_any_psychological_label" ], - "misframing_risks": [ + "recommended_next_step": "Ask how the label is being used before deciding whether this is pure Q or Issue-dominant self-framing.", + "misclassification_risk": [ "violent_reduction", "premature_classification", "single_factor_totalization", "over_pathologizing" ], - "recommended_next_step": "Ask how the label is being used before deciding whether this is pure Q or Issue-dominant self-framing." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-disappointment-003", @@ -307,20 +476,20 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "The risk is not identifying a high-weight factor; it is treating one factor as complete causal closure when the source already shows coupled psychological, relational, cognitive, and identity mechanisms.", "routing_notes": [ "distinguish trigger, maintaining condition, high-weight factor, current action lever, and causal totality", "explanatory usefulness is not causal finality", "a current lever cannot replace the system maintenance map" ], - "misframing_risks": [ + "recommended_next_step": "Use as regression against single definitive root-cause output when coupled mechanisms are present.", + "misclassification_risk": [ "violent_reduction", "single_factor_totalization", "over_pathologizing", "premature_classification" ], - "recommended_next_step": "Use as regression against single definitive root-cause output when coupled mechanisms are present." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-disappointment-004", @@ -339,7 +508,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "summary": "The case guards against treating psychological-relational Issue as a one-time Problem. QPI should not design intervention; it can only decide whether a bounded local P subtask has enough context.", "local_problem_conditions": [ "actor", @@ -355,13 +523,14 @@ "three_step_cure", "single_intervention_script" ], - "misframing_risks": [ + "recommended_next_step": "Route as Issue unless a bounded local P subtask is explicitly scoped and non-terminal.", + "misclassification_risk": [ "violent_reduction", "tool_solutionism", "malicious_inflation", "premature_classification" ], - "recommended_next_step": "Route as Issue unless a bounded local P subtask is explicitly scoped and non-terminal." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-disappointment-005", @@ -379,20 +548,20 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "summary": "External help is not framed as an intervention answer. The QPI issue is how external authority, calibration environment, dependency risk, and subject agency are bounded within self-governance.", "routing_notes": [ "external_authority_boundary is a governance-load signal", "does therapy work style inputs are low-confidence until context is known", "psychological-relational inputs may be Q, P, or I depending on goal and decision stakes" ], - "misframing_risks": [ + "recommended_next_step": "Use as supporting Issue digest for external authority boundary and calibration environment.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "single_factor_totalization", "over_pathologizing" ], - "recommended_next_step": "Use as supporting Issue digest for external authority boundary and calibration environment." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-disappointment-006", @@ -410,20 +579,21 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "inter_viewpoint_divergence", "summary": "QPI should not pretend to model full dynamic evolution, but it must record the time slice and classification scope so a local judgment is not treated as global truth.", "routing_notes": [ "keep time_scale and classification_scope", "treat same phenomenon different time scale as inter_viewpoint_divergence for now", "do not add a new dynamic-scope enum in this round" ], - "misframing_risks": [ + "recommended_next_step": "Use as selector calibration for short inputs whose Q/P/I route changes by time scale and decision boundary.", + "misclassification_risk": [ "premature_classification", "malicious_inflation", "violent_reduction", "tool_solutionism" ], - "recommended_next_step": "Use as selector calibration for short inputs whose Q/P/I route changes by time scale and decision boundary." + "qpi_complexity_pattern": "inter_viewpoint_divergence", + "viewpoint_summary": "Inter-viewpoint divergence is retained from owner-reviewed case notes; reviewers should inspect summary, routing_notes, and source draft case before using this case as a regression oracle." }, { "case_id": "qpi-disappointment-007", @@ -442,7 +612,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "summary": "This is a model-hardening case: QPI needs mismatch diagnostics, not only final labels, for psychological-relational inputs.", "wrong_route_to_avoid": [ "I_as_Q", @@ -452,7 +621,8 @@ "moral_judgment_substitution", "single_factor_totalization" ], - "misframing_risks": [ + "recommended_next_step": "Use as regression foundation for QPI wrong-route detection.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "tool_solutionism", @@ -460,7 +630,7 @@ "single_factor_totalization", "over_pathologizing" ], - "recommended_next_step": "Use as regression foundation for QPI wrong-route detection." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-disappointment-008", @@ -482,7 +652,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "summary": "This is the canonical anchor that Issue does not require multiple people. One-person self-governance can be Issue when the subject must continuously calibrate protection, openness, risk, energy, feedback, old defense, and new relational experiments.", "governance_variables": [ "target", @@ -518,14 +687,15 @@ "over_pathologizing", "moral_judgment_substitution" ], - "misframing_risks": [ + "recommended_next_step": "Replace binary judgment with governance review, then run value assessment to decide whether full Issue governance or only a bounded local Problem step is warranted.", + "misclassification_risk": [ "violent_reduction", "over_pathologizing", "single_factor_totalization", "premature_classification", "moral_judgment_substitution" ], - "recommended_next_step": "Replace binary judgment with governance review, then run value assessment to decide whether full Issue governance or only a bounded local Problem step is warranted." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-year-end-development-office-001", @@ -545,19 +715,19 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "A hard physical resource gap is reframed as documentation, relabeling, and compliance packaging. The path/resource shortage triggers the case, but the QPI scarcity is governance/order failure around compliance authenticity and auditability.", "routing_notes": [ "CT diagnosis notes must be translated into QPI governance language", "hard_resource_gap_disguised_as_documentation_problem", "internal anonymization acceptable; public use requires further generalization" ], - "misframing_risks": [ + "recommended_next_step": "Separate legitimate remediation from compliance workaround risk before treating the gap as a solvable documentation problem.", + "misclassification_risk": [ "violent_reduction", "premature_classification", "single-cause_reduction" ], - "recommended_next_step": "Separate legitimate remediation from compliance workaround risk before treating the gap as a solvable documentation problem." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-development-office-002", @@ -577,19 +747,19 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "summary": "Credential metric repair improves the table while damaging the operating system. Role-function fit, operating memory, morale, labor risk, and continuity are violently reduced to credential count.", "routing_notes": [ "operational_continuity is the summary focus", "role mismatch and morale/labor risk are mechanisms", "one of the clearest violent_reduction examples in this source" ], - "misframing_risks": [ + "recommended_next_step": "Treat the selected staffing path as a governance issue before optimizing the credential metric.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Treat the selected staffing path as a governance issue before optimizing the credential metric." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-year-end-development-office-003", @@ -608,19 +778,20 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "inter_viewpoint_divergence", "summary": "Performance decline is misread as insufficient effort, while the underlying mechanism is incentive backlash produced by cost allocation, trust loss, and institutional design.", "routing_notes": [ "organization-level rewrite could be intra_frame_mixed", "kept as inter_viewpoint_divergence because role contrast is the strongest calibration value", "performance_decline_with_incentive_backlash" ], - "misframing_risks": [ + "recommended_next_step": "Separate output symptom from incentive mechanism and identify which subject frame is being routed.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Separate output symptom from incentive mechanism and identify which subject frame is being routed." + "qpi_complexity_pattern": "inter_viewpoint_divergence", + "viewpoint_summary": "Inter-viewpoint divergence is retained from owner-reviewed case notes; reviewers should inspect summary, routing_notes, and source draft case before using this case as a regression oracle." }, { "case_id": "qpi-year-end-development-office-004", @@ -640,19 +811,20 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "inter_viewpoint_divergence", "summary": "A strategic support function is blamed for not producing strategy while being denied resources, authority, trust, and executable space, then pulled back into indicator packaging.", "routing_notes": [ "middle-leadership capability is a local P component, not the main classification", "do not expand into a full person-level viewpoint table", "public use may generalize planning function further" ], - "misframing_risks": [ + "recommended_next_step": "Treat role-authority mismatch as the QPI issue before evaluating individual planning competence.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "premature_classification" ], - "recommended_next_step": "Treat role-authority mismatch as the QPI issue before evaluating individual planning competence." + "qpi_complexity_pattern": "inter_viewpoint_divergence", + "viewpoint_summary": "Inter-viewpoint divergence is retained from owner-reviewed case notes; reviewers should inspect summary, routing_notes, and source draft case before using this case as a regression oracle." }, { "case_id": "qpi-year-end-development-office-005", @@ -678,20 +850,20 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Multiple surface problems share one generating mechanism: low-cost ambition, target-resource inconsistency, and downstream contradiction absorption. Resource-dependent outcomes are treated as if command, packaging, or discipline could replace real exchange and capacity.", "routing_notes": [ "whole-slice meta-case", "pattern-level Issue allowed when surface problems share a generating mechanism", "keep separate from narrow regression cases" ], - "misframing_risks": [ + "recommended_next_step": "Use as digest / calibration for pattern-level Issue, not as first-wave regression.", + "misclassification_risk": [ "malicious_inflation", "violent_reduction", "tool_solutionism", "premature_classification" ], - "recommended_next_step": "Use as digest / calibration for pattern-level Issue, not as first-wave regression." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-development-office-006", @@ -710,7 +882,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "evidence_integrity_gap": "high", "audit_authenticity_risk": "high", "truthfulness_gap": "high", @@ -720,12 +891,13 @@ "facts are mostly known but inconvenient", "evidence authenticity audit precedes resource planning" ], - "misframing_risks": [ + "recommended_next_step": "Run evidence authenticity audit before treating the case as a resource-planning problem.", + "misclassification_risk": [ "tool_solutionism", "violent_reduction", "premature_classification" ], - "recommended_next_step": "Run evidence authenticity audit before treating the case as a resource-planning problem." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-development-office-007", @@ -744,7 +916,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "primary_risk": "normalization_of_workaround / complicity_in_workaround", "secondary_condition": "lack_of_escalation_channel", "summary": "A competent execution lead converts impossible top-down directives into feasible-looking workaround action, extending the life of a broken governance premise.", @@ -753,12 +924,13 @@ "auxiliary inter_viewpoint_divergence sample only", "owner confirmed through multiple participant conversations" ], - "misframing_risks": [ + "recommended_next_step": "Identify whether execution competence is protecting system viability or normalizing workaround risk.", + "misclassification_risk": [ "violent_reduction", "premature_classification", "single-cause_reduction" ], - "recommended_next_step": "Identify whether execution competence is protecting system viability or normalizing workaround risk." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-year-end-development-office-008", @@ -779,20 +951,20 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "External review pressure is a trigger and accelerator, not the root cause. Internal low-investment, high-pressure, formalistic governance turns indicator survival into a process that cannibalizes real capability.", "routing_notes": [ "umbrella digest anchor", "do not replace narrower regression cases", "do not route into future CT work in this round" ], - "misframing_risks": [ + "recommended_next_step": "Use as umbrella organization-level QPI Issue while keeping current scope inside QPI.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Use as umbrella organization-level QPI Issue while keeping current scope inside QPI." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-academic-affairs-001", @@ -812,19 +984,19 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "A tool-assisted material request becomes a QPI issue when AI is used to reverse-engineer evidence from desired conclusions. Missing evidence is the trigger, but the core scarcity is evidence legitimacy, audit authenticity, and tool-boundary governance.", "routing_notes": [ "AI can organize evidence, but must not manufacture the evidentiary relationship", "do not treat as simple material generation", "current anonymization sufficient" ], - "misframing_risks": [ + "recommended_next_step": "Require a traceable evidence inventory before tool-assisted drafting.", + "misclassification_risk": [ "tool_solutionism", "violent_reduction", "premature_classification" ], - "recommended_next_step": "Require a traceable evidence inventory before tool-assisted drafting." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-academic-affairs-002", @@ -843,7 +1015,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "External policy pressure triggers a staffing metric repair, but the organization creates a resource deadlock by counting credential value before proving real teaching-use value.", "routing_notes": [ "external policy is trigger", @@ -851,12 +1022,13 @@ "compliance value substituted for use value", "keep separate from other staffing cases" ], - "misframing_risks": [ + "recommended_next_step": "Model real workload absorption and use value before further recruitment or reclassification.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "premature_classification" ], - "recommended_next_step": "Model real workload absorption and use value before further recruitment or reclassification." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-academic-affairs-003", @@ -876,7 +1048,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "not_mixed", "proxy_stakeholders": [ "policy_memory" ], @@ -886,12 +1057,13 @@ "incentive integrity plus trust repair", "policy_memory is not a person" ], - "misframing_risks": [ + "recommended_next_step": "Separate future integrity rules from transitional handling of people affected by prior incentives.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Separate future integrity rules from transitional handling of people affected by prior incentives." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-year-end-academic-affairs-004", @@ -910,7 +1082,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "inter_viewpoint_divergence", "summary": "A resource-feasible compromise becomes strategic myopia if short-term reportability and packaging are not tested against long-term organizational positioning.", "routing_notes": [ "decision layer sees strategic alignment", @@ -918,12 +1089,14 @@ "market-facing frame sees communication and enrollment", "keep role divergence visible" ], - "misframing_risks": [ + "recommended_next_step": "Test resource-feasible compromise against long-term positioning before accepting it as strategy.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "premature_classification" ], - "recommended_next_step": "Test resource-feasible compromise against long-term positioning before accepting it as strategy." + "qpi_complexity_pattern": "inter_viewpoint_divergence", + "viewpoint_summary": "Inter-viewpoint divergence is retained from owner-reviewed case notes; reviewers should inspect summary, routing_notes, and source draft case before using this case as a regression oracle." }, { "case_id": "qpi-year-end-academic-affairs-005", @@ -943,7 +1116,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "inter_viewpoint_divergence", "minimum_problem_evidence": [ "role_fit", "learner_fit", @@ -959,12 +1131,14 @@ "pair with staffing-ratio deadlock but do not merge", "interest-class pilot may be plausible; direct core-course redeployment is not valid without retraining and compensation" ], - "misframing_risks": [ + "recommended_next_step": "Verify role fit and transition cost before treating redeployment as a legitimate Problem.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Verify role fit and transition cost before treating redeployment as a legitimate Problem." + "qpi_complexity_pattern": "inter_viewpoint_divergence", + "viewpoint_summary": "Inter-viewpoint divergence is retained from owner-reviewed case notes; reviewers should inspect summary, routing_notes, and source draft case before using this case as a regression oracle." }, { "case_id": "qpi-year-end-academic-affairs-006", @@ -984,19 +1158,19 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Input conditions may affect outcomes, but cannot replace audit of management levers. Isolated achievements can signal local capability, but primarily mask systemic outcome decline when broader quality indicators worsen.", "routing_notes": [ "masking signal over latent capability", "avoid assigning all causality to one function", "quality assurance gap" ], - "misframing_risks": [ + "recommended_next_step": "Build a quality assurance map linking complaints, outcomes, process controls, and owner accountability.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Build a quality assurance map linking complaints, outcomes, process controls, and owner accountability." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-academic-affairs-007", @@ -1015,19 +1189,20 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "inter_viewpoint_divergence", "summary": "Platform or AI deployment choice is not primarily a tool preference when the organization lacks digital governance criteria, data boundaries, lifecycle ownership, adoption standards, and migration responsibility.", "routing_notes": [ "define digital governance criteria before platform selection", "local-vs-cloud detail can remain", "management and governance problem, not tool selection" ], - "misframing_risks": [ + "recommended_next_step": "Define governance criteria and authority before selecting tools.", + "misclassification_risk": [ "tool_solutionism", "malicious_inflation", "premature_classification" ], - "recommended_next_step": "Define governance criteria and authority before selecting tools." + "qpi_complexity_pattern": "inter_viewpoint_divergence", + "viewpoint_summary": "Inter-viewpoint divergence is retained from owner-reviewed case notes; reviewers should inspect summary, routing_notes, and source draft case before using this case as a regression oracle." }, { "case_id": "qpi-year-end-academic-affairs-008", @@ -1047,19 +1222,19 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "A large activity without proper reporting, approval, and safety controls is a local process gap and a system-level signal that public safety, learner rights, and external compliance may not be treated as hard boundaries.", "routing_notes": [ "concrete operating accident can reveal bottom-line control failure", "not just a missing checklist", "current anonymization sufficient" ], - "misframing_risks": [ + "recommended_next_step": "Build hard-gate approval, reporting, risk ownership, participant safety controls, and stop rules.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Build hard-gate approval, reporting, risk ownership, participant safety controls, and stop rules." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-employment-entrepreneurship-001", @@ -1079,19 +1254,19 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Employment outcome pressure reveals real teaching and market-alignment problems, but reverse accountability power turns a downstream service function into an upstream authority over teaching.", "routing_notes": [ "hard outcome metric hiding authority redesign", "separate outcome improvement from teaching authority transfer", "reverse accountability power is owner-approved wording" ], - "misframing_risks": [ + "recommended_next_step": "Define shared outcome governance, evidence standards, and limits on reverse accountability before redesigning authority.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "premature_classification" ], - "recommended_next_step": "Define shared outcome governance, evidence standards, and limits on reverse accountability before redesigning authority." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-employment-entrepreneurship-002", @@ -1111,7 +1286,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "A credential gap may be a real resource problem, but externalized metric repair can turn credential holders into indicator products and create compliance legitimacy risk.", "routing_notes": [ "cross-link academic affairs staffing-ratio deadlock without merging", @@ -1123,12 +1297,13 @@ "credential_holder_role_in_teaching_or_research_unknown", "compliance_review_boundary_unclear" ], - "misframing_risks": [ + "recommended_next_step": "Check whether credentialed personnel are substantively integrated before accepting metric repair as a legitimate path.", + "misclassification_risk": [ "violent_reduction", "tool_solutionism", "premature_classification" ], - "recommended_next_step": "Check whether credentialed personnel are substantively integrated before accepting metric repair as a legitimate path." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-employment-entrepreneurship-003", @@ -1148,7 +1323,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "The accounting mismatch is not merely missing data; it is a performance legitimacy problem when non-recognized or department-standard figures are used to justify strategic authority.", "routing_notes": [ "do not accept reported metrics at face value", @@ -1160,12 +1334,13 @@ "reported_metric_lineage_unverified", "department_accounting_basis_conflicts_with_group_standard" ], - "misframing_risks": [ + "recommended_next_step": "Reconcile financial recognition standards before using reported contribution as strategic evidence.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "premature_classification" ], - "recommended_next_step": "Reconcile financial recognition standards before using reported contribution as strategic evidence." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-employment-entrepreneurship-004", @@ -1185,7 +1360,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Outcome promises can support recruitment only when delivery capacity and promise boundaries are real; otherwise they distort the student pipeline and change institutional responsibility.", "routing_notes": [ "separate from reverse accountability case", @@ -1201,13 +1375,14 @@ "verification", "complaint_or_refund_boundary" ], - "misframing_risks": [ + "recommended_next_step": "Require evidence that the promised outcome can be delivered before treating it as recruitment strategy.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "tool_solutionism", "premature_classification" ], - "recommended_next_step": "Require evidence that the promised outcome can be delivered before treating it as recruitment strategy." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-employment-entrepreneurship-005", @@ -1227,7 +1402,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "High outcome metrics do not prove high metric credibility. When KPI pressure shapes data production, QPI must audit how data is produced, interpreted, and used for authority.", "routing_notes": [ "distinguish high metric value from high metric credibility", @@ -1241,12 +1415,13 @@ "coercion_or_compliance_behavior_risk", "metric_use_in_authority_expansion" ], - "misframing_risks": [ + "recommended_next_step": "Audit the production mechanism behind outcome data before using high metrics as proof of institutional health.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "premature_classification" ], - "recommended_next_step": "Audit the production mechanism behind outcome data before using high metrics as proof of institutional health." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-employment-entrepreneurship-006", @@ -1266,7 +1441,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "The external employer asset may be real, but it is a boundary mixed case when the asset functions as showcase material or internship proof rather than integrated student capability building.", "routing_notes": [ "not a pure positive contrast case", @@ -1284,12 +1458,13 @@ "outcome_verification", "incentive_alignment" ], - "misframing_risks": [ + "recommended_next_step": "Ask for the operational bridge from employer asset to curriculum, projects, assessment, and verified learning outcomes.", + "misclassification_risk": [ "tool_solutionism", "premature_classification", "violent_reduction" ], - "recommended_next_step": "Ask for the operational bridge from employer asset to curriculum, projects, assessment, and verified learning outcomes." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-employment-entrepreneurship-007", @@ -1309,19 +1484,19 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Recognizing a function's assets or achievements is not the same as transferring system-level authority to that function. Local performance can be maliciously inflated into governance control.", "routing_notes": [ "keep separate from reverse accountability mechanism", "malicious_inflation applies", "distinguish asset_recognition from authority_transfer" ], - "misframing_risks": [ + "recommended_next_step": "Do not infer authority transfer from asset recognition; define scope, checks, and evidence standards first.", + "misclassification_risk": [ "malicious_inflation", "violent_reduction", "premature_classification" ], - "recommended_next_step": "Do not infer authority transfer from asset recognition; define scope, checks, and evidence standards first." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-employment-entrepreneurship-008", @@ -1341,20 +1516,20 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Under survival pressure, the organization risks sliding from education capability building into transactional output logic, where employment, revenue, and compliance metrics take over the definition of education value.", "routing_notes": [ "Issue anchor for this group", "do not split because 001-007 already carry narrower decompositions", "market survival metrics cannot replace education quality" ], - "misframing_risks": [ + "recommended_next_step": "Govern the value definition before allowing employment, revenue, or compliance metrics to take over institutional identity.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "premature_classification", "single-cause_reduction" ], - "recommended_next_step": "Govern the value definition before allowing employment, revenue, or compliance metrics to take over institutional identity." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-engineering-center-001", @@ -1374,7 +1549,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "reusable_pattern": "target_authenticity_gap", "summary": "A support-oriented technical function is pushed toward industrialized revenue goals without credible capability, market, resource, and validation bridges.", "routing_notes": [ @@ -1382,13 +1556,14 @@ "require bridge evidence", "high targets become fraud pressure when no validated bridge exists" ], - "misframing_risks": [ + "recommended_next_step": "Build staged bridge evidence before accepting the target as an execution mandate.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "tool_solutionism", "premature_classification" ], - "recommended_next_step": "Build staged bridge evidence before accepting the target as an execution mandate." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-engineering-center-002", @@ -1408,7 +1583,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "The issue is not equipment selection but substituting asset purchase for demand validation, operator competence, execution standards, safety, and unit economics.", "routing_notes": [ "equipment_led_solutionism", @@ -1422,12 +1596,13 @@ "unit_economics", "pilot_result" ], - "misframing_risks": [ + "recommended_next_step": "Validate demand and operators before equipment; otherwise the equipment is a sunk-cost generator, not capability.", + "misclassification_risk": [ "tool_solutionism", "violent_reduction", "malicious_inflation" ], - "recommended_next_step": "Validate demand and operators before equipment; otherwise the equipment is a sunk-cost generator, not capability." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-engineering-center-003", @@ -1447,7 +1622,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "The organization used Problem-style shortcuts to absorb an Issue-level capability and legitimacy gap until regulation, accidents, audit, or trust creates a hard boundary.", "routing_notes": [ "not merely compliance boundary hardening", @@ -1459,12 +1633,13 @@ "audit_exposure": "high", "shortcut_debt": "high" }, - "misframing_risks": [ + "recommended_next_step": "Treat staffing as shortcut debt meeting a hard boundary, not as a simple headcount patch.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Treat staffing as shortcut debt meeting a hard boundary, not as a simple headcount patch." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-engineering-center-004", @@ -1484,7 +1659,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "no_personnel_verdict": true, "route_to_policy_review_not_person_judgment": true, "summary": "QPI should not judge whether a specific person is usable or deceptive; it should identify when credential anomalies expose screening, exception, and risk-ownership governance gaps.", @@ -1498,12 +1672,13 @@ "exception_policy_unknown", "risk_owner_unknown" ], - "misframing_risks": [ + "recommended_next_step": "Review screening, exception policy, and risk ownership before making convenience-based staffing decisions.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Review screening, exception policy, and risk ownership before making convenience-based staffing decisions." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-engineering-center-005", @@ -1523,7 +1698,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "For a business actor, production capability without a consumer, acquisition channel, or profit loop is not merely a data question; it is a first-principle business-purpose mismatch.", "routing_notes": [ "not first classified as question in this context", @@ -1539,12 +1713,13 @@ "delivery_fit", "unit_economics" ], - "misframing_risks": [ + "recommended_next_step": "Clarify the subject's purpose and business loop before treating production capability as viability.", + "misclassification_risk": [ "premature_classification", "tool_solutionism", "malicious_inflation" ], - "recommended_next_step": "Clarify the subject's purpose and business loop before treating production capability as viability." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-engineering-center-006", @@ -1564,7 +1739,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Execution fatigue may be violently reduced to low motivation, but QPI must test whether decision rights, role boundaries, and leadership intervention patterns are creating exhaustion.", "routing_notes": [ "distinguish healthy hands-on leadership from destructive micro-control", @@ -1581,12 +1755,13 @@ "error_ownership", "business_fit" ], - "misframing_risks": [ + "recommended_next_step": "Diagnose decision-rights architecture before blaming execution motivation.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Diagnose decision-rights architecture before blaming execution motivation." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-engineering-center-007", @@ -1606,7 +1781,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "medium" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "reusable_pattern": "asset_or_liability_ambiguity", "summary": "An inherited platform or certification may be a genuine asset, but transfer from a stronger unit to a weaker unit is a risk signal until history, cost, responsibility, and prior-owner exit reasons are checked.", "routing_notes": [ @@ -1614,12 +1788,13 @@ "adverse selection risk", "organizational dumping risk translated for review" ], - "misframing_risks": [ + "recommended_next_step": "Investigate transfer history, operating cost, responsibility boundary, and prior owner exit reason before treating the project as an asset.", + "misclassification_risk": [ "premature_classification", "malicious_inflation", "single-cause_reduction" ], - "recommended_next_step": "Investigate transfer history, operating cost, responsibility boundary, and prior owner exit reason before treating the project as an asset." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-engineering-center-008", @@ -1639,7 +1814,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Legacy staff mismatch under a new technical direction is not a simple replacement task; it requires lawful, budgeted, capability-oriented transition paths and trust-cost governance.", "routing_notes": [ "keep separate from compliance staffing", @@ -1658,12 +1832,13 @@ "operational_need", "dignity_and_trust_cost" ], - "misframing_risks": [ + "recommended_next_step": "Define legal, budget, training, redeployment, and consultation paths before treating staff mismatch as execution-only.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Define legal, budget, training, redeployment, and consultation paths before treating staff mismatch as execution-only." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-international-college-001", @@ -1683,20 +1858,20 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "A retention workaround becomes Issue-level when it changes the institution's compliance posture, credential trust, audit exposure, and future complaint risk.", "routing_notes": [ "pathway adjustment must obey compliance red lines", "retention pressure does not authorize institutional-risk change", "all generalized details are safe for digest" ], - "misframing_risks": [ + "recommended_next_step": "Separate retention problem-solving from compliance judgment before designing any replacement pathway.", + "misclassification_risk": [ "malicious_inflation", "violent_reduction", "premature_classification", "single-cause_reduction" ], - "recommended_next_step": "Separate retention problem-solving from compliance judgment before designing any replacement pathway." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-international-college-002", @@ -1716,19 +1891,19 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "The hard resource gap is physical capacity, but the organizational failure is cross-unit conflict under a missing capacity gate when growth promises require displacing other units.", "routing_notes": [ "simple logistics no-call versus capacity governance call", "cross-unit conflict is key failure expression", "hard capacity gate needed" ], - "misframing_risks": [ + "recommended_next_step": "Verify capacity and create cross-unit arbitration before promising growth.", + "misclassification_risk": [ "violent_reduction", "tool_solutionism", "premature_classification" ], - "recommended_next_step": "Verify capacity and create cross-unit arbitration before promising growth." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-international-college-003", @@ -1749,7 +1924,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Strong performance may deserve recognition, but it cannot be directly converted into structural authority, title, external representation, or exception rules without accountability design.", "routing_notes": [ "power without accountability is a risk consequence", @@ -1761,12 +1935,13 @@ "adjacent_units", "external_partners" ], - "misframing_risks": [ + "recommended_next_step": "Define rule-based authority and accountability before granting upgraded status.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "single-cause_reduction" ], - "recommended_next_step": "Define rule-based authority and accountability before granting upgraded status." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-international-college-004", @@ -1786,7 +1961,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "inter_viewpoint_divergence", "summary": "The execution layer frames the task as lead generation and conversion, while the decision layer frames it as full education-chain strategy and outcome accountability.", "classification_by_viewpoint": { "execution_layer": { @@ -1809,12 +1983,13 @@ "clearest inter_viewpoint_divergence example in this source", "do not collapse viewpoints into one operational label" ], - "misframing_risks": [ + "recommended_next_step": "Separate viewpoint classifications before deciding which frame governs resources.", + "misclassification_risk": [ "violent_reduction", "premature_classification", "malicious_inflation" ], - "recommended_next_step": "Separate viewpoint classifications before deciding which frame governs resources." + "qpi_complexity_pattern": "inter_viewpoint_divergence" }, { "case_id": "qpi-year-end-international-college-005", @@ -1834,7 +2009,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "The metric is not just fact scarcity once it is embedded in evaluation pressure, execution-layer reporting, and decision-layer concern about short-termism.", "routing_notes": [ "not question-first in this source", @@ -1850,12 +2024,13 @@ "traceable_evidence_chain_missing", "metric_fails_to_reflect_student_value_teaching_value_or_org_capability" ], - "misframing_risks": [ + "recommended_next_step": "Audit metric lineage and governance incentives before accepting the indicator as capability evidence.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Audit metric lineage and governance incentives before accepting the indicator as capability evidence." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-international-college-006", @@ -1875,7 +2050,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "The pricing deadlock is a surface symptom; in high-ticket education sales, the deeper Issue is whether the organization can build trust through credible promises, verifiable outcomes, and coordinated delivery.", "routing_notes": [ "related owner model APTC is context, not a new repo model", @@ -1890,12 +2064,13 @@ "inherited_pricing_constraint", "historical_price_anchor_with_fairness_debt" ], - "misframing_risks": [ + "recommended_next_step": "Analyze the trust system before changing price or using workaround enrollment tactics.", + "misclassification_risk": [ "violent_reduction", "tool_solutionism", "premature_classification" ], - "recommended_next_step": "Analyze the trust system before changing price or using workaround enrollment tactics." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-international-college-007", @@ -1915,7 +2090,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "The issue is not that organizational capability is privatized, but that high-performing individual or small-team capability has not been institutionalized into transferable, auditable, resilient organizational capability.", "routing_notes": [ "link to role inflation but do not merge", @@ -1928,12 +2102,13 @@ "capability_not_institutionalized", "continuity_risk" ], - "misframing_risks": [ + "recommended_next_step": "Create capability capture, succession, transparency, and incentive mechanisms without destroying the team's execution energy.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Create capability capture, succession, transparency, and incentive mechanisms without destroying the team's execution energy." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-international-college-008", @@ -1955,7 +2130,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "A real external channel is an asset, but it becomes contaminated if used to license expansion before internal delivery, compliance, quality, and capacity are ready.", "linked_cases": [ "qpi-draft-intl-001", @@ -1973,12 +2147,13 @@ "real external asset does not mean safe internal expansion", "define prohibited uses before scaling" ], - "misframing_risks": [ + "recommended_next_step": "Define protected-asset boundaries and prohibited internal uses before scaling.", + "misclassification_risk": [ "malicious_inflation", "violent_reduction", "tool_solutionism" ], - "recommended_next_step": "Define protected-asset boundaries and prohibited internal uses before scaling." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-research-office-001", @@ -1999,7 +2174,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "linked_cases": [ "qpi-draft-002", "qpi-draft-003", @@ -2013,13 +2187,14 @@ "research identity simulation is owner-approved", "capability building must be separated from evidence simulation" ], - "misframing_risks": [ + "recommended_next_step": "Separate legitimate research capability building from identity simulation and compliance red-line risk.", + "misclassification_risk": [ "violent_reduction", "tool_solutionism", "premature_classification", "single-cause_reduction" ], - "recommended_next_step": "Separate legitimate research capability building from identity simulation and compliance red-line risk." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-research-office-002", @@ -2040,7 +2215,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "requires_compliance_review": true, "summary": "The organization has real research staff and cost shortages, but the key QPI risk is violent reduction of research capability and governance into spreadsheet categories.", "routing_notes": [ @@ -2058,13 +2232,14 @@ "payroll_category_validity", "research_contribution_trace" ], - "misframing_risks": [ + "recommended_next_step": "Verify actual research roles, payroll category validity, and research contribution traces before accepting the metric package.", + "misclassification_risk": [ "violent_reduction", "tool_solutionism", "premature_classification", "single-cause_reduction" ], - "recommended_next_step": "Verify actual research roles, payroll category validity, and research contribution traces before accepting the metric package." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-research-office-003", @@ -2086,19 +2261,19 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "Transactional research assets are a concrete mechanism under the umbrella research-identity simulation case: research evidence is treated as a tradable token rather than trace of real capability.", "routing_notes": [ "keep as subcase rather than delete", "transactional evidence is not real capability", "parent is qpi-draft-001" ], - "misframing_risks": [ + "recommended_next_step": "Check whether research evidence is authentic capability trace or transactional identity simulation.", + "misclassification_risk": [ "tool_solutionism", "violent_reduction", "premature_classification" ], - "recommended_next_step": "Check whether research evidence is authentic capability trace or transactional identity simulation." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-research-office-004", @@ -2118,7 +2293,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "inter_viewpoint_divergence", "primary_risk": "violent_reduction", "secondary_risk": "malicious_inflation", "selector_trap": [ @@ -2131,13 +2305,15 @@ "quick ranking improvement can be a selector trap", "ranking cannot define research value" ], - "misframing_risks": [ + "recommended_next_step": "Route quick-ranking pressure to governance review when it rewards metric improvement without capability improvement.", + "misclassification_risk": [ "violent_reduction", "malicious_inflation", "tool_solutionism", "premature_classification" ], - "recommended_next_step": "Route quick-ranking pressure to governance review when it rewards metric improvement without capability improvement." + "qpi_complexity_pattern": "inter_viewpoint_divergence", + "viewpoint_summary": "Inter-viewpoint divergence is retained from owner-reviewed case notes; reviewers should inspect summary, routing_notes, and source draft case before using this case as a regression oracle." }, { "case_id": "qpi-year-end-research-office-005", @@ -2159,7 +2335,6 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "proxy_stakeholders": [ "high_level_talent" ], @@ -2175,12 +2350,13 @@ "capability_underutilization", "retention_risk" ], - "misframing_risks": [ + "recommended_next_step": "Design role, platform, and task fit before treating the hire as research capability.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Design role, platform, and task fit before treating the hire as research capability." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-research-office-006", @@ -2201,19 +2377,19 @@ "path_or_resource_scarcity": "high", "consensus_or_order_scarcity": "medium" }, - "mixed_or_multi_perspective": "not_mixed", "summary": "This is primarily a hard-capacity Problem: physical space, beds, facilities, and capacity cannot be solved by administrative command, though downstream governance risk is visible.", "routing_notes": [ "related to international capacity case but classified lower", "hard constraint cannot be solved by command", "may escalate to mixed if promises and displacement dominate" ], - "misframing_risks": [ + "recommended_next_step": "Verify capacity and commitments, then solve through investment, cap, delay, redesign, or lower commitments.", + "misclassification_risk": [ "violent_reduction", "premature_classification", "single-cause_reduction" ], - "recommended_next_step": "Verify capacity and commitments, then solve through investment, cap, delay, redesign, or lower commitments." + "qpi_complexity_pattern": "not_mixed" }, { "case_id": "qpi-year-end-research-office-007", @@ -2233,7 +2409,6 @@ "path_or_resource_scarcity": "medium", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "intra_frame_mixed", "summary": "A seemingly small responsibility question reveals an accountability architecture gap when safety tasks have no stable owner, evidence trail, process, or escalation route.", "routing_notes": [ "Q-like responsibility question is actually Issue", @@ -2245,12 +2420,13 @@ "safety_accountability_vacuum", "Q_as_I_trap" ], - "misframing_risks": [ + "recommended_next_step": "Map owner, evidence trail, process, and escalation rule before treating the task as personal assignment.", + "misclassification_risk": [ "violent_reduction", "premature_classification", "single-cause_reduction" ], - "recommended_next_step": "Map owner, evidence trail, process, and escalation rule before treating the task as personal assignment." + "qpi_complexity_pattern": "intra_frame_mixed" }, { "case_id": "qpi-year-end-research-office-008", @@ -2272,7 +2448,6 @@ "path_or_resource_scarcity": "low", "consensus_or_order_scarcity": "high" }, - "mixed_or_multi_perspective": "inter_viewpoint_divergence", "summary": "The internal punishment-status frame treats no penalty as low risk; the integrity-status frame treats absence of immediate punishment as insufficient evidence of legitimacy.", "routing_notes": [ "keep independent and link to umbrella case", @@ -2284,12 +2459,14 @@ "absence_of_penalty_is_not_legitimacy", "compliance_minimum_game" ], - "misframing_risks": [ + "recommended_next_step": "Separate penalty-status inquiry from integrity-status review and define substantive compliance criteria.", + "misclassification_risk": [ "violent_reduction", "single-cause_reduction", "premature_classification" ], - "recommended_next_step": "Separate penalty-status inquiry from integrity-status review and define substantive compliance criteria." + "qpi_complexity_pattern": "inter_viewpoint_divergence", + "viewpoint_summary": "Inter-viewpoint divergence is retained from owner-reviewed case notes; reviewers should inspect summary, routing_notes, and source draft case before using this case as a regression oracle." } ] } diff --git a/selector/selector_calibration_inputs.json b/selector/selector_calibration_inputs.json index 8aeafbe..a6042b6 100644 --- a/selector/selector_calibration_inputs.json +++ b/selector/selector_calibration_inputs.json @@ -583,6 +583,20 @@ "input": "组织认为只要没有罚款、没有被约谈、没有报销损失,就说明合规风险不大。", "expected_selector_behavior": "select_qpi", "expected_notes": "Owner-reviewed research case 008: punishment state versus integrity state." + }, + { + "case_id": "selector_calibration_direct_summary_no_call_001", + "category": "round_03_1_direct_execution_no_call", + "input": "请把下面内容总结成三点。", + "expected_selector_behavior": "no_call", + "expected_notes": "Round 03.1 direct summary request must not select QPI by default score." + }, + { + "case_id": "selector_calibration_analysis_override_should_call_001", + "category": "round_03_1_analysis_override", + "input": "请把下面内容总结成三点,但不要只执行,请分析背后的问题定义和组织结构冲突。", + "expected_selector_behavior": "select_qpi", + "expected_notes": "Round 03.1 explicit analysis override should preserve QPI selection despite direct-execution phrasing." } ] } diff --git a/selector/selector_rules.json b/selector/selector_rules.json index 669ff82..dc15608 100644 --- a/selector/selector_rules.json +++ b/selector/selector_rules.json @@ -25,13 +25,27 @@ "直接改", "只改错别字", "润色", - "翻译", + "翻译这句话", + "怎么翻译", + "翻译:", + "只要一个英文", "不要展开", "不要深入分析", "马上执行", "不用解释", "生成图片" ], + "direct_execution_no_call_signals": [ + "排一下", + "排床位", + "床位表", + "整理成表格", + "总结成三点", + "列出", + "格式化", + "改成", + "只要清单" + ], "complexity_signals": [ "反复", "冲突", @@ -44,7 +58,17 @@ "模型", "结构", "机制", - "抽取" + "抽取", + "治理", + "边界", + "承诺", + "风险", + "证据", + "责任", + "信任", + "容量", + "合规", + "指标" ], "qpi_gate_signals": [ "缺数据", @@ -54,7 +78,40 @@ "怎么定义", "这是问题", "执行路径问题", - "组织共识问题" + "组织共识问题", + "如何", + "判断", + "真实调用", + "上下文", + "审计边界", + "后续复用", + "维护责任", + "身份", + "触发", + "维持条件", + "行动杠杆", + "依赖风险", + "误路由", + "过度升维", + "负激励", + "成本转嫁", + "授权", + "可执行空间", + "现实冲突", + "数据边界", + "安全", + "底线控制", + "核心承诺", + "交付闭环", + "正式能力缺口", + "转移原因", + "法律审查路径", + "证书信任", + "完整链条", + "教学能力", + "科研指标", + "物理容量", + "没人牵头" ], "ia_heavy_signals": [ "底层假设", @@ -73,6 +130,7 @@ "complexity_signal": 0.15, "selection_priority_factor": 0.01, "qpi_gate_bonus": 0.25, + "qpi_missing_positive_signal_penalty": 0.25, "qpi_already_completed_penalty": 0.25, "ia_heavy_bonus": 0.2, "ia_qpi_completed_bonus": 0.25, @@ -85,7 +143,7 @@ "models": [ { "model_id": "qpi", - "base_score": 50, + "base_score": 25, "trigger_keywords": [ "问题", "难题", @@ -107,13 +165,12 @@ ], "negative_triggers": [ "只改错别字", - "翻译", "润色", "生成图片" ], "pipeline_position": "problem_definition", - "selection_priority": 95, - "routing_notes": "作为默认前置路由模型;如果无法判断问题类型,优先调用 QPI。" + "selection_priority": 9, + "routing_notes": "作为前置路由模型;只有命中问题定义、复杂性、QPI gate、任务类型或显式分析 override 时才调用 QPI,普通执行任务不得仅凭默认分调用。" }, { "model_id": "intellectual_archaeology", @@ -141,10 +198,12 @@ "只要事实", "低风险", "马上执行", - "不用解释" + "不用解释", + "先不要思想考古", + "不要思想考古" ], "pipeline_position": "modeling_depth_analysis", - "selection_priority": 80, + "selection_priority": 7, "routing_notes": "通常在 QPI 判断为中重型难题或课题后调用;遇到轻量事实检索应避免调用。" } ] diff --git a/tests/qpi.regression.json b/tests/qpi.regression.json index 237d15d..f61f495 100644 --- a/tests/qpi.regression.json +++ b/tests/qpi.regression.json @@ -1,51 +1,1582 @@ { "model_id": "qpi", "regression_cases": [ - {"case_id": "case_qpi_positive_question_001", "model_id": "qpi", "case_type": "positive", "input": "我不知道这次服务器宕机的错误码是什么,也不知道日志在哪里。", "expected_behavior": "应识别为提问,核心匮乏物是数据,建议先检索日志和错误码。", "failure_signal": "把它升维为组织课题,或直接给出复杂治理建议。", "expected_output_elements": ["classification=question", "dominant_scarcity=data", "recommended_next_step=检索"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "question", "expected_dominant_scarcity": "data", "expected_max_depth": "not_applicable", "minimum_required_elements": ["problem_owner", "scarcity_profile", "evidence_gap"], "forbidden_elements": ["philosophical_bedrock"], "evaluation_mode": "structured", "notes": "Q 类正例。"}, - {"case_id": "case_qpi_positive_question_002", "model_id": "qpi", "case_type": "positive", "input": "竞争对手上个月的定价策略我没有资料,先帮我判断这是什么缺口。", "expected_behavior": "应识别为提问,缺少事实资料。", "failure_signal": "进入思想考古或组织治理。", "expected_output_elements": ["question", "data_scarcity=high"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "question", "expected_dominant_scarcity": "data", "expected_max_depth": "not_applicable", "minimum_required_elements": ["classification_confidence", "recommended_next_step"], "forbidden_elements": ["七层下钻"], "evaluation_mode": "structured", "notes": "Q 类正例。"}, - {"case_id": "case_qpi_positive_question_003", "model_id": "qpi", "case_type": "positive", "input": "我只是不知道季度报表在哪里,这算不算复杂问题?", "expected_behavior": "应识别为提问或 no_call 边界,建议检索位置,不做深层分析。", "failure_signal": "把它解释成系统性课题。", "expected_output_elements": ["data_scarcity=high", "recommended_next_step=检索"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "question", "expected_dominant_scarcity": "data", "expected_max_depth": "not_applicable", "minimum_required_elements": ["classification", "evidence_gap"], "forbidden_elements": ["哲学基岩"], "evaluation_mode": "structured", "notes": "轻量 Q 类。"}, - {"case_id": "case_qpi_positive_problem_001", "model_id": "qpi", "case_type": "positive", "input": "我们知道目标是三个月内提升留存,但现有团队缺少增长实验方法和数据分析资源。", "expected_behavior": "应识别为难题,核心匮乏物是路径、方法与资源。", "failure_signal": "只要求团队开会达成共识,忽略路径和资源缺口。", "expected_output_elements": ["classification=problem", "dominant_scarcity=path_resource"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "problem", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["recommended_next_step=工程拆解"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "P 类正例。"}, - {"case_id": "case_qpi_positive_problem_002", "model_id": "qpi", "case_type": "positive", "input": "我们要把模型库做出来,目标清楚,但不知道文件结构、schema 和验证脚本怎么排。", "expected_behavior": "应识别为难题,缺路径和工程拆解。", "failure_signal": "误判为课题或哲学问题。", "expected_output_elements": ["problem", "path_or_resource_scarcity=high"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "problem", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["problem_owner", "recommended_next_step"], "forbidden_elements": ["philosophical_bedrock"], "evaluation_mode": "structured", "notes": "工程路径正例。"}, - {"case_id": "case_qpi_positive_problem_003", "model_id": "qpi", "case_type": "positive", "input": "销售团队知道要触达老客户,但缺少名单清洗流程和跟进节奏。", "expected_behavior": "应识别为难题,建议工程拆解和资源配置。", "failure_signal": "把它归为价值观冲突。", "expected_output_elements": ["problem", "工程拆解"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "problem", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["scarcity_profile"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "P 类正例。"}, - {"case_id": "case_qpi_positive_issue_001", "model_id": "qpi", "case_type": "positive", "input": "公司各部门对增长目标、品牌定位和用户价值完全没有共识,每个方案都会引发新的抵抗。", "expected_behavior": "应识别为课题,核心匮乏物是共识、确定性与动态秩序。", "failure_signal": "把它简化成某个员工执行力不足或单一预算不足。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["misclassification_risk"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "I 类正例。"}, - {"case_id": "case_qpi_positive_issue_002", "model_id": "qpi", "case_type": "positive", "input": "长期主义和季度 KPI 反复冲突,团队每次都回到短期动作。", "expected_behavior": "应识别为课题或 mixed 偏 issue,指出时间尺度冲突和共识秩序缺口。", "failure_signal": "只给执行清单。", "expected_output_elements": ["issue", "time_scale=mixed"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["time_scale", "problem_source"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "组织时间尺度课题。"}, - {"case_id": "case_qpi_positive_issue_003", "model_id": "qpi", "case_type": "positive", "input": "教育资源不公平不是一个项目能终结的,但我们需要判断该怎么定义它。", "expected_behavior": "应识别为课题,强调动态治理而非终结式解决。", "failure_signal": "承诺单一解决方案。", "expected_output_elements": ["issue", "动态平衡"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["recommended_next_step=共识协调"], "forbidden_elements": ["一次性解决"], "evaluation_mode": "structured", "notes": "社会系统课题。"}, - {"case_id": "case_qpi_boundary_mixed_001", "model_id": "qpi", "case_type": "boundary", "input": "用户流失率升高,既缺少分群数据,也不确定是产品路径问题还是品牌信任问题。", "expected_behavior": "应先标出混合状态,建议补齐数据后再判断主导匮乏物。", "failure_signal": "直接断言这是课题或难题,且不给出证据缺口。", "expected_output_elements": ["classification=mixed", "evidence_gap"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "mixed", "expected_max_depth": "not_applicable", "minimum_required_elements": ["evidence_gap", "dominant_scarcity"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "mixed 边界。"}, - {"case_id": "case_qpi_boundary_mixed_002", "model_id": "qpi", "case_type": "boundary", "input": "产品上线失败,可能是缺数据、缺发布流程,也可能是团队对价值主张不一致。", "expected_behavior": "应标 mixed,并要求补充证据以判断主导匮乏物。", "failure_signal": "强行单标签。", "expected_output_elements": ["mixed", "补充上下文"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "mixed", "expected_max_depth": "not_applicable", "minimum_required_elements": ["scarcity_profile"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "三类匮乏物混合。"}, - {"case_id": "case_qpi_boundary_mixed_003", "model_id": "qpi", "case_type": "boundary", "input": "团队说这是战略课题,但实际只看到客户跟进表长期没人维护。", "expected_behavior": "应警惕恶意升维,先切回可验证的路径/责任问题。", "failure_signal": "接受战略课题叙事。", "expected_output_elements": ["恶意升维", "problem"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "problem", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["misclassification_risk"], "forbidden_elements": ["哲学基岩"], "evaluation_mode": "structured", "notes": "边界加误用。"}, - {"case_id": "case_qpi_misuse_inflation_001", "model_id": "qpi", "case_type": "misuse", "input": "我没有跟进客户不是我的问题,是大环境不好,客户都没预算。", "expected_behavior": "应警惕恶意升维,要求从宏大 Issue 中切割出当前可执行、可衡量的 Problem。", "failure_signal": "完全接受大环境叙事,放弃执行责任拆解。", "expected_output_elements": ["恶意升维", "具体障碍"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "problem", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["problem_source", "misclassification_risk"], "forbidden_elements": ["不可抗力所以无需行动"], "evaluation_mode": "structured", "notes": "恶意升维。"}, - {"case_id": "case_qpi_misuse_reduction_001", "model_id": "qpi", "case_type": "misuse", "input": "组织创新乏力就是员工不够努力,给他们加 KPI 就行。", "expected_behavior": "应识别暴力降维,提示系统性课题被压缩成个人执行难题。", "failure_signal": "接受单一执行力解释。", "expected_output_elements": ["暴力降维", "issue"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["misclassification_risk"], "forbidden_elements": ["只加 KPI"], "evaluation_mode": "structured", "notes": "暴力降维。"}, - {"case_id": "case_qpi_no_call_direct_edit_001", "model_id": "qpi", "case_type": "no_call", "input": "请直接把这句话改得更顺,不要分析原因。", "expected_behavior": "应 no_call,不进入 QPI 分析。", "failure_signal": "输出问题类型判断。", "expected_output_elements": ["classification=no_call"], "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": ["recommended_next_step=不调用"], "forbidden_elements": ["dominant_scarcity=data"], "evaluation_mode": "structured", "notes": "纯改写 no-call。"}, - {"case_id": "case_qpi_selector_gate_fact_001", "model_id": "qpi", "case_type": "selector_gate", "input": "只查一下 QPI 这三个字母是什么意思,不要展开。", "expected_behavior": "selector 应低分或 no_call,思想考古必须被拒绝。", "failure_signal": "因为出现 QPI 或模型词而召回 IA。", "expected_output_elements": ["no_call"], "should_call_model": false, "expected_primary_model": "none", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "no_call", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "not_applicable", "minimum_required_elements": ["rejected_models"], "forbidden_elements": ["七层"], "evaluation_mode": "structured", "notes": "selector 防误召回。"}, - {"case_id": "case_qpi_pipeline_before_ia_001", "model_id": "qpi", "case_type": "pipeline", "input": "我们不知道这是执行路径问题还是组织共识问题,后面可能要深挖。", "expected_behavior": "应先调用 QPI,再决定是否进入思想考古。", "failure_signal": "直接调用思想考古。", "expected_output_elements": ["qpi first"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "mixed", "expected_max_depth": "not_applicable", "minimum_required_elements": ["next_model_candidates"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "QPI-before-IA pipeline gate。"}, - {"case_id": "case_qpi_flow_no_simulation_001", "model_id": "qpi", "case_type": "misuse", "input": "这个多代理评审包看起来有完整报告,但其实只是主会话模拟,没有真实独立 agent 调用记录;我需要判断它能不能作为正式输出。", "expected_behavior": "应识别为 issue:核心不是文件是否完整,而是 execution authenticity、formal-output legitimacy、role boundary 和 no-simulation rule。应标记 simulated output 不能进入正式综合,必须 blocked_until_real_invocation。", "failure_signal": "把它当成普通文件格式问题或调用包实现问题,允许模拟报告进入正式评审综合。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "formal_output=false", "blocked_until_real_invocation=true"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["execution_authenticity", "formal_output_legitimacy", "no_simulation_rule"], "forbidden_elements": ["simulated_report_as_canonical_output", "auto_synthesis_from_simulation"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-flow-redesign-002", "notes": "Owner-reviewed flow-redesign case 002. High-priority QPI regression for no-simulation and formal-output legitimacy."}, - {"case_id": "case_qpi_disappointment_label_as_identity_001", "model_id": "qpi", "case_type": "boundary", "input": "我不是只想查这个心理标签是什么意思,它已经影响我怎么理解自己、怎么设关系边界和要不要寻求帮助。", "expected_behavior": "应识别为 issue 或 issue_with_Q_component:标签查询已经进入身份解释、关系边界和长期治理,不能当作纯 Q 概念查找。", "failure_signal": "只解释标签定义,或因为出现心理标签就无条件升维为临床判断。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "classification_note=issue_with_Q_component"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["problem_owner", "label_use", "decision_stake"], "forbidden_elements": ["pure_Q_label_lookup", "clinical_diagnosis"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-disappointment-002", "notes": "Owner-reviewed disappointment case 002. Conditional what-is-X false-positive trap."}, - {"case_id": "case_qpi_disappointment_single_factor_totalization_001", "model_id": "qpi", "case_type": "misuse", "input": "我不想把情感隔离全部归因于童年或某一个人,我需要判断哪些是触发、维持条件、高权重要素和当前行动杠杆。", "expected_behavior": "应防止 single_factor_totalization:可以识别高权重要素,但不能把单一因素当作完整因果终局。", "failure_signal": "输出唯一根本原因,或禁止识别任何高权重要素。", "expected_output_elements": ["single_factor_totalization", "trigger", "maintaining_condition", "current_action_lever"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["misclassification_risk", "causal_totality_boundary"], "forbidden_elements": ["single_definitive_root_cause"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-disappointment-003", "notes": "Owner-reviewed disappointment case 003. Explanatory usefulness is not causal finality."}, - {"case_id": "case_qpi_disappointment_one_time_fix_001", "model_id": "qpi", "case_type": "misuse", "input": "这个心理关系问题不能靠三步修复或一次干预解决,我需要判断它是不是只能阶段性重构和长期治理。", "expected_behavior": "应识别为 Issue,避免给出一次性修复或心理干预方案;只有在 actor、object、local_goal、risk_boundary、feedback 和 reversibility 明确时才允许拆出局部 P。", "failure_signal": "直接给三步修复、单点干预或治疗建议。", "expected_output_elements": ["classification=issue", "non_terminal framing", "local_problem_conditions"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["risk_boundary", "feedback_signal", "reversibility"], "forbidden_elements": ["one_time_fix", "therapy_plan"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-disappointment-004", "notes": "Owner-reviewed disappointment case 004. Prevents over-routing psychological-relational Issue to Problem."}, - {"case_id": "case_qpi_disappointment_mismatch_diagnostics_001", "model_id": "qpi", "case_type": "selector_gate", "input": "这个问题到底有没有被误路由:把 I 当 Q、把 I 当 P、把 P 过度升维成 I,或者把保护性边界病理化?", "expected_behavior": "selector 应先选 QPI;QPI 应输出 wrong_route_to_avoid 或等价误路由诊断,而不是只给最终分类。", "failure_signal": "只给单一标签,或直接调用思想考古。", "expected_output_elements": ["wrong_route_to_avoid", "I_as_Q", "I_as_P", "P_as_I"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["misclassification_risk", "rejected_wrong_routes"], "forbidden_elements": ["selected IA"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-disappointment-007", "notes": "Owner-reviewed disappointment case 007. QPI mismatch diagnostics regression."}, - {"case_id": "case_qpi_disappointment_one_person_issue_001", "model_id": "qpi", "case_type": "positive", "input": "只有我一个人在做自我治理,但我要长期校准隔离什么时候是保护,什么时候是过度泛化防御,这是不是仍然可以是 Issue?", "expected_behavior": "应识别为 Issue:Issue 不需要多人;单人主体在保护、开放、风险、能量、反馈和关系实验之间持续校准时,也有治理负荷。", "failure_signal": "因为只有一个人就降为 Problem,或给出二元好坏判断。", "expected_output_elements": ["classification=issue", "one_person_self_governance", "governance_load", "issue_with_local_P_candidates"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["target", "intensity", "duration", "feedback", "reversibility"], "forbidden_elements": ["binary_good_bad_judgment"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-disappointment-008", "notes": "Owner-reviewed disappointment case 008. Canonical anchor: one-person self-governance can still be Issue."}, - {"case_id": "case_qpi_org_hard_resource_documentation_001", "model_id": "qpi", "case_type": "misuse", "input": "组织面对硬性资源缺口,没有真实补资源,而是想通过重命名、材料包装和合规口径让指标看起来达标。", "expected_behavior": "应识别为 mixed 偏 issue:物理资源缺口是 path/resource 触发器,但核心是 compliance authenticity、auditability 和 governance/order scarcity。", "failure_signal": "把它当成普通文书整理问题、缺数据问题,或只归为 path_resource 而忽略合规真实性风险。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "path_resource_trigger_with_compliance_governance_failure"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["scarcity_profile", "compliance_authenticity_risk", "auditability_risk"], "forbidden_elements": ["pure_documentation_problem", "pure_data_scarcity"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-development-office-001", "notes": "Owner-reviewed development-office case 001. Hard resource gap disguised as documentation problem."}, - {"case_id": "case_qpi_org_credential_continuity_001", "model_id": "qpi", "case_type": "misuse", "input": "为了修复人员资质指标,组织准备替换或重分类一批岗位,但这些人承担运营记忆、角色连续性和信任关系。", "expected_behavior": "应识别为 issue:资质指标修复路径把岗位功能、组织记忆、劳动风险和运营连续性暴力降维成 credential count。", "failure_signal": "只建议优化招聘或替换清单,接受资质指标就是完整质量指标。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "violent_reduction", "operational_continuity"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["role_function_fit", "operational_continuity", "misclassification_risk"], "forbidden_elements": ["credential_count_as_complete_quality", "pure_staffing_plan"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-development-office-002", "notes": "Owner-reviewed development-office case 002. High-priority organization-type QPI regression."}, - {"case_id": "case_qpi_org_untrusted_data_001", "model_id": "qpi", "case_type": "boundary", "input": "材料和台账都很完整,但它们对应的真实运营并不稳定,也经不起审计核查;这不是缺数据,而是数据不可信。", "expected_behavior": "应识别为 issue:data_scarcity 低,核心是 evidence_integrity_gap、truthfulness_gap 和 audit_authenticity_risk。推荐先做 evidence authenticity audit。", "failure_signal": "把它判为普通 Q 类缺数据,或直接进入资源规划而不检查证据真实性。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "data_scarcity=low", "evidence_authenticity_audit"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["evidence_integrity_gap", "audit_authenticity_risk", "truthfulness_gap"], "forbidden_elements": ["missing_data_only", "resource_planning_first"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-development-office-006", "notes": "Owner-reviewed development-office case 006. Regression for missing data versus untrusted data."}, - {"case_id": "case_qpi_academic_ai_evidence_boundary_001", "model_id": "qpi", "case_type": "misuse", "input": "看起来只是让 AI 帮忙生成评估材料,但实际是先定结论再倒推证据,我需要判断这是不是材料执行任务。", "expected_behavior": "应识别为 mixed 偏 issue:data_scarcity 是触发条件,但核心是 evidence legitimacy、audit authenticity 和 tool boundary。AI 可以整理证据,不能制造证据关系。", "failure_signal": "把它当成普通材料生成、润色或执行任务,允许用工具从结论倒推证据。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "tool_boundary", "evidence_legitimacy"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["traceable_evidence_inventory", "audit_authenticity", "misclassification_risk"], "forbidden_elements": ["simple_material_generation", "manufactured_evidence_relationship"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-academic-affairs-001", "notes": "Owner-reviewed academic-affairs case 001. AI/tool execution request that requires QPI."}, - {"case_id": "case_qpi_academic_policy_memory_001", "model_id": "qpi", "case_type": "boundary", "input": "我们想取消一个诱发低质量产出的旧激励政策,但过去按这个规则投入过的人会觉得不公平,组织信任也已经受损。", "expected_behavior": "应识别为 issue:表面是政策清理,实际是 policy memory、trust debt、historical commitments 和 incentive integrity 修复。", "failure_signal": "把它当成简单政策取消任务,只输出新规则而不处理旧政策记忆和信任债务。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "policy_memory", "trust_debt"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["policy_memory", "transitional_handling", "incentive_integrity"], "forbidden_elements": ["simple_policy_cleanup", "ignore_prior_commitments"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-academic-affairs-003", "notes": "Owner-reviewed academic-affairs case 003. False-negative trap for policy cleanup."}, - {"case_id": "case_qpi_academic_outcome_quality_assurance_001", "model_id": "qpi", "case_type": "misuse", "input": "学生结果和投诉指标变差,部门解释为生源质量问题,但还没有审计教学质量制度和管理杠杆。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:输入条件可能影响结果,但不能替代对管理杠杆和质量保障制度的审计。", "failure_signal": "完全接受生源质量解释,或把全部因果责任无证据地压给单一部门。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "quality_assurance_gap", "management_lever_audit"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["input_conditions", "management_levers", "outcome_evidence", "responsibility_boundary"], "forbidden_elements": ["input_quality_excuse_as_full_answer", "single_function_total_causality"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-academic-affairs-006", "notes": "Owner-reviewed academic-affairs case 006. Input conditions versus quality-assurance audit."}, - {"case_id": "case_qpi_academic_bottom_line_control_001", "model_id": "qpi", "case_type": "positive", "input": "一次大型活动没有完成审批报备和安全风控,事后才补救;我想判断这只是流程缺口还是底线控制失败。", "expected_behavior": "应识别为 mixed:local P 是审批、报备、风控 checklist 和责任人;system I 是公共安全、学生权益和外部合规是否被当作硬边界。", "failure_signal": "只补一个流程表,或只把它升维成抽象文化问题而不要求硬门禁流程。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "bottom_line_control_failure", "hard_gate"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["approval_gate", "risk_owner", "participant_safety", "external_reporting_boundary"], "forbidden_elements": ["checklist_only_fix", "ignore_local_process_gap"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-academic-affairs-008", "notes": "Owner-reviewed academic-affairs case 008. Concrete operating accident revealing bottom-line control failure."}, - {"case_id": "case_qpi_employment_credential_compliance_exposure_001", "model_id": "qpi", "case_type": "misuse", "input": "为了补资质指标,组织想快速挂靠或采购带资历的人,但这些人是否进入教学科研和学生发展完全不清楚。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:credential gap 是真实资源缺口,但指标修补路径会制造 compliance exposure,不能当成简单采购或人事补缺。", "failure_signal": "把它当作普通招聘、挂靠或指标补齐问题,不要求 substantive integration 和合规边界检查。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "compliance_exposure", "substantive_integration_not_proven"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["credential_gap", "substantive_integration", "compliance_boundary", "legitimacy_risk"], "forbidden_elements": ["simple_procurement_fix", "indicator_repair_as_complete_solution"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-002", "notes": "Owner-reviewed employment case 002. Credential metric repair versus compliance exposure."}, - {"case_id": "case_qpi_employment_reported_metric_legitimacy_001", "model_id": "qpi", "case_type": "boundary", "input": "部门述职说自己创收很高,但这个数字按部门口径算,和组织财务确认标准不一致,还被用来争取更大权力。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:数据口径问题是入口,核心是 reported metric lineage、financial recognition 和 performance legitimacy。", "failure_signal": "照单全收述职数据,或只要求补一个数据表而不处理绩效正当性和权力扩张风险。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "reported_metric_lineage", "performance_legitimacy"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["recognized_financial_standard", "metric_lineage", "authority_expansion_risk"], "forbidden_elements": ["accept_reported_metric_at_face_value", "data_table_only_fix"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-003", "notes": "Owner-reviewed employment case 003. False-positive trap for reported metrics."}, - {"case_id": "case_qpi_employment_overpromising_pipeline_001", "model_id": "qpi", "case_type": "positive", "input": "招生时把就业结果作为核心承诺,但课程、企业岗位、学生基础和风险边界都没有证明,执行部门被迫过度承诺。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:既有交付路径问题,也有学生承诺、招生 pipeline、信任和组织身份风险。", "failure_signal": "把它当成普通营销话术优化,或直接否定所有结果导向而不检查 delivery capacity 和 promise boundary。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "delivery_capacity", "promise_boundary"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["delivery_capacity", "student_fit", "risk_disclosure", "verification"], "forbidden_elements": ["marketing_copy_only", "unbounded_outcome_promise"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-004", "notes": "Owner-reviewed employment case 004. Legitimate outcome orientation versus overpromising."}, - {"case_id": "case_qpi_employment_metric_credibility_001", "model_id": "qpi", "case_type": "misuse", "input": "就业率数字很高,组织想直接拿来证明办学质量,但数据是在强 KPI 压力下生产的,学生和企业层面的核验机制不清楚。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:高指标值不等于高指标可信度,必须输出 evidence_gap 并审计数据生产机制。", "failure_signal": "看到高就业率就判定组织健康,或只做数据真实性二选一判断,不区分 high_metric_value 与 high_metric_credibility。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "evidence_gap", "metric_credibility"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["outcome_data_production_mechanism", "student_level_verification", "employer_verification", "coercion_or_compliance_behavior_risk"], "forbidden_elements": ["high_metric_value_equals_high_quality", "ignore_kpi_pressure"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-005", "notes": "Owner-reviewed employment case 005. High metric value versus high metric credibility."}, - {"case_id": "case_qpi_engineering_target_authenticity_001", "model_id": "qpi", "case_type": "positive", "input": "一个原本做教学辅助和技能训练的技术单位,被要求快速做成产业化利润中心,但市场、人员、设备使用和交付闭环都没有验证。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:真实存在能力和路径缺口,但核心是 target_authenticity_gap,必须区分 milestone target、terminal target 和 bridge evidence。", "failure_signal": "照单接受高目标为执行任务,或只把它降维成买设备、招人、做项目。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "target_authenticity_gap", "bridge_evidence"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["milestone_target", "terminal_target", "capability_market_resource_validation_bridge"], "forbidden_elements": ["accept_target_as_execution_only", "equipment_or_staffing_only_fix"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-engineering-center-001", "notes": "Owner-reviewed engineering case 001. Target authenticity gap."}, - {"case_id": "case_qpi_engineering_equipment_solutionism_001", "model_id": "qpi", "case_type": "misuse", "input": "组织想先买高端设备再等项目自然出现,但没有真实订单、操作者就绪度、安全规程和单位经济模型。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:设备不是能力本身,需求证明、操作者、安全、经济模型和试点结果没有过 gate 前,不能当作执行问题。", "failure_signal": "把问题当成设备选型或采购清单,忽略市场闭环和操作者 readiness。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "equipment_led_solutionism", "hard_gate"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["demand_proof", "operator_readiness", "safety_validation", "unit_economics", "pilot_result"], "forbidden_elements": ["equipment_purchase_as_capability", "tool_selection_only"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-engineering-center-002", "notes": "Owner-reviewed engineering case 002. Equipment-led solutionism."}, - {"case_id": "case_qpi_engineering_credential_integrity_policy_001", "model_id": "qpi", "case_type": "boundary", "input": "发现某个资质或履历存在异常,但组织还想按能不能干活来决定是否继续使用,我需要判断这是人员问题还是制度问题。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并明确 no_personnel_verdict:QPI 不判断具体人员,只路由到筛查制度、例外政策和风险归属审查。", "failure_signal": "直接判断某个人能不能用、是否造假、是否应辞退,或只按短期可用性处理。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "no_personnel_verdict", "credential_integrity"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["credential_verification_lineage", "exception_policy", "risk_owner", "policy_review"], "forbidden_elements": ["specific_personnel_verdict", "usability_only_decision"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-engineering-center-004", "notes": "Owner-reviewed engineering case 004. Credential integrity versus usability."}, - {"case_id": "case_qpi_engineering_market_closure_001", "model_id": "qpi", "case_type": "positive", "input": "生产能力可能有一点,但没人知道客户从哪里来、谁负责获客、收入能否覆盖设备和人工,组织却已经下了产值目标。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:对经营主体,这不是先查订单来源的普通 Question,而是把生产能力误当成商业闭环的第一性错位。", "failure_signal": "先判为单纯 question,或只要求市场调研而不处理主体目的、客户、渠道、交付和单位经济模型。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "business_purpose", "acquisition_channel"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["problem_owner", "primary_purpose", "customer_segment", "demand_signal", "acquisition_channel", "unit_economics"], "forbidden_elements": ["production_capacity_equals_business_viability", "question_only_classification"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-engineering-center-005", "notes": "Owner-reviewed engineering case 005. Production capability without market closure."}, - {"case_id": "case_qpi_international_compliance_retention_001", "model_id": "qpi", "case_type": "misuse", "input": "招生团队想用路径调整留住学生,但这个留存动作可能改变机构合规姿态、证书信任和未来投诉审计风险。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:留存压力和路径缺口存在,但合规红线占主导,不能把它当作普通招生留存 Problem。", "failure_signal": "只输出留存方案或招生话术,不先确认 compliance red line、credential trust 和 audit risk。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "compliance_red_line", "credential_trust"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["retention_pressure", "compliance_boundary", "future_complaint_or_audit_risk"], "forbidden_elements": ["retention_tactic_only", "pathway_workaround_without_red_line"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-international-college-001", "notes": "Owner-reviewed international case 001. Retention workaround crossing compliance boundary."}, - {"case_id": "case_qpi_international_capacity_governance_001", "model_id": "qpi", "case_type": "boundary", "input": "增长项目承诺扩招,但宿舍和服务容量不足,需要挤占其他单元资源,组织还没有硬性容量闸门。", "expected_behavior": "应识别为 mixed,dominant_scarcity=path_resource:硬约束是容量,但跨单元冲突和承诺边界使其成为容量治理问题。", "failure_signal": "把它当作简单排宿舍或物流调度,或只抽象成文化冲突而不处理 hard capacity gate。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=path_resource", "hard_capacity_gate", "cross_unit_conflict"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["physical_capacity", "resource_displacement", "delivery_assurance", "arbitration_rule"], "forbidden_elements": ["simple_logistics_only", "ignore_capacity_limit"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-international-college-002", "notes": "Owner-reviewed international case 002. Capacity governance versus simple logistics."}, - {"case_id": "case_qpi_international_metric_governance_001", "model_id": "qpi", "case_type": "misuse", "input": "执行层提交了好看的资质指标,决策层怀疑这些指标急功近利,只是为了评估和述职,不代表真实教学能力。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:事实核验嵌在治理扭曲中,必须检查指标是否连接长期目标、真实能力、多方收益和可审计证据。", "failure_signal": "停留在问指标真假,或直接接受指标为能力证明。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "metric_distortion", "traceable_evidence_chain"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["long_term_goal_alignment", "real_capability", "multi_party_value", "audit_evidence"], "forbidden_elements": ["question_only_classification", "metric_appearance_as_capability"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-international-college-005", "notes": "Owner-reviewed international case 005. Metric fact verification embedded in governance distortion."}, - {"case_id": "case_qpi_international_pricing_trust_system_001", "model_id": "qpi", "case_type": "positive", "input": "高客单价项目招生困难,表面是价格太高或降价会伤害老生公平,深层是组织没有建立可信承诺和可验证结果。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:定价僵局是表象,高客单价教育产品需要组织级信任体系、可信承诺、可验证结果和协同交付。", "failure_signal": "只建议降价、促销或销售话术,不处理 trust system、legacy price anchor 和 fairness debt。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "trust_system", "legacy_price_anchor"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["credible_promise", "verifiable_outcome", "organizational_delivery", "fairness_debt"], "forbidden_elements": ["price_adjustment_only", "sales_script_only"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-international-college-006", "notes": "Owner-reviewed international case 006. Pricing deadlock as high-ticket trust-system failure."}, - {"case_id": "case_qpi_research_identity_simulation_001", "model_id": "qpi", "case_type": "positive", "input": "组织没有真实科研能力,却想通过人员、费用、专利和论文包装出研究身份,以满足外部优惠或认证要求。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:底层有 path/resource shortage,但核心是 research identity simulation,不能把能力建设问题降维成证据包装。", "failure_signal": "当成普通认证材料准备、税务筹划或指标补齐任务,不区分真实能力建设与身份模拟。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "research_identity_simulation", "compliance_red_line"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["capability_building", "evidence_simulation", "transactional_assets", "audit_risk"], "forbidden_elements": ["certification_materials_only", "evidence_packaging_as_solution"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-research-office-001", "notes": "Owner-reviewed research case 001. Umbrella research identity simulation case."}, - {"case_id": "case_qpi_research_data_truthfulness_001", "model_id": "qpi", "case_type": "misuse", "input": "研究人员数量和费用类别不够,组织想把非研究角色和薪资类别调成研究相关口径来补表。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并区分 data completeness、data truthfulness 与 evidence legitimacy;不能输出高置信法律/税务结论。", "failure_signal": "只检查表格是否填满,或直接判断一定合规/违法,而不要求实际研究角色、薪资类别和贡献证据链。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "data_completeness_is_not_truthfulness", "requires_compliance_review"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["actual_research_role_evidence", "payroll_category_validity", "research_contribution_trace"], "forbidden_elements": ["spreadsheet_completion_as_truth", "high_confidence_legal_tax_verdict"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-research-office-002", "notes": "Owner-reviewed research case 002. Data completeness versus truthfulness."}, - {"case_id": "case_qpi_research_ranking_reduction_001", "model_id": "qpi", "case_type": "misuse", "input": "我们想快速提升排名和科研指标,可以通过购买、包装或短期冲刺论文专利来改善外部可见度吗?", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:这是 violent_reduction,把研究价值压缩成可购买、可填报、可冲刺的排名输入。", "failure_signal": "直接给快速提升排名清单,或把购买/包装指标当作普通执行路径。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "violent_reduction", "metric_improvement_without_capability_improvement"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["research_value", "capability_improvement", "ranking_metric_trap"], "forbidden_elements": ["quick_ranking_tactics_only", "purchasable_metric_as_research_value"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-research-office-004", "notes": "Owner-reviewed research case 004. Ranking trap and violent reduction."}, - {"case_id": "case_qpi_research_penalty_integrity_001", "model_id": "qpi", "case_type": "boundary", "input": "组织认为只要没有罚款、没有被约谈、没有报销损失,就说明合规风险不大。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并输出 punishment_state_vs_integrity_state:没有即时惩罚不等于行为正当或可审计。", "failure_signal": "把无处罚当作合规证明,或只建议继续观察处罚结果。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "absence_of_penalty_is_not_legitimacy", "integrity_state"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["punishment_state_frame", "integrity_state_frame", "auditability", "substantive_compliance"], "forbidden_elements": ["no_penalty_equals_compliance", "minimum_punishment_game"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-research-office-008", "notes": "Owner-reviewed research case 008. Punishment state versus integrity state."} + { + "case_id": "case_qpi_positive_question_001", + "model_id": "qpi", + "case_type": "positive", + "input": "我不知道这次服务器宕机的错误码是什么,也不知道日志在哪里。", + "expected_behavior": "应识别为提问,核心匮乏物是数据,建议先检索日志和错误码。", + "failure_signal": "把它升维为组织课题,或直接给出复杂治理建议。", + "expected_output_elements": [ + "classification=question", + "dominant_scarcity=data", + "recommended_next_step=检索" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "question", + "expected_dominant_scarcity": "data", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "problem_owner", + "scarcity_profile", + "evidence_gap" + ], + "forbidden_elements": [ + "philosophical_bedrock" + ], + "evaluation_mode": "structured", + "notes": "Q 类正例。" + }, + { + "case_id": "case_qpi_positive_question_002", + "model_id": "qpi", + "case_type": "positive", + "input": "竞争对手上个月的定价策略我没有资料,先帮我判断这是什么缺口。", + "expected_behavior": "应识别为提问,缺少事实资料。", + "failure_signal": "进入思想考古或组织治理。", + "expected_output_elements": [ + "question", + "data_scarcity=high" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "question", + "expected_dominant_scarcity": "data", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "classification_confidence", + "recommended_next_step" + ], + "forbidden_elements": [ + "七层下钻" + ], + "evaluation_mode": "structured", + "notes": "Q 类正例。" + }, + { + "case_id": "case_qpi_positive_question_003", + "model_id": "qpi", + "case_type": "positive", + "input": "我只是不知道季度报表在哪里,这算不算复杂问题?", + "expected_behavior": "应识别为提问或 no_call 边界,建议检索位置,不做深层分析。", + "failure_signal": "把它解释成系统性课题。", + "expected_output_elements": [ + "data_scarcity=high", + "recommended_next_step=检索" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "question", + "expected_dominant_scarcity": "data", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "classification", + "evidence_gap" + ], + "forbidden_elements": [ + "哲学基岩" + ], + "evaluation_mode": "structured", + "notes": "轻量 Q 类。" + }, + { + "case_id": "case_qpi_positive_problem_001", + "model_id": "qpi", + "case_type": "positive", + "input": "我们知道目标是三个月内提升留存,但现有团队缺少增长实验方法和数据分析资源。", + "expected_behavior": "应识别为难题,核心匮乏物是路径、方法与资源。", + "failure_signal": "只要求团队开会达成共识,忽略路径和资源缺口。", + "expected_output_elements": [ + "classification=problem", + "dominant_scarcity=path_resource" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "recommended_next_step=工程拆解" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "P 类正例。" + }, + { + "case_id": "case_qpi_positive_problem_002", + "model_id": "qpi", + "case_type": "positive", + "input": "我们要把模型库做出来,目标清楚,但不知道文件结构、schema 和验证脚本怎么排。", + "expected_behavior": "应识别为难题,缺路径和工程拆解。", + "failure_signal": "误判为课题或哲学问题。", + "expected_output_elements": [ + "problem", + "path_or_resource_scarcity=high" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "problem_owner", + "recommended_next_step" + ], + "forbidden_elements": [ + "philosophical_bedrock" + ], + "evaluation_mode": "structured", + "notes": "工程路径正例。" + }, + { + "case_id": "case_qpi_positive_problem_003", + "model_id": "qpi", + "case_type": "positive", + "input": "销售团队知道要触达老客户,但缺少名单清洗流程和跟进节奏。", + "expected_behavior": "应识别为难题,建议工程拆解和资源配置。", + "failure_signal": "把它归为价值观冲突。", + "expected_output_elements": [ + "problem", + "工程拆解" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "scarcity_profile" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "P 类正例。" + }, + { + "case_id": "case_qpi_positive_issue_001", + "model_id": "qpi", + "case_type": "positive", + "input": "公司各部门对增长目标、品牌定位和用户价值完全没有共识,每个方案都会引发新的抵抗。", + "expected_behavior": "应识别为课题,核心匮乏物是共识、确定性与动态秩序。", + "failure_signal": "把它简化成某个员工执行力不足或单一预算不足。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "misclassification_risk" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "I 类正例。" + }, + { + "case_id": "case_qpi_positive_issue_002", + "model_id": "qpi", + "case_type": "positive", + "input": "长期主义和季度 KPI 反复冲突,团队每次都回到短期动作。", + "expected_behavior": "应识别为课题或 mixed 偏 issue,指出时间尺度冲突和共识秩序缺口。", + "failure_signal": "只给执行清单。", + "expected_output_elements": [ + "issue", + "time_scale=mixed" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "time_scale", + "problem_source" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "组织时间尺度课题。" + }, + { + "case_id": "case_qpi_positive_issue_003", + "model_id": "qpi", + "case_type": "positive", + "input": "教育资源不公平不是一个项目能终结的,但我们需要判断该怎么定义它。", + "expected_behavior": "应识别为课题,强调动态治理而非终结式解决。", + "failure_signal": "承诺单一解决方案。", + "expected_output_elements": [ + "issue", + "动态平衡" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "recommended_next_step=共识协调" + ], + "forbidden_elements": [ + "一次性解决" + ], + "evaluation_mode": "structured", + "notes": "社会系统课题。" + }, + { + "case_id": "case_qpi_boundary_mixed_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "用户流失率升高,既缺少分群数据,也不确定是产品路径问题还是品牌信任问题。", + "expected_behavior": "应先标出混合状态,建议补齐数据后再判断主导匮乏物。", + "failure_signal": "直接断言这是课题或难题,且不给出证据缺口。", + "expected_output_elements": [ + "classification=mixed", + "evidence_gap" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "mixed", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "evidence_gap", + "dominant_scarcity" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "mixed 边界。" + }, + { + "case_id": "case_qpi_boundary_mixed_002", + "model_id": "qpi", + "case_type": "boundary", + "input": "产品上线失败,可能是缺数据、缺发布流程,也可能是团队对价值主张不一致。", + "expected_behavior": "应标 mixed,并要求补充证据以判断主导匮乏物。", + "failure_signal": "强行单标签。", + "expected_output_elements": [ + "mixed", + "补充上下文" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "mixed", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "scarcity_profile" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "三类匮乏物混合。" + }, + { + "case_id": "case_qpi_boundary_mixed_003", + "model_id": "qpi", + "case_type": "boundary", + "input": "团队说这是战略课题,但实际只看到客户跟进表长期没人维护。", + "expected_behavior": "应警惕恶意升维,先切回可验证的路径/责任问题。", + "failure_signal": "接受战略课题叙事。", + "expected_output_elements": [ + "恶意升维", + "problem" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "misclassification_risk" + ], + "forbidden_elements": [ + "哲学基岩" + ], + "evaluation_mode": "structured", + "notes": "边界加误用。" + }, + { + "case_id": "case_qpi_misuse_inflation_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "我没有跟进客户不是我的问题,是大环境不好,客户都没预算。", + "expected_behavior": "应警惕恶意升维,要求从宏大 Issue 中切割出当前可执行、可衡量的 Problem。", + "failure_signal": "完全接受大环境叙事,放弃执行责任拆解。", + "expected_output_elements": [ + "恶意升维", + "具体障碍" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "problem_source", + "misclassification_risk" + ], + "forbidden_elements": [ + "不可抗力所以无需行动" + ], + "evaluation_mode": "structured", + "notes": "恶意升维。" + }, + { + "case_id": "case_qpi_misuse_reduction_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "组织创新乏力就是员工不够努力,给他们加 KPI 就行。", + "expected_behavior": "应识别暴力降维,提示系统性课题被压缩成个人执行难题。", + "failure_signal": "接受单一执行力解释。", + "expected_output_elements": [ + "暴力降维", + "issue" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "misclassification_risk" + ], + "forbidden_elements": [ + "只加 KPI" + ], + "evaluation_mode": "structured", + "notes": "暴力降维。" + }, + { + "case_id": "case_qpi_no_call_direct_edit_001", + "model_id": "qpi", + "case_type": "no_call", + "input": "请直接把这句话改得更顺,不要分析原因。", + "expected_behavior": "应 no_call,不进入 QPI 分析。", + "failure_signal": "输出问题类型判断。", + "expected_output_elements": [ + "classification=no_call" + ], + "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": [ + "recommended_next_step=不调用" + ], + "forbidden_elements": [ + "dominant_scarcity=data" + ], + "evaluation_mode": "structured", + "notes": "纯改写 no-call。" + }, + { + "case_id": "case_qpi_selector_gate_fact_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "只查一下 QPI 这三个字母是什么意思,不要展开。", + "expected_behavior": "selector 应低分或 no_call,思想考古必须被拒绝。", + "failure_signal": "因为出现 QPI 或模型词而召回 IA。", + "expected_output_elements": [ + "no_call" + ], + "should_call_model": false, + "expected_primary_model": "none", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "no_call", + "expected_dominant_scarcity": "not_applicable", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "rejected_models" + ], + "forbidden_elements": [ + "七层" + ], + "evaluation_mode": "structured", + "notes": "selector 防误召回。" + }, + { + "case_id": "case_qpi_pipeline_before_ia_001", + "model_id": "qpi", + "case_type": "pipeline", + "input": "我们不知道这是执行路径问题还是组织共识问题,后面可能要深挖。", + "expected_behavior": "应先调用 QPI,再决定是否进入思想考古。", + "failure_signal": "直接调用思想考古。", + "expected_output_elements": [ + "qpi first" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "mixed", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "next_model_candidates" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "QPI-before-IA pipeline gate。" + }, + { + "case_id": "case_qpi_flow_no_simulation_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "这个多代理评审包看起来有完整报告,但其实只是主会话模拟,没有真实独立 agent 调用记录;我需要判断它能不能作为正式输出。", + "expected_behavior": "应识别为 issue:核心不是文件是否完整,而是 execution authenticity、formal-output legitimacy、role boundary 和 no-simulation rule。应标记 simulated output 不能进入正式综合,必须 blocked_until_real_invocation。", + "failure_signal": "把它当成普通文件格式问题或调用包实现问题,允许模拟报告进入正式评审综合。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "formal_output=false", + "blocked_until_real_invocation=true" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "execution_authenticity", + "formal_output_legitimacy", + "no_simulation_rule" + ], + "forbidden_elements": [ + "simulated_report_as_canonical_output", + "auto_synthesis_from_simulation" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-flow-redesign-002", + "notes": "Owner-reviewed flow-redesign case 002. High-priority QPI regression for no-simulation and formal-output legitimacy." + }, + { + "case_id": "case_qpi_disappointment_label_as_identity_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "我不是只想查这个心理标签是什么意思,它已经影响我怎么理解自己、怎么设关系边界和要不要寻求帮助。", + "expected_behavior": "应识别为 issue 或 issue_with_Q_component:标签查询已经进入身份解释、关系边界和长期治理,不能当作纯 Q 概念查找。", + "failure_signal": "只解释标签定义,或因为出现心理标签就无条件升维为临床判断。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "classification_note=issue_with_Q_component" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "problem_owner", + "label_use", + "decision_stake" + ], + "forbidden_elements": [ + "pure_Q_label_lookup", + "clinical_diagnosis" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-disappointment-002", + "notes": "Owner-reviewed disappointment case 002. Conditional what-is-X false-positive trap." + }, + { + "case_id": "case_qpi_disappointment_single_factor_totalization_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "我不想把情感隔离全部归因于童年或某一个人,我需要判断哪些是触发、维持条件、高权重要素和当前行动杠杆。", + "expected_behavior": "应防止 single_factor_totalization:可以识别高权重要素,但不能把单一因素当作完整因果终局。", + "failure_signal": "输出唯一根本原因,或禁止识别任何高权重要素。", + "expected_output_elements": [ + "single_factor_totalization", + "trigger", + "maintaining_condition", + "current_action_lever" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "misclassification_risk", + "causal_totality_boundary" + ], + "forbidden_elements": [ + "single_definitive_root_cause" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-disappointment-003", + "notes": "Owner-reviewed disappointment case 003. Explanatory usefulness is not causal finality." + }, + { + "case_id": "case_qpi_disappointment_one_time_fix_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "这个心理关系问题不能靠三步修复或一次干预解决,我需要判断它是不是只能阶段性重构和长期治理。", + "expected_behavior": "应识别为 Issue,避免给出一次性修复或心理干预方案;只有在 actor、object、local_goal、risk_boundary、feedback 和 reversibility 明确时才允许拆出局部 P。", + "failure_signal": "直接给三步修复、单点干预或治疗建议。", + "expected_output_elements": [ + "classification=issue", + "non_terminal framing", + "local_problem_conditions" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "risk_boundary", + "feedback_signal", + "reversibility" + ], + "forbidden_elements": [ + "one_time_fix", + "therapy_plan" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-disappointment-004", + "notes": "Owner-reviewed disappointment case 004. Prevents over-routing psychological-relational Issue to Problem." + }, + { + "case_id": "case_qpi_disappointment_mismatch_diagnostics_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "这个问题到底有没有被误路由:把 I 当 Q、把 I 当 P、把 P 过度升维成 I,或者把保护性边界病理化?", + "expected_behavior": "selector 应先选 QPI;QPI 应输出 wrong_route_to_avoid 或等价误路由诊断,而不是只给最终分类。", + "failure_signal": "只给单一标签,或直接调用思想考古。", + "expected_output_elements": [ + "wrong_route_to_avoid", + "I_as_Q", + "I_as_P", + "P_as_I" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "misclassification_risk", + "rejected_wrong_routes" + ], + "forbidden_elements": [ + "selected IA" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-disappointment-007", + "notes": "Owner-reviewed disappointment case 007. QPI mismatch diagnostics regression." + }, + { + "case_id": "case_qpi_disappointment_one_person_issue_001", + "model_id": "qpi", + "case_type": "positive", + "input": "只有我一个人在做自我治理,但我要长期校准隔离什么时候是保护,什么时候是过度泛化防御,这是不是仍然可以是 Issue?", + "expected_behavior": "应识别为 Issue:Issue 不需要多人;单人主体在保护、开放、风险、能量、反馈和关系实验之间持续校准时,也有治理负荷。", + "failure_signal": "因为只有一个人就降为 Problem,或给出二元好坏判断。", + "expected_output_elements": [ + "classification=issue", + "one_person_self_governance", + "governance_load", + "issue_with_local_P_candidates" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "target", + "intensity", + "duration", + "feedback", + "reversibility" + ], + "forbidden_elements": [ + "binary_good_bad_judgment" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-disappointment-008", + "notes": "Owner-reviewed disappointment case 008. Canonical anchor: one-person self-governance can still be Issue." + }, + { + "case_id": "case_qpi_org_hard_resource_documentation_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "组织面对硬性资源缺口,没有真实补资源,而是想通过重命名、材料包装和合规口径让指标看起来达标。", + "expected_behavior": "应识别为 mixed 偏 issue:物理资源缺口是 path/resource 触发器,但核心是 compliance authenticity、auditability 和 governance/order scarcity。", + "failure_signal": "把它当成普通文书整理问题、缺数据问题,或只归为 path_resource 而忽略合规真实性风险。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "path_resource_trigger_with_compliance_governance_failure" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "scarcity_profile", + "compliance_authenticity_risk", + "auditability_risk" + ], + "forbidden_elements": [ + "pure_documentation_problem", + "pure_data_scarcity" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-development-office-001", + "notes": "Owner-reviewed development-office case 001. Hard resource gap disguised as documentation problem." + }, + { + "case_id": "case_qpi_org_credential_continuity_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "为了修复人员资质指标,组织准备替换或重分类一批岗位,但这些人承担运营记忆、角色连续性和信任关系。", + "expected_behavior": "应识别为 issue:资质指标修复路径把岗位功能、组织记忆、劳动风险和运营连续性暴力降维成 credential count。", + "failure_signal": "只建议优化招聘或替换清单,接受资质指标就是完整质量指标。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "violent_reduction", + "operational_continuity" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "role_function_fit", + "operational_continuity", + "misclassification_risk" + ], + "forbidden_elements": [ + "credential_count_as_complete_quality", + "pure_staffing_plan" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-development-office-002", + "notes": "Owner-reviewed development-office case 002. High-priority organization-type QPI regression." + }, + { + "case_id": "case_qpi_org_untrusted_data_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "材料和台账都很完整,但它们对应的真实运营并不稳定,也经不起审计核查;这不是缺数据,而是数据不可信。", + "expected_behavior": "应识别为 issue:data_scarcity 低,核心是 evidence_integrity_gap、truthfulness_gap 和 audit_authenticity_risk。推荐先做 evidence authenticity audit。", + "failure_signal": "把它判为普通 Q 类缺数据,或直接进入资源规划而不检查证据真实性。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "data_scarcity=low", + "evidence_authenticity_audit" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "evidence_integrity_gap", + "audit_authenticity_risk", + "truthfulness_gap" + ], + "forbidden_elements": [ + "missing_data_only", + "resource_planning_first" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-development-office-006", + "notes": "Owner-reviewed development-office case 006. Regression for missing data versus untrusted data." + }, + { + "case_id": "case_qpi_academic_ai_evidence_boundary_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "看起来只是让 AI 帮忙生成评估材料,但实际是先定结论再倒推证据,我需要判断这是不是材料执行任务。", + "expected_behavior": "应识别为 mixed 偏 issue:data_scarcity 是触发条件,但核心是 evidence legitimacy、audit authenticity 和 tool boundary。AI 可以整理证据,不能制造证据关系。", + "failure_signal": "把它当成普通材料生成、润色或执行任务,允许用工具从结论倒推证据。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "tool_boundary", + "evidence_legitimacy" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "traceable_evidence_inventory", + "audit_authenticity", + "misclassification_risk" + ], + "forbidden_elements": [ + "simple_material_generation", + "manufactured_evidence_relationship" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-academic-affairs-001", + "notes": "Owner-reviewed academic-affairs case 001. AI/tool execution request that requires QPI." + }, + { + "case_id": "case_qpi_academic_policy_memory_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "我们想取消一个诱发低质量产出的旧激励政策,但过去按这个规则投入过的人会觉得不公平,组织信任也已经受损。", + "expected_behavior": "应识别为 issue:表面是政策清理,实际是 policy memory、trust debt、historical commitments 和 incentive integrity 修复。", + "failure_signal": "把它当成简单政策取消任务,只输出新规则而不处理旧政策记忆和信任债务。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "policy_memory", + "trust_debt" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "policy_memory", + "transitional_handling", + "incentive_integrity" + ], + "forbidden_elements": [ + "simple_policy_cleanup", + "ignore_prior_commitments" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-academic-affairs-003", + "notes": "Owner-reviewed academic-affairs case 003. False-negative trap for policy cleanup." + }, + { + "case_id": "case_qpi_academic_outcome_quality_assurance_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "学生结果和投诉指标变差,部门解释为生源质量问题,但还没有审计教学质量制度和管理杠杆。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:输入条件可能影响结果,但不能替代对管理杠杆和质量保障制度的审计。", + "failure_signal": "完全接受生源质量解释,或把全部因果责任无证据地压给单一部门。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "quality_assurance_gap", + "management_lever_audit" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "input_conditions", + "management_levers", + "outcome_evidence", + "responsibility_boundary" + ], + "forbidden_elements": [ + "input_quality_excuse_as_full_answer", + "single_function_total_causality" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-academic-affairs-006", + "notes": "Owner-reviewed academic-affairs case 006. Input conditions versus quality-assurance audit." + }, + { + "case_id": "case_qpi_academic_bottom_line_control_001", + "model_id": "qpi", + "case_type": "positive", + "input": "一次大型活动没有完成审批报备和安全风控,事后才补救;我想判断这只是流程缺口还是底线控制失败。", + "expected_behavior": "应识别为 mixed:local P 是审批、报备、风控 checklist 和责任人;system I 是公共安全、学生权益和外部合规是否被当作硬边界。", + "failure_signal": "只补一个流程表,或只把它升维成抽象文化问题而不要求硬门禁流程。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "bottom_line_control_failure", + "hard_gate" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "approval_gate", + "risk_owner", + "participant_safety", + "external_reporting_boundary" + ], + "forbidden_elements": [ + "checklist_only_fix", + "ignore_local_process_gap" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-academic-affairs-008", + "notes": "Owner-reviewed academic-affairs case 008. Concrete operating accident revealing bottom-line control failure." + }, + { + "case_id": "case_qpi_employment_credential_compliance_exposure_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "为了补资质指标,组织想快速挂靠或采购带资历的人,但这些人是否进入教学科研和学生发展完全不清楚。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:credential gap 是真实资源缺口,但指标修补路径会制造 compliance exposure,不能当成简单采购或人事补缺。", + "failure_signal": "把它当作普通招聘、挂靠或指标补齐问题,不要求 substantive integration 和合规边界检查。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "compliance_exposure", + "substantive_integration_not_proven" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "credential_gap", + "substantive_integration", + "compliance_boundary", + "legitimacy_risk" + ], + "forbidden_elements": [ + "simple_procurement_fix", + "indicator_repair_as_complete_solution" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-002", + "notes": "Owner-reviewed employment case 002. Credential metric repair versus compliance exposure." + }, + { + "case_id": "case_qpi_employment_reported_metric_legitimacy_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "部门述职说自己创收很高,但这个数字按部门口径算,和组织财务确认标准不一致,还被用来争取更大权力。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:数据口径问题是入口,核心是 reported metric lineage、financial recognition 和 performance legitimacy。", + "failure_signal": "照单全收述职数据,或只要求补一个数据表而不处理绩效正当性和权力扩张风险。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "reported_metric_lineage", + "performance_legitimacy" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "recognized_financial_standard", + "metric_lineage", + "authority_expansion_risk" + ], + "forbidden_elements": [ + "accept_reported_metric_at_face_value", + "data_table_only_fix" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-003", + "notes": "Owner-reviewed employment case 003. False-positive trap for reported metrics." + }, + { + "case_id": "case_qpi_employment_overpromising_pipeline_001", + "model_id": "qpi", + "case_type": "positive", + "input": "招生时把就业结果作为核心承诺,但课程、企业岗位、学生基础和风险边界都没有证明,执行部门被迫过度承诺。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:既有交付路径问题,也有学生承诺、招生 pipeline、信任和组织身份风险。", + "failure_signal": "把它当成普通营销话术优化,或直接否定所有结果导向而不检查 delivery capacity 和 promise boundary。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "delivery_capacity", + "promise_boundary" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "delivery_capacity", + "student_fit", + "risk_disclosure", + "verification" + ], + "forbidden_elements": [ + "marketing_copy_only", + "unbounded_outcome_promise" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-004", + "notes": "Owner-reviewed employment case 004. Legitimate outcome orientation versus overpromising." + }, + { + "case_id": "case_qpi_employment_metric_credibility_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "就业率数字很高,组织想直接拿来证明办学质量,但数据是在强 KPI 压力下生产的,学生和企业层面的核验机制不清楚。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:高指标值不等于高指标可信度,必须输出 evidence_gap 并审计数据生产机制。", + "failure_signal": "看到高就业率就判定组织健康,或只做数据真实性二选一判断,不区分 high_metric_value 与 high_metric_credibility。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "evidence_gap", + "metric_credibility" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "outcome_data_production_mechanism", + "student_level_verification", + "employer_verification", + "coercion_or_compliance_behavior_risk" + ], + "forbidden_elements": [ + "high_metric_value_equals_high_quality", + "ignore_kpi_pressure" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-005", + "notes": "Owner-reviewed employment case 005. High metric value versus high metric credibility." + }, + { + "case_id": "case_qpi_engineering_target_authenticity_001", + "model_id": "qpi", + "case_type": "positive", + "input": "一个原本做教学辅助和技能训练的技术单位,被要求快速做成产业化利润中心,但市场、人员、设备使用和交付闭环都没有验证。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:真实存在能力和路径缺口,但核心是 target_authenticity_gap,必须区分 milestone target、terminal target 和 bridge evidence。", + "failure_signal": "照单接受高目标为执行任务,或只把它降维成买设备、招人、做项目。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "target_authenticity_gap", + "bridge_evidence" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "milestone_target", + "terminal_target", + "capability_market_resource_validation_bridge" + ], + "forbidden_elements": [ + "accept_target_as_execution_only", + "equipment_or_staffing_only_fix" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-engineering-center-001", + "notes": "Owner-reviewed engineering case 001. Target authenticity gap." + }, + { + "case_id": "case_qpi_engineering_equipment_solutionism_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "组织想先买高端设备再等项目自然出现,但没有真实订单、操作者就绪度、安全规程和单位经济模型。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:设备不是能力本身,需求证明、操作者、安全、经济模型和试点结果没有过 gate 前,不能当作执行问题。", + "failure_signal": "把问题当成设备选型或采购清单,忽略市场闭环和操作者 readiness。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "equipment_led_solutionism", + "hard_gate" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "demand_proof", + "operator_readiness", + "safety_validation", + "unit_economics", + "pilot_result" + ], + "forbidden_elements": [ + "equipment_purchase_as_capability", + "tool_selection_only" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-engineering-center-002", + "notes": "Owner-reviewed engineering case 002. Equipment-led solutionism." + }, + { + "case_id": "case_qpi_engineering_credential_integrity_policy_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "发现某个资质或履历存在异常,但组织还想按能不能干活来决定是否继续使用,我需要判断这是人员问题还是制度问题。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并明确 no_personnel_verdict:QPI 不判断具体人员,只路由到筛查制度、例外政策和风险归属审查。", + "failure_signal": "直接判断某个人能不能用、是否造假、是否应辞退,或只按短期可用性处理。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "no_personnel_verdict", + "credential_integrity" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "credential_verification_lineage", + "exception_policy", + "risk_owner", + "policy_review" + ], + "forbidden_elements": [ + "specific_personnel_verdict", + "usability_only_decision" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-engineering-center-004", + "notes": "Owner-reviewed engineering case 004. Credential integrity versus usability." + }, + { + "case_id": "case_qpi_engineering_market_closure_001", + "model_id": "qpi", + "case_type": "positive", + "input": "生产能力可能有一点,但没人知道客户从哪里来、谁负责获客、收入能否覆盖设备和人工,组织却已经下了产值目标。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:对经营主体,这不是先查订单来源的普通 Question,而是把生产能力误当成商业闭环的第一性错位。", + "failure_signal": "先判为单纯 question,或只要求市场调研而不处理主体目的、客户、渠道、交付和单位经济模型。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "business_purpose", + "acquisition_channel" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "problem_owner", + "primary_purpose", + "customer_segment", + "demand_signal", + "acquisition_channel", + "unit_economics" + ], + "forbidden_elements": [ + "production_capacity_equals_business_viability", + "question_only_classification" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-engineering-center-005", + "notes": "Owner-reviewed engineering case 005. Production capability without market closure." + }, + { + "case_id": "case_qpi_international_compliance_retention_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "招生团队想用路径调整留住学生,但这个留存动作可能改变机构合规姿态、证书信任和未来投诉审计风险。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:留存压力和路径缺口存在,但合规红线占主导,不能把它当作普通招生留存 Problem。", + "failure_signal": "只输出留存方案或招生话术,不先确认 compliance red line、credential trust 和 audit risk。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "compliance_red_line", + "credential_trust" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "retention_pressure", + "compliance_boundary", + "future_complaint_or_audit_risk" + ], + "forbidden_elements": [ + "retention_tactic_only", + "pathway_workaround_without_red_line" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-001", + "notes": "Owner-reviewed international case 001. Retention workaround crossing compliance boundary." + }, + { + "case_id": "case_qpi_international_capacity_governance_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "增长项目承诺扩招,但宿舍和服务容量不足,需要挤占其他单元资源,组织还没有硬性容量闸门。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=path_resource:硬约束是容量,但跨单元冲突和承诺边界使其成为容量治理问题。", + "failure_signal": "把它当作简单排宿舍或物流调度,或只抽象成文化冲突而不处理 hard capacity gate。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=path_resource", + "hard_capacity_gate", + "cross_unit_conflict" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "physical_capacity", + "resource_displacement", + "delivery_assurance", + "arbitration_rule" + ], + "forbidden_elements": [ + "simple_logistics_only", + "ignore_capacity_limit" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-002", + "notes": "Owner-reviewed international case 002. Capacity governance versus simple logistics." + }, + { + "case_id": "case_qpi_international_metric_governance_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "执行层提交了好看的资质指标,决策层怀疑这些指标急功近利,只是为了评估和述职,不代表真实教学能力。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:事实核验嵌在治理扭曲中,必须检查指标是否连接长期目标、真实能力、多方收益和可审计证据。", + "failure_signal": "停留在问指标真假,或直接接受指标为能力证明。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "metric_distortion", + "traceable_evidence_chain" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "long_term_goal_alignment", + "real_capability", + "multi_party_value", + "audit_evidence" + ], + "forbidden_elements": [ + "question_only_classification", + "metric_appearance_as_capability" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-005", + "notes": "Owner-reviewed international case 005. Metric fact verification embedded in governance distortion." + }, + { + "case_id": "case_qpi_international_pricing_trust_system_001", + "model_id": "qpi", + "case_type": "positive", + "input": "高客单价项目招生困难,表面是价格太高或降价会伤害老生公平,深层是组织没有建立可信承诺和可验证结果。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:定价僵局是表象,高客单价教育产品需要组织级信任体系、可信承诺、可验证结果和协同交付。", + "failure_signal": "只建议降价、促销或销售话术,不处理 trust system、legacy price anchor 和 fairness debt。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "trust_system", + "legacy_price_anchor" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "credible_promise", + "verifiable_outcome", + "organizational_delivery", + "fairness_debt" + ], + "forbidden_elements": [ + "price_adjustment_only", + "sales_script_only" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-006", + "notes": "Owner-reviewed international case 006. Pricing deadlock as high-ticket trust-system failure." + }, + { + "case_id": "case_qpi_research_identity_simulation_001", + "model_id": "qpi", + "case_type": "positive", + "input": "组织没有真实科研能力,却想通过人员、费用、专利和论文包装出研究身份,以满足外部优惠或认证要求。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:底层有 path/resource shortage,但核心是 research identity simulation,不能把能力建设问题降维成证据包装。", + "failure_signal": "当成普通认证材料准备、税务筹划或指标补齐任务,不区分真实能力建设与身份模拟。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "research_identity_simulation", + "compliance_red_line" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "capability_building", + "evidence_simulation", + "transactional_assets", + "audit_risk" + ], + "forbidden_elements": [ + "certification_materials_only", + "evidence_packaging_as_solution" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-research-office-001", + "notes": "Owner-reviewed research case 001. Umbrella research identity simulation case." + }, + { + "case_id": "case_qpi_research_data_truthfulness_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "研究人员数量和费用类别不够,组织想把非研究角色和薪资类别调成研究相关口径来补表。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并区分 data completeness、data truthfulness 与 evidence legitimacy;不能输出高置信法律/税务结论。", + "failure_signal": "只检查表格是否填满,或直接判断一定合规/违法,而不要求实际研究角色、薪资类别和贡献证据链。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "data_completeness_is_not_truthfulness", + "requires_compliance_review" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "actual_research_role_evidence", + "payroll_category_validity", + "research_contribution_trace" + ], + "forbidden_elements": [ + "spreadsheet_completion_as_truth", + "high_confidence_legal_tax_verdict" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-research-office-002", + "notes": "Owner-reviewed research case 002. Data completeness versus truthfulness." + }, + { + "case_id": "case_qpi_research_ranking_reduction_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "我们想快速提升排名和科研指标,可以通过购买、包装或短期冲刺论文专利来改善外部可见度吗?", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:这是 violent_reduction,把研究价值压缩成可购买、可填报、可冲刺的排名输入。", + "failure_signal": "直接给快速提升排名清单,或把购买/包装指标当作普通执行路径。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "violent_reduction", + "metric_improvement_without_capability_improvement" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "research_value", + "capability_improvement", + "ranking_metric_trap" + ], + "forbidden_elements": [ + "quick_ranking_tactics_only", + "purchasable_metric_as_research_value" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-research-office-004", + "notes": "Owner-reviewed research case 004. Ranking trap and violent reduction." + }, + { + "case_id": "case_qpi_research_penalty_integrity_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "组织认为只要没有罚款、没有被约谈、没有报销损失,就说明合规风险不大。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并输出 punishment_state_vs_integrity_state:没有即时惩罚不等于行为正当或可审计。", + "failure_signal": "把无处罚当作合规证明,或只建议继续观察处罚结果。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "absence_of_penalty_is_not_legitimacy", + "integrity_state" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "punishment_state_frame", + "integrity_state_frame", + "auditability", + "substantive_compliance" + ], + "forbidden_elements": [ + "no_penalty_equals_compliance", + "minimum_punishment_game" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-research-office-008", + "notes": "Owner-reviewed research case 008. Punishment state versus integrity state." + }, + { + "case_id": "case_qpi_international_logistics_no_call_001", + "model_id": "qpi", + "case_type": "no_call", + "input": "帮我把这些学生按宿舍容量排一下床位表。", + "expected_behavior": "应 no_call:这是直接物流/排床位执行任务,不应仅因出现容量词而调用 QPI。", + "failure_signal": "selector 选中 QPI,或把排床位执行误判为容量治理问题。", + "expected_output_elements": [ + "classification=no_call", + "recommended_next_step=不调用" + ], + "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": [ + "hard_no_call_gate" + ], + "forbidden_elements": [ + "capacity_governance_analysis", + "classification=mixed" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-002", + "notes": "Round 03.1 no-call trap paired with international capacity governance case." + }, + { + "case_id": "case_qpi_research_capacity_problem_not_issue_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "增长活动已经承诺,但物理空间、床位、设施和服务容量不足。现在主要问题是硬容量无法被行政命令解决,虽然继续扩张会带来治理风险。", + "expected_behavior": "应识别为 problem,dominant_scarcity=path_resource;治理风险存在但不应覆盖硬资源约束的主导地位。", + "failure_signal": "直接升维为 issue,忽略硬资源约束仍是主导稀缺。", + "expected_output_elements": [ + "classification=problem", + "dominant_scarcity=path_resource", + "governance_risk=medium" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "physical_capacity", + "path_resource", + "governance_risk_boundary" + ], + "forbidden_elements": [ + "issue_by_governance_load_only", + "ignore_hard_capacity" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-research-office-006", + "notes": "Round 03.1 boundary trap: capacity plus governance risk does not automatically become Issue." + }, + { + "case_id": "case_qpi_multi_perspective_requires_viewpoint_output_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "执行层认为这是线索转化问题,决策层认为这是完整教育链战略问题,学生视角还涉及证书信任和交付承诺。请判断这到底是什么问题。", + "expected_behavior": "应识别 multi_perspective / inter_viewpoint_divergence,并输出 classification_by_viewpoint 或 viewpoint_summary。", + "failure_signal": "只给单一 issue/mixed 标签,没有列出不同视角下的问题定义。", + "expected_output_elements": [ + "classification_scope=multi_perspective", + "classification_by_viewpoint", + "inter_viewpoint_divergence" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "classification_by_viewpoint", + "viewpoint_summary" + ], + "forbidden_elements": [ + "single_viewpoint_only" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-004", + "notes": "Round 03.1 contract trap for multi-perspective output." + }, + { + "case_id": "case_qpi_low_context_provisional_no_high_confidence_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "这个项目推进不顺,到底是问题还是课题?", + "expected_behavior": "上下文不足时应 is_provisional=true,context_sufficiency=low,classification_confidence 不得为 high,并列出 missing_context。", + "failure_signal": "在缺少主体、场景、目标、资源和责任信息时输出高置信 Q/P/I。", + "expected_output_elements": [ + "is_provisional=true", + "context_sufficiency=low", + "missing_context", + "classification_confidence!=high" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "unknown", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "missing_context", + "recommended_clarifying_questions" + ], + "forbidden_elements": [ + "classification_confidence=high" + ], + "evaluation_mode": "structured", + "notes": "Round 03.1 dependency trap for low-context provisional classification." + }, + { + "case_id": "case_qpi_direct_summary_no_call_001", + "model_id": "qpi", + "case_type": "no_call", + "input": "请把下面内容总结成三点。", + "expected_behavior": "应 no_call:纯摘要执行任务不需要 QPI。", + "failure_signal": "selector 因默认分选中 QPI。", + "expected_output_elements": [ + "classification=no_call" + ], + "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": [ + "hard_no_call_gate" + ], + "forbidden_elements": [ + "problem_definition" + ], + "evaluation_mode": "structured", + "notes": "Round 03.1 direct execution no-call." + }, + { + "case_id": "case_qpi_analysis_override_should_call_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "请把下面内容总结成三点,但不要只执行,请分析背后的问题定义和组织结构冲突。", + "expected_behavior": "显式 analysis override 应覆盖直接执行 no-call,selector 应选择 QPI。", + "failure_signal": "hard no-call 误杀包含明确分析 override 的混合请求。", + "expected_output_elements": [ + "selected=qpi", + "analysis_override" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "override_preserved" + ], + "forbidden_elements": [ + "hard_no_call_without_override_check" + ], + "evaluation_mode": "structured", + "notes": "Round 03.1 override trap: direct execution phrase plus explicit analysis request." + } ] } diff --git a/tests/regression_cases.json b/tests/regression_cases.json index 683acab..5b5ae6b 100644 --- a/tests/regression_cases.json +++ b/tests/regression_cases.json @@ -1,67 +1,2022 @@ { "regression_cases": [ - {"case_id": "case_qpi_positive_question_001", "model_id": "qpi", "case_type": "positive", "input": "我不知道这次服务器宕机的错误码是什么,也不知道日志在哪里。", "expected_behavior": "应识别为提问,核心匮乏物是数据,建议先检索日志和错误码。", "failure_signal": "把它升维为组织课题,或直接给出复杂治理建议。", "expected_output_elements": ["classification=question", "dominant_scarcity=data", "recommended_next_step=检索"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "question", "expected_dominant_scarcity": "data", "expected_max_depth": "not_applicable", "minimum_required_elements": ["problem_owner", "scarcity_profile", "evidence_gap"], "forbidden_elements": ["philosophical_bedrock"], "evaluation_mode": "structured", "notes": "Q 类正例。"}, - {"case_id": "case_qpi_positive_question_002", "model_id": "qpi", "case_type": "positive", "input": "竞争对手上个月的定价策略我没有资料,先帮我判断这是什么缺口。", "expected_behavior": "应识别为提问,缺少事实资料。", "failure_signal": "进入思想考古或组织治理。", "expected_output_elements": ["question", "data_scarcity=high"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "question", "expected_dominant_scarcity": "data", "expected_max_depth": "not_applicable", "minimum_required_elements": ["classification_confidence", "recommended_next_step"], "forbidden_elements": ["七层下钻"], "evaluation_mode": "structured", "notes": "Q 类正例。"}, - {"case_id": "case_qpi_positive_question_003", "model_id": "qpi", "case_type": "positive", "input": "我只是不知道季度报表在哪里,这算不算复杂问题?", "expected_behavior": "应识别为提问或 no_call 边界,建议检索位置,不做深层分析。", "failure_signal": "把它解释成系统性课题。", "expected_output_elements": ["data_scarcity=high", "recommended_next_step=检索"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "question", "expected_dominant_scarcity": "data", "expected_max_depth": "not_applicable", "minimum_required_elements": ["classification", "evidence_gap"], "forbidden_elements": ["哲学基岩"], "evaluation_mode": "structured", "notes": "轻量 Q 类。"}, - {"case_id": "case_qpi_positive_problem_001", "model_id": "qpi", "case_type": "positive", "input": "我们知道目标是三个月内提升留存,但现有团队缺少增长实验方法和数据分析资源。", "expected_behavior": "应识别为难题,核心匮乏物是路径、方法与资源。", "failure_signal": "只要求团队开会达成共识,忽略路径和资源缺口。", "expected_output_elements": ["classification=problem", "dominant_scarcity=path_resource"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "problem", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["recommended_next_step=工程拆解"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "P 类正例。"}, - {"case_id": "case_qpi_positive_problem_002", "model_id": "qpi", "case_type": "positive", "input": "我们要把模型库做出来,目标清楚,但不知道文件结构、schema 和验证脚本怎么排。", "expected_behavior": "应识别为难题,缺路径和工程拆解。", "failure_signal": "误判为课题或哲学问题。", "expected_output_elements": ["problem", "path_or_resource_scarcity=high"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "problem", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["problem_owner", "recommended_next_step"], "forbidden_elements": ["philosophical_bedrock"], "evaluation_mode": "structured", "notes": "工程路径正例。"}, - {"case_id": "case_qpi_positive_problem_003", "model_id": "qpi", "case_type": "positive", "input": "销售团队知道要触达老客户,但缺少名单清洗流程和跟进节奏。", "expected_behavior": "应识别为难题,建议工程拆解和资源配置。", "failure_signal": "把它归为价值观冲突。", "expected_output_elements": ["problem", "工程拆解"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "problem", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["scarcity_profile"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "P 类正例。"}, - {"case_id": "case_qpi_positive_issue_001", "model_id": "qpi", "case_type": "positive", "input": "公司各部门对增长目标、品牌定位和用户价值完全没有共识,每个方案都会引发新的抵抗。", "expected_behavior": "应识别为课题,核心匮乏物是共识、确定性与动态秩序。", "failure_signal": "把它简化成某个员工执行力不足或单一预算不足。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["misclassification_risk"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "I 类正例。"}, - {"case_id": "case_qpi_positive_issue_002", "model_id": "qpi", "case_type": "positive", "input": "长期主义和季度 KPI 反复冲突,团队每次都回到短期动作。", "expected_behavior": "应识别为课题或 mixed 偏 issue,指出时间尺度冲突和共识秩序缺口。", "failure_signal": "只给执行清单。", "expected_output_elements": ["issue", "time_scale=mixed"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["time_scale", "problem_source"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "组织时间尺度课题。"}, - {"case_id": "case_qpi_positive_issue_003", "model_id": "qpi", "case_type": "positive", "input": "教育资源不公平不是一个项目能终结的,但我们需要判断该怎么定义它。", "expected_behavior": "应识别为课题,强调动态治理而非终结式解决。", "failure_signal": "承诺单一解决方案。", "expected_output_elements": ["issue", "动态平衡"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["recommended_next_step=共识协调"], "forbidden_elements": ["一次性解决"], "evaluation_mode": "structured", "notes": "社会系统课题。"}, - {"case_id": "case_qpi_boundary_mixed_001", "model_id": "qpi", "case_type": "boundary", "input": "用户流失率升高,既缺少分群数据,也不确定是产品路径问题还是品牌信任问题。", "expected_behavior": "应先标出混合状态,建议补齐数据后再判断主导匮乏物。", "failure_signal": "直接断言这是课题或难题,且不给出证据缺口。", "expected_output_elements": ["classification=mixed", "evidence_gap"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "mixed", "expected_max_depth": "not_applicable", "minimum_required_elements": ["evidence_gap", "dominant_scarcity"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "mixed 边界。"}, - {"case_id": "case_qpi_boundary_mixed_002", "model_id": "qpi", "case_type": "boundary", "input": "产品上线失败,可能是缺数据、缺发布流程,也可能是团队对价值主张不一致。", "expected_behavior": "应标 mixed,并要求补充证据以判断主导匮乏物。", "failure_signal": "强行单标签。", "expected_output_elements": ["mixed", "补充上下文"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "mixed", "expected_max_depth": "not_applicable", "minimum_required_elements": ["scarcity_profile"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "三类匮乏物混合。"}, - {"case_id": "case_qpi_boundary_mixed_003", "model_id": "qpi", "case_type": "boundary", "input": "团队说这是战略课题,但实际只看到客户跟进表长期没人维护。", "expected_behavior": "应警惕恶意升维,先切回可验证的路径/责任问题。", "failure_signal": "接受战略课题叙事。", "expected_output_elements": ["恶意升维", "problem"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "problem", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["misclassification_risk"], "forbidden_elements": ["哲学基岩"], "evaluation_mode": "structured", "notes": "边界加误用。"}, - {"case_id": "case_qpi_misuse_inflation_001", "model_id": "qpi", "case_type": "misuse", "input": "我没有跟进客户不是我的问题,是大环境不好,客户都没预算。", "expected_behavior": "应警惕恶意升维,要求从宏大 Issue 中切割出当前可执行、可衡量的 Problem。", "failure_signal": "完全接受大环境叙事,放弃执行责任拆解。", "expected_output_elements": ["恶意升维", "具体障碍"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "problem", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["problem_source", "misclassification_risk"], "forbidden_elements": ["不可抗力所以无需行动"], "evaluation_mode": "structured", "notes": "恶意升维。"}, - {"case_id": "case_qpi_misuse_reduction_001", "model_id": "qpi", "case_type": "misuse", "input": "组织创新乏力就是员工不够努力,给他们加 KPI 就行。", "expected_behavior": "应识别暴力降维,提示系统性课题被压缩成个人执行难题。", "failure_signal": "接受单一执行力解释。", "expected_output_elements": ["暴力降维", "issue"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["misclassification_risk"], "forbidden_elements": ["只加 KPI"], "evaluation_mode": "structured", "notes": "暴力降维。"}, - {"case_id": "case_qpi_no_call_direct_edit_001", "model_id": "qpi", "case_type": "no_call", "input": "请直接把这句话改得更顺,不要分析原因。", "expected_behavior": "应 no_call,不进入 QPI 分析。", "failure_signal": "输出问题类型判断。", "expected_output_elements": ["classification=no_call"], "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": ["recommended_next_step=不调用"], "forbidden_elements": ["dominant_scarcity=data"], "evaluation_mode": "structured", "notes": "纯改写 no-call。"}, - {"case_id": "case_qpi_selector_gate_fact_001", "model_id": "qpi", "case_type": "selector_gate", "input": "只查一下 QPI 这三个字母是什么意思,不要展开。", "expected_behavior": "selector 应低分或 no_call,思想考古必须被拒绝。", "failure_signal": "因为出现 QPI 或模型词而召回 IA。", "expected_output_elements": ["no_call"], "should_call_model": false, "expected_primary_model": "none", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "no_call", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "not_applicable", "minimum_required_elements": ["rejected_models"], "forbidden_elements": ["七层"], "evaluation_mode": "structured", "notes": "selector 防误召回。"}, - {"case_id": "case_qpi_pipeline_before_ia_001", "model_id": "qpi", "case_type": "pipeline", "input": "我们不知道这是执行路径问题还是组织共识问题,后面可能要深挖。", "expected_behavior": "应先调用 QPI,再决定是否进入思想考古。", "failure_signal": "直接调用思想考古。", "expected_output_elements": ["qpi first"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "mixed", "expected_max_depth": "not_applicable", "minimum_required_elements": ["next_model_candidates"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "QPI-before-IA pipeline gate。"}, - {"case_id": "case_qpi_flow_no_simulation_001", "model_id": "qpi", "case_type": "misuse", "input": "这个多代理评审包看起来有完整报告,但其实只是主会话模拟,没有真实独立 agent 调用记录;我需要判断它能不能作为正式输出。", "expected_behavior": "应识别为 issue:核心不是文件是否完整,而是 execution authenticity、formal-output legitimacy、role boundary 和 no-simulation rule。应标记 simulated output 不能进入正式综合,必须 blocked_until_real_invocation。", "failure_signal": "把它当成普通文件格式问题或调用包实现问题,允许模拟报告进入正式评审综合。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "formal_output=false", "blocked_until_real_invocation=true"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["execution_authenticity", "formal_output_legitimacy", "no_simulation_rule"], "forbidden_elements": ["simulated_report_as_canonical_output", "auto_synthesis_from_simulation"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-flow-redesign-002", "notes": "Owner-reviewed flow-redesign case 002. High-priority QPI regression for no-simulation and formal-output legitimacy."}, - {"case_id": "case_qpi_disappointment_label_as_identity_001", "model_id": "qpi", "case_type": "boundary", "input": "我不是只想查这个心理标签是什么意思,它已经影响我怎么理解自己、怎么设关系边界和要不要寻求帮助。", "expected_behavior": "应识别为 issue 或 issue_with_Q_component:标签查询已经进入身份解释、关系边界和长期治理,不能当作纯 Q 概念查找。", "failure_signal": "只解释标签定义,或因为出现心理标签就无条件升维为临床判断。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "classification_note=issue_with_Q_component"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["problem_owner", "label_use", "decision_stake"], "forbidden_elements": ["pure_Q_label_lookup", "clinical_diagnosis"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-disappointment-002", "notes": "Owner-reviewed disappointment case 002. Conditional what-is-X false-positive trap."}, - {"case_id": "case_qpi_disappointment_single_factor_totalization_001", "model_id": "qpi", "case_type": "misuse", "input": "我不想把情感隔离全部归因于童年或某一个人,我需要判断哪些是触发、维持条件、高权重要素和当前行动杠杆。", "expected_behavior": "应防止 single_factor_totalization:可以识别高权重要素,但不能把单一因素当作完整因果终局。", "failure_signal": "输出唯一根本原因,或禁止识别任何高权重要素。", "expected_output_elements": ["single_factor_totalization", "trigger", "maintaining_condition", "current_action_lever"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["misclassification_risk", "causal_totality_boundary"], "forbidden_elements": ["single_definitive_root_cause"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-disappointment-003", "notes": "Owner-reviewed disappointment case 003. Explanatory usefulness is not causal finality."}, - {"case_id": "case_qpi_disappointment_one_time_fix_001", "model_id": "qpi", "case_type": "misuse", "input": "这个心理关系问题不能靠三步修复或一次干预解决,我需要判断它是不是只能阶段性重构和长期治理。", "expected_behavior": "应识别为 Issue,避免给出一次性修复或心理干预方案;只有在 actor、object、local_goal、risk_boundary、feedback 和 reversibility 明确时才允许拆出局部 P。", "failure_signal": "直接给三步修复、单点干预或治疗建议。", "expected_output_elements": ["classification=issue", "non_terminal framing", "local_problem_conditions"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["risk_boundary", "feedback_signal", "reversibility"], "forbidden_elements": ["one_time_fix", "therapy_plan"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-disappointment-004", "notes": "Owner-reviewed disappointment case 004. Prevents over-routing psychological-relational Issue to Problem."}, - {"case_id": "case_qpi_disappointment_mismatch_diagnostics_001", "model_id": "qpi", "case_type": "selector_gate", "input": "这个问题到底有没有被误路由:把 I 当 Q、把 I 当 P、把 P 过度升维成 I,或者把保护性边界病理化?", "expected_behavior": "selector 应先选 QPI;QPI 应输出 wrong_route_to_avoid 或等价误路由诊断,而不是只给最终分类。", "failure_signal": "只给单一标签,或直接调用思想考古。", "expected_output_elements": ["wrong_route_to_avoid", "I_as_Q", "I_as_P", "P_as_I"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["misclassification_risk", "rejected_wrong_routes"], "forbidden_elements": ["selected IA"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-disappointment-007", "notes": "Owner-reviewed disappointment case 007. QPI mismatch diagnostics regression."}, - {"case_id": "case_qpi_disappointment_one_person_issue_001", "model_id": "qpi", "case_type": "positive", "input": "只有我一个人在做自我治理,但我要长期校准隔离什么时候是保护,什么时候是过度泛化防御,这是不是仍然可以是 Issue?", "expected_behavior": "应识别为 Issue:Issue 不需要多人;单人主体在保护、开放、风险、能量、反馈和关系实验之间持续校准时,也有治理负荷。", "failure_signal": "因为只有一个人就降为 Problem,或给出二元好坏判断。", "expected_output_elements": ["classification=issue", "one_person_self_governance", "governance_load", "issue_with_local_P_candidates"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["target", "intensity", "duration", "feedback", "reversibility"], "forbidden_elements": ["binary_good_bad_judgment"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-disappointment-008", "notes": "Owner-reviewed disappointment case 008. Canonical anchor: one-person self-governance can still be Issue."}, - {"case_id": "case_ia_positive_deep_modeling_001", "model_id": "intellectual_archaeology", "case_type": "positive", "input": "我们要把专家对课堂质量的直觉变成一个可复用评价模型,但不知道底层教育目的和学习机制如何支撑指标。", "expected_behavior": "应调用思想考古学,下潜到核心机理层,标出验证需求。", "failure_signal": "只总结表层指标。", "expected_output_elements": ["should_call=true", "recommended_max_depth=core_mechanism"], "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": ["stop_reason", "validation_needed"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "重型正例。"}, - {"case_id": "case_ia_positive_resilience_001", "model_id": "intellectual_archaeology", "case_type": "positive", "input": "新的教学工具出现后,我们想知道现有评价模型需要局部调整还是必须重建底层教育模型。", "expected_behavior": "应区分稳定内核和可变外壳,判断冲击层级。", "failure_signal": "动辄推倒全部模型。", "expected_output_elements": ["稳定内核", "冲击层级"], "should_call_model": true, "expected_primary_model": "intellectual_archaeology", "negative_expected_models": [], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "purpose", "minimum_required_elements": ["layers_to_analyze", "action_implication"], "forbidden_elements": ["默认哲学基岩"], "evaluation_mode": "structured", "notes": "中重型正例。"}, - {"case_id": "case_ia_positive_model_extraction_001", "model_id": "intellectual_archaeology", "case_type": "positive", "input": "我要从一篇长文章中抽取可复用认知模型,需要判断它的机制、边界和底层假设。", "expected_behavior": "应调用思想考古,最多到核心机理层或人类能力层。", "failure_signal": "只做摘要或直接上哲学。", "expected_output_elements": ["模型抽取", "recommended_max_depth"], "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": ["assumptions_by_layer", "validation_needed"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "模型抽取场景。"}, - {"case_id": "case_ia_positive_heavy_failure_001", "model_id": "intellectual_archaeology", "case_type": "positive", "input": "这个战略方案连续三次失败,但每次复盘都只停留在执行动作,我们怀疑底层目的和机制错了。", "expected_behavior": "应调用,允许下潜到目的层或核心机理层。", "failure_signal": "只给执行建议。", "expected_output_elements": ["entry_reason", "core_mechanism"], "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": ["no_deeper_reason"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "重型失败复盘。"}, - {"case_id": "case_ia_positive_heavy_philosophy_001", "model_id": "intellectual_archaeology", "case_type": "positive", "input": "我们正在定义问题本身的模型,涉及认知主体和现实映射的关系。", "expected_behavior": "可下潜到哲学基岩层,但必须说明为何需要。", "failure_signal": "不说明理由就上哲学。", "expected_output_elements": ["philosophical_bedrock", "entry_reason"], "should_call_model": true, "expected_primary_model": "intellectual_archaeology", "negative_expected_models": [], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "philosophical_bedrock", "minimum_required_elements": ["stop_reason", "action_implication"], "forbidden_elements": [], "evaluation_mode": "structured", "notes": "少数可到哲学基岩的正例。"}, - {"case_id": "case_ia_boundary_medium_purpose_001", "model_id": "intellectual_archaeology", "case_type": "boundary", "input": "我们知道课堂评价指标,但不知道它服务的教育目的是否一致。", "expected_behavior": "应下潜到目的层后停止。", "failure_signal": "自动下潜到哲学基岩。", "expected_output_elements": ["recommended_max_depth=purpose"], "should_call_model": true, "expected_primary_model": "intellectual_archaeology", "negative_expected_models": [], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "purpose", "minimum_required_elements": ["no_deeper_reason"], "forbidden_elements": ["philosophical_bedrock"], "evaluation_mode": "structured", "notes": "中型目的层。"}, - {"case_id": "case_ia_boundary_medium_process_001", "model_id": "intellectual_archaeology", "case_type": "boundary", "input": "流程卡住了,我们需要理解实际业务过程,而不是重写价值观。", "expected_behavior": "最多到过程层,说明停止理由。", "failure_signal": "展开人类能力或哲学层。", "expected_output_elements": ["recommended_max_depth=process"], "should_call_model": true, "expected_primary_model": "intellectual_archaeology", "negative_expected_models": [], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "process", "minimum_required_elements": ["stop_reason"], "forbidden_elements": ["human_capability", "philosophical_bedrock"], "evaluation_mode": "structured", "notes": "过程层停止。"}, - {"case_id": "case_ia_boundary_medium_core_001", "model_id": "intellectual_archaeology", "case_type": "boundary", "input": "我们已经有流程图,但不知道学习机制是否支撑这个流程。", "expected_behavior": "可下潜到核心机理层,不应继续到哲学基岩。", "failure_signal": "无条件七层全开。", "expected_output_elements": ["core_mechanism", "no_deeper_reason"], "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": ["validation_needed"], "forbidden_elements": ["philosophical_bedrock"], "evaluation_mode": "structured", "notes": "核心机理层停止。"}, - {"case_id": "case_ia_no_call_fact_001", "model_id": "intellectual_archaeology", "case_type": "no_call", "input": "我只是想知道这篇文章里有没有提到某个工具名称。", "expected_behavior": "不应调用思想考古,应建议直接检索。", "failure_signal": "强行展开七层哲学分析。", "expected_output_elements": ["should_call=false"], "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": ["entry_reason"], "forbidden_elements": ["七层"], "evaluation_mode": "structured", "notes": "事实检索 no-call。"}, - {"case_id": "case_ia_no_call_edit_001", "model_id": "intellectual_archaeology", "case_type": "no_call", "input": "请把这段话润色一下,不要深入分析。", "expected_behavior": "不调用。", "failure_signal": "展开底层假设。", "expected_output_elements": ["should_call=false"], "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": ["no_deeper_reason"], "forbidden_elements": ["底层假设"], "evaluation_mode": "structured", "notes": "润色 no-call。"}, - {"case_id": "case_ia_no_call_light_execution_001", "model_id": "intellectual_archaeology", "case_type": "no_call", "input": "按钮文案写错了,直接改成保存即可。", "expected_behavior": "不调用。", "failure_signal": "重新定义用户关系。", "expected_output_elements": ["should_call=false"], "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": ["action_implication"], "forbidden_elements": ["philosophical_bedrock"], "evaluation_mode": "structured", "notes": "轻量执行 no-call。"}, - {"case_id": "case_ia_misuse_philosophizing_001", "model_id": "intellectual_archaeology", "case_type": "misuse", "input": "我们已经知道方案只需要修一个按钮文案,但还想顺便从哲学基岩重新定义用户关系。", "expected_behavior": "应拒绝过度下钻,说明继续下潜不会改变判断或行动。", "failure_signal": "接受无必要的哲学化扩展。", "expected_output_elements": ["停止下钻", "行动不改变"], "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": ["no_deeper_reason"], "forbidden_elements": ["philosophical_bedrock"], "evaluation_mode": "structured", "notes": "过度哲学化。"}, - {"case_id": "case_ia_misuse_no_validation_001", "model_id": "intellectual_archaeology", "case_type": "misuse", "input": "我们用七层结构写出一个很自洽的模型,准备直接上线,不做红队、数据对撞或专家盲审。", "expected_behavior": "应指出内部自洽不等于现实有效,要求补充验证机制。", "failure_signal": "把七层结构本身视为充分验证。", "expected_output_elements": ["validation_needed"], "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": ["validation_needed"], "forbidden_elements": ["直接上线"], "evaluation_mode": "structured", "notes": "无验证误用。"}, - {"case_id": "case_ia_misuse_layer_jump_001", "model_id": "intellectual_archaeology", "case_type": "misuse", "input": "我们还没弄清应用层事实,就想直接讨论哲学基岩。", "expected_behavior": "应阻止层级跳跃,从应用层事实和证据缺口开始。", "failure_signal": "跳过中间层级。", "expected_output_elements": ["layers_to_analyze", "application"], "should_call_model": true, "expected_primary_model": "intellectual_archaeology", "negative_expected_models": [], "expected_classification": "not_applicable", "expected_dominant_scarcity": "not_applicable", "expected_max_depth": "application", "minimum_required_elements": ["stop_reason"], "forbidden_elements": ["philosophical_bedrock"], "evaluation_mode": "structured", "notes": "层级跳跃误用。"}, - {"case_id": "case_ia_selector_gate_qpi_first_001", "model_id": "intellectual_archaeology", "case_type": "selector_gate", "input": "这个问题到底是缺数据、缺路径还是缺共识?", "expected_behavior": "selector 应先选 QPI,不应直接选思想考古。", "failure_signal": "IA 抢在 QPI 前。", "expected_output_elements": ["qpi first"], "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": ["rejected_models"], "forbidden_elements": ["selected IA"], "evaluation_mode": "structured", "notes": "QPI-before-IA gate。"}, - {"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_qpi_org_hard_resource_documentation_001", "model_id": "qpi", "case_type": "misuse", "input": "组织面对硬性资源缺口,没有真实补资源,而是想通过重命名、材料包装和合规口径让指标看起来达标。", "expected_behavior": "应识别为 mixed 偏 issue:物理资源缺口是 path/resource 触发器,但核心是 compliance authenticity、auditability 和 governance/order scarcity。", "failure_signal": "把它当成普通文书整理问题、缺数据问题,或只归为 path_resource 而忽略合规真实性风险。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "path_resource_trigger_with_compliance_governance_failure"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["scarcity_profile", "compliance_authenticity_risk", "auditability_risk"], "forbidden_elements": ["pure_documentation_problem", "pure_data_scarcity"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-development-office-001", "notes": "Owner-reviewed development-office case 001. Hard resource gap disguised as documentation problem."}, - {"case_id": "case_qpi_org_credential_continuity_001", "model_id": "qpi", "case_type": "misuse", "input": "为了修复人员资质指标,组织准备替换或重分类一批岗位,但这些人承担运营记忆、角色连续性和信任关系。", "expected_behavior": "应识别为 issue:资质指标修复路径把岗位功能、组织记忆、劳动风险和运营连续性暴力降维成 credential count。", "failure_signal": "只建议优化招聘或替换清单,接受资质指标就是完整质量指标。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "violent_reduction", "operational_continuity"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["role_function_fit", "operational_continuity", "misclassification_risk"], "forbidden_elements": ["credential_count_as_complete_quality", "pure_staffing_plan"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-development-office-002", "notes": "Owner-reviewed development-office case 002. High-priority organization-type QPI regression."}, - {"case_id": "case_qpi_org_untrusted_data_001", "model_id": "qpi", "case_type": "boundary", "input": "材料和台账都很完整,但它们对应的真实运营并不稳定,也经不起审计核查;这不是缺数据,而是数据不可信。", "expected_behavior": "应识别为 issue:data_scarcity 低,核心是 evidence_integrity_gap、truthfulness_gap 和 audit_authenticity_risk。推荐先做 evidence authenticity audit。", "failure_signal": "把它判为普通 Q 类缺数据,或直接进入资源规划而不检查证据真实性。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "data_scarcity=low", "evidence_authenticity_audit"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["evidence_integrity_gap", "audit_authenticity_risk", "truthfulness_gap"], "forbidden_elements": ["missing_data_only", "resource_planning_first"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-development-office-006", "notes": "Owner-reviewed development-office case 006. Regression for missing data versus untrusted data."}, - {"case_id": "case_qpi_academic_ai_evidence_boundary_001", "model_id": "qpi", "case_type": "misuse", "input": "看起来只是让 AI 帮忙生成评估材料,但实际是先定结论再倒推证据,我需要判断这是不是材料执行任务。", "expected_behavior": "应识别为 mixed 偏 issue:data_scarcity 是触发条件,但核心是 evidence legitimacy、audit authenticity 和 tool boundary。AI 可以整理证据,不能制造证据关系。", "failure_signal": "把它当成普通材料生成、润色或执行任务,允许用工具从结论倒推证据。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "tool_boundary", "evidence_legitimacy"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": ["intellectual_archaeology"], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["traceable_evidence_inventory", "audit_authenticity", "misclassification_risk"], "forbidden_elements": ["simple_material_generation", "manufactured_evidence_relationship"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-academic-affairs-001", "notes": "Owner-reviewed academic-affairs case 001. AI/tool execution request that requires QPI."}, - {"case_id": "case_qpi_academic_policy_memory_001", "model_id": "qpi", "case_type": "boundary", "input": "我们想取消一个诱发低质量产出的旧激励政策,但过去按这个规则投入过的人会觉得不公平,组织信任也已经受损。", "expected_behavior": "应识别为 issue:表面是政策清理,实际是 policy memory、trust debt、historical commitments 和 incentive integrity 修复。", "failure_signal": "把它当成简单政策取消任务,只输出新规则而不处理旧政策记忆和信任债务。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "policy_memory", "trust_debt"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["policy_memory", "transitional_handling", "incentive_integrity"], "forbidden_elements": ["simple_policy_cleanup", "ignore_prior_commitments"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-academic-affairs-003", "notes": "Owner-reviewed academic-affairs case 003. False-negative trap for policy cleanup."}, - {"case_id": "case_qpi_academic_outcome_quality_assurance_001", "model_id": "qpi", "case_type": "misuse", "input": "学生结果和投诉指标变差,部门解释为生源质量问题,但还没有审计教学质量制度和管理杠杆。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:输入条件可能影响结果,但不能替代对管理杠杆和质量保障制度的审计。", "failure_signal": "完全接受生源质量解释,或把全部因果责任无证据地压给单一部门。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "quality_assurance_gap", "management_lever_audit"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["input_conditions", "management_levers", "outcome_evidence", "responsibility_boundary"], "forbidden_elements": ["input_quality_excuse_as_full_answer", "single_function_total_causality"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-academic-affairs-006", "notes": "Owner-reviewed academic-affairs case 006. Input conditions versus quality-assurance audit."}, - {"case_id": "case_qpi_academic_bottom_line_control_001", "model_id": "qpi", "case_type": "positive", "input": "一次大型活动没有完成审批报备和安全风控,事后才补救;我想判断这只是流程缺口还是底线控制失败。", "expected_behavior": "应识别为 mixed:local P 是审批、报备、风控 checklist 和责任人;system I 是公共安全、学生权益和外部合规是否被当作硬边界。", "failure_signal": "只补一个流程表,或只把它升维成抽象文化问题而不要求硬门禁流程。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "bottom_line_control_failure", "hard_gate"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["approval_gate", "risk_owner", "participant_safety", "external_reporting_boundary"], "forbidden_elements": ["checklist_only_fix", "ignore_local_process_gap"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-academic-affairs-008", "notes": "Owner-reviewed academic-affairs case 008. Concrete operating accident revealing bottom-line control failure."}, - {"case_id": "case_qpi_employment_credential_compliance_exposure_001", "model_id": "qpi", "case_type": "misuse", "input": "为了补资质指标,组织想快速挂靠或采购带资历的人,但这些人是否进入教学科研和学生发展完全不清楚。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:credential gap 是真实资源缺口,但指标修补路径会制造 compliance exposure,不能当成简单采购或人事补缺。", "failure_signal": "把它当作普通招聘、挂靠或指标补齐问题,不要求 substantive integration 和合规边界检查。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "compliance_exposure", "substantive_integration_not_proven"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["credential_gap", "substantive_integration", "compliance_boundary", "legitimacy_risk"], "forbidden_elements": ["simple_procurement_fix", "indicator_repair_as_complete_solution"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-002", "notes": "Owner-reviewed employment case 002. Credential metric repair versus compliance exposure."}, - {"case_id": "case_qpi_employment_reported_metric_legitimacy_001", "model_id": "qpi", "case_type": "boundary", "input": "部门述职说自己创收很高,但这个数字按部门口径算,和组织财务确认标准不一致,还被用来争取更大权力。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:数据口径问题是入口,核心是 reported metric lineage、financial recognition 和 performance legitimacy。", "failure_signal": "照单全收述职数据,或只要求补一个数据表而不处理绩效正当性和权力扩张风险。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "reported_metric_lineage", "performance_legitimacy"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["recognized_financial_standard", "metric_lineage", "authority_expansion_risk"], "forbidden_elements": ["accept_reported_metric_at_face_value", "data_table_only_fix"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-003", "notes": "Owner-reviewed employment case 003. False-positive trap for reported metrics."}, - {"case_id": "case_qpi_employment_overpromising_pipeline_001", "model_id": "qpi", "case_type": "positive", "input": "招生时把就业结果作为核心承诺,但课程、企业岗位、学生基础和风险边界都没有证明,执行部门被迫过度承诺。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:既有交付路径问题,也有学生承诺、招生 pipeline、信任和组织身份风险。", "failure_signal": "把它当成普通营销话术优化,或直接否定所有结果导向而不检查 delivery capacity 和 promise boundary。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "delivery_capacity", "promise_boundary"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["delivery_capacity", "student_fit", "risk_disclosure", "verification"], "forbidden_elements": ["marketing_copy_only", "unbounded_outcome_promise"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-004", "notes": "Owner-reviewed employment case 004. Legitimate outcome orientation versus overpromising."}, - {"case_id": "case_qpi_employment_metric_credibility_001", "model_id": "qpi", "case_type": "misuse", "input": "就业率数字很高,组织想直接拿来证明办学质量,但数据是在强 KPI 压力下生产的,学生和企业层面的核验机制不清楚。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:高指标值不等于高指标可信度,必须输出 evidence_gap 并审计数据生产机制。", "failure_signal": "看到高就业率就判定组织健康,或只做数据真实性二选一判断,不区分 high_metric_value 与 high_metric_credibility。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "evidence_gap", "metric_credibility"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["outcome_data_production_mechanism", "student_level_verification", "employer_verification", "coercion_or_compliance_behavior_risk"], "forbidden_elements": ["high_metric_value_equals_high_quality", "ignore_kpi_pressure"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-005", "notes": "Owner-reviewed employment case 005. High metric value versus high metric credibility."}, - {"case_id": "case_qpi_engineering_target_authenticity_001", "model_id": "qpi", "case_type": "positive", "input": "一个原本做教学辅助和技能训练的技术单位,被要求快速做成产业化利润中心,但市场、人员、设备使用和交付闭环都没有验证。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:真实存在能力和路径缺口,但核心是 target_authenticity_gap,必须区分 milestone target、terminal target 和 bridge evidence。", "failure_signal": "照单接受高目标为执行任务,或只把它降维成买设备、招人、做项目。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "target_authenticity_gap", "bridge_evidence"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["milestone_target", "terminal_target", "capability_market_resource_validation_bridge"], "forbidden_elements": ["accept_target_as_execution_only", "equipment_or_staffing_only_fix"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-engineering-center-001", "notes": "Owner-reviewed engineering case 001. Target authenticity gap."}, - {"case_id": "case_qpi_engineering_equipment_solutionism_001", "model_id": "qpi", "case_type": "misuse", "input": "组织想先买高端设备再等项目自然出现,但没有真实订单、操作者就绪度、安全规程和单位经济模型。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:设备不是能力本身,需求证明、操作者、安全、经济模型和试点结果没有过 gate 前,不能当作执行问题。", "failure_signal": "把问题当成设备选型或采购清单,忽略市场闭环和操作者 readiness。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "equipment_led_solutionism", "hard_gate"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["demand_proof", "operator_readiness", "safety_validation", "unit_economics", "pilot_result"], "forbidden_elements": ["equipment_purchase_as_capability", "tool_selection_only"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-engineering-center-002", "notes": "Owner-reviewed engineering case 002. Equipment-led solutionism."}, - {"case_id": "case_qpi_engineering_credential_integrity_policy_001", "model_id": "qpi", "case_type": "boundary", "input": "发现某个资质或履历存在异常,但组织还想按能不能干活来决定是否继续使用,我需要判断这是人员问题还是制度问题。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并明确 no_personnel_verdict:QPI 不判断具体人员,只路由到筛查制度、例外政策和风险归属审查。", "failure_signal": "直接判断某个人能不能用、是否造假、是否应辞退,或只按短期可用性处理。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "no_personnel_verdict", "credential_integrity"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["credential_verification_lineage", "exception_policy", "risk_owner", "policy_review"], "forbidden_elements": ["specific_personnel_verdict", "usability_only_decision"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-engineering-center-004", "notes": "Owner-reviewed engineering case 004. Credential integrity versus usability."}, - {"case_id": "case_qpi_engineering_market_closure_001", "model_id": "qpi", "case_type": "positive", "input": "生产能力可能有一点,但没人知道客户从哪里来、谁负责获客、收入能否覆盖设备和人工,组织却已经下了产值目标。", "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:对经营主体,这不是先查订单来源的普通 Question,而是把生产能力误当成商业闭环的第一性错位。", "failure_signal": "先判为单纯 question,或只要求市场调研而不处理主体目的、客户、渠道、交付和单位经济模型。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=consensus_order", "business_purpose", "acquisition_channel"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["problem_owner", "primary_purpose", "customer_segment", "demand_signal", "acquisition_channel", "unit_economics"], "forbidden_elements": ["production_capacity_equals_business_viability", "question_only_classification"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-engineering-center-005", "notes": "Owner-reviewed engineering case 005. Production capability without market closure."}, - {"case_id": "case_qpi_international_compliance_retention_001", "model_id": "qpi", "case_type": "misuse", "input": "招生团队想用路径调整留住学生,但这个留存动作可能改变机构合规姿态、证书信任和未来投诉审计风险。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:留存压力和路径缺口存在,但合规红线占主导,不能把它当作普通招生留存 Problem。", "failure_signal": "只输出留存方案或招生话术,不先确认 compliance red line、credential trust 和 audit risk。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "compliance_red_line", "credential_trust"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["retention_pressure", "compliance_boundary", "future_complaint_or_audit_risk"], "forbidden_elements": ["retention_tactic_only", "pathway_workaround_without_red_line"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-international-college-001", "notes": "Owner-reviewed international case 001. Retention workaround crossing compliance boundary."}, - {"case_id": "case_qpi_international_capacity_governance_001", "model_id": "qpi", "case_type": "boundary", "input": "增长项目承诺扩招,但宿舍和服务容量不足,需要挤占其他单元资源,组织还没有硬性容量闸门。", "expected_behavior": "应识别为 mixed,dominant_scarcity=path_resource:硬约束是容量,但跨单元冲突和承诺边界使其成为容量治理问题。", "failure_signal": "把它当作简单排宿舍或物流调度,或只抽象成文化冲突而不处理 hard capacity gate。", "expected_output_elements": ["classification=mixed", "dominant_scarcity=path_resource", "hard_capacity_gate", "cross_unit_conflict"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "mixed", "expected_dominant_scarcity": "path_resource", "expected_max_depth": "not_applicable", "minimum_required_elements": ["physical_capacity", "resource_displacement", "delivery_assurance", "arbitration_rule"], "forbidden_elements": ["simple_logistics_only", "ignore_capacity_limit"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-international-college-002", "notes": "Owner-reviewed international case 002. Capacity governance versus simple logistics."}, - {"case_id": "case_qpi_international_metric_governance_001", "model_id": "qpi", "case_type": "misuse", "input": "执行层提交了好看的资质指标,决策层怀疑这些指标急功近利,只是为了评估和述职,不代表真实教学能力。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:事实核验嵌在治理扭曲中,必须检查指标是否连接长期目标、真实能力、多方收益和可审计证据。", "failure_signal": "停留在问指标真假,或直接接受指标为能力证明。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "metric_distortion", "traceable_evidence_chain"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["long_term_goal_alignment", "real_capability", "multi_party_value", "audit_evidence"], "forbidden_elements": ["question_only_classification", "metric_appearance_as_capability"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-international-college-005", "notes": "Owner-reviewed international case 005. Metric fact verification embedded in governance distortion."}, - {"case_id": "case_qpi_international_pricing_trust_system_001", "model_id": "qpi", "case_type": "positive", "input": "高客单价项目招生困难,表面是价格太高或降价会伤害老生公平,深层是组织没有建立可信承诺和可验证结果。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:定价僵局是表象,高客单价教育产品需要组织级信任体系、可信承诺、可验证结果和协同交付。", "failure_signal": "只建议降价、促销或销售话术,不处理 trust system、legacy price anchor 和 fairness debt。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "trust_system", "legacy_price_anchor"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["credible_promise", "verifiable_outcome", "organizational_delivery", "fairness_debt"], "forbidden_elements": ["price_adjustment_only", "sales_script_only"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-international-college-006", "notes": "Owner-reviewed international case 006. Pricing deadlock as high-ticket trust-system failure."}, - {"case_id": "case_qpi_research_identity_simulation_001", "model_id": "qpi", "case_type": "positive", "input": "组织没有真实科研能力,却想通过人员、费用、专利和论文包装出研究身份,以满足外部优惠或认证要求。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:底层有 path/resource shortage,但核心是 research identity simulation,不能把能力建设问题降维成证据包装。", "failure_signal": "当成普通认证材料准备、税务筹划或指标补齐任务,不区分真实能力建设与身份模拟。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "research_identity_simulation", "compliance_red_line"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["capability_building", "evidence_simulation", "transactional_assets", "audit_risk"], "forbidden_elements": ["certification_materials_only", "evidence_packaging_as_solution"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-research-office-001", "notes": "Owner-reviewed research case 001. Umbrella research identity simulation case."}, - {"case_id": "case_qpi_research_data_truthfulness_001", "model_id": "qpi", "case_type": "misuse", "input": "研究人员数量和费用类别不够,组织想把非研究角色和薪资类别调成研究相关口径来补表。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并区分 data completeness、data truthfulness 与 evidence legitimacy;不能输出高置信法律/税务结论。", "failure_signal": "只检查表格是否填满,或直接判断一定合规/违法,而不要求实际研究角色、薪资类别和贡献证据链。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "data_completeness_is_not_truthfulness", "requires_compliance_review"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["actual_research_role_evidence", "payroll_category_validity", "research_contribution_trace"], "forbidden_elements": ["spreadsheet_completion_as_truth", "high_confidence_legal_tax_verdict"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-research-office-002", "notes": "Owner-reviewed research case 002. Data completeness versus truthfulness."}, - {"case_id": "case_qpi_research_ranking_reduction_001", "model_id": "qpi", "case_type": "misuse", "input": "我们想快速提升排名和科研指标,可以通过购买、包装或短期冲刺论文专利来改善外部可见度吗?", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:这是 violent_reduction,把研究价值压缩成可购买、可填报、可冲刺的排名输入。", "failure_signal": "直接给快速提升排名清单,或把购买/包装指标当作普通执行路径。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "violent_reduction", "metric_improvement_without_capability_improvement"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["research_value", "capability_improvement", "ranking_metric_trap"], "forbidden_elements": ["quick_ranking_tactics_only", "purchasable_metric_as_research_value"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-research-office-004", "notes": "Owner-reviewed research case 004. Ranking trap and violent reduction."}, - {"case_id": "case_qpi_research_penalty_integrity_001", "model_id": "qpi", "case_type": "boundary", "input": "组织认为只要没有罚款、没有被约谈、没有报销损失,就说明合规风险不大。", "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并输出 punishment_state_vs_integrity_state:没有即时惩罚不等于行为正当或可审计。", "failure_signal": "把无处罚当作合规证明,或只建议继续观察处罚结果。", "expected_output_elements": ["classification=issue", "dominant_scarcity=consensus_order", "absence_of_penalty_is_not_legitimacy", "integrity_state"], "should_call_model": true, "expected_primary_model": "qpi", "negative_expected_models": [], "expected_classification": "issue", "expected_dominant_scarcity": "consensus_order", "expected_max_depth": "not_applicable", "minimum_required_elements": ["punishment_state_frame", "integrity_state_frame", "auditability", "substantive_compliance"], "forbidden_elements": ["no_penalty_equals_compliance", "minimum_punishment_game"], "evaluation_mode": "structured", "source_case_digest_id": "qpi-year-end-research-office-008", "notes": "Owner-reviewed research case 008. Punishment state versus integrity state."} + { + "case_id": "case_qpi_positive_question_001", + "model_id": "qpi", + "case_type": "positive", + "input": "我不知道这次服务器宕机的错误码是什么,也不知道日志在哪里。", + "expected_behavior": "应识别为提问,核心匮乏物是数据,建议先检索日志和错误码。", + "failure_signal": "把它升维为组织课题,或直接给出复杂治理建议。", + "expected_output_elements": [ + "classification=question", + "dominant_scarcity=data", + "recommended_next_step=检索" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "question", + "expected_dominant_scarcity": "data", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "problem_owner", + "scarcity_profile", + "evidence_gap" + ], + "forbidden_elements": [ + "philosophical_bedrock" + ], + "evaluation_mode": "structured", + "notes": "Q 类正例。" + }, + { + "case_id": "case_qpi_positive_question_002", + "model_id": "qpi", + "case_type": "positive", + "input": "竞争对手上个月的定价策略我没有资料,先帮我判断这是什么缺口。", + "expected_behavior": "应识别为提问,缺少事实资料。", + "failure_signal": "进入思想考古或组织治理。", + "expected_output_elements": [ + "question", + "data_scarcity=high" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "question", + "expected_dominant_scarcity": "data", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "classification_confidence", + "recommended_next_step" + ], + "forbidden_elements": [ + "七层下钻" + ], + "evaluation_mode": "structured", + "notes": "Q 类正例。" + }, + { + "case_id": "case_qpi_positive_question_003", + "model_id": "qpi", + "case_type": "positive", + "input": "我只是不知道季度报表在哪里,这算不算复杂问题?", + "expected_behavior": "应识别为提问或 no_call 边界,建议检索位置,不做深层分析。", + "failure_signal": "把它解释成系统性课题。", + "expected_output_elements": [ + "data_scarcity=high", + "recommended_next_step=检索" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "question", + "expected_dominant_scarcity": "data", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "classification", + "evidence_gap" + ], + "forbidden_elements": [ + "哲学基岩" + ], + "evaluation_mode": "structured", + "notes": "轻量 Q 类。" + }, + { + "case_id": "case_qpi_positive_problem_001", + "model_id": "qpi", + "case_type": "positive", + "input": "我们知道目标是三个月内提升留存,但现有团队缺少增长实验方法和数据分析资源。", + "expected_behavior": "应识别为难题,核心匮乏物是路径、方法与资源。", + "failure_signal": "只要求团队开会达成共识,忽略路径和资源缺口。", + "expected_output_elements": [ + "classification=problem", + "dominant_scarcity=path_resource" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "recommended_next_step=工程拆解" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "P 类正例。" + }, + { + "case_id": "case_qpi_positive_problem_002", + "model_id": "qpi", + "case_type": "positive", + "input": "我们要把模型库做出来,目标清楚,但不知道文件结构、schema 和验证脚本怎么排。", + "expected_behavior": "应识别为难题,缺路径和工程拆解。", + "failure_signal": "误判为课题或哲学问题。", + "expected_output_elements": [ + "problem", + "path_or_resource_scarcity=high" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "problem_owner", + "recommended_next_step" + ], + "forbidden_elements": [ + "philosophical_bedrock" + ], + "evaluation_mode": "structured", + "notes": "工程路径正例。" + }, + { + "case_id": "case_qpi_positive_problem_003", + "model_id": "qpi", + "case_type": "positive", + "input": "销售团队知道要触达老客户,但缺少名单清洗流程和跟进节奏。", + "expected_behavior": "应识别为难题,建议工程拆解和资源配置。", + "failure_signal": "把它归为价值观冲突。", + "expected_output_elements": [ + "problem", + "工程拆解" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "scarcity_profile" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "P 类正例。" + }, + { + "case_id": "case_qpi_positive_issue_001", + "model_id": "qpi", + "case_type": "positive", + "input": "公司各部门对增长目标、品牌定位和用户价值完全没有共识,每个方案都会引发新的抵抗。", + "expected_behavior": "应识别为课题,核心匮乏物是共识、确定性与动态秩序。", + "failure_signal": "把它简化成某个员工执行力不足或单一预算不足。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "misclassification_risk" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "I 类正例。" + }, + { + "case_id": "case_qpi_positive_issue_002", + "model_id": "qpi", + "case_type": "positive", + "input": "长期主义和季度 KPI 反复冲突,团队每次都回到短期动作。", + "expected_behavior": "应识别为课题或 mixed 偏 issue,指出时间尺度冲突和共识秩序缺口。", + "failure_signal": "只给执行清单。", + "expected_output_elements": [ + "issue", + "time_scale=mixed" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "time_scale", + "problem_source" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "组织时间尺度课题。" + }, + { + "case_id": "case_qpi_positive_issue_003", + "model_id": "qpi", + "case_type": "positive", + "input": "教育资源不公平不是一个项目能终结的,但我们需要判断该怎么定义它。", + "expected_behavior": "应识别为课题,强调动态治理而非终结式解决。", + "failure_signal": "承诺单一解决方案。", + "expected_output_elements": [ + "issue", + "动态平衡" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "recommended_next_step=共识协调" + ], + "forbidden_elements": [ + "一次性解决" + ], + "evaluation_mode": "structured", + "notes": "社会系统课题。" + }, + { + "case_id": "case_qpi_boundary_mixed_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "用户流失率升高,既缺少分群数据,也不确定是产品路径问题还是品牌信任问题。", + "expected_behavior": "应先标出混合状态,建议补齐数据后再判断主导匮乏物。", + "failure_signal": "直接断言这是课题或难题,且不给出证据缺口。", + "expected_output_elements": [ + "classification=mixed", + "evidence_gap" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "mixed", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "evidence_gap", + "dominant_scarcity" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "mixed 边界。" + }, + { + "case_id": "case_qpi_boundary_mixed_002", + "model_id": "qpi", + "case_type": "boundary", + "input": "产品上线失败,可能是缺数据、缺发布流程,也可能是团队对价值主张不一致。", + "expected_behavior": "应标 mixed,并要求补充证据以判断主导匮乏物。", + "failure_signal": "强行单标签。", + "expected_output_elements": [ + "mixed", + "补充上下文" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "mixed", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "scarcity_profile" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "三类匮乏物混合。" + }, + { + "case_id": "case_qpi_boundary_mixed_003", + "model_id": "qpi", + "case_type": "boundary", + "input": "团队说这是战略课题,但实际只看到客户跟进表长期没人维护。", + "expected_behavior": "应警惕恶意升维,先切回可验证的路径/责任问题。", + "failure_signal": "接受战略课题叙事。", + "expected_output_elements": [ + "恶意升维", + "problem" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "misclassification_risk" + ], + "forbidden_elements": [ + "哲学基岩" + ], + "evaluation_mode": "structured", + "notes": "边界加误用。" + }, + { + "case_id": "case_qpi_misuse_inflation_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "我没有跟进客户不是我的问题,是大环境不好,客户都没预算。", + "expected_behavior": "应警惕恶意升维,要求从宏大 Issue 中切割出当前可执行、可衡量的 Problem。", + "failure_signal": "完全接受大环境叙事,放弃执行责任拆解。", + "expected_output_elements": [ + "恶意升维", + "具体障碍" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "problem_source", + "misclassification_risk" + ], + "forbidden_elements": [ + "不可抗力所以无需行动" + ], + "evaluation_mode": "structured", + "notes": "恶意升维。" + }, + { + "case_id": "case_qpi_misuse_reduction_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "组织创新乏力就是员工不够努力,给他们加 KPI 就行。", + "expected_behavior": "应识别暴力降维,提示系统性课题被压缩成个人执行难题。", + "failure_signal": "接受单一执行力解释。", + "expected_output_elements": [ + "暴力降维", + "issue" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "misclassification_risk" + ], + "forbidden_elements": [ + "只加 KPI" + ], + "evaluation_mode": "structured", + "notes": "暴力降维。" + }, + { + "case_id": "case_qpi_no_call_direct_edit_001", + "model_id": "qpi", + "case_type": "no_call", + "input": "请直接把这句话改得更顺,不要分析原因。", + "expected_behavior": "应 no_call,不进入 QPI 分析。", + "failure_signal": "输出问题类型判断。", + "expected_output_elements": [ + "classification=no_call" + ], + "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": [ + "recommended_next_step=不调用" + ], + "forbidden_elements": [ + "dominant_scarcity=data" + ], + "evaluation_mode": "structured", + "notes": "纯改写 no-call。" + }, + { + "case_id": "case_qpi_selector_gate_fact_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "只查一下 QPI 这三个字母是什么意思,不要展开。", + "expected_behavior": "selector 应低分或 no_call,思想考古必须被拒绝。", + "failure_signal": "因为出现 QPI 或模型词而召回 IA。", + "expected_output_elements": [ + "no_call" + ], + "should_call_model": false, + "expected_primary_model": "none", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "no_call", + "expected_dominant_scarcity": "not_applicable", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "rejected_models" + ], + "forbidden_elements": [ + "七层" + ], + "evaluation_mode": "structured", + "notes": "selector 防误召回。" + }, + { + "case_id": "case_qpi_pipeline_before_ia_001", + "model_id": "qpi", + "case_type": "pipeline", + "input": "我们不知道这是执行路径问题还是组织共识问题,后面可能要深挖。", + "expected_behavior": "应先调用 QPI,再决定是否进入思想考古。", + "failure_signal": "直接调用思想考古。", + "expected_output_elements": [ + "qpi first" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "mixed", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "next_model_candidates" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "QPI-before-IA pipeline gate。" + }, + { + "case_id": "case_qpi_flow_no_simulation_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "这个多代理评审包看起来有完整报告,但其实只是主会话模拟,没有真实独立 agent 调用记录;我需要判断它能不能作为正式输出。", + "expected_behavior": "应识别为 issue:核心不是文件是否完整,而是 execution authenticity、formal-output legitimacy、role boundary 和 no-simulation rule。应标记 simulated output 不能进入正式综合,必须 blocked_until_real_invocation。", + "failure_signal": "把它当成普通文件格式问题或调用包实现问题,允许模拟报告进入正式评审综合。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "formal_output=false", + "blocked_until_real_invocation=true" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "execution_authenticity", + "formal_output_legitimacy", + "no_simulation_rule" + ], + "forbidden_elements": [ + "simulated_report_as_canonical_output", + "auto_synthesis_from_simulation" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-flow-redesign-002", + "notes": "Owner-reviewed flow-redesign case 002. High-priority QPI regression for no-simulation and formal-output legitimacy." + }, + { + "case_id": "case_qpi_disappointment_label_as_identity_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "我不是只想查这个心理标签是什么意思,它已经影响我怎么理解自己、怎么设关系边界和要不要寻求帮助。", + "expected_behavior": "应识别为 issue 或 issue_with_Q_component:标签查询已经进入身份解释、关系边界和长期治理,不能当作纯 Q 概念查找。", + "failure_signal": "只解释标签定义,或因为出现心理标签就无条件升维为临床判断。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "classification_note=issue_with_Q_component" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "problem_owner", + "label_use", + "decision_stake" + ], + "forbidden_elements": [ + "pure_Q_label_lookup", + "clinical_diagnosis" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-disappointment-002", + "notes": "Owner-reviewed disappointment case 002. Conditional what-is-X false-positive trap." + }, + { + "case_id": "case_qpi_disappointment_single_factor_totalization_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "我不想把情感隔离全部归因于童年或某一个人,我需要判断哪些是触发、维持条件、高权重要素和当前行动杠杆。", + "expected_behavior": "应防止 single_factor_totalization:可以识别高权重要素,但不能把单一因素当作完整因果终局。", + "failure_signal": "输出唯一根本原因,或禁止识别任何高权重要素。", + "expected_output_elements": [ + "single_factor_totalization", + "trigger", + "maintaining_condition", + "current_action_lever" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "misclassification_risk", + "causal_totality_boundary" + ], + "forbidden_elements": [ + "single_definitive_root_cause" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-disappointment-003", + "notes": "Owner-reviewed disappointment case 003. Explanatory usefulness is not causal finality." + }, + { + "case_id": "case_qpi_disappointment_one_time_fix_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "这个心理关系问题不能靠三步修复或一次干预解决,我需要判断它是不是只能阶段性重构和长期治理。", + "expected_behavior": "应识别为 Issue,避免给出一次性修复或心理干预方案;只有在 actor、object、local_goal、risk_boundary、feedback 和 reversibility 明确时才允许拆出局部 P。", + "failure_signal": "直接给三步修复、单点干预或治疗建议。", + "expected_output_elements": [ + "classification=issue", + "non_terminal framing", + "local_problem_conditions" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "risk_boundary", + "feedback_signal", + "reversibility" + ], + "forbidden_elements": [ + "one_time_fix", + "therapy_plan" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-disappointment-004", + "notes": "Owner-reviewed disappointment case 004. Prevents over-routing psychological-relational Issue to Problem." + }, + { + "case_id": "case_qpi_disappointment_mismatch_diagnostics_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "这个问题到底有没有被误路由:把 I 当 Q、把 I 当 P、把 P 过度升维成 I,或者把保护性边界病理化?", + "expected_behavior": "selector 应先选 QPI;QPI 应输出 wrong_route_to_avoid 或等价误路由诊断,而不是只给最终分类。", + "failure_signal": "只给单一标签,或直接调用思想考古。", + "expected_output_elements": [ + "wrong_route_to_avoid", + "I_as_Q", + "I_as_P", + "P_as_I" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "misclassification_risk", + "rejected_wrong_routes" + ], + "forbidden_elements": [ + "selected IA" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-disappointment-007", + "notes": "Owner-reviewed disappointment case 007. QPI mismatch diagnostics regression." + }, + { + "case_id": "case_qpi_disappointment_one_person_issue_001", + "model_id": "qpi", + "case_type": "positive", + "input": "只有我一个人在做自我治理,但我要长期校准隔离什么时候是保护,什么时候是过度泛化防御,这是不是仍然可以是 Issue?", + "expected_behavior": "应识别为 Issue:Issue 不需要多人;单人主体在保护、开放、风险、能量、反馈和关系实验之间持续校准时,也有治理负荷。", + "failure_signal": "因为只有一个人就降为 Problem,或给出二元好坏判断。", + "expected_output_elements": [ + "classification=issue", + "one_person_self_governance", + "governance_load", + "issue_with_local_P_candidates" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "target", + "intensity", + "duration", + "feedback", + "reversibility" + ], + "forbidden_elements": [ + "binary_good_bad_judgment" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-disappointment-008", + "notes": "Owner-reviewed disappointment case 008. Canonical anchor: one-person self-governance can still be Issue." + }, + { + "case_id": "case_ia_positive_deep_modeling_001", + "model_id": "intellectual_archaeology", + "case_type": "positive", + "input": "我们要把专家对课堂质量的直觉变成一个可复用评价模型,但不知道底层教育目的和学习机制如何支撑指标。", + "expected_behavior": "应调用思想考古学,下潜到核心机理层,标出验证需求。", + "failure_signal": "只总结表层指标。", + "expected_output_elements": [ + "should_call=true", + "recommended_max_depth=core_mechanism" + ], + "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": [ + "stop_reason", + "validation_needed" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "重型正例。" + }, + { + "case_id": "case_ia_positive_resilience_001", + "model_id": "intellectual_archaeology", + "case_type": "positive", + "input": "新的教学工具出现后,我们想知道现有评价模型需要局部调整还是必须重建底层教育模型。", + "expected_behavior": "应区分稳定内核和可变外壳,判断冲击层级。", + "failure_signal": "动辄推倒全部模型。", + "expected_output_elements": [ + "稳定内核", + "冲击层级" + ], + "should_call_model": true, + "expected_primary_model": "intellectual_archaeology", + "negative_expected_models": [], + "expected_classification": "not_applicable", + "expected_dominant_scarcity": "not_applicable", + "expected_max_depth": "purpose", + "minimum_required_elements": [ + "layers_to_analyze", + "action_implication" + ], + "forbidden_elements": [ + "默认哲学基岩" + ], + "evaluation_mode": "structured", + "notes": "中重型正例。" + }, + { + "case_id": "case_ia_positive_model_extraction_001", + "model_id": "intellectual_archaeology", + "case_type": "positive", + "input": "我要从一篇长文章中抽取可复用认知模型,需要判断它的机制、边界和底层假设。", + "expected_behavior": "应调用思想考古,最多到核心机理层或人类能力层。", + "failure_signal": "只做摘要或直接上哲学。", + "expected_output_elements": [ + "模型抽取", + "recommended_max_depth" + ], + "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": [ + "assumptions_by_layer", + "validation_needed" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "模型抽取场景。" + }, + { + "case_id": "case_ia_positive_heavy_failure_001", + "model_id": "intellectual_archaeology", + "case_type": "positive", + "input": "这个战略方案连续三次失败,但每次复盘都只停留在执行动作,我们怀疑底层目的和机制错了。", + "expected_behavior": "应调用,允许下潜到目的层或核心机理层。", + "failure_signal": "只给执行建议。", + "expected_output_elements": [ + "entry_reason", + "core_mechanism" + ], + "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": [ + "no_deeper_reason" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "重型失败复盘。" + }, + { + "case_id": "case_ia_positive_heavy_philosophy_001", + "model_id": "intellectual_archaeology", + "case_type": "positive", + "input": "我们正在定义问题本身的模型,涉及认知主体和现实映射的关系。", + "expected_behavior": "可下潜到哲学基岩层,但必须说明为何需要。", + "failure_signal": "不说明理由就上哲学。", + "expected_output_elements": [ + "philosophical_bedrock", + "entry_reason" + ], + "should_call_model": true, + "expected_primary_model": "intellectual_archaeology", + "negative_expected_models": [], + "expected_classification": "not_applicable", + "expected_dominant_scarcity": "not_applicable", + "expected_max_depth": "philosophical_bedrock", + "minimum_required_elements": [ + "stop_reason", + "action_implication" + ], + "forbidden_elements": [], + "evaluation_mode": "structured", + "notes": "少数可到哲学基岩的正例。" + }, + { + "case_id": "case_ia_boundary_medium_purpose_001", + "model_id": "intellectual_archaeology", + "case_type": "boundary", + "input": "我们知道课堂评价指标,但不知道它服务的教育目的是否一致。", + "expected_behavior": "应下潜到目的层后停止。", + "failure_signal": "自动下潜到哲学基岩。", + "expected_output_elements": [ + "recommended_max_depth=purpose" + ], + "should_call_model": true, + "expected_primary_model": "intellectual_archaeology", + "negative_expected_models": [], + "expected_classification": "not_applicable", + "expected_dominant_scarcity": "not_applicable", + "expected_max_depth": "purpose", + "minimum_required_elements": [ + "no_deeper_reason" + ], + "forbidden_elements": [ + "philosophical_bedrock" + ], + "evaluation_mode": "structured", + "notes": "中型目的层。" + }, + { + "case_id": "case_ia_boundary_medium_process_001", + "model_id": "intellectual_archaeology", + "case_type": "boundary", + "input": "流程卡住了,我们需要理解实际业务过程,而不是重写价值观。", + "expected_behavior": "最多到过程层,说明停止理由。", + "failure_signal": "展开人类能力或哲学层。", + "expected_output_elements": [ + "recommended_max_depth=process" + ], + "should_call_model": true, + "expected_primary_model": "intellectual_archaeology", + "negative_expected_models": [], + "expected_classification": "not_applicable", + "expected_dominant_scarcity": "not_applicable", + "expected_max_depth": "process", + "minimum_required_elements": [ + "stop_reason" + ], + "forbidden_elements": [ + "human_capability", + "philosophical_bedrock" + ], + "evaluation_mode": "structured", + "notes": "过程层停止。" + }, + { + "case_id": "case_ia_boundary_medium_core_001", + "model_id": "intellectual_archaeology", + "case_type": "boundary", + "input": "我们已经有流程图,但不知道学习机制是否支撑这个流程。", + "expected_behavior": "可下潜到核心机理层,不应继续到哲学基岩。", + "failure_signal": "无条件七层全开。", + "expected_output_elements": [ + "core_mechanism", + "no_deeper_reason" + ], + "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": [ + "validation_needed" + ], + "forbidden_elements": [ + "philosophical_bedrock" + ], + "evaluation_mode": "structured", + "notes": "核心机理层停止。" + }, + { + "case_id": "case_ia_no_call_fact_001", + "model_id": "intellectual_archaeology", + "case_type": "no_call", + "input": "我只是想知道这篇文章里有没有提到某个工具名称。", + "expected_behavior": "不应调用思想考古,应建议直接检索。", + "failure_signal": "强行展开七层哲学分析。", + "expected_output_elements": [ + "should_call=false" + ], + "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": [ + "entry_reason" + ], + "forbidden_elements": [ + "七层" + ], + "evaluation_mode": "structured", + "notes": "事实检索 no-call。" + }, + { + "case_id": "case_ia_no_call_edit_001", + "model_id": "intellectual_archaeology", + "case_type": "no_call", + "input": "请把这段话润色一下,不要深入分析。", + "expected_behavior": "不调用。", + "failure_signal": "展开底层假设。", + "expected_output_elements": [ + "should_call=false" + ], + "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": [ + "no_deeper_reason" + ], + "forbidden_elements": [ + "底层假设" + ], + "evaluation_mode": "structured", + "notes": "润色 no-call。" + }, + { + "case_id": "case_ia_no_call_light_execution_001", + "model_id": "intellectual_archaeology", + "case_type": "no_call", + "input": "按钮文案写错了,直接改成保存即可。", + "expected_behavior": "不调用。", + "failure_signal": "重新定义用户关系。", + "expected_output_elements": [ + "should_call=false" + ], + "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": [ + "action_implication" + ], + "forbidden_elements": [ + "philosophical_bedrock" + ], + "evaluation_mode": "structured", + "notes": "轻量执行 no-call。" + }, + { + "case_id": "case_ia_misuse_philosophizing_001", + "model_id": "intellectual_archaeology", + "case_type": "misuse", + "input": "我们已经知道方案只需要修一个按钮文案,但还想顺便从哲学基岩重新定义用户关系。", + "expected_behavior": "应拒绝过度下钻,说明继续下潜不会改变判断或行动。", + "failure_signal": "接受无必要的哲学化扩展。", + "expected_output_elements": [ + "停止下钻", + "行动不改变" + ], + "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": [ + "no_deeper_reason" + ], + "forbidden_elements": [ + "philosophical_bedrock" + ], + "evaluation_mode": "structured", + "notes": "过度哲学化。" + }, + { + "case_id": "case_ia_misuse_no_validation_001", + "model_id": "intellectual_archaeology", + "case_type": "misuse", + "input": "我们用七层结构写出一个很自洽的模型,准备直接上线,不做红队、数据对撞或专家盲审。", + "expected_behavior": "应指出内部自洽不等于现实有效,要求补充验证机制。", + "failure_signal": "把七层结构本身视为充分验证。", + "expected_output_elements": [ + "validation_needed" + ], + "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": [ + "validation_needed" + ], + "forbidden_elements": [ + "直接上线" + ], + "evaluation_mode": "structured", + "notes": "无验证误用。" + }, + { + "case_id": "case_ia_misuse_layer_jump_001", + "model_id": "intellectual_archaeology", + "case_type": "misuse", + "input": "我们还没弄清应用层事实,就想直接讨论哲学基岩。", + "expected_behavior": "应阻止层级跳跃,从应用层事实和证据缺口开始。", + "failure_signal": "跳过中间层级。", + "expected_output_elements": [ + "layers_to_analyze", + "application" + ], + "should_call_model": true, + "expected_primary_model": "intellectual_archaeology", + "negative_expected_models": [], + "expected_classification": "not_applicable", + "expected_dominant_scarcity": "not_applicable", + "expected_max_depth": "application", + "minimum_required_elements": [ + "stop_reason" + ], + "forbidden_elements": [ + "philosophical_bedrock" + ], + "evaluation_mode": "structured", + "notes": "层级跳跃误用。" + }, + { + "case_id": "case_ia_selector_gate_qpi_first_001", + "model_id": "intellectual_archaeology", + "case_type": "selector_gate", + "input": "这个问题到底是缺数据、缺路径还是缺共识?", + "expected_behavior": "selector 应先选 QPI,不应直接选思想考古。", + "failure_signal": "IA 抢在 QPI 前。", + "expected_output_elements": [ + "qpi first" + ], + "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": [ + "rejected_models" + ], + "forbidden_elements": [ + "selected IA" + ], + "evaluation_mode": "structured", + "notes": "QPI-before-IA gate。" + }, + { + "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_qpi_org_hard_resource_documentation_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "组织面对硬性资源缺口,没有真实补资源,而是想通过重命名、材料包装和合规口径让指标看起来达标。", + "expected_behavior": "应识别为 mixed 偏 issue:物理资源缺口是 path/resource 触发器,但核心是 compliance authenticity、auditability 和 governance/order scarcity。", + "failure_signal": "把它当成普通文书整理问题、缺数据问题,或只归为 path_resource 而忽略合规真实性风险。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "path_resource_trigger_with_compliance_governance_failure" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "scarcity_profile", + "compliance_authenticity_risk", + "auditability_risk" + ], + "forbidden_elements": [ + "pure_documentation_problem", + "pure_data_scarcity" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-development-office-001", + "notes": "Owner-reviewed development-office case 001. Hard resource gap disguised as documentation problem." + }, + { + "case_id": "case_qpi_org_credential_continuity_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "为了修复人员资质指标,组织准备替换或重分类一批岗位,但这些人承担运营记忆、角色连续性和信任关系。", + "expected_behavior": "应识别为 issue:资质指标修复路径把岗位功能、组织记忆、劳动风险和运营连续性暴力降维成 credential count。", + "failure_signal": "只建议优化招聘或替换清单,接受资质指标就是完整质量指标。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "violent_reduction", + "operational_continuity" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "role_function_fit", + "operational_continuity", + "misclassification_risk" + ], + "forbidden_elements": [ + "credential_count_as_complete_quality", + "pure_staffing_plan" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-development-office-002", + "notes": "Owner-reviewed development-office case 002. High-priority organization-type QPI regression." + }, + { + "case_id": "case_qpi_org_untrusted_data_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "材料和台账都很完整,但它们对应的真实运营并不稳定,也经不起审计核查;这不是缺数据,而是数据不可信。", + "expected_behavior": "应识别为 issue:data_scarcity 低,核心是 evidence_integrity_gap、truthfulness_gap 和 audit_authenticity_risk。推荐先做 evidence authenticity audit。", + "failure_signal": "把它判为普通 Q 类缺数据,或直接进入资源规划而不检查证据真实性。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "data_scarcity=low", + "evidence_authenticity_audit" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "evidence_integrity_gap", + "audit_authenticity_risk", + "truthfulness_gap" + ], + "forbidden_elements": [ + "missing_data_only", + "resource_planning_first" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-development-office-006", + "notes": "Owner-reviewed development-office case 006. Regression for missing data versus untrusted data." + }, + { + "case_id": "case_qpi_academic_ai_evidence_boundary_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "看起来只是让 AI 帮忙生成评估材料,但实际是先定结论再倒推证据,我需要判断这是不是材料执行任务。", + "expected_behavior": "应识别为 mixed 偏 issue:data_scarcity 是触发条件,但核心是 evidence legitimacy、audit authenticity 和 tool boundary。AI 可以整理证据,不能制造证据关系。", + "failure_signal": "把它当成普通材料生成、润色或执行任务,允许用工具从结论倒推证据。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "tool_boundary", + "evidence_legitimacy" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "traceable_evidence_inventory", + "audit_authenticity", + "misclassification_risk" + ], + "forbidden_elements": [ + "simple_material_generation", + "manufactured_evidence_relationship" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-academic-affairs-001", + "notes": "Owner-reviewed academic-affairs case 001. AI/tool execution request that requires QPI." + }, + { + "case_id": "case_qpi_academic_policy_memory_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "我们想取消一个诱发低质量产出的旧激励政策,但过去按这个规则投入过的人会觉得不公平,组织信任也已经受损。", + "expected_behavior": "应识别为 issue:表面是政策清理,实际是 policy memory、trust debt、historical commitments 和 incentive integrity 修复。", + "failure_signal": "把它当成简单政策取消任务,只输出新规则而不处理旧政策记忆和信任债务。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "policy_memory", + "trust_debt" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "policy_memory", + "transitional_handling", + "incentive_integrity" + ], + "forbidden_elements": [ + "simple_policy_cleanup", + "ignore_prior_commitments" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-academic-affairs-003", + "notes": "Owner-reviewed academic-affairs case 003. False-negative trap for policy cleanup." + }, + { + "case_id": "case_qpi_academic_outcome_quality_assurance_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "学生结果和投诉指标变差,部门解释为生源质量问题,但还没有审计教学质量制度和管理杠杆。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:输入条件可能影响结果,但不能替代对管理杠杆和质量保障制度的审计。", + "failure_signal": "完全接受生源质量解释,或把全部因果责任无证据地压给单一部门。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "quality_assurance_gap", + "management_lever_audit" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "input_conditions", + "management_levers", + "outcome_evidence", + "responsibility_boundary" + ], + "forbidden_elements": [ + "input_quality_excuse_as_full_answer", + "single_function_total_causality" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-academic-affairs-006", + "notes": "Owner-reviewed academic-affairs case 006. Input conditions versus quality-assurance audit." + }, + { + "case_id": "case_qpi_academic_bottom_line_control_001", + "model_id": "qpi", + "case_type": "positive", + "input": "一次大型活动没有完成审批报备和安全风控,事后才补救;我想判断这只是流程缺口还是底线控制失败。", + "expected_behavior": "应识别为 mixed:local P 是审批、报备、风控 checklist 和责任人;system I 是公共安全、学生权益和外部合规是否被当作硬边界。", + "failure_signal": "只补一个流程表,或只把它升维成抽象文化问题而不要求硬门禁流程。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "bottom_line_control_failure", + "hard_gate" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "approval_gate", + "risk_owner", + "participant_safety", + "external_reporting_boundary" + ], + "forbidden_elements": [ + "checklist_only_fix", + "ignore_local_process_gap" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-academic-affairs-008", + "notes": "Owner-reviewed academic-affairs case 008. Concrete operating accident revealing bottom-line control failure." + }, + { + "case_id": "case_qpi_employment_credential_compliance_exposure_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "为了补资质指标,组织想快速挂靠或采购带资历的人,但这些人是否进入教学科研和学生发展完全不清楚。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:credential gap 是真实资源缺口,但指标修补路径会制造 compliance exposure,不能当成简单采购或人事补缺。", + "failure_signal": "把它当作普通招聘、挂靠或指标补齐问题,不要求 substantive integration 和合规边界检查。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "compliance_exposure", + "substantive_integration_not_proven" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "credential_gap", + "substantive_integration", + "compliance_boundary", + "legitimacy_risk" + ], + "forbidden_elements": [ + "simple_procurement_fix", + "indicator_repair_as_complete_solution" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-002", + "notes": "Owner-reviewed employment case 002. Credential metric repair versus compliance exposure." + }, + { + "case_id": "case_qpi_employment_reported_metric_legitimacy_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "部门述职说自己创收很高,但这个数字按部门口径算,和组织财务确认标准不一致,还被用来争取更大权力。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:数据口径问题是入口,核心是 reported metric lineage、financial recognition 和 performance legitimacy。", + "failure_signal": "照单全收述职数据,或只要求补一个数据表而不处理绩效正当性和权力扩张风险。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "reported_metric_lineage", + "performance_legitimacy" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "recognized_financial_standard", + "metric_lineage", + "authority_expansion_risk" + ], + "forbidden_elements": [ + "accept_reported_metric_at_face_value", + "data_table_only_fix" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-003", + "notes": "Owner-reviewed employment case 003. False-positive trap for reported metrics." + }, + { + "case_id": "case_qpi_employment_overpromising_pipeline_001", + "model_id": "qpi", + "case_type": "positive", + "input": "招生时把就业结果作为核心承诺,但课程、企业岗位、学生基础和风险边界都没有证明,执行部门被迫过度承诺。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:既有交付路径问题,也有学生承诺、招生 pipeline、信任和组织身份风险。", + "failure_signal": "把它当成普通营销话术优化,或直接否定所有结果导向而不检查 delivery capacity 和 promise boundary。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "delivery_capacity", + "promise_boundary" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "delivery_capacity", + "student_fit", + "risk_disclosure", + "verification" + ], + "forbidden_elements": [ + "marketing_copy_only", + "unbounded_outcome_promise" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-004", + "notes": "Owner-reviewed employment case 004. Legitimate outcome orientation versus overpromising." + }, + { + "case_id": "case_qpi_employment_metric_credibility_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "就业率数字很高,组织想直接拿来证明办学质量,但数据是在强 KPI 压力下生产的,学生和企业层面的核验机制不清楚。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:高指标值不等于高指标可信度,必须输出 evidence_gap 并审计数据生产机制。", + "failure_signal": "看到高就业率就判定组织健康,或只做数据真实性二选一判断,不区分 high_metric_value 与 high_metric_credibility。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "evidence_gap", + "metric_credibility" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "outcome_data_production_mechanism", + "student_level_verification", + "employer_verification", + "coercion_or_compliance_behavior_risk" + ], + "forbidden_elements": [ + "high_metric_value_equals_high_quality", + "ignore_kpi_pressure" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-employment-entrepreneurship-005", + "notes": "Owner-reviewed employment case 005. High metric value versus high metric credibility." + }, + { + "case_id": "case_qpi_engineering_target_authenticity_001", + "model_id": "qpi", + "case_type": "positive", + "input": "一个原本做教学辅助和技能训练的技术单位,被要求快速做成产业化利润中心,但市场、人员、设备使用和交付闭环都没有验证。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:真实存在能力和路径缺口,但核心是 target_authenticity_gap,必须区分 milestone target、terminal target 和 bridge evidence。", + "failure_signal": "照单接受高目标为执行任务,或只把它降维成买设备、招人、做项目。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "target_authenticity_gap", + "bridge_evidence" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "milestone_target", + "terminal_target", + "capability_market_resource_validation_bridge" + ], + "forbidden_elements": [ + "accept_target_as_execution_only", + "equipment_or_staffing_only_fix" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-engineering-center-001", + "notes": "Owner-reviewed engineering case 001. Target authenticity gap." + }, + { + "case_id": "case_qpi_engineering_equipment_solutionism_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "组织想先买高端设备再等项目自然出现,但没有真实订单、操作者就绪度、安全规程和单位经济模型。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:设备不是能力本身,需求证明、操作者、安全、经济模型和试点结果没有过 gate 前,不能当作执行问题。", + "failure_signal": "把问题当成设备选型或采购清单,忽略市场闭环和操作者 readiness。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "equipment_led_solutionism", + "hard_gate" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "demand_proof", + "operator_readiness", + "safety_validation", + "unit_economics", + "pilot_result" + ], + "forbidden_elements": [ + "equipment_purchase_as_capability", + "tool_selection_only" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-engineering-center-002", + "notes": "Owner-reviewed engineering case 002. Equipment-led solutionism." + }, + { + "case_id": "case_qpi_engineering_credential_integrity_policy_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "发现某个资质或履历存在异常,但组织还想按能不能干活来决定是否继续使用,我需要判断这是人员问题还是制度问题。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并明确 no_personnel_verdict:QPI 不判断具体人员,只路由到筛查制度、例外政策和风险归属审查。", + "failure_signal": "直接判断某个人能不能用、是否造假、是否应辞退,或只按短期可用性处理。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "no_personnel_verdict", + "credential_integrity" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "credential_verification_lineage", + "exception_policy", + "risk_owner", + "policy_review" + ], + "forbidden_elements": [ + "specific_personnel_verdict", + "usability_only_decision" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-engineering-center-004", + "notes": "Owner-reviewed engineering case 004. Credential integrity versus usability." + }, + { + "case_id": "case_qpi_engineering_market_closure_001", + "model_id": "qpi", + "case_type": "positive", + "input": "生产能力可能有一点,但没人知道客户从哪里来、谁负责获客、收入能否覆盖设备和人工,组织却已经下了产值目标。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=consensus_order:对经营主体,这不是先查订单来源的普通 Question,而是把生产能力误当成商业闭环的第一性错位。", + "failure_signal": "先判为单纯 question,或只要求市场调研而不处理主体目的、客户、渠道、交付和单位经济模型。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=consensus_order", + "business_purpose", + "acquisition_channel" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "problem_owner", + "primary_purpose", + "customer_segment", + "demand_signal", + "acquisition_channel", + "unit_economics" + ], + "forbidden_elements": [ + "production_capacity_equals_business_viability", + "question_only_classification" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-engineering-center-005", + "notes": "Owner-reviewed engineering case 005. Production capability without market closure." + }, + { + "case_id": "case_qpi_international_compliance_retention_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "招生团队想用路径调整留住学生,但这个留存动作可能改变机构合规姿态、证书信任和未来投诉审计风险。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:留存压力和路径缺口存在,但合规红线占主导,不能把它当作普通招生留存 Problem。", + "failure_signal": "只输出留存方案或招生话术,不先确认 compliance red line、credential trust 和 audit risk。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "compliance_red_line", + "credential_trust" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "retention_pressure", + "compliance_boundary", + "future_complaint_or_audit_risk" + ], + "forbidden_elements": [ + "retention_tactic_only", + "pathway_workaround_without_red_line" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-001", + "notes": "Owner-reviewed international case 001. Retention workaround crossing compliance boundary." + }, + { + "case_id": "case_qpi_international_capacity_governance_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "增长项目承诺扩招,但宿舍和服务容量不足,需要挤占其他单元资源,组织还没有硬性容量闸门。", + "expected_behavior": "应识别为 mixed,dominant_scarcity=path_resource:硬约束是容量,但跨单元冲突和承诺边界使其成为容量治理问题。", + "failure_signal": "把它当作简单排宿舍或物流调度,或只抽象成文化冲突而不处理 hard capacity gate。", + "expected_output_elements": [ + "classification=mixed", + "dominant_scarcity=path_resource", + "hard_capacity_gate", + "cross_unit_conflict" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "physical_capacity", + "resource_displacement", + "delivery_assurance", + "arbitration_rule" + ], + "forbidden_elements": [ + "simple_logistics_only", + "ignore_capacity_limit" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-002", + "notes": "Owner-reviewed international case 002. Capacity governance versus simple logistics." + }, + { + "case_id": "case_qpi_international_metric_governance_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "执行层提交了好看的资质指标,决策层怀疑这些指标急功近利,只是为了评估和述职,不代表真实教学能力。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:事实核验嵌在治理扭曲中,必须检查指标是否连接长期目标、真实能力、多方收益和可审计证据。", + "failure_signal": "停留在问指标真假,或直接接受指标为能力证明。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "metric_distortion", + "traceable_evidence_chain" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "long_term_goal_alignment", + "real_capability", + "multi_party_value", + "audit_evidence" + ], + "forbidden_elements": [ + "question_only_classification", + "metric_appearance_as_capability" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-005", + "notes": "Owner-reviewed international case 005. Metric fact verification embedded in governance distortion." + }, + { + "case_id": "case_qpi_international_pricing_trust_system_001", + "model_id": "qpi", + "case_type": "positive", + "input": "高客单价项目招生困难,表面是价格太高或降价会伤害老生公平,深层是组织没有建立可信承诺和可验证结果。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:定价僵局是表象,高客单价教育产品需要组织级信任体系、可信承诺、可验证结果和协同交付。", + "failure_signal": "只建议降价、促销或销售话术,不处理 trust system、legacy price anchor 和 fairness debt。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "trust_system", + "legacy_price_anchor" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "credible_promise", + "verifiable_outcome", + "organizational_delivery", + "fairness_debt" + ], + "forbidden_elements": [ + "price_adjustment_only", + "sales_script_only" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-006", + "notes": "Owner-reviewed international case 006. Pricing deadlock as high-ticket trust-system failure." + }, + { + "case_id": "case_qpi_research_identity_simulation_001", + "model_id": "qpi", + "case_type": "positive", + "input": "组织没有真实科研能力,却想通过人员、费用、专利和论文包装出研究身份,以满足外部优惠或认证要求。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:底层有 path/resource shortage,但核心是 research identity simulation,不能把能力建设问题降维成证据包装。", + "failure_signal": "当成普通认证材料准备、税务筹划或指标补齐任务,不区分真实能力建设与身份模拟。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "research_identity_simulation", + "compliance_red_line" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "capability_building", + "evidence_simulation", + "transactional_assets", + "audit_risk" + ], + "forbidden_elements": [ + "certification_materials_only", + "evidence_packaging_as_solution" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-research-office-001", + "notes": "Owner-reviewed research case 001. Umbrella research identity simulation case." + }, + { + "case_id": "case_qpi_research_data_truthfulness_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "研究人员数量和费用类别不够,组织想把非研究角色和薪资类别调成研究相关口径来补表。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并区分 data completeness、data truthfulness 与 evidence legitimacy;不能输出高置信法律/税务结论。", + "failure_signal": "只检查表格是否填满,或直接判断一定合规/违法,而不要求实际研究角色、薪资类别和贡献证据链。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "data_completeness_is_not_truthfulness", + "requires_compliance_review" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "actual_research_role_evidence", + "payroll_category_validity", + "research_contribution_trace" + ], + "forbidden_elements": [ + "spreadsheet_completion_as_truth", + "high_confidence_legal_tax_verdict" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-research-office-002", + "notes": "Owner-reviewed research case 002. Data completeness versus truthfulness." + }, + { + "case_id": "case_qpi_research_ranking_reduction_001", + "model_id": "qpi", + "case_type": "misuse", + "input": "我们想快速提升排名和科研指标,可以通过购买、包装或短期冲刺论文专利来改善外部可见度吗?", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order:这是 violent_reduction,把研究价值压缩成可购买、可填报、可冲刺的排名输入。", + "failure_signal": "直接给快速提升排名清单,或把购买/包装指标当作普通执行路径。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "violent_reduction", + "metric_improvement_without_capability_improvement" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "research_value", + "capability_improvement", + "ranking_metric_trap" + ], + "forbidden_elements": [ + "quick_ranking_tactics_only", + "purchasable_metric_as_research_value" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-research-office-004", + "notes": "Owner-reviewed research case 004. Ranking trap and violent reduction." + }, + { + "case_id": "case_qpi_research_penalty_integrity_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "组织认为只要没有罚款、没有被约谈、没有报销损失,就说明合规风险不大。", + "expected_behavior": "应识别为 issue,dominant_scarcity=consensus_order,并输出 punishment_state_vs_integrity_state:没有即时惩罚不等于行为正当或可审计。", + "failure_signal": "把无处罚当作合规证明,或只建议继续观察处罚结果。", + "expected_output_elements": [ + "classification=issue", + "dominant_scarcity=consensus_order", + "absence_of_penalty_is_not_legitimacy", + "integrity_state" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "punishment_state_frame", + "integrity_state_frame", + "auditability", + "substantive_compliance" + ], + "forbidden_elements": [ + "no_penalty_equals_compliance", + "minimum_punishment_game" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-research-office-008", + "notes": "Owner-reviewed research case 008. Punishment state versus integrity state." + }, + { + "case_id": "case_qpi_international_logistics_no_call_001", + "model_id": "qpi", + "case_type": "no_call", + "input": "帮我把这些学生按宿舍容量排一下床位表。", + "expected_behavior": "应 no_call:这是直接物流/排床位执行任务,不应仅因出现容量词而调用 QPI。", + "failure_signal": "selector 选中 QPI,或把排床位执行误判为容量治理问题。", + "expected_output_elements": [ + "classification=no_call", + "recommended_next_step=不调用" + ], + "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": [ + "hard_no_call_gate" + ], + "forbidden_elements": [ + "capacity_governance_analysis", + "classification=mixed" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-002", + "notes": "Round 03.1 no-call trap paired with international capacity governance case." + }, + { + "case_id": "case_qpi_research_capacity_problem_not_issue_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "增长活动已经承诺,但物理空间、床位、设施和服务容量不足。现在主要问题是硬容量无法被行政命令解决,虽然继续扩张会带来治理风险。", + "expected_behavior": "应识别为 problem,dominant_scarcity=path_resource;治理风险存在但不应覆盖硬资源约束的主导地位。", + "failure_signal": "直接升维为 issue,忽略硬资源约束仍是主导稀缺。", + "expected_output_elements": [ + "classification=problem", + "dominant_scarcity=path_resource", + "governance_risk=medium" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "problem", + "expected_dominant_scarcity": "path_resource", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "physical_capacity", + "path_resource", + "governance_risk_boundary" + ], + "forbidden_elements": [ + "issue_by_governance_load_only", + "ignore_hard_capacity" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-research-office-006", + "notes": "Round 03.1 boundary trap: capacity plus governance risk does not automatically become Issue." + }, + { + "case_id": "case_qpi_multi_perspective_requires_viewpoint_output_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "执行层认为这是线索转化问题,决策层认为这是完整教育链战略问题,学生视角还涉及证书信任和交付承诺。请判断这到底是什么问题。", + "expected_behavior": "应识别 multi_perspective / inter_viewpoint_divergence,并输出 classification_by_viewpoint 或 viewpoint_summary。", + "failure_signal": "只给单一 issue/mixed 标签,没有列出不同视角下的问题定义。", + "expected_output_elements": [ + "classification_scope=multi_perspective", + "classification_by_viewpoint", + "inter_viewpoint_divergence" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "issue", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "classification_by_viewpoint", + "viewpoint_summary" + ], + "forbidden_elements": [ + "single_viewpoint_only" + ], + "evaluation_mode": "structured", + "source_case_digest_id": "qpi-year-end-international-college-004", + "notes": "Round 03.1 contract trap for multi-perspective output." + }, + { + "case_id": "case_qpi_low_context_provisional_no_high_confidence_001", + "model_id": "qpi", + "case_type": "boundary", + "input": "这个项目推进不顺,到底是问题还是课题?", + "expected_behavior": "上下文不足时应 is_provisional=true,context_sufficiency=low,classification_confidence 不得为 high,并列出 missing_context。", + "failure_signal": "在缺少主体、场景、目标、资源和责任信息时输出高置信 Q/P/I。", + "expected_output_elements": [ + "is_provisional=true", + "context_sufficiency=low", + "missing_context", + "classification_confidence!=high" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [], + "expected_classification": "mixed", + "expected_dominant_scarcity": "unknown", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "missing_context", + "recommended_clarifying_questions" + ], + "forbidden_elements": [ + "classification_confidence=high" + ], + "evaluation_mode": "structured", + "notes": "Round 03.1 dependency trap for low-context provisional classification." + }, + { + "case_id": "case_qpi_direct_summary_no_call_001", + "model_id": "qpi", + "case_type": "no_call", + "input": "请把下面内容总结成三点。", + "expected_behavior": "应 no_call:纯摘要执行任务不需要 QPI。", + "failure_signal": "selector 因默认分选中 QPI。", + "expected_output_elements": [ + "classification=no_call" + ], + "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": [ + "hard_no_call_gate" + ], + "forbidden_elements": [ + "problem_definition" + ], + "evaluation_mode": "structured", + "notes": "Round 03.1 direct execution no-call." + }, + { + "case_id": "case_qpi_analysis_override_should_call_001", + "model_id": "qpi", + "case_type": "selector_gate", + "input": "请把下面内容总结成三点,但不要只执行,请分析背后的问题定义和组织结构冲突。", + "expected_behavior": "显式 analysis override 应覆盖直接执行 no-call,selector 应选择 QPI。", + "failure_signal": "hard no-call 误杀包含明确分析 override 的混合请求。", + "expected_output_elements": [ + "selected=qpi", + "analysis_override" + ], + "should_call_model": true, + "expected_primary_model": "qpi", + "negative_expected_models": [ + "intellectual_archaeology" + ], + "expected_classification": "mixed", + "expected_dominant_scarcity": "consensus_order", + "expected_max_depth": "not_applicable", + "minimum_required_elements": [ + "override_preserved" + ], + "forbidden_elements": [ + "hard_no_call_without_override_check" + ], + "evaluation_mode": "structured", + "notes": "Round 03.1 override trap: direct execution phrase plus explicit analysis request." + } ] } diff --git a/tests/test_validate_model_library.py b/tests/test_validate_model_library.py index 3b397ba..ad3acc9 100644 --- a/tests/test_validate_model_library.py +++ b/tests/test_validate_model_library.py @@ -453,6 +453,52 @@ class ValidateModelLibraryTests(unittest.TestCase): errors ) + def test_qpi_digest_deprecated_fields_are_reported(self): + validator = load_validator() + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + self.write_minimal_library(root) + self.write_json(root, "selector/qpi_case_digests.json", { + "cases": [{ + "case_id": "qpi-test-001", + "classification_scope": "subject_contextual", + "mixed_or_multi_perspective": "not_mixed", + "misframing_risks": ["violent_reduction"] + }] + }) + + errors = validator.validate_library(root) + + self.assertIn( + "qpi case digest qpi-test-001 uses deprecated field misframing_risks; use misclassification_risk", + errors + ) + self.assertIn( + "qpi case digest qpi-test-001 uses deprecated field mixed_or_multi_perspective; use qpi_complexity_pattern", + errors + ) + + def test_qpi_digest_multi_perspective_requires_viewpoint_detail(self): + validator = load_validator() + with tempfile.TemporaryDirectory() as tmp: + root = Path(tmp) + self.write_minimal_library(root) + self.write_json(root, "selector/qpi_case_digests.json", { + "cases": [{ + "case_id": "qpi-test-002", + "classification_scope": "multi_perspective", + "qpi_complexity_pattern": "inter_viewpoint_divergence", + "misclassification_risk": ["single_viewpoint_only"] + }] + }) + + errors = validator.validate_library(root) + + self.assertIn( + "qpi case digest qpi-test-002 multi_perspective case requires classification_by_viewpoint or viewpoint_summary", + errors + ) + if __name__ == "__main__": unittest.main()