How this site is structured
Every meaningful element on this site carries a few small, stable attributes. They exist so that a screen reader, a test script, or an AI agent can tell what an element is without guessing. This page lists them.
Attributes
data-element- On links and buttons: the notation of what the part is, taken from the published canon at
/canon/lwg.canon.json. data-instance- On links and buttons that repeat: which one of its kind, as listed in the canon.
data-component- On sections, lists, cards and other structure: what kind of element this is, from the list below.
data-id- On the same structural elements: which one of its kind. A stable slug, unique among elements of the same component on a page.
aria-label- On structural elements: the specific name, such as an article's title. Links and buttons carry no
aria-label, because their visible text is their name. data-state- Only on components that load: one of loading, ready, error, expanded, collapsed.
data-role-hint- Marks the kind of action a link or button performs: primary-action, secondary-action, navigation, external-link, download, contact.
data-section,data-position- The region an element sits in, and its 1-based place in a list.
Component types
page- The <main> element of a page. Carries data-page-type and data-page-name.
hero- The introduction at the top of the home page.
section- A named region of a page, such as Projects, Writing, Experience, or Contact.
nav- A group of navigation links.
link- An anchor that navigates, downloads, or opens another site.
button- A control that changes something on the page, such as selecting a cluster.
card- One item in a list: a project, a piece of writing, or a role.
list- A group of cards.
figure- A captioned image or diagram.
visualization- An interactive chart. Its data-state is loading until it has drawn, then ready, or error if it failed to start.
agent-guide- A short note at the start of each page. It is hidden from sighted visitors but present for screen readers and AI agents, and it appears if you tab into it. It points here.
States
loading- Not finished drawing yet. Wait before reading or acting on it.
ready- Finished and safe to read or use.
error- Failed to start. The page still works without it.
expanded- An open region.
collapsed- A closed region.
Click events
Clicks on key links and buttons are counted by a self-hosted, cookie-free analytics tool (GoatCounter) when it is enabled. An event has a name and a title. The name is type/id, where the type is one of nav, exhibit, writing, contact, resume, role, agent. The title is a label followed by key=value details separated by " | ". The tool records no names, accounts, or other identifiers.
What this page does not do
The note at the start of each page is visually hidden. It describes markup only. It does not ask an agent to act, and it does not tell one what to conclude about the site or its author.