the-mindscape-of-bro-tsong/selector/README.md

81 lines
4.0 KiB
Markdown

# Selector
This folder contains rule-based selector configuration and examples.
The v0.2 selector should not call an LLM.
It should use simple matching rules:
- Trigger keywords
- Input types
- Negative triggers
- Model-level hard exclusion triggers
- Pipeline position
- Selection priority
- Negative trigger first
- No-call threshold
- QPI-before-IA gate
- QPI positive-signal gate
- Direct-execution no-call signals
- Calibration smoke checks
Round 03.2 selector rule:
- Explicit refusal of a specific model, such as `不要思想考古` or `只做 QPI`, is a model-level hard exclusion for that model.
- A hard exclusion rejects only the named model; it does not globally no-call the request.
- Generic bare QPI gate words such as `如何` and `判断` should not be used alone. Use compound problem-definition phrases instead.
Round 03.2a selector rule:
- Depth-limiting phrases such as `不要展开` and `不要深入分析` remain global no-call signals by default.
- If a depth-limiting phrase is paired with explicit QPI-limited intent such as `只做 QPI`, `只做问题定性`, or `只判断主导稀缺`, the selector should continue scoring, allow QPI, and still reject IA.
Round 04.1 selector rule:
- Translation / direct transformation instructions should no-call even when the payload contains complexity words such as `模型`.
- Task instruction and payload content should be separated for no-call routing when a direct transformation phrase appears before a colon.
- IA refusal variants such as `不要进入思想考古` and `不做思想考古` are model-level hard exclusions for IA.
- Depth-limiting phrases paired with `主导稀缺` or `缺信息 / 缺路径 / 缺共识` intent should allow QPI and reject IA.
Round 05.1 selector rule:
- Governance / responsibility / consensus wording is not enough by itself to select QPI.
- Narrow QPI positive signals are allowed when the input includes responsibility ambiguity, direction collapse, commitment waiting, decision authority gaps, minimum-path uncertainty, or stable-output blockage.
- Capacity wording remains no-call when it only expresses an execution constraint.
- Ambiguous low-context inputs such as `还是那个老问题` should no-call instead of selecting QPI by the bare word `问题`.
- Default QPI-before-IA remains unchanged.
- Natural-language prior-QPI claims still keep lightweight QPI review; structured `prior_qpi_result` selector support is not implemented in Round 05.1.
Current files:
- `selector_rules.json`
- `selector_examples.json`
- `selector_calibration_inputs.json`
- `round04_blind_inputs.json`
- `qpi_case_digests.json`
The selector does not call an LLM.
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`.
Round 04 blind routing evaluation is `scripts/run_round04_blind_routing.py`.
Round 04.1 post-patch routing verification is `scripts/run_round04_post_patch_verification.py`.
Round 05.1 selector patch audit is `scripts/run_round05_1_selector_patch_audit.py`.
`round04_blind_inputs.json` is a frozen blind input pool for first-run routing evaluation. It intentionally contains no expected selector behavior and should not be merged into calibration inputs before owner / GPT / CCRA review.
`qpi_case_digests.json` stores owner-reviewed QPI case digests that can feed selector calibration or later regression selection. It is not a model status upgrade and should not include unreviewed draft cases.
Digest field notes:
- `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`.