| { |
| "classification_counts": { |
| "crosswalk-gap": 5, |
| "facet-guard-rejected": 3, |
| "genuine-ambiguity": 18, |
| "join-error": 1 |
| }, |
| "crosswalk_additions": { |
| "almonds": "E", |
| "citrusy": "C", |
| "coffee": "E", |
| "tarry": "T" |
| }, |
| "crosswalk_additions_count": 4, |
| "crosswalk_version": "v8.2", |
| "diagnostic": "D3_masked_despite_text_crosswalk_repair", |
| "facet_guard_audit_count": 59, |
| "facet_guard_counts": { |
| "masked": 14, |
| "relabelled": 1, |
| "stands": 44 |
| }, |
| "facet_guard_policy": "Single-token source labels stand only when the matched token is dominant. Secondary/dilution/trace facets are masked unless the source foregrounds a clean alternate class.", |
| "labels_v8_1_count": 94, |
| "labels_v8_2_count": 122, |
| "labels_v8_2_pre_guard_count": 136, |
| "masked_despite_text_records": 27, |
| "new_authoritative_character_labels_delta": 28, |
| "outputs": { |
| "changelog": "artifacts/odour_character_crosswalk_v8_2_changelog.json", |
| "crosswalk": "artifacts/odour_character_crosswalk_v8_2.json", |
| "facet_guard_audit": "data/per_material_signal_inspection_v8_2.jsonl", |
| "labels": "data/odour_character_labels_v8_2.jsonl" |
| }, |
| "per_record": [ |
| { |
| "candidate_additions": [ |
| "almonds" |
| ], |
| "cas": "100-52-7", |
| "classification": "crosswalk-gap", |
| "reason": "v8.2 literal descriptor addition maps source text to one unambiguous class.", |
| "source_material_name": "BENZALDEHYDE", |
| "v8_2_classes": [ |
| "E" |
| ] |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "104-67-6", |
| "classification": "genuine-ambiguity", |
| "reason": "Arctander join exists but extracted odour text is empty/OCR-unusable.", |
| "source_material_name": "gamma-UNDECALACTONE" |
| }, |
| { |
| "candidate_additions": [ |
| "citrusy" |
| ], |
| "cas": "112-44-7", |
| "classification": "crosswalk-gap", |
| "reason": "v8.2 literal descriptor addition maps source text to one unambiguous class.", |
| "source_material_name": "UNDECANAL", |
| "v8_2_classes": [ |
| "C" |
| ] |
| }, |
| { |
| "candidate_additions": [ |
| "tarry" |
| ], |
| "cas": "120-72-9", |
| "classification": "facet-guard-rejected", |
| "dominant_character_assessment": "Matched token 'tarry' is a concentrated-state secondary facet. The work-order adjudication identifies Indole's dominant source character as animalic/faecal, so the material must not inherit T from the incidental tarry facet.", |
| "final_class_or_masked": "U", |
| "guard_action": "relabelled", |
| "matched_token": "tarry", |
| "matched_token_class": "T", |
| "reason": "Matched token 'tarry' is a concentrated-state secondary facet. The work-order adjudication identifies Indole's dominant source character as animalic/faecal, so the material must not inherit T from the incidental tarry facet.", |
| "source_material_name": "INDOLE", |
| "v8_2_classes": [ |
| "T" |
| ] |
| }, |
| { |
| "ambiguous_terms_seen": [], |
| "candidate_additions": [], |
| "cas": "122-78-1", |
| "classification": "genuine-ambiguity", |
| "reason": "No unambiguous v8.2 descriptor token found; broad terms remain masked.", |
| "source_material_name": "PHENYLACETALDEHYDE" |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "141-25-3", |
| "classification": "genuine-ambiguity", |
| "reason": "Arctander join exists but extracted odour text is empty/OCR-unusable.", |
| "source_material_name": "RHODINOL" |
| }, |
| { |
| "ambiguous_terms_seen": [], |
| "candidate_additions": [], |
| "cas": "515-03-7", |
| "classification": "genuine-ambiguity", |
| "reason": "No unambiguous v8.2 descriptor token found; broad terms remain masked.", |
| "source_material_name": "SCLAREOL" |
| }, |
| { |
| "ambiguous_terms_seen": [], |
| "candidate_additions": [], |
| "cas": "515-69-5", |
| "classification": "genuine-ambiguity", |
| "reason": "No unambiguous v8.2 descriptor token found; broad terms remain masked.", |
| "source_material_name": "BISABOLOL" |
| }, |
| { |
| "candidate_additions": [ |
| "citrusy" |
| ], |
| "cas": "5392-40-1", |
| "classification": "crosswalk-gap", |
| "reason": "v8.2 literal descriptor addition maps source text to one unambiguous class.", |
| "source_material_name": "CITRAL", |
| "v8_2_classes": [ |
| "C" |
| ] |
| }, |
| { |
| "ambiguous_terms_seen": [], |
| "candidate_additions": [], |
| "cas": "67-64-1", |
| "classification": "genuine-ambiguity", |
| "reason": "No unambiguous v8.2 descriptor token found; broad terms remain masked.", |
| "source_material_name": "ACETONE" |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "68127-65-1", |
| "classification": "genuine-ambiguity", |
| "reason": "Arctander join exists but extracted odour text is empty/OCR-unusable.", |
| "source_material_name": "RHODINOL" |
| }, |
| { |
| "candidate_additions": [ |
| "coffee" |
| ], |
| "cas": "75-07-0", |
| "classification": "facet-guard-rejected", |
| "dominant_character_assessment": "Matched token 'coffee' appears only in 'in high dilution reminiscent of Coffee or Wine'; the source foregrounds pungent ethereal-nauseating odor, which does not map cleanly to one class.", |
| "final_class_or_masked": "masked", |
| "guard_action": "masked", |
| "matched_token": "coffee", |
| "matched_token_class": "E", |
| "reason": "Matched token 'coffee' appears only in 'in high dilution reminiscent of Coffee or Wine'; the source foregrounds pungent ethereal-nauseating odor, which does not map cleanly to one class.", |
| "source_material_name": "ACETALDEHYDE", |
| "v8_2_classes": [ |
| "E" |
| ] |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "80-56-8", |
| "classification": "genuine-ambiguity", |
| "reason": "Arctander join exists but extracted odour text is empty/OCR-unusable.", |
| "source_material_name": "alpha-PINENE" |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "97-54-1", |
| "classification": "genuine-ambiguity", |
| "reason": "Arctander join exists but extracted odour text is empty/OCR-unusable.", |
| "source_material_name": "iso-EUGENOL" |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "SMILES:C(CN)C(=O)O", |
| "classification": "join-error", |
| "reason": "SMILES-only material matched through an over-broad structural alias rather than a material name.", |
| "source_material_name": "3-iso-BUTYLIDEN" |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "SMILES:CC(=O)OCC(COC(C)=O)OC(C)=O", |
| "classification": "genuine-ambiguity", |
| "reason": "Arctander join exists but extracted odour text is empty/OCR-unusable.", |
| "source_material_name": "TRIACETIN" |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "SMILES:CC(C)[C@H](N)C(=O)O", |
| "classification": "genuine-ambiguity", |
| "reason": "Arctander join exists but extracted odour text is empty/OCR-unusable.", |
| "source_material_name": "L-Valine." |
| }, |
| { |
| "candidate_additions": [ |
| "citrusy" |
| ], |
| "cas": "SMILES:CC1=CC=C(C(C)C)CC1", |
| "classification": "crosswalk-gap", |
| "reason": "v8.2 literal descriptor addition maps source text to one unambiguous class.", |
| "source_material_name": "alpha-TERPINENE", |
| "v8_2_classes": [ |
| "C" |
| ] |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "SMILES:CC1=CCC2CC1C2(C)C", |
| "classification": "genuine-ambiguity", |
| "reason": "Arctander join exists but extracted odour text is empty/OCR-unusable.", |
| "source_material_name": "alpha-PINENE" |
| }, |
| { |
| "candidate_additions": [ |
| "coffee" |
| ], |
| "cas": "SMILES:CCC=O", |
| "classification": "facet-guard-rejected", |
| "dominant_character_assessment": "Matched token 'coffee' appears only in extreme dilution; the source foregrounds a very diffusive, penetrating, suffocating/choking odor, which does not map cleanly to one class.", |
| "final_class_or_masked": "masked", |
| "guard_action": "masked", |
| "matched_token": "coffee", |
| "matched_token_class": "E", |
| "reason": "Matched token 'coffee' appears only in extreme dilution; the source foregrounds a very diffusive, penetrating, suffocating/choking odor, which does not map cleanly to one class.", |
| "source_material_name": "PROPIONALDEHYDE", |
| "v8_2_classes": [ |
| "E" |
| ] |
| }, |
| { |
| "ambiguous_terms_seen": [ |
| "anise", |
| "anisic" |
| ], |
| "candidate_additions": [], |
| "cas": "SMILES:COc1ccccc1", |
| "classification": "genuine-ambiguity", |
| "reason": "Source text contains weak, negated, or multi-class descriptor evidence with no dominant single class; masked beats guessed.", |
| "source_material_name": "ANISOLE" |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "SMILES:Cc1ccc(C(C)C)c(O)c1", |
| "classification": "genuine-ambiguity", |
| "reason": "Arctander join exists but extracted odour text is empty/OCR-unusable.", |
| "source_material_name": "THYMOL" |
| }, |
| { |
| "candidate_additions": [], |
| "cas": "SMILES:Cc1ccccc1", |
| "classification": "genuine-ambiguity", |
| "reason": "Arctander join exists but extracted odour text is empty/OCR-unusable.", |
| "source_material_name": "TOLUENE" |
| }, |
| { |
| "ambiguous_terms_seen": [], |
| "candidate_additions": [], |
| "cas": "SMILES:O=CCc1ccccc1", |
| "classification": "genuine-ambiguity", |
| "reason": "No unambiguous v8.2 descriptor token found; broad terms remain masked.", |
| "source_material_name": "PHENYLACETALDEHYDE" |
| }, |
| { |
| "candidate_additions": [ |
| "tarry" |
| ], |
| "cas": "SMILES:c1ccc2ccccc2c1", |
| "classification": "crosswalk-gap", |
| "reason": "v8.2 literal descriptor addition maps source text to one unambiguous class.", |
| "source_material_name": "NAPHTHALENE", |
| "v8_2_classes": [ |
| "T" |
| ] |
| }, |
| { |
| "ambiguous_terms_seen": [], |
| "candidate_additions": [], |
| "cas": "SMILES:c1ccc2ncccc2c1", |
| "classification": "genuine-ambiguity", |
| "reason": "No unambiguous v8.2 descriptor token found; broad terms remain masked.", |
| "source_material_name": "QUINOLINE" |
| }, |
| { |
| "ambiguous_terms_seen": [], |
| "candidate_additions": [], |
| "cas": "SMILES:c1ccncc1", |
| "classification": "genuine-ambiguity", |
| "reason": "No unambiguous v8.2 descriptor token found; broad terms remain masked.", |
| "source_material_name": "PYRIDINE" |
| } |
| ], |
| "pimt_version": "v8" |
| } |
|
|