The Anomalousness Index Rubric
Open. Auditable. Recomputable. Six weighted components, every enumerated value listed, exact integer score for each. The math is fully visible.
View raw JSON Methodology walkthroughFormula: score = sum(component_value × component_weight), clamped to 0-100. Weights sum to 1.00.
The six components
Sensor quality
Weight 0.25JSON key: sensor_quality
| Choice | Raw value (JSON) | Score |
|---|---|---|
| Multi-sensor military | multi_sensor_military | 100 |
| Single-sensor military | single_sensor_military | 80 |
| Civilian aviation | civilian_aviation | 65 |
| Photographic | photographic | 55 |
| Eyewitness only | eyewitness_only | 30 |
| Sketch only | sketch_only | 15 |
Witness credibility
Weight 0.2JSON key: witness_credibility
| Choice | Raw value (JSON) | Score |
|---|---|---|
| Astronaut | astronaut | 95 |
| Trained aviator | trained_aviator | 90 |
| Federal agent | federal_agent | 90 |
| Military personnel | military_personnel | 80 |
| Law enforcement | law_enforcement | 70 |
| Credentialed civilian | civilian_credentialed | 50 |
| Anonymous civilian | civilian_anonymous | 25 |
Corroboration
Weight 0.2JSON key: corroboration
| Choice | Raw value (JSON) | Score |
|---|---|---|
| Multi-witness, multi-instrument | multi_witness_multi_instrument | 100 |
| Multi-witness, single-instrument | multi_witness_single_instrument | 80 |
| Single witness with instrument | single_witness_instrument | 60 |
| Multi-witness, no instrument | multi_witness_no_instrument | 50 |
| Single witness only | single_witness_only | 25 |
Kinematic anomaly
Weight 0.15JSON key: kinematic_anomaly
| Choice | Raw value (JSON) | Score |
|---|---|---|
| Physically impossible for known craft | physically_impossible_for_known_craft | 100 |
| Edge of envelope | edge_of_envelope | 70 |
| Unusual but explainable | unusual_but_explainable | 40 |
| No kinematic data | no_kinematic_data | 30 |
| Consistent with known craft | consistent_with_known_craft | 10 |
Mundane explanation availability
Weight 0.1JSON key: mundane_explanation_available
| Choice | Raw value (JSON) | Score |
|---|---|---|
| No plausible mundane | no_plausible_mundane | 100 |
| Weak mundane candidate | weak_mundane_candidate | 70 |
| Plausible mundane | plausible_mundane | 40 |
| Strong mundane candidate | strong_mundane_candidate | 15 |
| Resolved mundane | resolved_mundane | 0 |
Official disposition
Weight 0.1JSON key: official_disposition
| Choice | Raw value (JSON) | Score |
|---|---|---|
| Open after review | open_after_review | 90 |
| Unresolved, no review | unresolved_no_review | 60 |
| Partial resolution | partial_resolution | 40 |
| Resolved conventional | resolved_conventional | 5 |
Worked examples (from presets)
These are example computations from the rubric's presets field. Useful for sanity-checking your own implementation against ours.
Worked example: apollo 12 lunar anomalies
| Component | Choice | Score contribution |
|---|---|---|
| Sensor quality | Photographic | 55 × 0.25 = 13.75 |
| Witness credibility | Astronaut | 95 × 0.2 = 19.0 |
| Corroboration | Multi-witness, single-instrument | 80 × 0.2 = 16.0 |
| Kinematic anomaly | No kinematic data | 30 × 0.15 = 4.5 |
| Mundane explanation availability | Weak mundane candidate | 70 × 0.1 = 7.0 |
| Official disposition | Unresolved, no review | 60 × 0.1 = 6.0 |
| Total | 66 | |
Worked example: greece 2023 right angle
| Component | Choice | Score contribution |
|---|---|---|
| Sensor quality | Single-sensor military | 80 × 0.25 = 20.0 |
| Witness credibility | Military personnel | 80 × 0.2 = 16.0 |
| Corroboration | Multi-witness, single-instrument | 80 × 0.2 = 16.0 |
| Kinematic anomaly | Physically impossible for known craft | 100 × 0.15 = 15.0 |
| Mundane explanation availability | No plausible mundane | 100 × 0.1 = 10.0 |
| Official disposition | Open after review | 90 × 0.1 = 9.0 |
| Total | 86 | |
Recompute every score yourself
Every file's score.components object lists the choice for each component. Apply the rubric above. Multiply, sum, round. Compare to the published score.value. They will match within rounding error. If they don't, the rubric is the source of truth, not the displayed value.
- Download the rubric: /data/scoring-rubric.json
- Download the manifest: /generated/api/files.json
- For each file, look up the
score.componentsvalues - Multiply each by the weight, sum across all six
- Compare to
score.value