Skip to content

feat(site): reshoot the memory visualisation on the new brand - #25

Merged
bkearns merged 1 commit into
mainfrom
feat/rebrand-memory-viz-screenshot
Aug 19, 2026
Merged

feat(site): reshoot the memory visualisation on the new brand#25
bkearns merged 1 commit into
mainfrom
feat/rebrand-memory-viz-screenshot

Conversation

@bkearns

@bkearns bkearns commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

The homepage shot dated from 26 June and showed the viz in its old palette — hot pink #ff7eb3, coral #ff6b6b, lime #8ae25b and violet #c97eff node colours that appear nowhere in the brand. The viz has since been brought onto the published tokens (ferrosa-memory feat/viz-brand-conformance), so the picture no longer matched the product.

It's a real graph, not a mock

14,404 entities / 54,510 edges, built from three Rust workspaces (ferrosa, ferrosa-memory, forge) and the research corpus:

entity types section 5,420 · place 3,828 · concept 3,340 · app 844 · module 314 · document 313 · preference 216 · crate 74 · pattern 52 · fold 3
edge types contains 11,480 · references 11,319 · calls 8,281 · CO_OCCURS 6,241 · MENTIONED_IN 5,627 · part_of 5,524 · related_to 5,375 · uses 346 · subclass_of 133 · implements 133 · depends_on 51
orphans 0%

Crates, modules, structs, traits and functions carry their real dependency, containment, use and implementation edges. Documents carry their sections and the concepts they share — that concept sharing is what links the clusters into one web instead of a set of disjoint trees. The filter pills visible in the shot show the real crate names.

Captured after the graph fully populated

The snapshot streams over a WebSocket in chunks, so a fixed sleep either clips a half-drawn graph or wastes minutes. The capture waits for the page's own completion signal — SnapshotStreamEnd → status LIVE, snapshotStream cleared — and then for a settle period so the force layout stops moving. It fails loudly rather than shooting a partial graph:

t+ 3s  nodes=14404 streaming=1  streaming 14404/4500
t+10s  nodes=14404 streaming=1  streaming 14404/30000
t+17s  nodes=14404 streaming=1  streaming 14404/47000
t+21s  nodes=14404 streaming=0  LIVE
complete: nodes=14404 status=LIVE

Brand

Every hue comes from the brand's cool family — Electric Cyan → Core Blue → Blued Steel — with the semantic colours reserved for meaning rather than spent on categories. The Fe monogram in the chrome is the company mark; the asset previously rendered an invented Fm element tile with atomic number 100 (Fermium), which the brand rules forbid twice over ("products do not get element tiles of their own", and under Don't, "swap element symbol or atomic number for products").

Size

2560×1440, quantised to a 256-colour palette: 884 KB, down from 2,016 KB. The image is a dark ground with a narrow cool ramp, so it quantises with no visible loss — better than resampling, which would smear the single-pixel nodes into mush.

Not included

ferrosa-operations-console.png in the same homepage section is untouched — it's a different surface that hasn't had a branding pass, and is tracked separately.

Not merging this myself: standing rule is no auto-merge on public repos.

The homepage shot dated from 26 June and showed the viz in its old palette —
hot pink, coral, lime and violet node colours that appear nowhere in the brand.
The viz has since been brought onto the published tokens (ferrosa-memory
feat/viz-brand-conformance), so the picture no longer matched the product.

The new shot is a real graph, not a mock: 14,404 entities and 54,510 edges built
from three Rust workspaces (ferrosa, ferrosa-memory, forge) and the research
corpus. Crates, modules, structs, traits and functions carry their real
dependency, containment, use and implementation edges; documents carry their
sections and the concepts they share, which is what links the clusters into one
web rather than a set of disjoint trees. 0% of nodes are orphans.

Captured after the graph FULLY populated: the snapshot streams over a WebSocket
in chunks, so the capture waits for the page's own completion signal
(SnapshotStreamEnd -> status LIVE, streaming cleared) and then a settle period
for the force layout, rather than sleeping a fixed interval and catching a
half-drawn graph. The filter pills in the shot show the real crate names.

Every hue now comes from the brand's cool family — Electric Cyan through Core
Blue to Blued Steel — with the semantic colours reserved for meaning. The Fe
monogram in the chrome is the company mark; the asset previously rendered an
invented "Fm" element tile with atomic number 100, which the brand rules forbid.

2560x1440, quantised to a 256-colour palette: 884 KB, down from 2,016 KB. The
image is a dark ground with a narrow cool ramp, so it quantises with no visible
loss — better than resampling, which would smear the single-pixel nodes.
@bkearns
bkearns merged commit 379199f into main Aug 19, 2026
1 check passed
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.

1 participant