fix(landing): derive the engine count from the grid, and correct it to 29 - #31
Merged
Conversation
…o 29 The site published "25" in seven rendered places and about forty fields of comparisons.json. It was not an arbitrary string: it counted distinct driverGroup values in database-grid.json, while the headline above it promised databases. Two quantities wearing one number, so raising either broke the other. It had also gone stale everywhere at once — the app registered 28 types, the docs said 27, the site said 25 — without a single failing test, because every copy agreed with every other copy and none agreed with the app. Diffing allRegisteredTypeIds() against the grid found the gap was real content, not phrasing: Dameng and Kafka ship as driver plugins and had no tile, no icon and no page, and libSQL and Turso shared one tile while the app registers them separately. Flipping the literals alone would have put "29 databases." above a grid of 26 countable tiles. ENGINE_COUNT now derives from database-grid.json, which is what a reader can actually count on the page, so the claim and the grid cannot drift apart again. DRIVER_PLUGIN_COUNT stays a literal because nothing here can derive it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Consolidates the engine count into one derived value and corrects it to 29.
ENGINE_COUNTlives inresources/js/data/engines.tsand is derived fromresources/data/database-grid.jsonrather than written down — the grid is what areader can actually count on the page, so a claim that disagrees with it is a claim
the page disproves two rows down. Adding a driver can no longer leave the copy behind.
29 = the number of tiles on the grid = the number of keys in the app's
allRegisteredTypeIds()once Turso carries a snapshot of its own.Why it was not a find-and-replace
"25"was not an arbitrary string. It counted distinctdriverGroupvalues indatabase-grid.json— a driver count — while the headline above it promiseddatabases. Two different quantities wearing the same number.
It had also gone stale everywhere at once (app 28, docs 27, site 25) with a green
suite, because every copy agreed with every other copy and none agreed with the app.
Diffing
allRegisteredTypeIds()against the grid showed the gap was missing content,not stale phrasing:
DamengDriverPlugin,KafkaDriverPlugin) and had no tile, no icon and no page. Dameng appeared only intwo blog release notes; Kafka appeared nowhere on the site.
libSQL / Tursotile while the appregisters them separately.
So flipping the literals alone would have rendered "29 databases." above a grid of
26 countable tiles, with two
9 + 16 = 25breakdowns still underneath it.Changes
resources/js/data/engines.ts(new) —ENGINE_COUNT,BUNDLED_ENGINE_COUNT(9),ON_DEMAND_ENGINE_COUNT(20),DRIVER_PLUGIN_COUNT(23, a literal because nothingin this repo can derive a build-target count in an app it cannot see).
license.tsxwas a false positive —its "25" is inside a comment quoting copy that was already deleted.
database-grid.json— added Dameng and Kafka (monogram fallback, whichDatabaseMarkalready documents for engines without artwork); splitlibSQL / Tursointo two tiles sharingdriverGroup: libsql, exactly as Cassandraand ScyllaDB already do. 29 tiles, 27 driver groups, 9 bundled / 20 on demand.
comparisons.json— 42 values across 9 competitors. JSON cannot import theconstant, so
EngineCountTestpins those literals instead. Four relativephrasings were re-derived so they still sum correctly ("Postgres plus 28 other
databases"). Five "25"s were deliberately left alone: a
$255price, two~25 MBdownload sizes,~250 MB via Wine, and the year2025.one tile means one engine; the remaining honest gap is 29 engines over 23 driver
plugins, which is where
DRIVER_PLUGIN_COUNTis used.tablepro-0-67.mdand0-68.mdare datedrelease notes that were accurate when published.
Three bugs found while verifying
HomepageRenderTestcounted icons, not tiles.it('server-renders all 26 database tiles')assertedsubstr_count($html, '/images/databases/'). The newtiles use the monogram fallback, so that returns 26 whether the grid holds 26 or 29
— it would have kept passing under a name claiming otherwise.
without
php artisan inertia:start-ssr, so the first pass "passed" without everrendering the page. Built both bundles and started SSR before re-running; that is
what exposed Fix what the audit found: an unrun test job, two guards that could not fail, and 4.5 MB of PNG #1.
toContain()swallows a message argument. It is(mixed ...$needles),so a failure message passed as the second argument becomes a second needle — the
trap this repo already documents in
StaleClaimsTest. Switched to collectingoffenders and asserting
toBe([], $message), the pattern used elsewhere here.Also fixed a brittle proxy in
StaleClaimsTest, which countedquestion: 'to countFAQ questions and so reported 13 of 14 as soon as one question used a template literal.
Tests
tests/Feature/Landing/EngineCountTest.php(new): pins the derived count, rejects anyliteral
\d+ (databases|engines|drivers)in rendered copy (comments stripped, sincethey are history), asserts
engines.tsderives rather than restates, and pinscomparisons.jsonagainst it.207 passed, 0 skipped, 0 failed with SSR running.
tsc --noEmitclean, bothbundles build,
pintpasses. Probed the running site: hero, headline, spec strip andJSON-LD all read 29; the lede reads "9 … other 20";
/faqreads "29 engines run on 23native driver plugins";
/compare/posticoreads "Postgres plus 28 other databases".Before merging
This says 29 on the strength of the parallel app change that gives Turso its own
snapshot. Until that ships,
allRegisteredTypeIds()returns 28 and this PRover-claims by one — worth landing them in the right order.
docs.tablepro.appis aseparate repo and still says 27.