File size: 8,254 Bytes
46e1263 c35f284 28a2e34 413fff1 c35f284 46e1263 c35f284 413fff1 c35f284 f46c540 c35f284 f46c540 c35f284 28a2e34 c35f284 46e1263 c35f284 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | # 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.
|