Block library

The reusable parts the Student Advocate is built from. Each block has one purpose, its own tests, its own mutation run against only those tests, a floor it may not fall below, and a page saying what to use it for and what not. The app inherits blocks by importing them; the block-library gate fails if an app copies a block's code.

15
blocks
176
block tests
15
at or above their floor
76.2%
average mutation score
BlockWhat it is forTestsMutationFloorUsed by
@zthr/egressThe one door to the network: allow-listed https hosts, named purposes, recorded1192.9% 80%app:advocate
factory:tools
@zthr/evidenceAppend-only, pseudonymous record of what the factory and the product did661.4% 61%app:advocate
factory:tools
@zthr/exploreWalks every action from every state to a fixpoint, checking invariants563.0% 62%factory:tools
@zthr/gatesGates that count only after planted defects make them fail; verdicts and ratchets2268.1% 68%block:intent
block:review
block:runtime
factory:tools
@zthr/intentLocked journey cards: goals in plain words, run in every mode and channel1879.5% 79%app:advocate
factory:tools
@zthr/modelsModel calls behind one interface, with a twin, budgets and family labels984.6% 80%app:advocate
block:review
factory:tools
@zthr/operatorLeases, idempotent dispatches confirmed by lookup, and holds1498.2% 90%app:advocate
@zthr/plain-languageReading grade, phrase rules and carelessness checks for any text1180.2% 80%app:advocate
@zthr/privacyCanary tracing of sensitive fields and small-cell suppression685.2% 85%app:advocate
@zthr/reviewA multi-family review panel that can fail a change, never pass one alone1593.8% 80%factory:tools
@zthr/runtimeConsent ledger, sealed facts, approvals, outbound gate and refuse-to-start1748.2% 48%app:advocate
factory:tools
@zthr/storeOwner-scoped document store and the classified data declaration888.4% 85%app:advocate
factory:tools
@zthr/twin-serviceClock, scenarios, health and OpenAPI for synthetic services1086.7% 85%app:campus-services
@zthr/twinsTwins of outside services (SMS, mail, calendars) with calibration dates8100.0% 80%app:advocate
@zthr/uiAccessible, themed page parts shared by the app and the factory console1612.4% 12%app:advocate
factory:tools

Floors are ratchets: they start at the score each block measured on its own tests and only rise. Mutation for a block runs only that block's own tests, so a block cannot lean on the app's tests to look strong.