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