The Solidago System · about

How this was made

This guide was assembled from one podcast episode, one database export, two floras, 63 cited works and 175 photographs taken by other people. Almost none of the raw material is mine. What follows is where all of it came from, how every claim is marked and where to check it, what had to be drawn because no photograph exists, and how the page you are reading is built.

63references, every one cited
175photographs, none mine
6,871lines of build
50galls with no name

An hour of audio in a meadow

On 20 September 2015 two people walked into Hunters Creek Park, about fifteen miles southeast of Buffalo, and recorded fifty-nine minutes of themselves finding goldenrod galls.1 They found three, failed to find a fourth, and said “I don't know” repeatedly and without embarrassment. That last part is why this exists. A recording that ends in open questions is an invitation; a recording that ends in answers is just a lecture.

The episode was transcribed locally, twelve thousand words, no speaker labels. Every question the two of them left open was written down, and then chased. Six of them have answers now, published between 1977 and 2023, and they are set out in Ten years on with the quotation that prompted each. One is still open, and one rests on a database record with no source behind it.

The transcript carries no diarisation, so no quotation anywhere on this site is attributed to one host or the other, even where it would read better.

Where the data came from

Six sources, each held in the repository rather than fetched at build time. Nothing here calls an API while the site is being built, so it can always be rebuilt exactly as it stands, offline, from what is on disk. Four are caches refreshed by their own scripts; two are PDFs that have to be read by a person.

Gallformersthe catalogue itselfA published SQLite export: which gall forms exist, which plants carry them, their traits and the sources behind each record. Scoped here to 59 goldenrods and 106 gall forms across thirty-six states. CC BY-NC-SA 4.0.2
iNaturalistphotographs, taxa, encounter countsEvery photograph on the site, every plant and insect link, and the observation counts that decide which galls got a full entry. Openly licensed images only. All Rights Reserved and NoDerivatives were never collected.3
Flora of North Americawhat each plant actually looks likeVolume 20, via eFloras. The morphological description of every goldenrod, which is what the five flowering shapes on the plant page are assigned from, not by eye.48
Flora of the Southeastern USaccepted names, habitat, range in wordsWeakley and the Southeastern Flora Team. Gives each plant a current name, a habitat, a flowering season and a prose range statement that can be read against the maps.51
The papers themselveseverything the prose actually claimsPDFs of the primary literature, read rather than cited from abstracts. This is the slow part and the only part that matters.
NWF's keystone plant listthe 104 and the 42Two pages. Not primary literature but a derived list, and the two figures the front page opens with are read straight off its table. Tallamy's team supplied the caterpillar counts, Fowler's the specialist bees.32

Every figure on this site is therefore scope-dependent: thirty-six states, one database, one retrieval date. Moving the western boundary to the Mississippi changes the totals by three. That is worth knowing before quoting any of them, and it is why the scope is printed rather than assumed.

How a claim earns its mark

Every substantive statement on this site carries one of four marks, and they are not decoration. Established means independent sources agree. Single source means it rests on one study nobody has rechecked. Disputed means sources conflict, and the conflict is shown rather than quietly resolved. Unknown means nobody has published it at all.

Unknown is the commonest mark on the site, and that is itself the finding. This is a well-studied system with one famous insect in it and about a hundred that nobody has looked at properly. Half the catalogue has no published name. The same point is made visually on every deep entry, each of which carries a diagram of its insect's year: a dotted cold segment is a month for which no published account of that insect's whereabouts could be found, and some species are dotted for two thirds of it.

A mark says how far a claim can be trusted; it does not say where to go and check it. So every gall form in the catalogue carries a trail of its own. Each links to its record on Gallformers, where the observations and photographs are gathered, and prints beneath it the published sources behind that record, named and dated, linked to open in their own tab. 62 of the 106 forms name at least one paper this way; the rest link only to the record, an observation and no publication, which is the honest state of a gall nobody has written up. It is the same discipline the marks are: never assert a thing without saying, in one click, what it rests on.

The bibliography runs to 63 works and every one is cited somewhere in the text, with a link back to each page that cites it. That is checked on every build: an entry that nothing cites fails the check, and so does a superscript pointing at a work that is not in the bibliography.

Five of those 63 could not be read in full, and to leave that out would make nonsense of the marks above. Heath & Stireman 201022 is marked open access, and the publisher returns 403 to every request for it. Miller 200015 and Stoltzfus 197740 are here as quoted excerpts rather than as papers. Felt's 1917 key47 is held as a 342-page scan with no text layer in it. And Novak & Foote 198043 was never obtained at all, which is exactly why one host record on this site still carries an unverified mark instead of an established one.

Drawing what no photograph shows

The ground is near-black throughout, and the light theme is its counterpart rather than its default. Galls, diagrams and engravings are lit as though set out under glass. The photographs are held slightly back inside that dark, a hairline frame, the saturation pulled down, so they sit in the case rather than glaring out of it, and come to full strength when you point at one.

Four of the illustrations are nineteenth-century engravings, out of copyright and scanned by libraries: Britton & Brown's 1913 plates of Solidago altissima and Euthamia graminifolia,58 Comstock's 1895 section through a ball gall, and Riley's 1869 figure of the gall moth. Each was reduced to an alpha mask, paper thrown away, engraved line kept, so the page paints its own ink through them and they re-tint when you switch themes instead of sitting on a dark page as a white rectangle.

Everything else is generated: the gall silhouettes, the year diagrams, the five inflorescence glyphs, the flower head in section, the bracket tree of Solidago's classification, and the range maps. Generated rather than drawn because they have to stay honest. The heads on a plume glyph sit on the same curve the branch is drawn from; the tree is built from the classification itself, not traced from anyone's published figure; the range maps are built from the range data and a build fails loudly if a state turns up with nowhere to put it.

The range maps are tile grids, one square per state and province, not outlines. The question they answer is which states, and at the size they print, an accurate outline of Rhode Island is one pixel.

Nothing here is an AI-generated plate. Every other drawing on the site can be checked against the thing it depicts or the data it was built from. An illustration of an idea of a gall cannot be checked against anything, which is the one thing this guide is for.

175 photographs, 138 photographers

None of the photographs are mine. All of them are openly licensed work by iNaturalist observers, hotlinked so they stay on iNaturalist's servers and remain the photographer's property, and every one links back to the observation it came from. The credits list on the reference shelf is not a courtesy; under CC BY-NC it is the condition of use, which is also why nothing here is for sale. It also means that an observer who deletes an observation removes it from this page too.

Which photograph gets shown is decided by iNaturalist's own community-curated taxon photograph, not by popularity. Sorting a species' observations by how many people have faved them is the obvious approach and the wrong one: faves reward the remarkable, and a field guide wants the typical. A form-specific reference observation beats a species-level shot, because for an undescribed gall it is often the only image of that thing anywhere. That community taxon photograph is also what now stands beside every goldenrod on the plant page, and beside every named gall with no reference shot of its own.

44 of the 106 forms have no photograph at all, mostly undescribed ones nobody has posted, and print a dashed empty frame where the picture would go. The name beside it usually stops at a genus and a bare sp., the epithet still unwritten: two absences, side by side, in the same row.

How the page is built

The whole site is 14 static pages, 1137 KB of HTML and 709 KB of shared assets fetched once and cached. There is no framework, no build toolchain, no client-side rendering and no dependency beyond Pillow. The JavaScript adds the matrix, the key and the hover cards to a page that already reads without it, and every shared file carries a hash of its own contents in its name. It is served from Cloudflare Pages.

python3 build.py writes the entire site from the caches, about 6,871 lines of Python, CSS and JavaScript. The fetchers, fetch_photos.py, fetch_fsus.py, fetch_fna.py, fetch_leps.py, make_ranges.py, refresh those caches and are the only things that touch the network.

A set of checks runs on every build, and each of them fails the build rather than warning. Every reference cited and every citation resolving to a reference. Every internal link landing on a page that exists. Every state on a range map having a tile to sit in. Every gall form having an entry saying what kind of animal made it. The counts on the share card matching the counts in the dataset. A separate sweep loads all 14 pages in both themes at three widths and fails on horizontal overflow, a dead fragment, or any text under 4.5:1 against its background.

The repository is private, which is worth explaining rather than leaving to look proprietary. It holds a transcript of copyrighted audio and PDFs of papers that are not mine to redistribute. The prose, the build and the drawings would be no use to anybody without the data they act on, and the data belongs to other people.

Working with a model

This was written with Claude Code across a handful of sittings. The build is 6,871 lines with no framework and one dependency, and it was quick to write; so were the five fetchers, and the joins across five caches that turn 59 plant names into one record each. It was good at the tedious and exact: scraping a flora's wording into a rule, sweeping stale assets, checking every internal link on every build.

What did not work was trusting it to remember. It reads a paper perfectly well; the trouble is that a model will also produce a confident sentence about one it has not opened, and so will a person. Nearly every correction this guide went through came from opening the actual PDF and reading it, not from thinking harder about the prose already on the page. The fix, in both cases, was the paper, read rather than remembered.

The Solidago System. The name is the field's own. Research on this community has been organised for decades around what the literature calls the SolidagoEurosta gall system9: one plant genus, a hundred-odd insects that live inside it, and the wasps, beetles and birds that live on those. This guide is an attempt to draw the whole of it.

Scope. Thirty-six states, from Maine to Mississippi and west through the Plains tier. Extending the boundary west of the Mississippi added only three gall forms, which is itself the finding: there is no distinctly eastern goldenrod gall fauna, only a fauna east of the Rockies.

Solidago altissima
Euthamia graminifolia
And what counts as a goldenrod. Six of the fifty-nine plants here are Euthamia, not Solidago, a separate genus, with narrow one-nerved leaves and a flat-topped head, kept in the goldenrod section of every field guide anyway. They are included for that reason, and because they carry galls of their own: E. graminifolia alone has eleven, more than all but four Solidago. Both plates are Britton & Brown, 1913.58

Licence. The prose, the build and the generated drawings are mine. The photographs belong to the people who took them and are used under the licences they chose, which are non-commercial. The engravings are public domain. The catalogue data is Gallformers', CC BY-NC-SA 4.0.2