# Rule Context Classification v1 (Fallback Audit - Turn 12, Codex correction)

**Generated by Grok as Codex fallback; corrected by Codex per adversarial review.**
**Purpose:** Classify every rule_id to decide (A) structural-canary (no wiring), (B) overt-claim-exempt (add context_exempt), or (C) risk-intent-needed (add wiring). This enables safe centralized overrides in filter_rule_matches_by_context while preserving the 8000-line test suite.
**Source:** Claude's turn-10 rubric + rule_inventory_raw.json list + test output (13 wired, 8 intents) + Grok turn-15 FN-risk correction.
**Note:** Current_risk_intents column left as 'wired per tests' for the 13 known; full line-by-line inspection of php:20310-22500 recommended before Slice B. All strict_context_proximity currently false.

## Summary
- A (structural): 14 rules
- B (overt-exempt): 6 rules
- C (context-dependent): 19 rules (13 already wired + 6 new wirings needed)

## Full Table

| rule_id | proposed_category | proposed_risk_intents | rationale |
|---------|-------------------|-----------------------|-----------|
| structural.affiliate_claims_control | A |  | Structural control for affiliate claims; no claim text to contextualize. |
| structural.buyer_verification_safeguards | A |  | Structural safeguard; presence/absence only. |
| structural.downloadable_docs_ruo_label | A |  | Structural label check. |
| structural.medical_schema_lane_conflict | A |  | Structural schema conflict. |
| structural.per_product_ruo_disclaimer | A |  | Structural per-product disclaimer. |
| structural.product_documentation_visible | A |  | Structural documentation visibility. |
| structural.scientific_citation_support | A |  | Structural citation support. |
| structural.state_federal_lane_separation | A |  | Structural lane separation. |
| structural.supply_chain_quality_docs | A |  | Structural supply-chain docs. |
| evidence.buyer_verification_safeguard_context | A |  | Evidence structural context. |
| evidence.claim_substantiation_workflow_context | A |  | Evidence workflow context. |
| evidence.ruo_disclaimer_context | A |  | Evidence disclaimer context. |
| supply_chain.sds_hazard_communication_gap | A |  | Structural SDS gap. |
| scope.generic_wordpress_not_ruo | A |  | Scope structural. |
| claims.composite_peptide_route_dose | B |  | Overt claim; context cannot rescue. context_exempt='overt_claim' |
| claims.fda_approved_dose_values | B |  | Overt FDA dose claim. context_exempt='overt_claim' |
| claims.glp_alias_substitution | B |  | Overt GLP alias. context_exempt='overt_claim' |
| claims.pharmacy_compounding_lane | B |  | Overt compounding lane. context_exempt='overt_claim' |
| claims.international_approval_equivalence | B |  | Overt international approval. context_exempt='overt_claim' |
| processor.cloaking_or_workaround_language | B |  | Overt cloaking language. context_exempt='overt_claim' |
| cart_pairing.peptide_plus_administration_accessory | C | injection_admin_instruction | New wiring needed; pairs peptide with admin accessory (euphemism vector). |
| claims.fda_cited_glp_alias_context | C | brand_equivalence | New wiring needed; FDA-cited GLP alias context. |
| claims.fda_cited_glp_name_context | C | brand_equivalence | New wiring needed; FDA-cited GLP name context. |
| claims.pharmacological_class_descriptor | C | health_outcome_promise | New wiring needed; class descriptor implies outcome. |
| content.blog_faq_human_use_context | C | dosing_instruction OR health_outcome_promise | New wiring needed; blog/FAQ human-use context (euphemism risk). |
| processor.research_demand_mismatch | C | urgency_scarcity | **Codex correction:** demand-mismatch language can be contextual; avoid overt-claim exemption FN risk. New wiring needed. |
| platform_ads.ad_landing_claim_context | C | health_outcome_promise | Wired per tests. |
| platform_ads.affiliate_claims_control | C | health_outcome_promise | Wired per tests. |
| platform_ads.affiliate_material_connection_disclosure | C | testimonial_frame | Wired per tests. |
| platform_ads.community_social_takedown_context | C | testimonial_frame | Wired per tests. |
| platform_ads.linked_community_dosing_context | C | dosing_instruction | Wired per tests. |
| platform_ads.review_gating_or_suppression | C | testimonial_frame | Wired per tests. |
| platform_ads.subscription_material_terms_gap | C | urgency_scarcity | Wired per tests. |
| processor.alternative_payment_instability_context | C | urgency_scarcity | Wired per tests. |
| processor.consumer_self_use_context | C | dosing_instruction | Wired per tests. |
| processor.payment_continuity_shutdown_language | C | urgency_scarcity | Wired per tests. |
| supply_chain.import_relabel_repack_risk | C | unverified_credentials | Wired per tests. |
| supply_chain.quality_claim_substantiation_context | C | unverified_credentials | Wired per tests. |

**Next actions after approval:** Add context_exempt to B rules and risk_intents to the 6 new C rules via single override map in filter_rule_matches_by_context. Add euphemism negative fixtures (including citation-only and COA-only neutral contexts) to trigger-context-stress-checks.mjs.
