| # Character grouping diagnostic v8 |
|
|
| Primary snapshot: `v8_2_clause_guard_dominance` (`data/odour_character_labels_v8_2_clause_guard_dominance.jsonl`). |
|
|
| ## Verdict |
|
|
| **Character verdict: discriminative-weak.** Under the corrected 26-class unthresholded prevalence metric, mean cosine distance is 0.080 and mean JS divergence is 0.044 bits. This supports weak but genuine distributional separation, suitable only as a secondary axis pending human decision. |
|
|
| **Artifact.** The perfect superclass Jaccard is mechanical: 1.000 = all genres have identical thresholded superclass active sets, NOT improved discrimination. After collapse, every genre profile contains every available superclass, so set-presence Jaccard has no room to differ. Distributional class-count metrics are not perfect (26-class all-labelled mean cosine 0.905; 26-class >=3-label mean cosine 0.858), so the prior character-is-non-discriminative verdict is retracted. |
|
|
| | Axis | classes | mean pairwise Jaccard | delta vs 26 | |
| | --- | ---: | ---: | ---: | |
| | 26-class | 26 | 0.793 | baseline | |
| | six_superclass | 5 | 1.000 | +0.207 | |
| | eight_superclass | 8 | 1.000 | +0.207 | |
|
|
| ## Superclass Sets Compared |
|
|
| ### six_superclass |
| - `amber_oriental`: animalic_spicy_smoky, balsamic_woody_mossy, edible_gourmand, floral, fresh_citrus_green |
| - `citrus_cologne`: animalic_spicy_smoky, balsamic_woody_mossy, edible_gourmand, floral, fresh_citrus_green |
| - `floral_woody`: animalic_spicy_smoky, balsamic_woody_mossy, edible_gourmand, floral, fresh_citrus_green |
| - `fougere`: animalic_spicy_smoky, balsamic_woody_mossy, edible_gourmand, floral, fresh_citrus_green |
| - `wildcard`: animalic_spicy_smoky, balsamic_woody_mossy, edible_gourmand, floral, fresh_citrus_green |
| |
| ### eight_superclass |
| - `amber_oriental`: animalic_musk_smoke, aromatic_cool_herbal, balsamic_woody_mossy, floral, fresh_citrus_green_fruit, gourmand_sweet, savory_phenolic, spice |
| - `citrus_cologne`: animalic_musk_smoke, aromatic_cool_herbal, balsamic_woody_mossy, floral, fresh_citrus_green_fruit, gourmand_sweet, savory_phenolic, spice |
| - `floral_woody`: animalic_musk_smoke, aromatic_cool_herbal, balsamic_woody_mossy, floral, fresh_citrus_green_fruit, gourmand_sweet, savory_phenolic, spice |
| - `fougere`: animalic_musk_smoke, aromatic_cool_herbal, balsamic_woody_mossy, floral, fresh_citrus_green_fruit, gourmand_sweet, savory_phenolic, spice |
| - `wildcard`: animalic_musk_smoke, aromatic_cool_herbal, balsamic_woody_mossy, floral, fresh_citrus_green_fruit, gourmand_sweet, savory_phenolic, spice |
| |
| ## Label Density |
| |
| | Axis | avg distinct classes / labelled formula | avg labelled materials / labelled formula | |
| | --- | ---: | ---: | |
| | 26-class | 2.31 | 2.05 | |
| | six_superclass | 1.78 | 2.05 | |
| | eight_superclass | 1.94 | 2.05 | |
| |
| ## Corrected Distributional Metrics |
| |
| | Axis | mean cosine, all labelled | mean cosine, >=3 classes | material-level mean cosine | |
| | --- | ---: | ---: | ---: | |
| | 26-class | 0.905 | 0.858 | 0.999 | |
| | six_superclass | 0.942 | 0.934 | 1.000 | |
| | eight_superclass | 0.926 | 0.900 | 1.000 | |
| |
| Lower cosine means more genre-profile separation. The 26-class axis keeps the strongest separation; collapsing to superclasses weakens it and made presence-Jaccard unusable. `best_grouping` is null unless a grouped axis materially improves on 26-class; the lowest grouped Jaccard is only recorded as `lowest_jaccard_grouping` for audit. |
|
|
| ## Unthresholded Prevalence Distributional Metric |
|
|
| This is the corrected character discrimination test. Vectors retain the raw per-genre prevalence of each class before any active-set thresholding; cosine is reported as distance (`1 - similarity`) and JS divergence is reported in bits. |
|
|
| | Axis | classes | mean cosine distance | mean JS divergence (bits) | |
| | --- | ---: | ---: | ---: | |
| | 26-class | 26 | 0.080 | 0.044 | |
| | six_superclass | 5 | 0.015 | 0.007 | |
| | eight_superclass | 8 | 0.023 | 0.010 | |
|
|
| ### 26-class cosine distance |
|
|
| | Genre | `amber_oriental` | `citrus_cologne` | `floral_woody` | `fougere` | `wildcard` | |
| | --- | ---: | ---: | ---: | ---: | ---: | |
| | `amber_oriental` | 0.000 | 0.043 | 0.027 | 0.007 | 0.162 | |
| | `citrus_cologne` | 0.043 | 0.000 | 0.013 | 0.044 | 0.145 | |
| | `floral_woody` | 0.027 | 0.013 | 0.000 | 0.024 | 0.167 | |
| | `fougere` | 0.007 | 0.044 | 0.024 | 0.000 | 0.170 | |
| | `wildcard` | 0.162 | 0.145 | 0.167 | 0.170 | 0.000 | |
|
|
| ### 26-class JS divergence (bits) |
|
|
| | Genre | `amber_oriental` | `citrus_cologne` | `floral_woody` | `fougere` | `wildcard` | |
| | --- | ---: | ---: | ---: | ---: | ---: | |
| | `amber_oriental` | 0.000 | 0.033 | 0.016 | 0.005 | 0.077 | |
| | `citrus_cologne` | 0.033 | 0.000 | 0.013 | 0.033 | 0.078 | |
| | `floral_woody` | 0.016 | 0.013 | 0.000 | 0.014 | 0.082 | |
| | `fougere` | 0.005 | 0.033 | 0.014 | 0.000 | 0.087 | |
| | `wildcard` | 0.077 | 0.078 | 0.082 | 0.087 | 0.000 | |
|
|
| ### six_superclass cosine distance |
| |
| | Genre | `amber_oriental` | `citrus_cologne` | `floral_woody` | `fougere` | `wildcard` | |
| | --- | ---: | ---: | ---: | ---: | ---: | |
| | `amber_oriental` | 0.000 | 0.002 | 0.003 | 0.001 | 0.030 | |
| | `citrus_cologne` | 0.002 | 0.000 | 0.004 | 0.002 | 0.033 | |
| | `floral_woody` | 0.003 | 0.004 | 0.000 | 0.003 | 0.047 | |
| | `fougere` | 0.001 | 0.002 | 0.003 | 0.000 | 0.026 | |
| | `wildcard` | 0.030 | 0.033 | 0.047 | 0.026 | 0.000 | |
|
|
| ### six_superclass JS divergence (bits) |
| |
| | Genre | `amber_oriental` | `citrus_cologne` | `floral_woody` | `fougere` | `wildcard` | |
| | --- | ---: | ---: | ---: | ---: | ---: | |
| | `amber_oriental` | 0.000 | 0.001 | 0.002 | 0.001 | 0.012 | |
| | `citrus_cologne` | 0.001 | 0.000 | 0.002 | 0.002 | 0.015 | |
| | `floral_woody` | 0.002 | 0.002 | 0.000 | 0.002 | 0.021 | |
| | `fougere` | 0.001 | 0.002 | 0.002 | 0.000 | 0.011 | |
| | `wildcard` | 0.012 | 0.015 | 0.021 | 0.011 | 0.000 | |
|
|
| ### eight_superclass cosine distance |
| |
| | Genre | `amber_oriental` | `citrus_cologne` | `floral_woody` | `fougere` | `wildcard` | |
| | --- | ---: | ---: | ---: | ---: | ---: | |
| | `amber_oriental` | 0.000 | 0.006 | 0.007 | 0.002 | 0.043 | |
| | `citrus_cologne` | 0.006 | 0.000 | 0.003 | 0.008 | 0.047 | |
| | `floral_woody` | 0.007 | 0.003 | 0.000 | 0.010 | 0.062 | |
| | `fougere` | 0.002 | 0.008 | 0.010 | 0.000 | 0.043 | |
| | `wildcard` | 0.043 | 0.047 | 0.062 | 0.043 | 0.000 | |
|
|
| ### eight_superclass JS divergence (bits) |
| |
| | Genre | `amber_oriental` | `citrus_cologne` | `floral_woody` | `fougere` | `wildcard` | |
| | --- | ---: | ---: | ---: | ---: | ---: | |
| | `amber_oriental` | 0.000 | 0.003 | 0.003 | 0.001 | 0.020 | |
| | `citrus_cologne` | 0.003 | 0.000 | 0.002 | 0.004 | 0.020 | |
| | `floral_woody` | 0.003 | 0.002 | 0.000 | 0.005 | 0.026 | |
| | `fougere` | 0.001 | 0.004 | 0.005 | 0.000 | 0.020 | |
| | `wildcard` | 0.020 | 0.020 | 0.026 | 0.020 | 0.000 | |
|
|
| ## Threshold Sensitivity |
|
|
| | Grouping | activity threshold | mean pairwise Jaccard | |
| | --- | ---: | ---: | |
| | six_superclass | 5% | 1.000 | |
| | six_superclass | 10% | 1.000 | |
| | six_superclass | 15% | 0.880 | |
| | eight_superclass | 5% | 1.000 | |
| | eight_superclass | 10% | 0.868 | |
| | eight_superclass | 15% | 0.886 | |
|
|
| Recommendation: **Retract the superclass presence-Jaccard conclusion: the 1.000 is a collapse/presence artifact, not proof that character is dead. Keep corrected distributional metrics as the circuit-breaker. Under unthresholded prevalence vectors, 26-class character shows weak but nonzero profile separation (mean cosine distance 0.080; mean JS divergence 0.044 bits; presence-Jaccard baseline 0.793, best collapsed presence-Jaccard 1.000). Recommended direction: character may resume only at 26-class granularity under distributional and well-labelled filters; do not use superclass presence-Jaccard for go/no-go decisions.** |
|
|
| Character verdict policy: **Character profiles are weakly but genuinely separated at 26-class granularity. Superclass collapse remains non-discriminative and threshold-driven. Character may resume only as a secondary axis gated by this distributional metric; presence-Jaccard must not be used again as the circuit-breaker.** |
|
|
| Substantivity remains confirmed and publishable independent of this character diagnostic. Next human decision: ship substantivity, resume character only under the corrected 26-class distributional circuit-breaker, or park character for a trajectory-proportion pivot. |
|
|
| No new sourcing, label expansion, dataset assembly, training, or upload was performed. |
|
|