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.