Skip to content

Say "ten" in the prose, and keep the numeral for the tile - #94

Merged
realmarcin merged 2 commits into
mainfrom
fix/fleet-count-spelled-out
Sep 22, 2026
Merged

realmarcin merged 2 commits into
mainfrom
fix/fleet-count-spelled-out

Conversation

@realmarcin

@realmarcin realmarcin commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Closes #93.

The hub page's own title read "X-Mech Suite: 10 autonomous knowledge factories, one shared standard", while every other page writes the word — index.md has "a fleet of ten", each per-Mech page has "All ten Mechs". The one page whose subject is the fleet was the one page that disagreed about how to name its size.

Before / after

where before after
H1 X-Mech Suite: 10 autonomous knowledge factories X-Mech Suite: ten autonomous knowledge factories
intro a fleet of 10 ontology-grounded… a fleet of ten ontology-grounded…
heading ## The 10 Mechs ## The ten Mechs
heatmap note covers 9 of the 10 Mechs covers nine of the ten Mechs
manifest note All 10 Mechs shown here All ten Mechs shown here
SVG title graph of the 10 autonomous… graph of the ten autonomous…
stat tile 10 10 — unchanged

Why not just spell the token out

One use is genuinely numeric. The stat tile sets the count as a big bold figure beside its label:

<div><b><!--FLEET_COUNT--></b><span>autonomous knowledge factories</span></div>

A word there would read oddly against the tiles either side of it, which are 1,075,284, 45 and 3,082. So the count is offered in both forms — <!--FLEET_COUNT_WORD--> for prose, <!--FLEET_COUNT--> kept for the tile — rather than spelled out at each call site.

The census count needs only the word form. Adding a numeric token nothing uses would trip the assembler's own Missing source token guard, which is why <!--FLEET_CENSUS_COUNT--> is replaced rather than supplemented.

number_word() covers zero to twelve and falls back to a formatted numeral above that, so an eleventh Mech reads correctly and a fleet that outgrows the table degrades to digits rather than raising.

Checks

22 tests pass (two added: one pinning prose-vs-tile, one on the fallback), assemble_page.py --check clean. Swept the generated page for remaining numerals in prose — the only 10s left are CSS values, SVG viewBoxes and data payloads.

Note for the record: the terminology change in d4e424d is deployed; a page still showing "knowledge bases" is a cached copy.

🤖 Generated with Claude Code

realmarcin and others added 2 commits September 21, 2026 01:14
The hub page's own title read "X-Mech Suite: 10 autonomous knowledge factories",
while every other page writes the word — index.md has "a fleet of ten", each
per-Mech page has "All ten Mechs". The one page whose subject is the fleet was
the one page that disagreed about how to name its size (#93).

`<!--FLEET_COUNT-->` was substituted as a bare figure into six prose contexts:
the description, the H1, the intro sentence, the "## The N Mechs" heading, the
fleet-manifest note and the graph's accessible title. `<!--FLEET_CENSUS_COUNT-->`
had it too, in "covers 9 of the 10 Mechs".

Spelling the token out everywhere would have been wrong, because one use is
genuinely numeric: the stat tile sets the count as a big bold figure beside its
label, where a word would look odd next to the tiles either side of it. So the
count is now offered in both forms — `<!--FLEET_COUNT_WORD-->` for prose,
`<!--FLEET_COUNT-->` kept for the tile — rather than spelled out at each call
site. The census count needs only the word form, and adding a numeric token
nothing uses would trip the assembler's own unused-token guard.

`number_word()` covers zero to twelve and falls back to a formatted numeral
above that, so an eleventh Mech reads correctly and a fleet that outgrows the
table degrades to digits rather than raising.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Substituting the word at the very front of the front-matter description made
the page's search snippet open in lower case — "ten ontology-grounded
autonomous knowledge factories…" — where every other page on the site starts
its description with a capital: "Autonomous knowledge factory for…",
"CultureBotAI develops…", "Access KG-Microbe…". With the numeral it had read
"10 ontology-grounded…", which a digit carries off; a bare lower-case word does
not, and it reads as a typo in results.

Rewording to "A fleet of ten ontology-grounded…" fixes it without needing a
capitalised variant of the token, and echoes how index.md already introduces
the suite.

A test now pins it, since the failure is invisible on the page itself: the
description only ever shows in a search result or a link preview, so nothing in
the rendered page would have revealed the regression.

The "## The ten Mechs" heading does change its anchor from `#the-10-mechs` to
`#the-ten-mechs`. Nothing in the repo links to it and the deployed page carries
the id without linking to it, so only an external bookmark could notice.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@realmarcin

Copy link
Copy Markdown
Contributor Author

Review pass

Two dimensions (token plumbing, rendered prose), each finding independently refuted before acceptance. 5 raised, 2 confirmed, both fixed in `9059af2`.

Confirmed and fixed

  1. The meta description opened in lower case. Substituting the word at the very front of the front matter gave the search snippet "ten ontology-grounded autonomous knowledge factories…", where every other page starts with a capital — "Autonomous knowledge factory for…", "CultureBotAI develops…". The numeral had carried it off; a bare lower-case word reads as a typo. Reworded to "A fleet of ten ontology-grounded…", which also echoes how index.md introduces the suite. A test pins it, because the failure is invisible on the page itself — the description only shows in a search result or link preview.

  2. This PR body quoted figures that exist nowhere. I wrote that the tile's neighbours are 1,075,244 and 2,994; they are 1,075,284, 45 and 3,082. The values I used were from before d4e424d. Body corrected.

Refuted

  • "Graph overview still says 10 views of one microbe" — line 704 is byte-identical to main; not in this diff.
  • A duplicate of the description finding at lower severity.

Checked myself

  • Token prefix safety. <!--FLEET_COUNT--> is not a substring of <!--FLEET_COUNT_WORD--> — the --> terminator prevents it — so substitution is order-independent. Verified across all six permutations.
  • No stale references to <!--FLEET_CENSUS_COUNT--> anywhere (ignore-independent grep -r, not rg), and no sentinel residue from the edit script in any committed file.
  • Anchor change. "## The ten Mechs" moves its id from #the-10-mechs to #the-ten-mechs. Nothing in the repo links to it, and the deployed page carries the id without linking to it, so only an external bookmark could notice. Accepted, and recorded in the commit message.

Still outstanding

One verify agent did not return before I finished — the one checking the anchor-id finding above. I established that result independently rather than wait on it, and the conclusion stands on the greps quoted.

23 tests pass, assemble_page.py --check clean.

@realmarcin

Copy link
Copy Markdown
Contributor Author

Addendum — the outstanding verifier returned

My review comment above noted one verify agent had not reported. It has now, and it refuted the anchor-id finding, independently reaching the same conclusion I did: nothing links to #the-10-mechs, so renaming the heading costs nothing.

Final tally is unchanged: 5 raised, 2 confirmed, both already fixed in 9059af2. The verifier's own recommended fix for the description was, verbatim, the rewording I had applied — "A fleet of ten ontology-grounded autonomous knowledge factories…, which needs no pipeline change and matches the intro sentence's own phrasing."

One detail from the verification worth keeping, because it makes the fix better-founded than my commit message claims. I justified the capital by pointing at the other eleven pages. The verifier went further and walked this file's own history: at 92c6d08 the template read

description: "Nine ontology-grounded microbial knowledge bases, ..."
# X-Mech Suite: nine knowledge bases, one standard

— the same word, capitalised in the description and lower-case in the heading, in one file. The author had already distinguished the two positions deliberately. Tokenisation at b498e1d flattened both to a numeral, and this branch would have flattened both to a lower-case word. So the convention argument does not rest on the sibling pages at all; it rests on what this page used to say about itself.

That is an argument for keeping the two positions distinguishable rather than for the particular rewording, and is worth remembering if the description is ever re-tokenised: a <!--FLEET_COUNT_WORD_CAP--> would express the distinction more durably than a phrase that happens to start with "A fleet of".

@realmarcin
realmarcin merged commit 80db978 into main Sep 22, 2026
1 check passed
@realmarcin
realmarcin deleted the fix/fleet-count-spelled-out branch September 22, 2026 01:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The fleet size renders as a numeral in prose, where the rest of the site writes "ten"

1 participant