What it is
A reusable, on-brand replacement for a plain Markdown permission table. It renders a card with numbered capability columns, a sticky role column, per-role access meters, and accessible grant / deny marks in the Eval Labs gold/amber palette. It exists because the access model is load-bearing canon and deserves a clearer, more scannable presentation than a raw Markdown grid.Where it lives
Rule
- Edit the live access values only in the canonical matrix (Roles and Access Matrix). It is the single source of truth; other notes link to it rather than copy it.
- Keep the grid data identical to the role definitions on that same page. The visual is not allowed to diverge from the written canon.
- Recolor through the brand variables, not hard-coded hex. The component reads
--eval-gold,--eval-amber,--eval-orange,--eval-deep-orange,--eval-ink, and the callout fill/stroke tokens. - Keep the accessibility markup:
scopeon header/row cells,role="img"+aria-label="Allowed" / "Not allowed"on every mark.
Use when
- A note needs to show who-can-do-what across roles and surfaces.
- The grid is small enough to read as a matrix (a handful of roles × a handful of capabilities).
- The data is canonical and stable enough to be worth styling.
Avoid
- Duplicating the matrix data into a second note. Link to the canonical one instead.
- Using it for large or frequently-changing tables where a plain Markdown table is easier to maintain.
- Inlining a
<style>block or Google-Fonts<link>in the note. Obsidian Publish does not render those reliably — all styling belongs inpublish.css.
Markup skeleton
Wrap everything in.eval-access-matrix. Mark full-access rows with am-tier-full and the no-access row with am-tier-none so the role tint and meter labels render correctly.
Markdown gotchaKeep the HTML block free of blank lines. A blank line inside it makes Obsidian close the HTML and resume Markdown, which breaks the table.

