Skip to content

fleet hero audit — 2026-06-15

Generated by scripts/audit-heroes.ts (#5 Phase 1). Rubric locked in chat 2026-06-12; see commit footer for the principles.

Summary

  • ✓ clean: 61
  • ⇄ swap proposals: 6
  • ⊘ needs sourcing: 125
  • ✋ accepted overrides: 53

⇄ Swap proposals

Each entry's 01.jpg is currently flagged by the rubric AND an alternate slot in the same gallery scored cleanly. Review then apply (script TBD in Phase 4).

idhero reasonspropose →alt rationale
crew-dragonsubject: matches press releasepress conferencepress kit; category: people-only — no asset visible; score: 2 < threshold 6; vision-rejected: category-people
kourou-ela-2subject names a different entity than kourou-ela-202.jpgscore 6 · zero rubric flags
osiris-rexsubject names a different entity than osiris-rex04.jpgscore 8 · zero rubric flags
spitzersubject: matches awards? ceremonygalastamp
vega-1subject: matches \bon (?:museum )?displayexhibitionplacards?\b; subject names a different entity than vega-1
voskhodsubject names a different entity than voskhod05.jpgscore 8 · zero rubric flags

⊘ Needs sourcing

Hero is flagged by the rubric and no clean alternate exists in the gallery. Either source a better image (agency-first fetcher pattern) or add an explicit entry to static/data/fleet-hero-overrides.json if the current pick is genuinely the canonical option (Soviet-era / crashed-mission cohort).

idreasons
a7lsubject names a different entity than a7l
a7lbcategory: people-only — no asset visible; vision-rejected: category-people; subject names a different entity than a7lb
acescategory: people-only — no asset visible; score: 2 < threshold 6; vision-rejected: category-people; subject names a different entity than aces
akatsukinot-scored
antaresnot-scored
ariane-6subject names a different entity than ariane-6
atlas-lv-3bcategory: diagram — not a hero candidate; vision-rejected: category-diagram; subject names a different entity than atlas-lv-3b
atvcategory: diagram — not a hero candidate; score: 1 < threshold 6; vision-rejected: category-diagram
axemucategory: people-only — no asset visible; score: 4 < threshold 6; vision-rejected: category-people
baikonur-1-5not-scored
baikonur-31-6not-scored
beidousubject: matches mock[-\s]?up
bepicolombocategory: render on FLOWN/ACTIVE asset; vision-rejected: score-below-threshold
blue-moon-mk1subject: matches test[-\s]?stand
cape-canaveral-slc-40not-scored
change-2category: diagram — not a hero candidate; vision-rejected: category-diagram; subject names a different entity than change-2
change-3category: diagram — not a hero candidate; vision-rejected: category-diagram; subject names a different entity than change-3
change-4score: 4 < threshold 6; vision-rejected: score-below-threshold; subject names a different entity than change-4
change-5subject names a different entity than change-5
compton-grosubject names a different entity than compton-gro
dartcategory: people-only — no asset visible; score: 2 < threshold 6; vision-rejected: category-people; subject names a different entity than dart
emucategory: people-only — no asset visible; score: 2 < threshold 6; vision-rejected: category-people
energiaurl: artwork/illustration/render/scale-model in source URL; score: 4 < threshold 6; vision-rejected: score-below-threshold
euclidnot-scored
exomars-tgonot-scored
gaiasubject: matches awards? ceremony
galileo-gnsssubject: matches mock[-\s]?up
glonasssubject: matches mock[-\s]?up
goes-noaacategory: render on FLOWN/ACTIVE asset; vision-rejected: score-below-threshold; subject names a different entity than goes-noaa
gps-gnsscategory: render on FLOWN/ACTIVE asset; vision-rejected: score-below-threshold; subject names a different entity than gps-gnss
hakuto-rsubject: matches mock[-\s]?up
hayabusa-2subject names a different entity than hayabusa-2
hitomisubject names a different entity than hitomi
hopenot-scored
htvsubject names a different entity than htv
htv-xsubject names a different entity than htv-x
hubblesubject names a different entity than hubble
im-1-odysseussubject names a different entity than im-1-odysseus
inmarsatcategory: render on FLOWN/ACTIVE asset; score: 5 < threshold 6; vision-rejected: score-below-threshold; subject names a different entity than inmarsat
iridium-nextsubject: matches \bon (?:museum )?display
isssubject names a different entity than iss
jiuquan-slc-43not-scored
juicesubject names a different entity than juice
jwstcategory: people-only — no asset visible; score: 2 < threshold 6; vision-rejected: category-people; subject names a different entity than jwst
kourou-ela-3not-scored
kourou-ela-4not-scored
krechet-94subject names a different entity than krechet-94
landsatsubject names a different entity than landsat
lc-39anot-scored
lc-39bnot-scored
luna-16subject: matches press release
luna-9subject: matches awards? ceremony
lunokhod-1subject names a different entity than lunokhod-1
lunokhod-2category: diagram — not a hero candidate; score: 3 < threshold 6; vision-rejected: category-diagram
mangalyaancategory: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram; subject names a different entity than mangalyaan
mars-2vision-rejected: score-below-threshold
mars-3vision-rejected: score-below-threshold
mavennot-scored
mercury-capsulesubject: matches press release
messengerscore: 4 < threshold 6; vision-rejected: score-below-threshold
mirsubject names a different entity than mir
molniyascore: 5 < threshold 6; subject names a different entity than molniya
n1subject names a different entity than n1
o3b-mpowerscore: 4 < threshold 6; vision-rejected: score-below-threshold
onewebscore: 3 < threshold 6; vision-rejected: score-below-threshold; subject names a different entity than oneweb
orioncategory: render on FLOWN/ACTIVE asset; vision-rejected: score-below-threshold
phoenixsubject names a different entity than phoenix
planet-labssubject names a different entity than planet-labs
plesetsk-43not-scored
progress-msubject names a different entity than progress-m
r-7-vostokvision-rejected: score-below-threshold
salyut-6subject: matches mock[-\s]?up
salyut-7url: artwork/illustration/render/scale-model in source URL; category: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram; subject names a different entity than salyut-7
schiaparelliscore: 4 < threshold 6; vision-rejected: score-below-threshold; subject names a different entity than schiaparelli
sentinel-copernicussubject names a different entity than sentinel-copernicus
shenzhousubject names a different entity than shenzhou
shenzhou-ivacategory: people-only — no asset visible; score: 2 < threshold 6; vision-rejected: category-people
skylabcategory: people-only — no asset visible; score: 3 < threshold 6; vision-rejected: category-people; subject names a different entity than skylab
slimvision-rejected: score-below-threshold
sls-block-1subject names a different entity than sls-block-1
soyuz-2not-scored
soyuz-7k-okurl: artwork/illustration/render/scale-model in source URL; category: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram
soyuz-mssubject names a different entity than soyuz-ms
soyuz-tsubject: matches awards? ceremony
soyuz-tmvision-rejected: score-below-threshold; subject names a different entity than soyuz-tm
spektr-rgsubject: matches mock[-\s]?up
sriharikota-slpnot-scored
starbase-orbital-anot-scored
starlinercategory: diagram — not a hero candidate; score: 1 < threshold 6; vision-rejected: category-diagram
starliner-suitcategory: people-only — no asset visible; score: 2 < threshold 6; vision-rejected: category-people
starshipscore: 2 < threshold 6; vision-rejected: score-below-threshold
tanegashima-yoshinobunot-scored
tesssubject: matches mock[-\s]?up
tiangong-1subject names a different entity than tiangong-1
tiangong-2url: artwork/illustration/render/scale-model in source URL; score: 4 < threshold 6; vision-rejected: score-below-threshold
tianwen-1not-scored
tianzhousubject names a different entity than tianzhou
tundra-siriussubject: matches \bon (?:museum )?display
vandenberg-slc-4enot-scored
venera-7subject names a different entity than venera-7
vikram-cy3subject: matches mock[-\s]?up
vostoksubject: matches awards? ceremony
vulcannot-scored
wenchang-lc-101not-scored
xichang-lc-2category: diagram — not a hero candidate; score: 4 < threshold 6; vision-rejected: category-diagram
xichang-lc-3url: text/logo/PDF/infographic in source URL; category: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram; subject names a different entity than xichang-lc-3
xmm-newtoncategory: render on FLOWN/ACTIVE asset; vision-rejected: score-below-threshold; subject names a different entity than xmm-newton
luna10subject: matches \bon (?:museum )?display
luna24subject: matches \bon (?:museum )?display
lunar-prospectorvision-rejected: score-below-threshold; subject names a different entity than lunar-prospector
change1score: 4 < threshold 6; vision-rejected: score-below-threshold; subject names a different entity than change1
change6subject: matches mock[-\s]?up
viking2-landernot-scored
mars3-orbitersubject names a different entity than mars3-orbiter
mars6subject: matches \bon (?:museum )?display
beagle2not-scored
exomars-rosalind-franklinsubject: matches mock[-\s]?up
salyut-2category: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram; subject names a different entity than salyut-2
salyut-3url: artwork/illustration/render/scale-model in source URL; category: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram
lc-34subject names a different entity than lc-34
mars2-orbitersubject: matches awards? ceremony
lc-14category: diagram — not a hero candidate; score: 4 < threshold 6; vision-rejected: category-diagram; subject names a different entity than lc-14
vostok-ksubject: matches \bon (?:museum )?display
voskhod-11a57category: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram
cape-canaveral-lc-36bnot-scored

✋ Accepted overrides

idreason
apollo-csm-block-iisubject names a different entity than apollo-csm-block-ii
ariane-1score: 4 < threshold 6; vision-rejected: score-below-threshold; subject names a different entity than ariane-1
atlantissubject names a different entity than atlantis
atlas-slv-3dsubject names a different entity than atlas-slv-3d
beresheetcategory: diagram — not a hero candidate; score: 5 < threshold 6; vision-rejected: category-diagram; subject names a different entity than beresheet
buransubject names a different entity than buran
cargo-dragon-v1subject names a different entity than cargo-dragon-v1
cassinisubject names a different entity than cassini
chandrasubject names a different entity than chandra
clementinevision-rejected: score-below-threshold; subject names a different entity than clementine
columbiasubject names a different entity than columbia
crew-dragon-ivacategory: people-only — no asset visible; score: 3 < threshold 6; vision-rejected: category-people
dawnvision-rejected: score-below-threshold
discoverysubject names a different entity than discovery
endeavoursubject names a different entity than endeavour
falcon-9category: people-only — no asset visible; score: 2 < threshold 6; vision-rejected: category-people
feitiancategory: people-only — no asset visible; vision-rejected: category-people; subject names a different entity than feitian
galileocategory: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram
geminicategory: people-only — no asset visible; vision-rejected: category-people
junocategory: render on FLOWN/ACTIVE asset; score: 4 < threshold 6; vision-rejected: score-below-threshold
long-march-3bcategory: diagram — not a hero candidate; score: 4 < threshold 6; vision-rejected: category-diagram
lvm3subject names a different entity than lvm3
magellansubject names a different entity than magellan
mars-expressscore: 2 < threshold 6; vision-rejected: score-below-threshold
mars-polar-landerscore: 4 < threshold 6; vision-rejected: score-below-threshold; subject names a different entity than mars-polar-lander
mrosubject names a different entity than mro
new-shepardcategory: render on FLOWN/ACTIVE asset; vision-rejected: score-below-threshold; subject names a different entity than new-shepard
opportunityscore: 3 < threshold 6; vision-rejected: score-below-threshold; subject names a different entity than opportunity
phobos-2not-scored
pioneer-10score: 4 < threshold 6; vision-rejected: score-below-threshold; subject names a different entity than pioneer-10
pioneer-11subject names a different entity than pioneer-11
pragyancategory: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram; subject names a different entity than pragyan
progress-mssubject names a different entity than progress-ms
rosettavision-rejected: score-below-threshold; subject names a different entity than rosetta
saturn-ibcategory: diagram — not a hero candidate; score: 3 < threshold 6; vision-rejected: category-diagram
saturn-vcategory: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram
spiritcategory: diagram — not a hero candidate; score: 3 < threshold 6; vision-rejected: category-diagram; subject names a different entity than spirit
taiyuan-lc-9url: text/logo/PDF/infographic in source URL; score: 1 < threshold 6; vision-rejected: score-below-threshold
vega-2score: 5 < threshold 6
viking-1subject names a different entity than viking-1
voyager-2subject names a different entity than voyager-2
x37bsubject names a different entity than x37b
yutucategory: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram; subject names a different entity than yutu
yutu-2subject names a different entity than yutu-2
smart-1url: artwork/illustration/render/scale-model in source URL; vision-rejected: score-below-threshold; subject names a different entity than smart-1
chandrayaan1category: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram
lrocategory: render on FLOWN/ACTIVE asset; vision-rejected: score-below-threshold; subject names a different entity than lro
mars-odysseycategory: render on FLOWN/ACTIVE asset; vision-rejected: score-below-threshold
lunar-orbiter-5subject names a different entity than lunar-orbiter-5
salyut-4category: diagram — not a hero candidate; score: 2 < threshold 6; vision-rejected: category-diagram
salyut-5score: 3 < threshold 6; vision-rejected: score-below-threshold; subject names a different entity than salyut-5
lc-5subject names a different entity than lc-5
apollo-csm-block-icategory: people-only — no asset visible; score: 4 < threshold 6; vision-rejected: category-people; subject names a different entity than apollo-csm-block-i

✓ Clean

61 entries currently pass the rubric. Not enumerated here — they're the silent majority. Run with --list-clean if you want them.

Orrery — architecture documentation · MIT · No tracking