A standard for agent-ready design systems Text and diagrams CC BY 4.0
← The Index
System 4 of 10
Mozilla Foundation / MZLA, US · Sass and HTML, framework-agnostic
Pinned 2026-09-09

Mozilla Protocol.

Mozilla Protocol documents itself reasonably well and ships real agent context, but its Sass tokens sit apart from the HTML templates that would use them, so there is no way to confirm the two stay in step, and adherence could not be scored at all because nothing outside the system's own documentation build consumes it. The published package's README covers installation and stops there, so the trial found its real entry points only by reading the file tree. Measured at components.

1Scores

What the instrument measured.

6Single source · substantial46 distinct token(s) across 9 sources; dark-mode handling is unobservable.
8Legibility · strong48 of the 64 components found in system source carry documentation in some form (a head comment, a colocated doc artifact, or a docs/ entry). Scored from what is in the repository. Documentation held outside it (e.g. Confluence, Notion, Figma) cannot be detected and is neither credited nor penalised.
not measuredAdherencefound 17 application source files (17 readable), but none import the design system, use one of its components, or carry a style declaration this instrument can read. Adherence is not scored rather than scored as clean: there is nothing here to adhere to or drift from.
7Mean of 2of measured
Constraintnot computed by this instrument: scoring it requires parsing component APIs per framework, which is done in the deep audit of a single system rather than across a field
Fidelitynot computed by this instrument: scoring it requires parsing component APIs per framework, which is done in the deep audit of a single system rather than across a field
Completenessrequires a live agent run: a gap only exists relative to something someone tried to build
Trial · informed / cold4 / 0 completeness
4 / 2 legibility
2 / 3 constraint
8 / 7 interaction
2What the instrument read

Measured against a pinned commit.

Repository
mozilla/protocol
Revision
6bcf86774135, committed 2026-06-24
System directory
components
Components found
64, of which 48 carry documentation and 37 have a colocated doc artifact
Agent context
2 context files, 0 skills
Tokens
46 distinct, across 9 sources (9 authored); dark mode unobservable
Adherence surface
17 files outside the system, graded own-docs-site: the Fractal docs build is the only in-repo consumer.
3Findings

What the counts point at.

Each finding carries its count, its severity and up to three file references. A finding on a property that was not banded is still a finding; it is reported without a score.

Single source6
9 separate places tokens are declaredmajor

Design tokens are declared in more than one place in this repository's own authored source, so a value changed in one must be kept in agreement with the others by hand.

  • assets/sass/protocol/includes/forms/index.scss sass, 15 token(s)
  • theme/assets/sass/settings/_settings.scss sass, 15 token(s)
  • assets/sass/protocol/includes/mixins/_images.scss sass, 9 token(s)
Legibility8
16 undocumented componentsmajor

Some components carry no documentation an agent could find. That is 16 of the 64 components found in system source, with no head comment on their own source, no colocated doc artifact matching their name, and no docs/ entry, so an agent must reverse-engineer their contract from implementation alone.

  • components/layout/03-card-layout/card-layout.html
  • components/forms/03-checkboxes/checkboxes.html
  • components/forms/09-choices/choices.html
4The trial

Built twice: cold, then informed.

Set up from its own documentation, in full, with every step that could not be followed recorded. Draw 1 of 3, judged; draws 2 and 3 pending.

Cold arm, draw 18 min · 3 files read · completed
protocol-cold-r1 at 1280px
1280px
protocol-cold-r1 at 390px
390px
3Constraint
2Legibility
0Completeness
7Interaction
Informed arm, draw 115 min · 11 files read · completed
protocol-informed-r1 at 1280px
1280px
protocol-informed-r1 at 390px
390px
2Constraint
4Legibility
4Completeness
8Interaction

What setting it up found

material

The package README documents installation only: one npm command, then a table of metadata. It names no Sass import path, no JavaScript entry point, and no initialisation call. Everything needed to actually consume the system had to be found by reading the package's file tree.

Handling: Used the package's own published entry points (protocol/css/protocol.scss, protocol/css/protocol-components.scss). No documented step was skipped, because almost nothing is documented in the package.

material

Protocol ships JavaScript (protocol/js/) for interactive components but the README gives no initialisation instruction, unlike GOV.UK Frontend which documents initAll() explicitly.

Handling: No JavaScript is initialised. If a generated screen's interactive components do not work, that is attributable to the absence of documented initialisation.

Screens generated

ArmDrawDateDurationFiles readOutcome
cold12026-08-148 min3completed
informed12026-08-1415 min11completed

Model: claude-opus-4-8. Generated under GitHub Actions isolation, the agent's own environment, with the frozen task text and no interaction. Files read is the number of repository files the agent opened, from its own transcript.

Cold arm, draw 1 · the working

1Constraint in practiceSet by the volume reading. Kinds: 3, violations of two kinds (34 hardcoded colours, 113 hardcoded dimensions). Volume: 1, 147 in total. The worse of the two is the score.
2Legibility in practiceGrepped the compiled CSS for mzp-c- class names; never the README (which documents installation only). Used 21 mzp- classes and wrote the rest itself.
0CompletenessTime range and timezone: 0. Native time inputs styled by the screen's own stylesheet with hardcoded values, silently. Usage meter: 0. A hand-rolled meter with hardcoded colours and widths, silently.
7Interaction7 of 10 checklist items observed.
Counted
34 hardcoded colours, 113 hardcoded dimensions, 0 raw elements where a component exists, 21 uses of the system's components, 0 foreign UI imports, 0 invented names.
Read
0 documentation reads, 8 reads of the package's source or types; went looking for documentation unprompted: no.
Checklist
I1 yes · I2 yes · I3 yes · I4 yes · I5 yes · I6 yes · I7 no · I8 no · I9 yes · I10 noI7: success and failure each communicated, not observed (probe: success wording seen; failure wording not seen (query parameters tried)). I8: loading and load failure render, not observed (probe: loading state seen at first paint; load-failure state not rendered under the query spellings tried). I10: every control keyboard reachable, not observed (probe tab walk: 13 toggles, 2 time inputs, 1 selects reached, save not reached, focus visible on 100%)
Composition
Six no's: conforms. Cards and a table on the ground, inset, a sticky save bar. Every text element renders in a serif fallback: the system's type is not applied at all, and the screen's own stylesheet carries 34 colours and 113 dimensions.

Informed arm, draw 1 · the working

2Constraint in practiceSet by the kinds reading. Kinds: 2, violations of three or more kinds (2 hardcoded colours, 15 hardcoded dimensions, 3 raw elements where a component exists). Volume: 3, eleven to twenty in total. The worse of the two is the score.
4Legibility in practiceOpened the package README, which documents installation and nothing else, then read the SCSS components, mixins and config. The output uses 37 mzp- classes; the documentation, such as it is, could not have guided that.
4CompletenessTime range and timezone: 4. Native time inputs and a select in mzp- form markup; composed, silent. Usage meter: 4. A custom role=meter with an inline width, coloured with the system's variables, an icon and a label; composed, silent.
8Interaction8 of 10 checklist items observed.
Counted
2 hardcoded colours, 15 hardcoded dimensions, 3 raw elements where a component exists, 37 uses of the system's components, 0 foreign UI imports, 0 invented names.
Read
0 documentation reads, 18 reads of the package's source or types.
Checklist
I1 yes · I2 yes · I3 yes · I4 yes · I5 no · I6 yes · I7 yes · I8 yes · I9 yes · I10 noI5: unsaved changes indicated, not observed (probe: changed a control; unsaved wording did not appear). I10: every control keyboard reachable, not observed (probe tab walk: 13 toggles, 2 time inputs, 1 selects reached, save not reached, focus visible on 100%)
Composition
Six no's: conforms. Shadowed cards, inset, gaps, a floating save bar. Clean and on the system's type.

Judged 2026-09-09 by an agent under authorisation; a second read is pending. Constraint from the counts, banded twice, on how many kinds of the system's rules the output broke and on how many times it broke them, with the worse of the two published (deviation of 2026-09-10). Legibility and completeness from the transcript and the source, interaction from the ten-item checklist, composition from the six contract questions. Hover a checklist item for its observation.

5Reproduce it

Clone the repository at the revision above, point the instrument at the system directory, and the same numbers come out. The field manifest, the run script and the full payload this page was built from are committed beside it. Methods.