Snapshot: 23 September 2026, version 2026-09-23.v1.
What is mapped
The supplied catalogue research reports 4,939 entries. The prepared snapshot contains 2,020 entries spanning 1583–2001; the other 2,919 catalogue entries have no map position. Since version 1.1 they are still part of the atlas: they count up with the clock (“+ N with no map position”), appear in Explore records and busiest-day views, and each shows why it has no position. There are 449 distinct supplied coordinate pairs. These are official named-feature anchors, not surveyed sinking coordinates. Shared places are aggregated without jitter or invented positions. From 2002 to 2026 the atlas also shows 147 vessel losses reported to the Transportation Safety Board of Canada, 125 of them on the map (see “2002 to 2026: losses reported to the TSB”).
The original research, timeline and sources are preserved in reference/. The supplied wrecks.json remains unchanged in starter/. The derived snapshot embeds its SHA-256 digest. These counts describe this snapshot, not all Nova Scotia shipwrecks or an immutable catalogue total.
Original join and exclusions
The supplied prototype normalizes a wreck location's first comma-delimited phrase (lowercase, punctuation removal, “St.” normalization). It tries a small set of leading location prefixes, matches official GeoNAMES text, and uses a county qualifier to resolve repeated names where possible. It accepts candidates with one distinct coordinate rounded to three decimals, then retains the first original coordinate. Thus “unique” is the prototype's rounded-coordinate criterion, not proof of exact feature identity. No fuzzy matching or distance/bearing conversion is performed here.
Unknown, at-sea, excluded generic names, unmatched and unresolved ambiguous locations are not assigned positions. Missing/unusable years are also excluded by the prototype.
Reason ledger (1.1). scripts/join.mjs is the prototype join, unchanged, extended only to record why each excluded row fails. Run over the retained full catalogue (reference/catalogue-source.json, 4,939 rows, downloaded 23 September 2026) and the retained GeoNAMES snapshot, it reproduces all 2,020 plotted records exactly (name, date, event, wording and position to five decimals); scripts/prepare-catalogue.mjs refuses to write if it does not. Every other row gets one reason:
- Several places share the name (1,308). The first phrase matched GeoNAMES, but more than one position remained after the county qualifier.
- No official place name (1,226). No candidate phrase matched a GeoNAMES name, for example “Halifax approaches” or “4 miles W of Yarmouth lighthouse”.
- General sea or unknown (374). The phrase is on the prototype's exclusion list, for example “At sea”, “Unknown” or “Atlantic Ocean”.
- No usable date (9) and no location (2). The 9 undated rows have no place on the timeline; they are listed in Explore records only at the end of the run.
The result is public/data/unplaced-2026-09-23.v1.json, which records the source digest. No excluded row is given a position.
2002 to 2026: losses reported to the TSB
The museum catalogue ends in 2001, and only 4 of its records fall after 1990. From 2002 the atlas adds vessels lost in Nova Scotia waters, as reported to the Transportation Safety Board of Canada (TSB).
- Source. TSB, Marine occurrence data from January 1995 to present (MARSIS), Occurrence and Vessel tables, released 15 September 2026 with data to 13 September 2026, Open Government Licence – Canada: https://www.tsb.gc.ca/eng/stats/marine/data-6.html. The TSB server refuses scripts, so the two tables (97 MB and 78 MB) were saved from that page with a browser into
.cache/tsb/(not in git).scripts/prepare-recent.mjsrecords their SHA-256 digests. - Rule. A vessel counts when the TSB records it as a total loss or a constructive total loss, or its accident type is “SANK” or “MISSING (the ship is)”. The occurrence must be dated 2002 or later and lie in Nova Scotia: the TSB province is Nova Scotia, or the province is blank and the position is inside 66.4–57.8° W and 42.3–45.8° N, the sea south and east of Nova Scotia out past Sable Island. The TSB keeps one row per event, so each vessel counts once per occurrence.
- Result. 147 vessels in 147 occurrences, from 10 April 2002 to 18 June 2026: 135 fishing vessels and 12 others (barges, service ships, a ferry, a passenger vessel, a sailboat and a research vessel). The TSB records 145 of them under the Canadian flag and 1 under Japan's; 1 has no flag. The rows behind every record are kept in
reference/tsb-losses-source.json, and a test checks each against the rule. - Positions. These are the positions reported to the TSB, sometimes marked as estimated. They are drawn as small diamonds, a different symbol from the named-place lights, and are not surveyed wreck sites. 22 positions lie outside the area that every map size shows (most on Georges Bank and Browns Bank), so they have no light; they are in the log and Explore records with that reason, and still count up with the clock.
- Text. Names are changed from capitals to title case, and “UNKNOWN” names read “Name unknown”. Event names are shortened (for example “SANK - Flooding” becomes “Sank (flooding)”), with “total loss” added when the TSB records it. The location wording and the TSB's own summary are shown as the TSB wrote them, with the occurrence number and a link to the data.
- Keeping it current. The list is
public/data/recent.v1.json, one stable file.npm run update:recentrebuilds it from each new TSB release and lists what changed. The clock's last year is the year of the newest TSB occurrence date, so the run stretches to a new year by itself. Tests check the rule, not the counts, so they pass as the list grows. - Limits. The TSB records reportable occurrences; some losses of small craft may never have been reported. Its data starts in 1995, but the atlas uses it only from 2002, so it does not double-count the museum's last records.
Busiest days
Busiest days count every catalogue record, placed or not, by its exact source date. They count the museum catalogue only. January 1 and the first of each month are left out: the 1st appears 374 times against an average of 139 for other days, so many such dates may stand for a year or a month only. The five busiest remaining days are 24 August 1873 (54 records, 28 on the map), 29 October 1879 (18), 21 August 1873 (17), 13 October 1891 (17) and 4 September 1870 (14). Day-level precision remains unverified, so these are counts of recorded dates, not confirmed single storms.
Specificity refinement
scripts/prepare-data.mjs enriches every supplied record with the official feature name/type from a separately retained GeoNAMES snapshot, using the supplied coordinate rounded to five decimals and normalized original first phrase. All 2,020 records found a feature in this snapshot. Coordinates and original wording are never changed.
- Small named place (513 records): harbour/cove names, capes, shoals, beaches and navigation features without recognized offset language. Small dim light; still approximate.
- Vicinity (814): settlements, other conservative/unclassified matches, and local features with recognized distance, direction, entrance, offshore or nearby qualifiers. Hollow small ring.
- Broad area (693): bays except harbour/cove names, islands, lakes, sea/geographic features and provinces; explicit conservative treatment for Sable Island, Cape Breton Island, Bay of Fundy, Northumberland Strait, Minas Basin and Bras d’Or Lake. Dashed, diffuse halo with no exact-point core.
These are transparent heuristic display classes, not surveyed precision estimates. A small harbour may still be extensive. “Broad” intentionally includes islands whose size varies. A complete manual gazetteer audit remains future work. reference/classification-review.csv lists every record and decision. Symbols have fixed screen-space sizes; no halo purports to define an actual area, distance or confidence interval. Groups use the most conservative class among their records. Individual detail views retain each record's own class.
The complete original location text is shown, including distances, bearings, entrances and uncertainty. Qualifiers are not turned into positions. A selected marker opens every visible record at that anchor; a hit area containing multiple anchors opens all those nearby groups. The accessible record browser provides the same records without requiring map interaction. Lists are paginated, searchable and counted.
Coastline correction
The starter's Statistics Canada Digital Boundary File contains coastal water areas, so it is unsuitable as a shoreline. This build replaces it with the 2021 Cartographic Boundary File, which excludes coastal waters. Nova Scotia, New Brunswick and Prince Edward Island supply geographic context. Modern boundaries are not period-accurate historical shores or navigational charts.
Source: https://geo.statcan.gc.ca/geo_wa/rest/services/2021/Cartographic_boundary_files/MapServer/0
Download query: where=PRUID IN ('12','13','11'), outFields=PRUID,PRNAME, outSR=4326, maxAllowableOffset=0.0006, geometryPrecision=5, f=geojson. The server generalizes by approximately 0.0006 degrees for screen use. The retained response is reference/coastline-source.geojson; the browser uses its identical versioned copy. License: Open Government Licence – Canada, as stated in service metadata.
Guide: https://www150.statcan.gc.ca/n1/pub/92-160-g/92-160-g2021001-eng.htm
All land and points share a spherical Lambert conformal conic projection, standard parallels 44° and 46° N, central meridian 63° W, latitude of origin 45° N. A single uniform scale fits the viewport, retaining local geographic proportions; no independent x/y stretching. Sable Island and all supplied anchors are included in fitting. It is a regional illustrative map, not survey-grade geodesy. No terrain or bathymetry is invented.
Neighbouring land
So the region does not float alone, the map also draws Maine, New Hampshire and Massachusetts, and Quebec and Newfoundland and Labrador. They are context only: no records sit there, and the map's fit and projection are unchanged.
- United States. U.S. Census Bureau, TIGERweb Generalized_ACS2023, “States 500K” (layer 7), January 1, 2023 vintage, a shoreline-clipped cartographic boundary. The service credits “Source: U.S. Census Bureau”.
- Quebec and Newfoundland and Labrador. Statistics Canada, the same 2021 Cartographic Boundary service as the coastline. The service fails on a combined request for these two provinces, so they are requested one at a time.
Both are requested with maxAllowableOffset=0.002 (coarser than the 0.0006 used for the three atlas provinces), outSR=4326 and geometryPrecision=5 by scripts/fetch-context.mjs, and retained as reference/us-states-source.geojson and reference/context-provinces-source.geojson. scripts/prepare-context.mjs clips them to 72° W–54° W and 40.5° N–50.5° N, far beyond any view so the cut edges never show, drops islets under about 300 m across, and writes public/data/context-2026-09-23.v1.geojson. Modern boundaries are shown, as for the Canadian provinces.
Map overlays
The map can draw real land shape under the lights. A switch under the legend picks one of four styles: Plain, Relief, Relief + sea floor (the default) and Satellite. The browser remembers the choice. Overlays change only the still base map; the lights, labels, event marker and arrow draw on top as before.
- Elevation. NOAA National Centers for Environmental Information, ETOPO 2022 Global Relief Model, 30 arc-second surface elevation (cells about 0.65 km east–west and 0.93 km north–south), public domain, doi:10.25921/fd45-gt74. One OPeNDAP subset of 960 × 1,920 cells, 41.5–49.5° N and 71–55° W, downloaded 23 September 2026 by
scripts/fetch-overlays.mjs. - Relief. Horn's method shades the land as if lit from the north-west, 45° above the horizon. Heights are stretched 12 times because the hills are low: the highest cell in Cape Breton is 524 m. Higher ground is also a little lighter. The relief is clipped to the atlas's own coastline, so the two always line up.
- Sea floor. Water shallower than 60 m is a little lighter, fading out by 300 m, and the sea floor is shaded with depth stretched 10 times. Banks such as Sable Island Bank and channels such as the Laurentian Channel show. It is context, not a navigation chart.
- Satellite. NASA Global Imagery Browse Services, Blue Marble Next Generation with shaded relief and bathymetry, one 1,920 × 960 image in latitude and longitude, downloaded 23 September 2026. NASA imagery is public domain. Colours are darkened to 52% and mixed with the atlas navy, so the lights stay the brightest thing on the map.
- Projection.
scripts/prepare-overlays.mjsre-projects all three into the atlas's own Lambert projection at about 1.2 pixels per kilometre (1,600 × 1,103 pixels). It writespublic/data/overlay-relief-2026-09-23.v1.png,overlay-seafloor-…andoverlay-satellite-…, with the indexoverlays-2026-09-23.v1.json. A test recomputes the image area with the app's own projection and checks that every map size stays inside it. - Cost. Relief 1.8 MB, sea floor 1.2 MB, satellite 1.1 MB, all local. The satellite image loads only when chosen. Each is drawn once per resize into the cached base layer, so playback is unchanged. If an image is missing, the map stays plain.
Time and light
Historical year = 1583 + 443 × elapsed / 20000, about 45 ms a year. Membership uses source year, not day. There are 274 January 1 source dates among plotted entries; day-level precision is unverified, not asserted to be a known placeholder. Details label the original date field accordingly.
Playback uses a monotonic wall-clock anchor and clamps at exactly 20,000 ms; the last rendered frame arrives on the next browser animation frame. There is no delta cap, easing of historical time or automatic looping. Pausing preserves fractional elapsed time. Seeking pauses and derives membership afresh. Each arrival at a place starts a 650 ms pulse. An arrival during a running pulse joins it instead of restarting it, so busy places such as Sable Island show whole pings rather than a frozen first frame. Coincident arrivals aggregate and intensity is capped. A broad-area ping brightens its halo and sweeps 14 px past the halo's edge. A new arrival shows red for the first half of its ping, about 0.3 s, then fades back to the usual gold. New names in the wreck log glow gold for the same moment; only the map turns red. Dim marks persist. Reduced-motion users initially see the complete map; intentional playback changes the year without pulses.
Catalogue density is affected by collection and matching coverage. It is not a verified change in loss rates. The clock ends in 2026, the snapshot year; the last TSB record is from June 2026.
Halifax Explosion marker
Version 1.1 adds one sourced editorial marker, stored separately in public/data/events-2026-09-23.v1.json. It adds no record: the plotted total stays 2,020 of 4,939.
- Records. The marker points at the 7 plotted records dated 1917-12-06 at the Halifax Harbour named place: Curaca, Erg, Lola R., Mont Blanc, Ragus, St. Bernard and Stella Maris (
ns-1538tons-1542,ns-1544,ns-1545). Imo is in the full catalogue (“Collision”, “The Narrows, Halifax Harbour”) but not in the plotted subset: the prototype join found 28 GeoNAMES features named The Narrows, 6 of them in Halifax County, and could not choose one. The event view names Imo without adding it. The official rows for that day are retained inreference/catalogue-1917-12-06.json. - Position. This is one reviewed exception to the automatic join. The marker sits at the GeoNAMES point for The Narrows (Channel, Halifax County, 44.67622 N, 63.60773 W), chosen from the catalogue's own wording for Imo. It is a named-feature anchor, not a wreck or blast coordinate. The Halifax reference label moves left of its point to make room.
- Echo. The echo is the atlas's only symbol drawn at a real ground distance. A Nova Scotia Archives record (Archibald MacMechan fonds, MG 1 vol. 2124 no. 305) is titled “Halifax Explosion heard at Black Brook, Port Morien, C.B., 205 miles Distant”. The GeoNAMES point for Black Brook (Unincorporated area, Cape Breton County) is 329.6 km (204.8 miles) from the marker on a spherical Earth. The echo is that great-circle distance, drawn through the atlas projection. It grows at a steady rate, touches Black Brook and fades. It shows how far one report reached; it does not claim that everyone inside it heard the blast. Other published accounts say the blast was felt in Cape Breton and Prince Edward Island; they describe feeling, not hearing, and are not used.
- Time. The marker arrives with 1917, at 15.08 s. Its three shock rings last 1.6 s. The echo reaches Black Brook 2.2 s after arrival and is gone after 3.7 s, before the run ends. Its label carries the year because the counter has moved on. Reduced motion, pausing and seeking draw the settled marker without rings or echo. On hover, tap or in the event view, the reach returns as a dotted ring.
- Text. Casualty figures follow the Maritime Museum of the Atlantic: more than 1,700 killed and at least 9,000 injured. Parks Canada gives some 2,000 deaths; published figures differ.
- Access. A legend button opens the same event view as the map marker. A tap inside the marker opens the event first; its “All records near this marker” button opens every record light drawn around it.
Wreck log and flags
The wreck log beside the map lists every dated catalogue record by name as the clock reaches its year, newest first. It is drawn from the same clock as the lights, so play, pause, seeking and replay keep it in step. Within a year, records follow their source dates. The log shows the newest 100 names; during the busiest decades hundreds arrive in a second, so it is readable when paused. The catalogue's trailing " - year" is dropped from names, and the six names recorded only as “unknown -” read “Name unknown”.
The open catalogue has no flag or nationality field, and only 5 of 4,939 rows give a port of registry. A ship's country therefore comes from one of these, in this order:
- A named source.
public/data/flags-2026-09-23.v1.jsonlists 10 ships whose registry a source states: Chameau (1725), HMS Tribune (1797), SS Atlantic (1873), City Of Monticello (1900), Titanic (1912), Mont Blanc and Imo (1917), HMS Clayoquot (1944), HMS British Freedom and HMCS Esquimalt (1945). Each cites the museum's Marine Heritage Database page for that ship, the database the open catalogue came from. The live database was retired in early 2024, so the links go to the Internet Archive copies of 24 November 2006. Only the “Registered at” field is used; the pages are Crown copyright, so no other text is copied. Parks Canada also names Imo as Norwegian and Mont-Blanc as French. - The ship's archived museum page. The “Registered at” port on the record's page (see “Ship facts from the museum's pages” below). The date decides what the port stands for: a Nova Scotia, New Brunswick, Quebec or Ontario port was British before 1871 (the first Canadian flag) and Canadian from then; Prince Edward Island joined Canada on 1 July 1873, British Columbia on 20 July 1871 and Newfoundland on 31 March 1949, and each was British before. An American port was British before 4 July 1776; there is no picture from then until the first Stars and Stripes on 14 June 1777. British colonies (Barbados, Bermuda, Jamaica, the Bahamas, British Honduras, the Cayman Islands) are British until each one's independence. Ireland is British before 6 December 1922. “Royal Canadian Navy” counts as Canada. No flag is shown where the museum marks the registry with “?” or “(?)”, where a one-word port could be in two countries (Liverpool, Annapolis, Dorchester, Stockton, Bay City, Rock), where the field holds a note instead of a port (Stella Maris, 1917), for a Maine port filed under Canada, or for the 20 countries the atlas has no pictures for yet: 59 ships, most of them Italian (10), Greek (7), Portuguese (6), Liberian (6), Swedish (5), Panamanian (4) and Danish (4). The museum files Drammen, in Buskerud, under Germany; it is in Norway, and the atlas says so.
- A navy name prefix. Otherwise, HMS means a British ship and HMCS a Canadian one (29 and 7 names).
Checking the sources found one error in the catalogue: “HMS Clayoquot - 1944” was a Canadian navy minesweeper. The museum's page gives its registry as “Canadian Navy, Canada” and calls it HMCS Clayoquot. It shows the Canadian flag, and its details say why. The sourced list and the name prefixes alone give 31 British, 8 Canadian, 2 French and 1 Norwegian ship; the museum pages add the rest. No flag is guessed from a name, a port of build or a voyage.
The picture is the country's national flag in use on the wreck date, not always the ensign the ship flew. For example, Royal Canadian Navy ships flew the White Ensign at the stern from 1911 to 1965, and French merchant ships flew a blue flag with a white cross until 1765. The source often uses today's country names (“United Kingdom” for a 1797 frigate), so the date decides the picture:
- British: England before 1 May 1707, when the Acts of Union took effect; Great Britain from then; the United Kingdom from 1 January 1801. A Scottish ship before 1707 would need the Saltire; none is in the list.
- French: the Kingdom of France before 15 February 1794; the tricolour from then; the white flag again from 13 April 1814; the tricolour from 9 March 1815; white from 7 July 1815; the tricolour from 1 August 1830. The 1814 and 1815 dates come from the Société française de vexillologie, a flag society, not from an official source. From 1790 to 1794 ships flew a white ensign with a tricolour canton, which the atlas does not draw.
- Canadian: the Canadian Red Ensign from 1871, when Canadian Heritage dates its first unofficial use (it became the flag of Canadian-registered merchant ships on 2 February 1892); the National Flag of Canada from 15 February 1965. There is no Canadian flag before 1871.
- Norwegian: the flag with the union mark of Norway and Sweden from 1845, and the plain Norwegian flag from 15 December 1899. The mark was added during 1844; the atlas starts it on 1 January 1845 because the day is not confirmed, and no Norwegian wreck falls in 1844.
- United States: the flag with the number of stars and stripes in force on the date, from 13 stars (14 June 1777) to 50 (4 July 1960). From 1818 a new star counts from the 4 July after a state joins. Star layouts were not fixed by law before 1912, so the pictures use even rows of stars.
- German: the black, white and red flag of the North German Confederation from 1 July 1867 and of the German Empire from 1 January 1871. There is no picture from 14 August 1919, when the Weimar constitution took effect; every German wreck in the pages is from 1870 to 1913.
The flags are simple drawings in public/flags/, one file per flag, each with its name in a title. The log, the record details, the Halifax Explosion view and the map labels use the same files. On maps narrower than 600 px the ship line under the Halifax Explosion label is left out, because it crowds the Titanic label; the log and the event view still show both flags.
Ship facts from the museum's pages
The museum's live Marine Heritage Database was retired in early 2024. The Internet Archive kept its detail page for every one of the 4,939 records, almost all captured in November 2006. npm run fetch:registry (scripts/fetch-registry.mjs) downloads them one at a time, 4 seconds apart, into .cache/mma-archive/ (not in git). reference/mma-archive-manifest.csv records each page's capture time and SHA-256, and the next step refuses a page that does not match it.
scripts/prepare-registry.mjs reads the pages and writes public/data/registry.v1.json:
- Result. All 4,939 pages were downloaded on 24 and 25 September 2026, and 4,932 match a catalogue record. The 7 that do not are six pages named only “unknown” and “HMS Tilbury - 1758”, which the catalogue lists as “HMS Tilbury - 1757”. With the pages, 4,341 of the atlas's 5,086 records show a flag, up from 188. Two pages (records 4338 and 4725) end early every time the archive serves them; all their fields arrive, so they are kept and listed in
reference/mma-archive-cut-short.csv. After about 4,300 pages the archive began to refuse some connections, so the last 267 pages were fetched 15 seconds apart. - Matching. A page belongs to the catalogue record with the same name and date. Names are compared with one kind of apostrophe, because the pages use ’ where the catalogue has '. Where the dates differ and only one record has the name, the name decides, and the record says so: eight “Flora” ships carry 1941 dates in the open catalogue but 1885 to 1911 on their pages, “Montague - 1760” differs by month and “Saladin - 1844” by the day. Where two identical records share a name and date, the pages are paired in order. Pages named only “unknown” are not matched.
- Facts kept. Ship type, rig, propulsion, hull, tonnage, size, what happened, cause, cargo, voyage, lives lost, port of registry, where and when built, official number, signal letters (from the page's code flags), and the short remarks and construction notes. These are facts and short notes. The museum's written descriptions and stories are Crown copyright, so they are not copied: the record says when the page has one, and links to it.
- Where they show. The record details list the facts under the catalogue's own fields, with a link to the archived page. The file loads after the map starts, so the map never waits for it.
- Filters. Two rows of buttons under the map: Cause (weather, fog, fire, ice, collision, war) and Ship (sail, steam, motor). Cause reads the page's cause and what happened: “stress of weather”, wind and lightning are weather; any cause naming fog is fog; fire, explosion or “burnt” is fire; ice is ice; a collision is a collision; enemy action is war. A record can be in more than one. Of the 4,932 matched pages, 1,920 name a cause the filter can use: weather 1,010, fire 389, fog 296, collision 148, ice 75 and war 36. Ship reads type, rig and propulsion together: steam wins over sail (an auxiliary steamer is steam), motor or diesel is motor, a rig name is sail; 4,008 pages give one of the three. TSB records are modern vessels: motor, a sailboat is sail, and a barge is neither. With a filter on, the lights, counts, log and record lists show only records that pass; records with no page, or a page that does not say, are left out, and a note says so. The busiest days, the Halifax Explosion view and the Titanic record always list every record.
Titanic arrow
The catalogue lists “Titanic - 1912” as sunk on 1912-04-15 in the “Atlantic Ocean”, so it has no map position. An arrow at the map edge points toward the reported position given by the Maritime Museum of the Atlantic, 41°46′ N, 50°14′ W. The arrow sits where the line from the GeoNAMES point for Halifax toward that position leaves the frame, and its label gives the date and the straight-line distance from Halifax (1,127 km). No track is drawn and no wreck position is placed on the map. The arrow appears on 15 April 1912 itself, 14.87 s into the run, using the date's fraction of its year; reduced motion shows it without the slide. The pointer is stored in the events file with its source; hover, tap or its legend button opens the catalogue record and the museum's summary: struck an iceberg at 11:50 pm on 14 April and sank 2 hours 40 minutes later; recovery ships found 328 bodies; Halifax buried 150 victims in three cemeteries.
Offline playback and safe rendering
All data files are bundled, versioned and fetched from the same local origin. There are no live APIs, map tiles, external fonts or analytics in playback. Dataset strings are rendered with textContent, never interpreted as HTML. API downloads occur only when the explicit maintenance script is run. Runtime data validation and retry UI handle loading failures.
Primary sources
- Shipwreck catalogue: https://data.novascotia.ca/Arts-Culture-and-History/Marine-Heritage-Shipwrecks-Database/rq3a-h5hk
- Official names: https://data.novascotia.ca/datasets/xf3i-vxcb
- Names snapshot endpoint: https://data.novascotia.ca/resource/xf3i-vxcb.json?$limit=50000&$select=geoname,the_geom,concise_ds,county
- Coastline: Statistics Canada, 2021 Cartographic Boundary Files, linked above.
- Halifax Explosion hearing report: https://archives.novascotia.ca/macmechan/archives/?ID=305 (Nova Scotia Archives, Archibald MacMechan fonds, MG 1 vol. 2124 no. 305; checked 23 September 2026)
- Halifax Explosion casualty figures: https://maritimemuseum.novascotia.ca/stories/explosion-narrows-1917-halifax-harbour-explosion (Maritime Museum of the Atlantic; checked 23 September 2026)
- Catalogue rows for 6 December 1917: https://data.novascotia.ca/resource/rq3a-h5hk.json with
$where=date_of_wreck between '1917-12-06T00:00:00' and '1917-12-06T23:59:59', retained asreference/catalogue-1917-12-06.json - Full catalogue: https://data.novascotia.ca/resource/rq3a-h5hk.json?$limit=50000&$order=:id, retained as
reference/catalogue-source.json(4,939 rows, all published fields; downloaded 23 September 2026 byscripts/fetch-catalogue.mjs) - Neighbouring U.S. states: https://tigerweb.geo.census.gov/arcgis/rest/services/Generalized_ACS2023/State_County/MapServer/7 (U.S. Census Bureau; downloaded 23 September 2026)
- Titanic reported position and Halifax facts: https://maritimemuseum.novascotia.ca/stories/rms-titanic (Maritime Museum of the Atlantic; checked 23 September 2026)
- Ship facts, registry ports and filter classes for most catalogue records: Maritime Museum of the Atlantic, Marine Heritage Database detail pages, 4,939 captures listed in
reference/mma-captures.txt(Internet Archive CDX listing) and checked againstreference/mma-archive-manifest.csv. Ship registry for the 10 sourced ships: the same pages, archived by the Internet Archive on 24 November 2006, for example https://web.archive.org/web/20061124183541/http://museum.gov.ns.ca/mma/wrecks/wrecks/shipwrecks.asp?ID=2232 (Imo). Each ship's link is inpublic/data/flags-2026-09-23.v1.json(checked 23 September 2026). - Losses from 2002 to 2026: https://www.tsb.gc.ca/eng/stats/marine/data-6.html (Transportation Safety Board of Canada, Marine occurrence data from January 1995 to present, released 15 September 2026; Open Government Licence – Canada)
- Elevation for relief and sea floor: https://doi.org/10.25921/fd45-gt74 (NOAA NCEI, ETOPO 2022; downloaded 23 September 2026)
- Satellite colour: https://gibs.earthdata.nasa.gov/ (NASA Global Imagery Browse Services, BlueMarble_ShadedRelief_Bathymetry; downloaded 23 September 2026)
- Halifax Explosion ships' nationality: https://www.canada.ca/en/parks-canada/news/2016/07/the-halifax-explosion.html (Parks Canada; checked 23 September 2026)
- Flag dates, checked 23 September 2026: Union with Scotland Act 1706, Article I, https://www.legislation.gov.uk/aep/Ann/6/11/part/1 (The National Archives); “Union Jack”, https://www.royal.uk/union-jack (The Royal Family); “Le drapeau français”, https://www.elysee.fr/la-presidence/le-drapeau-francais (Élysée); “Le drapeau tricolore”, https://histoire-image.org/etudes/drapeau-tricolore (Histoire par l'image); “L'histoire du drapeau français”, https://www.drapeaux-sfv.org/drapeaux-de-france/article/l-histoire-du-drapeau-francais (Société française de vexillologie); “The history of the National Flag of Canada” and its timeline, https://www.canada.ca/en/canadian-heritage/services/flag-canada-history.html (Canadian Heritage); “Canadian red ensign (1873-1896)”, https://www.rmg.co.uk/collections/objects/rmgc-object-558 (Royal Museums Greenwich); “Det rene norske handelsflagget”, https://www.stortinget.no/no/Stortinget-og-demokratiet/Historikk/stortinget-og-unionen-med-sverige/i-unionen/det-rene-norske-handelsflagget/ (Stortinget); “Flag of the United States”, https://en.wikipedia.org/wiki/Flag_of_the_United_States, for the dates of each star count and the Flag Act of 1818; “Flag of Norway”, https://en.wikipedia.org/wiki/Flag_of_Norway, and “Union mark of Norway and Sweden”, https://en.wikipedia.org/wiki/Union_mark_of_Norway_and_Sweden, for the union mark (checked 25 September 2026); “Flag of Germany”, https://en.wikipedia.org/wiki/Flag_of_Germany, for 1867 and 1919 (checked 25 September 2026); “History of Canadian naval flags”, https://www.canada.ca/en/navy/services/history/naval-flags-uniforms/history-canadian-naval-flags.html (Royal Canadian Navy)
Government of Nova Scotia provides wreck records and place names. Statistics Canada provides coastline geometry. See the source sites for their current reuse terms before publication.