# Round 03.2 Patch Matrix

## GPT Requirement Mapping

| Requirement | Implementation | Files |
| --- | --- | --- |
| IA explicit refusal must be hard exclusion, not score penalty | Added `hard_exclusion_triggers` for IA and forced rejected decision when matched | `selector/selector_rules.json`, `scripts/run_selector_demo.py` |
| Include refusal phrases such as `不要思想考古`, `先不要思想考古`, `不调用思想考古`, `只做 QPI`, `只做问题定性` | Added IA hard exclusion trigger list | `selector/selector_rules.json` |
| Preserve QPI explicit-analysis override but do not let it re-enable IA | Hard exclusion applies per model after scoring and is not bypassed by QPI override | `scripts/run_selector_demo.py` |
| Remove or narrow bare `如何` and `判断` QPI gates | Removed bare signals; added compound problem-definition phrases | `selector/selector_rules.json` |
| Strict `no_call` smoke behavior | `no_call` now requires no selected models and `no_call=true` | `scripts/run_selector_calibration_smoke.py` |
| Strict `no_call_or_low_priority` behavior | Fails if QPI or IA is selected | `scripts/run_selector_calibration_smoke.py` |
| Add `select_qpi_reject_ia` behavior | Requires QPI selected and IA rejected | `scripts/run_selector_calibration_smoke.py`, `selector/selector_calibration_inputs.json` |
| Fail IA selection expectations if IA hard exclusion exists | Added hard-exclusion check for `select_intellectual_archaeology` expected cases | `scripts/run_selector_calibration_smoke.py` |
| Add five traps | Added two IA hard-exclusion traps and three generic how-to / dictionary no-call traps | `tests/*.regression.json`, `selector/selector_calibration_inputs.json` |

## Added Regression Cases

### Intellectual Archaeology

- `case_ia_negative_explicit_do_not_call_001`
- `case_ia_negative_only_qpi_001`

### QPI

- `case_qpi_how_to_excel_no_call_001`
- `case_qpi_how_to_markdown_pdf_no_call_001`
- `case_qpi_dictionary_judgment_no_call_001`

## Added Calibration Inputs

- `selector_calibration_ia_negative_explicit_do_not_call_001`
- `selector_calibration_ia_negative_only_qpi_001`
- `selector_calibration_qpi_how_to_excel_no_call_001`
- `selector_calibration_qpi_how_to_markdown_pdf_no_call_001`
- `selector_calibration_qpi_dictionary_judgment_no_call_001`

## Current Counts

| Asset | Round 03.1 | Round 03.2 |
| --- | ---: | ---: |
| QPI regression cases | 52 | 55 |
| IA regression cases | 17 | 19 |
| Aggregate regression cases | 69 | 74 |
| Selector calibration inputs | 85 | 90 |

## Non-Goals Preserved

- No new model.
- No lifecycle upgrade.
- No LLM selector.
- No RAG / database / frontend / backend.
- No Round 04 blind-test execution.
