store.sgit.ai / versions / v0.2.8
v0.2.8 — the comparison table, free column first
The store explained each level on its own page, which meant nobody ever saw the four side by side — and every sentence worth reading about them is a DIFFERENCE, which is only legible next to the thing it differs from. /compare/ is fourteen rows in four groups: what you get, whose work it is, what you may do with it, and when it arrives.
THE FREE COLUMN LEADS, AND THAT IS THE ARGUMENT RATHER THAN A CONCESSION. The templates being published had been treated on this site as an objection to handle. Put first, it becomes the first row of the case: here is what you can have for nothing, here is what each step adds. The licence row on its own explains the first paid step — CC BY obliges you to credit the source wherever it ends up, and every paid level replaces that with a commercial licence to you over the same material.
EVERY CELL IS READ OFF SOMETHING, OR THE ROW IS NOT THERE. A table is where an unproven claim is hardest to notice: fourteen rows of ticks read as fact at a glance and nobody cross-checks a tick against the page it came from. So a row qualifies only when each of its five cells can be pointed at — a price in data/offers.yml, a gets sentence, a not-promised line, or a ruling. A support level nobody has scoped and a board-readable cut still being specified are both absent on purpose and are on the board instead.
One thing that looked like a proposal turned out to be already true: the memo offered you only get a vault in the fifty-quid version as an example, and it is what the level pages have said since they were written.
check_the_comparison_agrees_with_the_offers holds every column to a real offer, every row to filling every column — an empty cell renders as nothing and reads as a no, which is a claim nobody made — and every row to carrying the sentence that says what the reader is buying.
AND ONE ASSERTION IN IT WAS PROVED VACUOUS BEFORE IT SHIPPED. The first version compared the prices in the table header against data/offers.yml, and the header reads them straight out of that file at build time, so it was asserting a variable equals itself; a deliberate break walked straight through. The delivery cells ARE typed by hand and can drift, so that is what is checked now — a table saying one to two days beside a level page saying one to three is the one place a buyer will not think to look.
Also fixed: the site's th is a small tracked uppercase column label, and every header in this table is a sentence. Fourteen row headers were rendering in all caps at 11px, which is the fastest way to make a comparison table unreadable, and it was doing exactly that.
| Version | v0.2.8 |
|---|---|
| Released | 2026-09-16 |
| Built from commit | 062b2d001bab88f644c6b5c6ad78e43c42f74f1a |
| Site | store.sgit.ai |
Touched: assets · build.py · data · tools
Every release of this site is listed on the release history, and the same records are served as JSON so a script can read them without parsing a page.
Which agent do you run? → How buying works → Every claim, with its state →