Show all ten Mechs using canonical fleet membership - #71
Conversation
|
Published and verified at https://culturebotai.github.io/mechs/ after Pages deployment 34678179194. The live page returns 200 and contains ten cards and ten capability rows. NaturalProductMech and TaxonMech both display “in fleet manifest” and their published browse links. The stale nonmember and one-revision-behind claims are absent. The embedded manifest and inline JavaScript exactly match the reviewed generated source; the home page also lists ten Mechs. PR and main-branch CI passed. Independent Chrome review confirmed ten graph nodes, nine measured heatmap rows, working membership details/filtering and unclipped graph labels at desktop and mobile sizes. Issues #67, #69 and #70 are closed. The completed task branch has been deleted locally and remotely. |
…e heatmap up Rebuilt onto main after #71 and #72 landed, which replaced the assembler with a manifest-driven one, added a test suite and a CI check, and took the fleet to ten members. Two pieces of the original branch were superseded and are dropped: main already derives the graph's accessible title from the fleet count, and already gives NaturalProductMech its Browse button. A fifth stat tile carries merged pull requests summed across the ten Mech repositories, and every card gains a line of small print under its headline number with that Mech's reviewed records and merged PRs. Whether a Mech tracks review is read from its LinkML schema, not from the values its records happen to carry. Seven declare a status slot whose enum permits REVIEWED, so a zero there is a real zero. MediaIngredientMech and CultureMech have a mapping_status, but its enum runs UNMAPPED to AMBIGUOUS and never reaches REVIEWED, so it grades mapping rather than review; CommunityMech has no such slot. Those three print only their PR count, because "nobody has reviewed one" and "this Mech does not track review" are different claims. mech_stats.py takes fleet membership from the manifest snapshot, the same source assemble_page.py validates the cards against, so a Mech admitted to the fleet cannot end up with a card and no stat line. roots.ORDER is a narrower thing, the members the vocabulary scans have measured, and stays at nine. TaxonMech's record glob lives in mech_stats.py until the census reaches it. assemble() now refuses to build if the stats miss a member, and two tests cover that and the untracked-review case. The Shared vocabulary heatmap moves above the graph, from the template into the fragment, since the graph is what it explains. Its heading is raw HTML carrying the id kramdown would have generated, because markdown is not processed inside the fragment. Graph nodes are lit as spheres: one highlight gradient and one limb gradient, both in objectBoundingBox units so a single pair serves all ten, neither carrying a hue, both multiplying over whichever Mech colour is underneath. The weighting is a theme token because it has to change -- light-theme Mech colours are far darker, carrying their contrast against white, and a limb tuned for the dark theme turned them to mud. The overlays take no pointer events, so hovering still hits the node. The hub keeps its flat fill and reads as the centre. The stat strip steps 5 to 3 to 2 columns on explicit breakpoints; auto-fit picks four between roughly 700px and 1010px and strands the fifth tile alone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BXHrBTSU8fU4Zg7HfaMKs9
The public X-Mech page still marked NaturalProductMech outside the fleet and omitted TaxonMech after both had joined the canonical manifest. The page now shows all ten members, their declared capabilities and published browse links.
Membership badges, counts, graph membership and capability rows derive from a committed CLAW snapshot with a source link. Generation rejects missing cards/nodes, inconsistent census data and malformed provenance. A new PR/push/daily workflow checks generated output and semantic drift against CLAW main. The existing September vocabulary census remains explicitly limited to its nine measured corpora; TaxonMech is not assigned invented zero counts.
Validation:
Closes #69
Closes #70
Closes #67