Help

The history archive

CLT Explorer holds 677 dated facts about Charlotte, North Carolina, running from 1540 to 2025 across 204 distinct years and 16 named eras. Every one of those facts is a record, not a sentence: it carries the source it came from, the date a person checked it, and a confidence level. 441 are marked verified, 236 unverified, and 51 carry a recorded disagreement between sources that the guide publishes rather than resolves. This guide explains the six ways to read that corpus — brushing the Core Sample, following one of the 8 argued threads, reading the 12 prose chapters, looking up a person or an organization or an era, walking the five knowledge-graph views, and checking the working out in the colophon.

Updated: 2026-08-20


Contents

  1. What makes this archive unusual
  2. Reading the record — the Core Sample
  3. Following an argued thread
  4. The Prose Record — twelve chapters, 1540 → 2025
  5. Looking up a person, an organization, or an era
  6. The knowledge-graph views
  7. The colophon: sources, the bibliography plate, and corrections
  8. Route map

1. What makes this archive unusual

Most city-history pages are an essay. This one is a dataset with several readings drawn from it, and three properties are worth knowing before you start, because every surface below is built to preserve them.

Every fact is dated and individually sourced. A fact in this corpus is a row with a year (and sometimes an exact date), a headline, a detail, a lens saying what kind of fact it is, cross-references to the people, places, organizations and eras it names, and its own provenance block: a source URL, the date somebody checked it, and a confidence. There are 677 of them. The provenance is attached to the fact, not to the page — two facts sitting side by side in the same decade can carry different sources and different confidence, and the interface shows that rather than averaging it away.

Confidence is stated in words, never implied by silence:

ConfidenceCountWhat you see
verified441The source is linked. No badge — this is the unremarkable default.
unverified236The words "unverified" or "Unverified — sourced but not confirmed against a primary record."
conflicting0 todayReserved for facts where the published presentation is itself a hedge (see below).

Conflicts are published, not resolved silently. 51 of the 677 facts carry a conflicts[] entry — a recorded disagreement between credible sources, with each competing claim's own URL and a publishedHedge: the wording the guide uses until the dispute is settled. The clearest cluster is the Mecklenburg Declaration of May 20, 1775, the date on the North Carolina state flag. The corpus holds the traditionalist account, the NCpedia position that no contemporary 1775 documentary copy has ever been found, the Resolves that were printed in the North Carolina Gazette on June 16, 1775, and Jefferson's 1819 letter to John Adams calling the Declaration "spurious" — as separate facts, each with its own source, none deleted in favour of the others. The guide's position is that the disagreement is the interesting part.

The gaps are written down too. Each of the 8 threads ends with a section headed What we still cannot show: 20 recorded evidence gaps across the archive, each naming the years it covers and the archive that would settle it. Brooklyn's first gap says outright that the block-by-block reconstruction the thread should rest on does not exist yet, that the ~200 businesses destroyed are cited as an aggregate rather than named, and that the route to fixing it is the Library of Congress Sanborn fire-insurance maps and the Carolina Room Vault city directories. A history with no visible gaps is either finished or lying.

Corrections are public. The methodology, the full generated bibliography and the correction address are on the colophon; published news corrections get their own permanent page at /news/corrections, where the guide states that it never silently edits a published item.


2. Reading the record — the Core Sample

Where: /history/timeline (reached as "The timeline" from /history).

What it is

The route is called the timeline, but since 2026-08-20 what stands there is The Core Sample — Plate I of the visualization program. It replaced an 18,000-pixel hand-tuned scrolling spine whose axis was deliberately bent to compensate for uneven density. The new instrument shows the density instead of compensating for it.

Read it as a geologist's drill core stood on end:

  • The left column is the year axis, ticked every 50 years, running 1540 at the top to 2025 at the bottom on a plain linear scale.
  • Beside it, era lanes — 16 rounded columns, one per named era, packed into as few lanes as their overlaps allow, coloured by era kind (founding, boom, transit, cultural). The Catawba Crossroads (1500–1754) is the top lane; Queen City Now (2019–) the bottom.
  • The bore down the middle is the record itself, filled with a horizontal hatch so it reads as layered ground rather than an empty pipe.
  • Inside it, sparse years — 161 of the 204 years hold 4 facts or fewer — draw as individual dots. Radius is the fact's importance (1 trivia to 5 city-shaping); fill is its lens family (commerce, civic-law, movement, culture-faith, learning-play, conflict-loss, milestones).
  • Dense years — the 43 years holding more than 4 facts — aggregate into a single core segment whose width is the fact count and whose colour is the year's dominant family. The thickest strata are 1891 and 2008 at 17 facts each, then 1970 and 2020 at 15, and 1865 at
    • Hovering any segment gives you 1891 — 17 facts (brush the strip to read them).

Brushing

The strip is not a picture you scroll past; it is the control.

  • Drag anywhere on the strip to sweep a new range. Press, drag, release: the band you swept becomes the brushed range.
  • Drag either handle — the two rounded pills showing the start and end years — to move just that edge. Neither edge can cross the other.
  • Keyboard. Both handles are real focus stops (role="slider"). Tab to one, then: arrows nudge that edge by a year; Shift+arrows slide the whole range without changing its width; Page Up / Page Down jump by a decade; Home and End reach the ends of the record.
  • The current range is announced once, on settle — 600 ms after you stop moving — as a single status line reading, e.g., 1799 to 1861 · 63 facts. It never chatters per-move.

The detail pane, and semantic zoom

Below the strip sits the reading pane, and what it shows depends on how wide your brush is. The wider the range, the coarser the unit:

Brushed spanLevelWhat the pane shows
more than 160 yearscenturyOne row per century, with its three highest-importance facts under it. The row is a button: click it to tighten the brush to that century.
31–160 yearsdecadeOne card per decade, same three-fact preview, same click-to-tighten.
4–30 yearsyearOne cluster per year, every fact in it listed, each with an "in the record ↓" link.
1–3 yearsfactA full card per fact — year, headline, lens, its resolving cross-links, and the jump into the record.

Because the pane's rows are buttons, the natural gesture is drilling: start at the full 1540–2025 span, click the century you want, click the decade, and you are at fact cards in three clicks without ever touching a handle.

Brush a stretch with nothing in it and the pane says so plainly: "No facts between 1602 and 1631 — the record is silent here." That empty answer is a real answer.

The decade record beneath it

Underneath the figure, always present, is the full record as text: every one of the 677 facts, in canonical order, sectioned by decade, each section headed with its fact count and the eras it overlaps. Each entry carries the year (with "(about)" where the year is a hedge — 4 facts are hedged this way, all in the ~1700 Catawba group), the headline, the lens in parentheses, the word "unverified" when it applies, and every cross-link that resolves to a real page.

This list is doing four jobs at once, and it is worth knowing which:

  1. It is the figure's text alternative for screen readers.
  2. It is the indexable text for search engines — the drawn strip ships none.
  3. It is the no-JavaScript fallback. With scripting off you lose the brush and the pane; you keep the entire record, every headline and every link.
  4. It is the client's own data source. The brushed pane does not carry a second copy of the corpus over the wire — the wire payload is numeric indexes only, and the pane reads headlines and links back out of this list. That is why the two can never disagree, and why "in the record ↓" always lands on the exact entry.

The Core Sample round-trips its state in the URL, so a brushed view is shareable.

  • ?brush=1799-1861 — the canonical form. Read once when the page loads; rewritten (via replaceState, so it does not spam your back button) 600 ms after each settle. The parameter disappears entirely when the brush covers the whole 1540–2025 domain. A reversed pair is accepted and swapped; anything else is ignored and you get the full record.
  • ?year=1799 — the older form, still live and still linked from all over the guide (thread beats, era headings on /history, news entity chips, the markdown twin). It maps to a one-decade brush centred on that year: ?year=1799 opens brushed 1794–1803. Near the ends of the record the window slides rather than shrinking, so ?year=1541 gives you 1540–1549, not a two-year sliver. Years outside 1500–2026 are ignored. If both parameters are present, ?brush= wins, and ?year= is dropped from the URL on the first settle.

Two consequences worth stating plainly. First, a ?year= link never lands you on a single year — it lands you on the decade around it, at "year cluster" zoom, which is usually what you wanted. Second, both parameters are read after the page hydrates; with JavaScript disabled a deep link still serves the complete decade record, just not the brushed view.


3. Following an argued thread

Where: /threads is the index; /thread/{slug} is one thread; /history/threads is all eight drawn on one 1775–2025 axis.

What "argued" means

A thread is not a topic and not a category. It is one claim, followed from the year it starts to the year it stops, with the evidence in order. The timeline tells you when; a thread tells you therefore. Each thread page leads with the argument in this order:

  1. The thesis — the claim, set off in its own rule.
  2. The summary — the case for it.
  3. Optionally the take — the guide's editorial reading, in italics and marked as such.
  4. A count line: beats, dated facts cited, open questions.
  5. The arc — the beats.
  6. What we still cannot show — the evidence gaps.
  7. Threads that cross this one.

All 8, with their spans and their beat counts:

ThreadSlugSpanBeatsOpen questions
Gold and the Mint: the money town, a hundred and fifty years earlygold-and-the-mint1799–193672
The Meck Dec: a date on the flag that nobody can documentthe-meck-dec1775–now72
Brooklyn: 238 acres, and everything built on them sincebrooklyn1887–now73
The Banking Duel: two banks, one town, and the appetite that ate them boththe-banking-duel1972–201472
Swann: the city that was made to integrate, and then chose not toswann-and-the-schools1954–now72
Rails to Rail: the same city, built twice on the same linesrails-to-rail1887–now73
The Mills: the city that sold the machinery, then sold the buildingsthe-mills1883–201873
Camp Greene to Camp North End: a city built out of the Army's leftoverscamp-greene-to-camp-north-end1917–195463

That is 55 beats and 20 recorded evidence gaps in total. A thread with no end year and ongoing set reads "1887–now" rather than pretending to a closing date.

Beats, and getting from a beat to its facts

A beat is one moment in the arc: a year (or a run of years), a title, and a paragraph of narrative. Beats sort chronologically regardless of authoring order.

Pivotal beats are marked, because the data marks them — two per thread. A pivotal beat takes a heavier left rule and the word "pivotal" in its date line, so the emphasis is never carried by the border alone.

Under each beat, the years its evidence lands in are listed as links reading 1887 on the timeline. These are derived from the beat's factRefs, deduplicated by year and sorted — Brooklyn's opening beat, "A city within a city" (1887), rests on six facts spanning 1886 to 1965, so it offers those distinct years. Each link goes to /history/timeline?year=YYYY, which — per §2 — opens the Core Sample brushed to the decade around that year, where the pane lists the year's facts and "in the record ↓" takes you to the full sourced entry.

So the reading path is: thesis → beat → year link → brushed decade → fact → source.

What a thread admits it cannot prove

The What we still cannot show section is authored research output, not boilerplate. Each gap gives an optional year range, a description of what could not be established, and a "Where to look" line naming the archive. They are worth reading as a map of where the work goes next.

The threads, drawn

/history/threads puts all eight on one 1775–2025 axis so you can see where they cross and where each runs alone — a different question from "what does this thread argue", which is what the slug pages answer. It offers two instruments over the same model, selected with ?view= (the Braid by default, the Warp at ?view=warp).


4. The Prose Record — twelve chapters, 1540 → 2025

Where: /history/record.

The Record is the same research written out as narrative. Twelve chapters, rendered in ascending order of the first year they span:

ChapterSpanRecords drawn onAnchor
The Crossing1540–177564#the-crossing-1540-1775
Gold1799–186179#gold-1799-1861
War Comes Inland1861–187774#war-comes-inland-1861-1877
The Sales Pitch1877–190372#the-sales-pitch-1877-1903
Suburbs on Rails1891–191751#suburbs-on-rails-1891-1917
Sixty Thousand Soldiers and a Ford Plant1917–193893#sixty-thousand-soldiers-1917-1938
War Again, and the Boom1938–195444#war-again-and-the-boom-1938-1954
Brooklyn1947–197759#brooklyn-1947-1977
The Judge's Order1954–197957#the-judges-order-1954-1979
Eleven Blocks Apart1970–199843#eleven-blocks-apart-1970-1998
Major League, Minor Patience1988–200836#major-league-minor-patience-1988-2008
The Bill Arrives2008–202588#the-bill-arrives-2008-2025

Note the overlaps: chapters are not a partition of the calendar. Brooklyn (1947–1977) and The Judge's Order (1954–1979) cover the same quarter-century from two arguments, which is the point of writing them separately.

What the header line under each chapter title tells you

1799–1861 · drawn from 79 records in this guide's dataset · draft

The span, the number of dataset records the chapter's prose rests on, and — where it applies — the word draft. Chapters carry a status; the page renders drafts but labels them rather than hiding them. As of this writing the whole set is in draft pending a voice sign-off, and the label says so on the page.

That "drawn from N records" is the load-bearing part. Each chapter's frontmatter lists the exact entity ids its prose relies on, and that list is the claim-to-record trace: the prose asserts nothing the dataset cannot back. It is also what generates the exits.

Where a chapter can take you next

At the foot of each chapter, under Explore this chapter, are rows resolved from that list of records, not hand-maintained and not scraped from the sentences:

  • The people in it/person/{slug} for every person the chapter's facts name.
  • The companies, railroads and bodies/org/{slug}.
  • The places it names/poi/{slug}, skipping any place whose status is unconfirmed (those have no page anywhere on the site).
  • The same records, argued end to end → up to three threads, ranked by how many of this chapter's records each one actually cites. Capped at three deliberately: some chapters share facts with seven of the eight threads, and a row naming almost every thread tells you nothing.
  • These years in order → the chapter's own span on the Core Sample.

The links sit after the prose rather than inside it. Linking names inside the sentences would mean underlining a name inside a quoted 1875 newspaper column, which would be the guide putting words in a source's mouth.

The trailer

At the top of /history/record, closed by default, is a <details> block labelled Play the trailer — the record as a movie trailer. It is a deliberate joke, it opens without JavaScript like every other <details> on the site, and every event in it is real and appears in the chapters below.


5. Looking up a person, an organization, or an era

People — /person/{slug}

126 people have pages, one per person in the research. A page carries the name, role and lifespan, the biography, optionally the take, and then the facts are the page: a chronological list of every dated fact citing that person, headed In the record (N).

Chronological, not by importance — a life reads forward. (Place pages sort by importance instead, because someone standing outside a building wants the headline first.)

Each entry in that list shows:

  • The year, printed c. 1869 when the year is a hedge rather than a record.
  • The exact date, when the fact has one.
  • The headline, the detail, and the take where one exists.
  • The hedge, when one applies — "Unverified — sourced but not confirmed against a primary record" for unverified facts, or the fact's publishedHedge wording for facts the guide presents as contested. These render only when they apply, so their presence carries information rather than being furniture.
  • Cross-links to the other entities the fact names — emitted only for references that actually resolve to a page, never as a slug dressed up as a name — with a link back to this page suppressed.
  • A Source link and "checked {date}".

Every one of the 126 people is currently named by at least one dated fact, so the "no dated facts cite … yet" empty state exists in the code and is not reachable from live data today.

Organizations — /org/{slug}

101 organizations, same shape: the organization's own record above, the same chronological FactList below. Organizations became first-class here because the research names them as the actors — a company chartered in one year builds the town in another — and they were invisible while only people had pages.

Eras — no page of their own

The 16 eras are the structure rather than a destination. You meet them:

  • On /history, as the "The eras, in order" section — each a real heading, with its span (prefixed "c. " when the start is approximate), its first summary sentence, and a link to that era's start year on the Core Sample.
  • As the lanes on the Core Sample strip, and named in each decade heading of the record beneath it.
  • As nodes in the wiki and the graph views, where clicking one opens its summary, its take and its kind-and-span line.
  • As the trunk of The Seam (§6).

The 16, in order: The Catawba Crossroads (1500–1754), Courthouse Village (1755–1799), Gold (1799–1861), War & the Navy Yard (1861–1865), New South Cotton (1865–1903), The Streetcar City (1891–1938), The Mill Crescent (1903–1929), Hard Times (1929–1941), Camp & Boom (1941–1954), Brooklyn & the Bulldozer (1947–1977), Swann & the Schools (1954–1975), Banktown Rising (1970–1998), Major League (1988–2004), The Reckoning (1998–2012), Rail & Renaissance (2004–2019), Queen City Now (2019–).

"War & the Navy Yard" is not a misprint from some coastal city. After the fall of Norfolk in 1862 the Confederate States Navy Yard was moved inland to Charlotte — a city with no river — and its ordnance works ran out of the former U.S. Branch Mint building on West Trade Street and a site at East Trade and College, employing roughly 1,500 men and boys. It is one of the strangest true things about the city, and it has its own facts in the record.


6. The knowledge-graph views

There is exactly one knowledge graph, and nobody drew it. It is derived — there is no hand-authored list of connections anywhere, and there must never be one — by walking the research and turning what the records already say into links. Every link remembers which field produced it, so any connection can be walked back to the record, and from the record to the newspaper.

Two structural decisions shape what you see:

  • Facts are edges, not nodes. 677 facts against a few hundred other entities would bury the city under its own footnotes. So a fact naming a person and a building produces one person→place edge whose provenance is that fact.
  • Threads are nodes, and the one node kind that is an argument rather than a thing. Their authored references are sparse, so most of their edges come from their beats' cited facts — which is how a thread ends up connected to everything its evidence is about without anyone re-authoring the beats by hand.

Five windows, one dataset. They are linked to each other by a chip row at the top of each:

ViewRouteThe question it answers
Browse/browseWhere is the thing I already have in mind? Two granularities of one verb: every section of the guide grouped by hub on top, then the whole dataset as cascading Miller columns you can walk with the arrow keys (?path= deep-links a column position). The finding surface, not a looking surface.
Graph/graphWhat is connected to what, and where is it dense? The default view is The Vein — a three-level semantic zoom over the graph laid on the city's real shape, from district ore-bodies down through kinds of place to individual records. The original d3-force spring canvas survives as an easter egg at ?view=spring, behind the small unlabeled spring chip.
Loom/graph/loomWhat does the whole fabric look like at rest? Radial hierarchical edge bundling: the districts in real adjacency order form the warp, the people, organizations, eras, threads and calendar face them, and every derived connection is drawn as a bundled ribbon. No physics, so nothing in the layout is meaningless motion. Below 768 px the drawing is replaced by a server-rendered per-district list of the same bundles.
Ledger/graph/ledgerWhere does the weight sit, compared at scale? The graph as a ruled matrix — rows against columns, every connection one stamped, counted entry, with six preset pages (districts × categories, district adjacency, people × places, and others). Rows and columns are ordered by a barycenter seriation that pulls connected blocks together, so the clusters you see are the data's, not the alphabet's.
Seam/graph/seamWhat descends from what, across five centuries? A hyperbolic tree with time as the trunk: Charlotte → the record → the 16 eras in order → dated facts → everyone and everything they name, plus separate trunks for the city today, the threads, and the calendar. Going round the disk is going forward through the centuries; going outward is going into detail.

A few honest cautions the views state themselves:

  • The Seam destroys metric distance. 1830 and 1831 will not sit twice as close as 1830 and 1832, and nothing on that disk should be read as a duration. It preserves order, which is what makes it work. For duration, use the Core Sample.
  • A leaf under a fact in the Seam is a mention, not a thing. A person named by five facts appears five times, and the recurrence is the point. Its size numbers count leaves, not people.
  • Browse, Graph, Loom and Ledger share a report parameter (?r=) that selects node and edge types; the Seam cannot honestly apply an edge filter because its tree is built from the facts' cross-references rather than from the graph's edges. The chips still carry ?r= through, so a report built anywhere survives the hop.
  • /wiki is a sixth surface onto the same graph and the calmest of them: districts as bands, categories beneath, places beneath that, with search, five audience tours (first trip, families, history buffs, food weekends, rainy days) and a detail panel carrying each node's story, images and connections. It prints its own node and connection counts at the top.

Every one of these views renders a real, server-rendered text equivalent — a list, a table or nested lists — underneath or instead of the drawing, so nothing on any of them is reachable only by running the canvas code.


7. The colophon: sources, the bibliography plate, and corrections

Where: /colophon.

How the guide says it works

The colophon states the method in plain language before it shows any data: every fact carries a source and the date a human last checked it; facts are in one of three states (verified / unverified / conflicting) and the guide says which rather than guessing; facts are re-checked on a schedule — a full sweep twice a year, early spring and late fall, with anything flagged fixed when found; and the editorial voice is kept deliberately separate from the checked facts, with neither pretending to be the other.

The bibliography

The bibliography is generated at build time from the dataset, not hand-maintained. A walk over every entity that carries provenance — places (including per-field overrides and recorded conflicts), people, eras, species, events and their per-year overrides, and tours — collects every source URL, groups them by domain, counts citations per domain, and files each domain into one of six buckets, printed in this order with a plain-language note on what the bucket means:

  1. City & government — charlottenc.gov, mecknc.gov, dncr.nc.gov, nps.gov and the rest. The most authoritative tier.
  2. Museums & heritage organizations — cmstory.org, charlottemuseum.org, mintmuseum.org, docsouth.unc.edu, hmdb.org, the Landmarks Commission.
  3. Encyclopedias & reference sites — ncpedia.org, en.wikipedia.org, northcarolinahistory.org, openstreetmap.org. Background and cross-checking, never the sole source.
  4. Directories & aggregators — corroboration only, never sole confirmation.
  5. Business & venue sites — the default source for a place's own hours and address, and the fallback bucket for anything not in the classification table.
  6. Local lore & editorial research — community history writing, oral tradition and this project's own notes, always labelled as lore rather than documented fact. Two pseudo-domains live here: local: for in-repo research notes and tel: for phone-confirmed facts.

Cite a new source anywhere in the dataset and it appears here on the next build with no hand-editing.

The two plates on the page

  • The Assay (Plate VIII) weighs the bibliography: every domain sized by how often the guide leans on it, with domains inside a recorded source disagreement marked, and the count of year-record facts carrying their own conflicts reported in the source line — the year record is not part of the bibliography walk, so the plate reports that number rather than pretending to draw it.
  • The Sluice (Plate IX) washes the facts through the same gates: every dated fact sorted by era, lens, weight, and how sure the guide is.

Independence, and how corrections work

The colophon states that CLT Explorer is independent and unaffiliated — not produced, reviewed or endorsed by the City of Charlotte, Mecklenburg County, any listed business, or any credited museum, and that citing an official source is a citation, not a partnership. It also asks you to verify anything time-sensitive directly with a business before you go.

To report something wrong, out of date, or that shouldn't be here — including a photo or a lore entry someone wants taken down — email corrections@clt.theperfectship.com. This is a mailto link on /colophon, not a web form; there is no submission API and nothing you send is stored by the site. Several pages carry the same door with the wording "Tell us what changed — it goes to a person, not a queue."

Published corrections to the news layer live permanently at /news/corrections, newest first, each linked to the item it corrects, showing what was wrong, what it says now, and the date it changed. The page's stated policy is that the guide does not silently edit a published item. Its empty state is deliberately unflattering: it names the number of published items beside the zero, so that a clean record reads as "the section is young" rather than as a boast.

One limit of that register, stated plainly: /news/corrections covers the news layer only. The 677-fact archive has no equivalent public correction log. When a fact in the archive is corrected, its "checked on" date moves and the page shows the new date — but the change itself is not published anywhere you can read it. Corrections to the archive go to corrections@clt.theperfectship.com and are made; they are not, today, announced. That is a gap in a guide that otherwise makes a lot of its willingness to show its working.


8. Route map

RouteWhat it is
/historyThe front door: the answer paragraph, the 16 eras as real headings, the Catawba streamgraph, the FAQ, and how the research was assembled.
/history/timelineThe Core Sample — brushable strip, semantic-zoom pane, and the complete decade record. Accepts ?brush= and ?year=.
/history/recordThe Prose Record — 12 chapters with per-chapter exits.
/history/threadsAll 8 threads drawn on one 1775–2025 axis (?view=warp for the alternate plate).
/threadsThe thread index.
/thread/{slug}One thread: thesis, summary, beats, evidence gaps, crossings.
/person/{slug}One person: biography plus every dated fact citing them.
/org/{slug}One organization, same shape.
/wikiThe whole dataset laid out calmly by district and category, with tours.
/browse · /graph · /graph/loom · /graph/ledger · /graph/seamThe five graph views.
/colophonMethod, generated bibliography, the Assay and the Sluice, credits, independence, corrections address.
/news/correctionsThe published correction register for the news layer.

See also: the Colophon for the method, the generated bibliography and the corrections address; the Atlas for the drawn plates gathered in one gallery.