{"$schema":"https://stitchauthority.com/design-system.schema.json","name":"Stitch Authority Brand & Design System","version":"1.21.1","updated":"2026-07-28","canonicalUrl":"https://stitchauthority.com/design-system","machineUrl":"https://stitchauthority.com/design-system.json","schemaUrl":"https://stitchauthority.com/design-system.schema.json","purpose":"Keep every Stitch Authority screen recognizable, useful, and honest as the product grows across agents and contributors.","brand":{"position":"An open textile workroom reference: practical enough for a first repair, rigorous enough for a production handoff.","promise":"Find the next useful source, tool, or working answer—and see what it can and cannot prove.","category":"Independent textile decision reference","mission":"Make textile knowledge, working tools, and specialist source routes easier to find, compare, challenge, and maintain.","strategy":{"organizingIdea":"Make the next textile decision inspectable.","belief":"Practical textile knowledge becomes more useful when the route, source, assumptions, date, and limits remain visible beside the answer.","positioningStatement":"For makers, repairers, and apparel teams with a textile decision in front of them, Stitch Authority is an independent decision reference that connects working answers to maintained source routes and explicit limits.","audienceJobs":[{"audience":"Makers and repairers","situation":"A material, technique, measurement, pattern, or repair problem is stopping the work.","job":"Reach an understandable next step without already knowing the specialist term or the right database.","success":"The person can act, compare options, or name the next direct check with the guide, tool, or source route still open.","guardrail":"Do not imply that a general guide replaces a material test, fit check, safety instruction, or qualified local help."},{"audience":"Apparel teams","situation":"A product-development, fit, costing, sourcing, standards, or production handoff needs a defensible route forward.","job":"Locate current working references and specialist sources while preserving assumptions, jurisdiction, access, and approval boundaries.","success":"The team can prepare a clearer brief, shortlist, calculation, or verification step without mistaking discovery for supplier approval or controlled guidance.","guardrail":"Do not collapse commercial, technical, legal, and certification decisions into one generic recommendation."}],"differentiators":[{"name":"One decision layer across textile domains","meaning":"Making, repair, materials, pattern work, standards, and production remain connected by the task instead of being split into unrelated legacy databases.","proof":"Task routes, site search, permanent source records, related guides, and working tools use the same decision vocabulary."},{"name":"Evidence is part of the interface","meaning":"The source, checked date, scope, access, and limitation travel with consequential information.","proof":"Source-reviewed guides, portable records, public JSON exports, claim levels, and direct correction routes keep the basis inspectable."},{"name":"Working outputs, not passive reading alone","meaning":"The site helps turn reference material into a calculation, comparison, brief, checklist, or next check.","proof":"Calculators, printable working templates, comparison records, and task-specific handoffs preserve units, assumptions, and recovery."},{"name":"Maintenance is visible work","meaning":"Freshness is a dated process rather than an unsupported claim that the collection is current.","proof":"Review cadence, next-review dates, append-only history, a public maintenance queue, and per-record review packets expose upkeep."}]},"messaging":{"descriptor":"Independent textile decision reference","oneSentence":"A maintained textile resource hub for finding, comparing, and checking practical sources, tools, and working answers.","expanded":"Stitch Authority connects textile guides, material and stitch libraries, calculators, working templates, and maintained external-source records. It helps people reach a plausible next step, inspect the evidence behind it, and see what still needs direct verification.","audienceRoutes":[{"audience":"Makers and repairers","message":"Start with the thing you need to make, mend, measure, or learn; specialist vocabulary appears when it helps narrow the route."},{"audience":"Apparel teams","message":"Find current product-development, standards, sourcing, and production routes without confusing discovery with supplier verification or approval."}]},"audiences":[{"name":"Makers and repairers","need":"Plain-language help choosing materials, learning techniques, solving measurements, finding patterns, and locating repair routes."},{"name":"Apparel teams","need":"Working references for product development, specifications, costing, standards, and production sourcing."}],"personality":["Plainspoken","Exacting","Tactile","Curious","Unshowy"],"personalityInPractice":[{"trait":"Plainspoken","means":"Name the task, object, unit, and next action in language a capable colleague would use.","not":"Institutional posturing, vague mission language, or invented editorial labels."},{"trait":"Exacting","means":"Show assumptions, dates, jurisdiction, evidence, and the boundary of the result.","not":"A severe tone, tiny technical copy, or false precision."},{"trait":"Tactile","means":"Let believable material, construction, tools, and work-in-progress details carry the textile character.","not":"Decorative thread motifs, nostalgia filters, or craft-store ornament."},{"trait":"Curious","means":"Expose adjacent terms, alternative routes, unresolved gaps, and ways to inspect further.","not":"Endless recommendations, trivia, or a confident answer where the source remains uncertain."},{"trait":"Unshowy","means":"Use typographic craft, calm density, and evidence to create confidence.","not":"Oversized claims, badges, theatrical statistics, or a generic premium aesthetic."}],"operatingPrinciples":[{"name":"Task before taxonomy","rule":"Begin with the decision or action a person is trying to complete, then reveal specialist terms and source models as useful filters."},{"name":"Evidence before authority","rule":"Trust comes from named sources, checked dates, visible limits, and correction history rather than status language or inventory totals."},{"name":"Useful at two depths","rule":"A newcomer should reach a plausible next step quickly while a practitioner can inspect units, assumptions, provenance, and handoff detail."},{"name":"Maintenance is part of the interface","rule":"Freshness, review cadence, prior state, and correction routes remain visible wherever they affect a decision."},{"name":"One system, varied composition","rule":"Tokens, information relationships, and interaction behavior stay consistent while page composition changes to fit the work."}],"trustModel":{"earnedBy":["Primary-source links near consequential claims","Observed dates and append-only source history","Candid limitations and direct verification steps","Task success, accessibility, and working links","Public correction, contribution, and maintenance routes"],"neverClaimedFrom":["Record counts, evidence counts, or free access alone","Directory membership, listing presence, or a provider logo","Generated imagery, generic testimonials, badges, seals, or awards","Internal QA presented as qualified participant evidence","The word Authority in the product name"]},"visualDirection":"Editorial workroom, not heritage cosplay: warm paper, near-black ink, madder red, weld yellow, disciplined serif display type, readable sans text, and mono only where information benefits from calibration.","signature":"The needle-and-thread mark and running-stitch rule connect craft to evidence. Use them as orientation devices, never as filler.","isNot":["A guild, certification body, marketplace, or roster of approved practitioners","A luxury fashion campaign","A generic SaaS landing page","A scrapbook of nostalgic sewing decoration","An automated answer engine that hides its sources"]},"identity":{"lockup":"Use the needle-and-thread mark with the Stitch Authority wordmark in primary navigation and formal brand contexts.","minimumMarkSize":"28 CSS pixels on screen","clearSpace":"Keep at least half the mark width free on every side.","wordmarkRule":"Set “Stitch” in the foreground color and “Authority” in the brand color. The name does not imply provider approval.","assets":{"markSvg":"https://stitchauthority.com/brand/stitch-authority-mark.svg","componentSource":"src/components/Logo.tsx","usage":"Use the public SVG for external layouts. Repository interfaces use the shared component so currentColor follows the light and dark semantic brand tokens."},"do":["Use the supplied SVG without redrawing its paths.","Use currentColor and semantic brand tokens so the mark works in both themes.","Keep the mark and wordmark optically aligned."],"avoid":["Stretching, rotating, outlining, shadowing, or placing the mark in a badge.","Using a gradient or unrelated color on the mark.","Using the mark as a decorative repeat or background texture."]},"imagery":{"purpose":"Help someone recognize a material, understand a textile action, or inspect a working context. An image must carry information before it carries mood.","modes":[{"name":"Material evidence","use":"Swatches, surfaces, structure, drape, seams, tools, and construction details shown clearly enough to compare.","composition":"Fill the frame with the relevant material or detail, preserve useful scale, and keep color and texture believable."},{"name":"Work in progress","use":"Hands, tools, and intermediate states when the action itself helps explain a technique or decision.","composition":"Show one legible action with a clear focal point. Hands belong only when they demonstrate work, not as generic maker atmosphere."},{"name":"Reference still life","use":"A restrained arrangement of garments, swatches, blank working sheets, measuring tools, and notions for guide covers.","composition":"Use a quiet overhead or shallow oblique view, tactile neutrals, one madder or weld accent, and enough negative space for responsive cropping."}],"ratios":[{"use":"Homepage or feature image","ratio":"16:9","rule":"Keep the primary subject away from the text-safe side and verify the crop at 390px and 1440px."},{"use":"Guide cover","ratio":"4:3","rule":"The image must survive a 16:10 card crop without losing the instructional subject."},{"use":"Material or stitch reference","ratio":"1:1","rule":"Show repeat, scale, and surface without unrelated props."}],"generatedImageRules":["Never generate readable pseudo-text, fake labels, stamps, certificates, signatures, seals, standards marks, or provider logos.","Keep depicted forms and documents blank unless the words are added later as authored HTML or a verified graphic asset.","Do not imply that a generated person, workshop, factory, provider, product, or test result is real.","Inspect hands, needles, measuring tools, garment construction, and repeated textile structure at full size before use.","Record the generation method and source asset path in the work log; generated imagery is illustration, not evidence.","Write alternative text for the information the image contributes. Use empty alt text when an image is only decorative."],"avoid":["Generic lifestyle portraits, fashion-campaign poses, and staged smiling teams.","Sepia nostalgia, craft-store clip art, faux paper tears, and textile decoration unrelated to the task.","Fabric or stitch images whose structure is visibly impossible.","A different illustration style for every guide.","Text baked into responsive editorial images."]},"iconography":{"style":"Sparse, functional, and subordinate to language. Use simple currentColor line icons or the existing typographic arrow and chevron vocabulary.","sizes":"Use 18–20px inside controls and 24px for standalone informational icons. The containing interactive target remains 44–48px.","rules":["Pair unfamiliar icons with visible text; a tooltip alone is not a label.","Use arrows for movement to another destination, chevrons for disclosure, plus and minus for adding or removing a visible item, and status symbols only with words.","Use one stroke family and optical weight within a view.","Mark decorative icons aria-hidden and give icon-only controls an accessible name.","Do not use shields, rosettes, stars, check badges, or seals as unearned authority signals."],"avoid":["Emoji as interface icons.","Mixing filled, outlined, hand-drawn, and typographic icon families.","Replacing a clear label with a clever sewing symbol.","Animating icons without a state or orientation purpose."]},"dataDisplay":{"purpose":"Make comparison, coverage, maintenance state, and measured behavior easier to inspect without presenting totals as proof of usefulness or completeness.","rules":["Start with the question the table, chart, or fact strip answers; do not begin with a decorative metric.","Name the unit, source, date range or checked date, denominator, and evidence lane wherever they affect interpretation.","Use tables for exact repeated fields and charts only when shape, change, or distribution is easier to see than to read.","Keep axes, labels, and values visible. Do not rely on hover, color alone, area, or a legend someone must memorize.","Use semantic status colors only for the status they name; use the core palette for series and pair every series with a direct label or pattern.","Separate inventory, passive behavior, internal QA, and qualified participant evidence. None can stand in for another.","Show zero, missing, unavailable, and not-yet-measured as different states.","Maintenance queues must state their as-of date, due-soon threshold, cadence source, and status meaning; an overdue state identifies work, not provider risk or quality.","When a maintained evidence collection is useful outside its interface, publish a stable machine-readable export with its schema, version, update date, source links, maintenance fields, and interpretation boundaries.","Avoid 3D charts, gauges, ornamental rings, unexplained scores, truncated axes, and totals presented as proof of usefulness or completeness."],"preferredForms":[{"question":"What is the exact value for each repeated field?","form":"Accessible data table"},{"question":"How did one measure change over time?","form":"Directly labeled line or compact column chart"},{"question":"Which coverage or maintenance state needs action?","form":"Dense matrix, ledger, or fact strip with text status"},{"question":"Is there enough evidence to make a claim?","form":"Evidence-lane label and denominator before any visualization"},{"question":"How can another tool reuse the maintained evidence without scraping the interface?","form":"Versioned machine-readable export linked to its schema and interpretation boundaries"}]},"voice":{"rules":[{"title":"Start with the job","rule":"Name what the user can do before explaining the collection or taxonomy.","example":"Find a clothing repair service in Norway."},{"title":"Use bounded claims","rule":"State the source, observation date, and limit beside consequential claims.","example":"The checked catalogue exposed 679 listings; that count is not a provider census or quality rating."},{"title":"Write like a capable colleague","rule":"Prefer concrete nouns and verbs. Remove institutional posturing, motivational filler, and theatrical labels.","example":"Compare access, geography, evidence, and limits."},{"title":"Separate evidence from endorsement","rule":"A record may document a useful route without recommending, ranking, recruiting, or approving anyone in it.","example":"Use this directory to make a shortlist, then verify the provider directly."},{"title":"Make the next action explicit","rule":"Finish instructions and empty states with one realistic recovery or next step.","example":"Try the country name, item, or service—or browse Repair and conserve."}],"contexts":[{"context":"Homepage and navigation","goal":"Orient someone to the next useful task without making an authority or completeness claim.","tone":"Short, direct, and task-first.","example":"Find a source, tool, or working answer."},{"context":"Guide or technique","goal":"Answer first, then explain the work, evidence, limits, and next check.","tone":"Instructional, plainspoken, and specific about materials, units, and sequence.","example":"Test the seam on a scrap before cutting the garment."},{"context":"Source record","goal":"Describe what the route is useful for and where direct verification begins.","tone":"Factual, bounded, and free of ranking or approval language.","example":"Use this directory to make a shortlist, then verify the provider directly."},{"context":"Calculator or result","goal":"State the result with units, assumptions, rounding, and a reversible correction path.","tone":"Exact without implying that a calculation replaces a sample, test, specification, or qualified review.","example":"Result: 1.6 metres. Add your chosen shrinkage and cutting allowance before purchase."},{"context":"Empty, error, or success state","goal":"Explain what happened, preserve valid work, and name the next action.","tone":"Calm, specific, and non-blaming.","example":"No source matched that country and task. Keep the task filter or clear the country."},{"context":"Safety, legal, compliance, or correction","goal":"Separate observed source material, interpretation, unresolved risk, and delivery status.","tone":"Cautious, source-led, and explicit about what Stitch Authority has not established.","example":"This route helps locate the current standard; confirm applicability and the controlled text before acting."}],"preferredTerms":["Source record","Checked on","Evidence","Limitations","Best for","Compare","Find","Calculate","Confirm directly"],"claimLevels":[{"level":"Observed","publishWhen":"A named source was checked on a stated date and the interface describes only what was visible.","example":"The directory exposed a Patternmaking & Related Services filter when checked on 26 July 2026."},{"level":"Bounded inference","publishWhen":"The conclusion follows from cited observations and is clearly labeled as an interpretation or next-check recommendation.","example":"Use the filter to form a shortlist, then confirm service scope and availability with the professional."},{"level":"Not established","publishWhen":"Never present the claim as fact without new evidence. State the limitation instead.","example":"Listing presence does not establish identity, credentials, availability, file compatibility, or quality."}],"prohibitedPatterns":[{"id":"giant-hero","name":"Cartoonishly large headlines","avoid":"Any page title above the 52px desktop, 46px tablet, and 36px mobile caps.","reason":"Scale should establish hierarchy without turning one sentence into the whole viewport."},{"id":"split-hero","name":"Giant-left, tiny-right split headers","avoid":"A monumental title isolated on the left with small supporting copy stranded across an empty row.","reason":"The relationship is weak, the reading path is artificial, and the small copy becomes subordinate to empty space."},{"id":"empty-megacards","name":"Oversized empty cards","avoid":"Very tall or wide boxes containing only a label, one sentence, and an arrow.","reason":"Component area must be earned by the information or interaction it contains."},{"id":"crushed-label","name":"Narrow text columns used as visual tricks","avoid":"Copy forced into a sliver so ordinary words stack one per line.","reason":"A label is not a decorative spine; it must remain readable at a glance."},{"id":"authority-metrics","name":"Counts presented as proof of authority","avoid":"Promotional resource totals, evidence totals, or price claims used as homepage trust theater.","reason":"Inventory describes the database at one time. It does not prove usefulness, quality, completeness, or endorsement."},{"id":"faux-editorial-copy","name":"Decorative editorial babble","avoid":"Invented desk names, numbered notes, archival metaphors, and slogans that do not help complete a task.","reason":"Labels must orient, not perform expertise."},{"id":"people-claims","name":"Invented practitioner or maker claims","avoid":"Language implying Stitch Authority recruits, manages, represents, or has approved practitioners or makers.","reason":"The product is a resource hub. It may document external populations but does not own them."},{"id":"generic-ai-layout","name":"Interchangeable AI landing-page structure","avoid":"A centered slogan followed by three equal feature cards, decorative gradients, and unsupported social proof.","reason":"Structure should follow textile decisions and working information, not a default generation pattern."}]},"foundations":{"colors":[{"token":"--bg","name":"Paper","light":"#FBF8F3","dark":"#17150F","role":"Primary canvas"},{"token":"--surface","name":"Muslin","light":"#F4EEE4","dark":"#211E17","role":"Grouped sections and controls"},{"token":"--surface-2","name":"Pattern paper","light":"#E9E0D2","dark":"#2C2820","role":"Secondary surface and image placeholder"},{"token":"--border","name":"Tracing line","light":"#D9CDB8","dark":"#3A3529","role":"Separation, never the only control boundary"},{"token":"--fg","name":"Ink","light":"#23201B","dark":"#EDE6D8","role":"Primary text"},{"token":"--muted","name":"Graphite","light":"#57503F","dark":"#C4BBA8","role":"Secondary text"},{"token":"--muted-2","name":"Notch","light":"#6E6753","dark":"#9A917D","role":"Metadata and tertiary text"},{"token":"--brand","name":"Madder","light":"#6E2B2E","dark":"#D79A94","role":"Links, primary actions, focus, and brand mark"},{"token":"--weld","name":"Weld","light":"#C0801E","dark":"#E4B45C","role":"Sparse craft-track accent and warm emphasis"}],"semanticColors":[{"token":"--positive","light":"#2F684C","dark":"#8EC9A8","role":"Success, always paired with words or an icon"},{"token":"--warning","light":"#765000","dark":"#E6BE69","role":"Caution, always paired with words or an icon"},{"token":"--danger","light":"#8A2E31","dark":"#E7A0A3","role":"Errors and destructive actions, always paired with words or an icon"}],"inverseColors":[{"token":"--inverse-bg","value":"#1C1A17","role":"Persistent dark canvas inside either theme"},{"token":"--inverse-surface","value":"#262219","role":"Raised or interactive surface on the inverse canvas"},{"token":"--inverse-fg","value":"#F6EEE2","role":"Primary text on the inverse canvas"},{"token":"--inverse-muted","value":"#CFC4B2","role":"Secondary text on the inverse canvas"},{"token":"--inverse-tertiary","value":"#9F9584","role":"Metadata on the inverse canvas"},{"token":"--inverse-border","value":"#4B4438","role":"Rules and control boundaries on the inverse canvas"},{"token":"--inverse-accent","value":"#DFA24A","role":"Sparse warm accent on the inverse canvas"}],"typography":{"families":[{"token":"--font-display","family":"Zodiak","use":"Page titles and editorial headings only","status":"Core"},{"token":"--font-sans","family":"Ancizar Sans","use":"Body copy, navigation, forms, buttons, and UI","status":"Core"},{"token":"--font-mono","family":"IBM Plex Mono","use":"Eyebrows, metadata, measurements, and calibrated tables","status":"Core functional accent"},{"token":"--font-serif","family":"Ancizar Serif","use":"Existing quotation treatments only; do not introduce into new UI","status":"Restricted legacy"}],"scale":[{"token":"--step--1","role":"Metadata","range":"12.5–13.4px"},{"token":"--step-0","role":"Body and controls","range":"16–17.3px"},{"token":"--step-1","role":"Lead and card title","range":"19.2–22.4px"},{"token":"--step-2","role":"Section heading","range":"24–31.2px"},{"token":"--step-3","role":"Page or major section title","range":"28.8–43.2px"},{"token":"--hero-title","role":"Maximum product headline","range":"52px desktop · 46px tablet · 36px mobile"}],"rules":["Use one H1 and preserve logical heading order.","Keep body copy at or above 16px with approximately 1.5–1.6 line height.","Keep long-form text between 50 and 75 characters per line.","Use mono for metadata that benefits from scanning, not for paragraphs.","Use sentence case. All caps are reserved for short mono labels with added tracking.","Do not shrink explanatory copy to create visual contrast."]},"spacing":[{"token":"--sp-2","value":"8px","use":"Tight internal relationships"},{"token":"--sp-3","value":"12px","use":"Label-to-content and compact control gaps"},{"token":"--sp-4","value":"16px","use":"Default component padding and row rhythm"},{"token":"--sp-6","value":"24px","use":"Column gutter and mobile page edge"},{"token":"--sp-8","value":"32px","use":"Desktop page edge and component group"},{"token":"--sp-12","value":"48px","use":"Section sub-group"},{"token":"--sp-16","value":"64px","use":"Page intro and major division"},{"token":"--sp-24","value":"96px","use":"Maximum standard section breathing room"}],"layout":{"maximumWidth":"72rem / 1152px","desktopPageEdge":"32px","mobilePageEdge":"24px","grid":"A 12-column mental model with 24px gutters; collapse by content pressure, not device names.","readingMeasure":"50–75 characters; target 66ch.","density":"Compact editorial rows for references and tools; larger cards only when imagery or decision metadata earns the area.","breakpoints":["56rem: navigation and most two-column structures collapse","40rem: title cap becomes 36px and page edges become 24px","37.5rem: card grids become one column"]},"shape":{"radiusToken":"--r","radius":"9px","pillToken":"--r-pill","pillRadius":"999px","rule":"Use one quiet radius on controls, imagery, and bounded surfaces. Use the pill token only for compact tags or chips whose shape communicates grouping. Tables, ledgers, and full-width sections may remain square."},"controls":{"minimumTargetToken":"--control-min","minimumTarget":"44px / 2.75rem","rule":"Primary controls and touch routes use the 44px house minimum. The 24px WCAG floor is not the product target."},"elevation":{"default":"Use surface contrast or a one-pixel rule before adding shadow.","floatingToken":"--shadow-float","floatingUse":"Navigation panels and temporary trays that must read above document flow.","avoid":"Do not put the same shadow on every card or use elevation as decoration."},"layers":[{"token":"--z-sticky","value":"40","use":"Persistent site header"},{"token":"--z-menu","value":"60","use":"Navigation menus above the header and document"},{"token":"--z-overlay","value":"100","use":"Full-screen navigation and blocking overlays"}],"motion":{"tokens":[{"token":"--duration-fast","value":"160ms","use":"Press, focus, and small hover feedback"},{"token":"--duration-standard","value":"220ms","use":"Control state and small disclosure changes"},{"token":"--duration-image","value":"600ms","use":"Subtle image treatment only"},{"token":"--duration-reduced","value":"0.01ms","use":"Reduced-motion fallback when an effectively instant transition is needed"},{"token":"--ease-out","value":"cubic-bezier(.16, 1, .3, 1)","use":"Elements responding or entering"}],"rules":["Motion must clarify feedback, orientation, or continuity.","Animate transform and opacity; avoid layout-moving decoration.","No automatic carousels, parallax, scroll hijacking, or looping ambient motion.","Respect prefers-reduced-motion with an instant or opacity-only alternative."]}},"components":[{"name":"Page intro","purpose":"Name the page, state what it helps accomplish, and expose the primary next action.","rules":"Use a compact left-aligned stack. Operational references, ledgers, coverage maps, and taxonomy pages use --step-3; feature, guide, and source-record titles may use the bounded --hero-title token. Supporting text stays near the title and within 66ch."},{"name":"Button","purpose":"Trigger or navigate to a clear outcome.","rules":"Use one filled primary action per view when there is a true priority. Maintain a 44px minimum hit area. Use verb-first labels."},{"name":"Text link","purpose":"Navigate within prose, metadata, and secondary actions.","rules":"Use the madder token and a visible underline where context alone does not make the link obvious."},{"name":"Resource row","purpose":"Expose name, job, geography, source type, access, evidence date, and limitations without hiding the comparison basis.","rules":"Prefer rows or compact cards. Show one primary job and every evidence-backed additional job; do not duplicate a maintained source to force it into another task filter. Do not use provider logos, stars, rank, or approval badges unless the underlying evidence explicitly supports them."},{"name":"Source model row","purpose":"Explain which owner or maintainer can answer a question before someone enters a large resource collection.","rules":"Expose when to use the model, what it can establish, what it cannot establish, the next check, and representative live routes. Treat the model as an evidence boundary, never a quality tier, score, or ranking."},{"name":"Operational fact strip","purpose":"Expose the date, cadence, state transition, or rule needed to act on an operational reference.","rules":"Use compact definition rows with descriptive values. Show workflow facts such as the next due date or append-only rule, never catalogue totals, unsupported quality measures, or promotional proof."},{"name":"Maintenance work queue","purpose":"Turn published review dates into ordered work that a maintainer or agent can reproduce without reconstructing the process from prose.","rules":"State the as-of date and due threshold, lead with overdue or due-soon work, show an honest nothing-due state, and attach the current record, source, dates, review focus, portable packet, allowed outcomes, and append-only finish rule. Queue status is never a provider score."},{"name":"Evidence note","purpose":"Place source scope and decision boundaries near a consequential claim.","rules":"Use plain headings such as Evidence, Limitations, or Checked on. Do not invent archival or editorial labels."},{"name":"Record usefulness check","purpose":"Ask whether a permanent Stitch Authority record supported the visitor's next decision without rating the external source.","rules":"Use one neutral three-outcome question, bounded reason choices, and honest sending, received, and retry states. Send no name, free text, account, persistent identifier, or business information. Treat responses as anonymous interaction counts that never establish provider quality, unique users, or qualified participant validation."},{"name":"Research participation funnel","purpose":"Move an eligible volunteer from invitation to a consented realistic task without hiding the study boundary or front-loading the complete operating protocol.","rules":"Use a compact task-first introduction, direct track-to-runner links, participant-centered track labels, a concise data summary beside positive consent, and progressive disclosure for the complete method and withdrawal terms. Keep self-guided discovery, moderated evidence, internal QA, listed providers, and represented practitioners separate."},{"name":"Research task invitation","purpose":"Offer an optional self-guided task check at the point someone is already using the product, with a measurable handoff into consent.","rules":"Keep the prompt compact and adjacent to the active task. State time, activity, and omitted data in plain language; use participant-centered track choices; preserve only a bounded aggregate entry point; and distinguish an invitation click, a consented start, self-guided discovery, and qualified moderated validation. Never use clicks as participant counts or evidence of completion."},{"name":"Filter chip","purpose":"Apply one visible catalogue constraint.","rules":"Show selected state with shape, text, and color. Preserve state in the URL. Keep each target at least 44px high."},{"name":"Data table","purpose":"Compare repeated fields or exact values.","rules":"Use headers, captions, tabular figures where helpful, and a contained horizontal-scroll region on small screens."},{"name":"Empty or error state","purpose":"Explain why no useful result is visible and provide a recovery path.","rules":"Preserve user input, name the constraint in plain language, and offer one primary correction plus an optional browse route."},{"name":"Site navigation","purpose":"Expose the main jobs and preserve orientation across a large reference collection.","rules":"Use descriptive destination labels, keep the logo linked to home, and move secondary destinations into grouped menus or the footer before compressing primary labels."},{"name":"Search result","purpose":"Show why a page, tool, or source record matches a query and make result types distinguishable.","rules":"Lead with the title and useful excerpt, show the content type in text, preserve the query, and never manufacture relevance with a popularity badge."},{"name":"Working template","purpose":"Turn a guide into a record someone can complete, print, save, or hand off.","rules":"Use 16px fields, explicit labels, 44px actions, local save and clear feedback, print-safe layout, and a clear statement of what the template cannot establish. Never send entered values, field labels, or exported records in behavior events; the measurement payload may contain only the static template ID, action name, and public or internal-QA evidence-lane marker."},{"name":"Disclosure","purpose":"Keep optional methods, records, and supporting detail available without forcing them through the primary task path.","rules":"Use native details and summary semantics, a descriptive label, an optional one-line deck, a visible chevron, a 44px minimum target, visible focus, and an expanded print fallback. Do not hide information required to understand the immediate decision, consent, price, safety, or consequence."},{"name":"Form field","purpose":"Collect one understandable unit of information with a visible label and recovery path.","rules":"Keep labels persistent, instructions close, errors specific, and valid input intact. Do not use placeholder text as the only label."},{"name":"Correction intake","purpose":"Challenge one published record without obscuring its current state or implying that a prepared packet reached a maintainer.","rules":"Start from a searchable current-record selection, show the permanent record and current source, bind identity and decision metadata again on the server, and separate supporting or replacement evidence from the challenged state. Reject private contact details from public packet text. Offer copy and download as portable actions; expose a queue action only after the destination is verified signed-out as public and issue-enabled."},{"name":"Figure","purpose":"Connect an image, diagram, or specimen to the exact point it helps explain.","rules":"Use useful alternative text, a caption when provenance or interpretation matters, and the canonical image ratios. Never use an image as unsupported proof."}],"pagePatterns":[{"name":"Start or hub page","job":"Help a visitor identify the relevant task and reach a useful destination quickly.","anatomy":["Compact job statement and one-sentence scope","One primary search or browse action","Task groups labeled with user language","Selected guides, tools, or source routes with enough metadata to choose","Plain explanation of evidence and correction"],"avoid":"Promotional inventory counts, unsupported authority claims, abstract mission copy, or oversized cards with one link."},{"name":"Research participation flow","job":"Let an eligible person understand the commitment, choose the closest resource-use track, consent to limited task data, and begin without mistaking the activity for training, provider recruitment, or completed validation.","anatomy":["Compact task statement with time, activity, identity, and control facts","Direct participant-centered track choices that open the runner rather than reload an intermediate selection state","Concise event-data summary and positive consent before any task event","Primary begin action visible before long method instructions","Progressive disclosure for full data, retention, recovery, withdrawal, and facilitation terms","Explicit separation between self-guided discovery and qualified moderated evidence"],"avoid":"Long protocol text before the first meaningful choice, duplicated page and runner introductions, provider-recruitment language, hidden consent scope, preselected consent, decorative evidence totals, or internal QA presented as participant proof."},{"name":"Search or directory page","job":"Let someone express a need, narrow visible constraints, compare results, and recover from no result.","anatomy":["Labeled query field with the current query preserved in the URL","Visible result-type and task filters","Result count described as current inventory, not proof","Compact results with type, job, evidence date, access, geography, and limits where relevant","When active research needs volunteers, a compact optional task invitation beside the controls rather than a detached campaign block","No-result state with one correction and one browse route"],"avoid":"Hidden filter state, rank without a stated basis, provider approval signals, or a dead empty page."},{"name":"Decision map or taxonomy reference","job":"Help someone choose the right kind of source or route before asking them to navigate the complete collection.","anatomy":["Compact orientation in plain language","Task-first entry routes","Definitions organized by the user decision","Explicit can-establish and cannot-establish boundaries","Representative live examples and URL-preserved filtered routes","Handoff to records, comparison, standards, coverage, or maintenance"],"avoid":"Giant network diagrams, promotional inventory totals, quality scores, decorative taxonomy cards, or definitions disconnected from working routes."},{"name":"Operational reference or ledger","job":"Let someone inspect current state, understand the maintenance rule, find the next due action, and challenge an earlier decision.","anatomy":["Compact --step-3 title and one-sentence task orientation","Direct anchors to the next due work, recorded change, or correction route","Operational facts such as cadence, next due date, and append-only behavior","An as-of maintenance queue with a truthful nothing-due state, next batch, and portable record packets","Dense definitions or records arranged as rows rather than oversized cards","Visible dates, source routes, state labels, and limitations","Correction or contribution handoff that preserves the prior state"],"avoid":"Promotional record totals, baseline counts, giant dark mastheads, split section headers, oversized definition cards, or state claims without dates and source routes."},{"name":"Guide or working answer","job":"Answer the immediate question, show the decision boundary, and support the next real action.","anatomy":["One bounded title and concise description","Answer first","Explanatory sections ordered by the work","Useful figure, table, calculator, or working template only when it improves the task","Primary sources, checked date, limitations, and realistic next step","FAQ for adjacent search intent"],"avoid":"Decorative throat-clearing, false certainty, a generic hero, or source lists separated from the claims they support."},{"name":"Calculator or interactive tool","job":"Produce one understandable result while keeping units, assumptions, and reversibility visible.","anatomy":["Short statement of what the tool calculates","Persistent labels, units, examples, and defaults only when the product can justify them","An honest empty state when no universal or source-backed starting value exists","Immediate result with calculation basis","Base arithmetic and every user-entered adjustment shown as separate quantities","Assumptions, rounding, and limitations beside the result","Clear reset or correction path","Related guide or source for interpretation"],"avoid":"Unlabeled fields, invented typical project values, hidden fit, ease, or reserve adjustments, area scaling presented as an accurate garment or shaped-project quantity, results that appear authoritative without assumptions, destructive reset behavior, or motion that delays the answer."},{"name":"Source evidence record","job":"Document what an external resource is useful for, what was checked, and what remains unverified.","anatomy":["Resource name and practical job","Direct source destination","Primary job, evidence-backed additional jobs, observed date, access, geography, audience, and source type","Limitations and verification instructions","Correction history or contribution route","Related guide when interpretation is needed"],"avoid":"Stars, awards, approval badges, provider logos as proof, census language, or claims that Stitch Authority manages listed people."},{"name":"Machine-readable evidence export","job":"Let agents and tools reuse a maintained evidence collection without scraping the visual interface or dropping its decision boundaries.","anatomy":["Stable public URL and semantic version","Machine-readable schema URL","Deterministic collection update date and record count","Stable record and source URLs","Evidence, limitations, access, geography, checked date, next review date, and append-only history","Explicit reuse and interpretation boundaries beside the data"],"avoid":"Provider rankings, completeness claims, undocumented fields, unstable generated timestamps, silent vocabulary changes, or exports that strip evidence and limitations from names and links."}],"accessibility":["Meet WCAG 2.2 AA. Normal text needs 4.5:1 contrast; large text and meaningful UI graphics need 3:1.","Use 44–48px targets for primary touch controls; 24px is the absolute WCAG floor.","Support keyboard navigation, visible focus, a logical heading outline, landmarks, labels, and useful alternative text.","Never communicate status with color alone.","Keep focused controls visible below sticky elements.","Preserve form input when validation fails and explain the correction beside the field.","Test at 320, 390, 768, 1024, and 1440 CSS pixels with no horizontal page overflow.","Instrument field Core Web Vitals; do not convert lab measurements into claims about real users."],"implementation":{"componentInventory":[{"name":"Page intro","status":"Pattern contract","source":"src/data/design-system.json","styles":"src/app/globals.css","use":"Choose the page pattern first, then use the global title tokens and keep orientation copy in the same reading block."},{"name":"Button","status":"Shared component","source":"src/components/ui/Button.tsx","styles":"src/app/globals.css","use":"Use for primary and secondary actions instead of rebuilding action states in a page module."},{"name":"Text link","status":"Global contract","source":"src/app/globals.css","styles":"src/app/globals.css","use":"Use semantic link color, underline where context is not sufficient, and preserve visible focus."},{"name":"Resource row","status":"Reference implementation","source":"src/app/directory/page.tsx","styles":"src/components/directory/DirectoryExplorer.module.css","use":"Reuse the directory decision metadata and compact comparison order."},{"name":"Source model row","status":"Reference implementation","source":"src/app/directory/landscape/page.tsx","styles":"src/app/directory/landscape/landscape.module.css","use":"Preserve can-establish, cannot-establish, next-check, and live-route fields."},{"name":"Operational fact strip","status":"Reference implementation","source":"src/app/directory/maintenance/page.tsx","styles":"src/app/directory/maintenance/maintenance.module.css","use":"Use for dates, cadence, next due work, and append-only rules rather than catalogue totals."},{"name":"Maintenance work queue","status":"Reference implementation","source":"src/app/directory/maintenance/page.tsx","styles":"src/app/directory/maintenance/maintenance.module.css","use":"Reuse the as-of status, due threshold, compact work rows, machine queue, source handoff, portable packet, honest empty state, and append-only outcome contract."},{"name":"Evidence note","status":"Reference implementation","source":"src/app/directory/[id]/page.tsx","styles":"src/app/directory/[id]/resource-record.module.css","use":"Keep evidence, limitations, checked date, and verification instructions adjacent."},{"name":"Record usefulness check","status":"Shared component","source":"src/components/directory/ResourceUsefulnessFeedback.tsx","styles":"src/components/directory/ResourceUsefulnessFeedback.module.css","use":"Use only after the record's evidence and limitations. Ask about the record, use closed response codes, confirm server receipt before showing success, and keep the signal outside moderated validation."},{"name":"Research participation funnel","status":"Shared flow","source":"src/components/research/FieldTestRunner.tsx","styles":"src/components/research/FieldTestRunner.module.css","use":"Start from the participant page's direct track links, keep the data summary and positive consent before the begin action, put the full protocol in progressive disclosure, and preserve the self-guided, moderated, internal-QA, and withdrawal evidence boundaries."},{"name":"Research task invitation","status":"Shared component","source":"src/components/research/ResearchTaskPrompt.tsx","styles":"src/components/research/ResearchTaskPrompt.module.css","use":"Place beside an active product task, offer bounded track choices, disclose time and omitted data, record only intentional handoff clicks, and preserve entry attribution only after positive consent in the validation lane."},{"name":"Filter chip","status":"Shared component","source":"src/components/ui/FilterChips.tsx","styles":"src/components/ui/FilterChips.module.css","use":"Reuse for a small visible filter group; use directory controls for complex faceted filtering."},{"name":"Data table","status":"Pattern contract","source":"src/data/design-system.json","styles":"src/app/globals.css","use":"Build from semantic table elements and the data-display rules; keep exact values and relationships intact on small screens."},{"name":"Empty or error state","status":"Reference implementation","source":"src/app/search/page.tsx","styles":"src/app/search/search.module.css","use":"Name the active constraint, preserve the query, and offer a correction plus a browse route."},{"name":"Site navigation","status":"Shared component","source":"src/components/Header.tsx","styles":"src/components/NavMenu.module.css","use":"Preserve desktop and mobile navigation, keyboard behavior, descriptive labels, and semantic layer tokens."},{"name":"Search result","status":"Reference implementation","source":"src/app/search/page.tsx","styles":"src/app/search/search.module.css","use":"Preserve the query, content-type label, useful excerpt, and exact destination."},{"name":"Working template","status":"Shared component","source":"src/components/content/WorkingTemplate.tsx","styles":"src/components/content/WorkingTemplate.module.css","use":"Reuse for printable or locally saved guide records and retain the privacy-safe event boundary."},{"name":"Disclosure","status":"Shared component","source":"src/components/content/Disclosure.tsx","styles":"src/components/content/Disclosure.module.css","use":"Reuse for optional long-form methods, worksheets, and supporting detail after the immediate answer remains visible."},{"name":"Form field","status":"Pattern contract","source":"src/components/tools/ToolShell.tsx","styles":"src/components/tools/ToolForm.module.css","use":"Use persistent labels, 16px inputs, nearby units and help, specific errors, and preserved valid input."},{"name":"Correction intake","status":"Shared flow","source":"src/components/directory/ContributeForm.tsx","styles":"src/components/directory/ContributeForm.module.css","use":"Reuse the published-record binding, packet preparation, privacy rejection, and delivery-state boundaries."},{"name":"Figure","status":"Shared component","source":"src/components/content/Figure.tsx","styles":"src/components/content/Figure.module.css","use":"Reuse for sourced or instructional imagery that needs alt text, a caption, or provenance."}],"sharedSources":[{"name":"Brand mark","source":"src/components/Logo.tsx","styles":"src/app/globals.css","contract":"Reuse the shared geometry and currentColor behavior. External layouts use the public SVG."},{"name":"Button","source":"src/components/ui/Button.tsx","styles":"src/app/globals.css","contract":"Use the shared action hierarchy, tokenized sizing, and complete focus, active, disabled, and busy behavior."},{"name":"Site navigation","source":"src/components/Header.tsx","styles":"src/components/NavMenu.module.css","contract":"Preserve descriptive labels, keyboard access, mobile replacement navigation, and semantic layer tokens."},{"name":"Filter chips","source":"src/components/ui/FilterChips.tsx","styles":"src/components/ui/FilterChips.module.css","contract":"Preserve URL state, visible selected state, and the 44px house target."},{"name":"Working template","source":"src/components/content/WorkingTemplate.tsx","styles":"src/components/content/WorkingTemplate.module.css","contract":"Preserve labels, input values on recovery, print behavior, privacy-safe events, and saved-state feedback."},{"name":"Disclosure","source":"src/components/content/Disclosure.tsx","styles":"src/components/content/Disclosure.module.css","contract":"Preserve native details and summary semantics, the 44px house target, visible focus, truthful optionality, reduced motion, and expanded print content."},{"name":"Directory explorer","source":"src/components/directory/DirectoryControls.tsx","styles":"src/components/directory/DirectoryExplorer.module.css","contract":"Preserve query and filters in the URL, decision metadata, comparison behavior, and recovery states."},{"name":"Record usefulness check","source":"src/components/directory/ResourceUsefulnessFeedback.tsx","styles":"src/components/directory/ResourceUsefulnessFeedback.module.css","contract":"Preserve the neutral three-outcome question, bounded reason codes, honest delivery states, 44px controls, no free text or identity, and the separation from provider ratings and moderated validation."},{"name":"Research participation funnel","source":"src/components/research/FieldTestRunner.tsx","styles":"src/components/research/FieldTestRunner.module.css","contract":"Preserve direct track-to-runner activation, participant-centered labels, positive consent, concise limited-data copy, progressive disclosure, 44px controls, session recovery, withdrawal, and evidence-lane separation."},{"name":"Directory data export","source":"src/app/directory/resources.json/route.ts","styles":"src/app/directory/standards/standards.module.css","contract":"Publish the complete current resource records with the versioned JSON Schema, CORS access, stable source and record URLs, maintenance dates, evidence, limitations, record-bound correction and review-packet actions, and interpretation boundaries."},{"name":"Directory maintenance queue","source":"src/app/directory/maintenance.json/route.ts","styles":"src/app/directory/maintenance/maintenance.module.css","contract":"Publish a CORS-readable as-of work queue with due thresholds, ordered records, status meaning, current source and record URLs, source-specific review focus, portable packet routes, allowed outcomes, and append-only publication rules."}],"conformance":{"canonicalReference":"The public design-system page and machine manifest are required to use the canonical color, type, shape, motion, and layer values.","sharedComponents":"Named shared components are checked for their critical target, state, privacy, and layer contracts.","legacyPages":"Existing page-local values are change-gated: a changed line cannot introduce or preserve an off-system visual value. Legacy presence is not a conformance claim and should decline as pages are touched.","claimBoundary":"Passing automated audits establishes contract consistency for the checked code. It does not establish task success, full WCAG conformance, field Core Web Vitals, or qualified participant validation."},"interactionStates":[{"name":"Default","requirement":"The control is visibly actionable and its label names the result."},{"name":"Hover","requirement":"Pointer feedback changes color, surface, or underline without moving layout or carrying essential information."},{"name":"Focus visible","requirement":"A high-contrast outline remains visible and unobscured. Focus never depends on hover styling."},{"name":"Active","requirement":"Press feedback is immediate and subtle. Use color or transform without changing layout."},{"name":"Disabled","requirement":"The state is exposed semantically and visually. Disabled actions do not masquerade as ordinary muted text."},{"name":"Loading or busy","requirement":"Keep the action label or outcome context, expose busy state, prevent duplicate submission, and avoid layout shift."},{"name":"Empty","requirement":"Name the active constraint, preserve input, and provide one correction plus an optional browse route."},{"name":"Error","requirement":"State the cause and recovery beside the affected control while preserving valid input."},{"name":"Success","requirement":"Confirm what changed, what did not change, and the next realistic action."}],"responsiveProtocol":["Start with the smallest meaningful content order; do not treat mobile as stacked desktop.","Collapse columns when their content loses readable measure, not because a named device was guessed.","Keep comparison tables horizontally contained when stacking would destroy field relationships.","Keep essential information and actions out of hover-only states.","Verify 320, 390, 768, 1024, and 1440 CSS pixels, text zoom, long labels, and both themes."],"driftPolicy":["New colors, radii, shadows, layer values, and motion timings belong in the canonical manifest and global token layer before component use.","A page-local exception requires a named user need and a documented contract change, not an isolated visual preference.","Changed interface files must pass the design-system, style-drift, hero-type, and interface-copy audits.","A screenshot can reveal craft problems but cannot prove task success, accessibility conformance, or field performance."]},"agentConsumption":{"startHere":"Use the repository-native instruction file when one is available, then read the local canonical source. Outside the repository, fetch the public JSON endpoint. Every adapter must point here instead of restating visual values. Do not infer the system from a screenshot or a single page.","repositoryAdapter":"DESIGN.md","publicHumanReference":"https://stitchauthority.com/design-system","publicMachineReference":"https://stitchauthority.com/design-system.json","publicSchemaReference":"https://stitchauthority.com/design-system.schema.json","defaultDecisions":[{"decision":"Orient","rule":"Name the textile task, intended audience, and realistic next action in the opening reading block."},{"decision":"Compose","rule":"Choose a canonical page pattern, keep related copy together, and give space only to information or interaction that earns it."},{"decision":"Express","rule":"Use warm paper, ink, madder, restrained weld, bounded display type, readable sans text, and textile imagery that explains the work."},{"decision":"Prove","rule":"Keep source, date, scope, access, assumptions, limitations, and correction paths beside consequential claims."},{"decision":"Verify","rule":"Check the complete interaction state set, 320–1440px layouts, both themes, keyboard use, reduced motion, long content, and the required audits."}],"taskRecipes":[{"task":"Add or reconstruct a page","read":"brand.strategy, voice, pagePatterns, implementation.componentInventory, accessibility","deliver":"A task-first content order, a named page pattern, shared implementations where available, bounded claims, complete states, and responsive verification."},{"task":"Add or change a component","read":"foundations, components, implementation.componentInventory, implementation.interactionStates","deliver":"A documented information relationship, semantic tokens, every applicable state, 44px primary targets, and an implementation-map update."},{"task":"Write product copy","read":"brand.messaging, brand.trustModel, voice, voice.prohibitedPatterns","deliver":"Job-first language, a realistic next action, the correct claim level, and no promotional authority or invented practitioner relationship."},{"task":"Create or select imagery","read":"brand.visualDirection, identity, imagery, iconography","deliver":"One canonical visual mode, a useful focal subject, verified crop and construction detail, accessible treatment, and recorded provenance."},{"task":"Show data or evidence","read":"dataDisplay, components, accessibility, implementation.conformance","deliver":"A named question, unit and denominator, source and date, evidence lane, directly readable values, and explicit interpretation boundaries."}],"discovery":[{"surface":"Rendered HTML","location":"Every page","signal":"A rel=alternate application/json link points to the canonical machine reference."},{"surface":"AI site map","location":"/llms.txt","signal":"The key-pages list names the human reference, canonical JSON contract, and public JSON Schema."},{"surface":"Repository agents","location":"AGENTS.md, CLAUDE.md, GEMINI.md, .github/copilot-instructions.md, and DESIGN.md","signal":"Vendor-specific entry points remain thin adapters that direct local contributors to the same canonical JSON before user-facing work."},{"surface":"Machine-readable resource directory","location":"/directory/resources.json and /directory/resource-schema.json","signal":"Agents can consume the maintained evidence records and exact vocabulary without scraping the rendered directory or inferring fields, then return a correction or source review through record-bound action links."},{"surface":"Machine-readable maintenance queue","location":"/directory/maintenance.json","signal":"Agents can find due work, the next scheduled batch, source-specific review focus, allowed outcomes, and portable record packets without calculating cadence or reconstructing the workflow."}],"readOrder":["Read PRODUCT.md for users, purpose, evidence posture, and anti-references.","Read src/data/design-system.json as the only canonical brand and interface contract.","Use design-system.schema.json to validate the manifest shape when building an automated consumer.","Choose the closest page pattern and shared implementation source before creating markup.","Use semantic tokens from src/app/globals.css and preserve every required interaction state.","Review the public design-system specimens at narrow and wide widths when visual judgment matters.","Run the required audits and browser checks before handoff."],"handoffContract":["Name the page pattern and user job used for the change.","List the shared component or reference implementation selected for each new interface relationship.","Name every canonical token or approved system addition introduced.","Report narrow and wide, light and dark, keyboard, reduced-motion, and long-content checks that apply.","For deployed work, use the authenticated --deployment parity mode for a protected immutable candidate, then report the exact candidate and canonical production-parity results; a local pass is not a live-state claim.","Report the exact automated checks run and keep screenshots or local audits separate from claims about real users.","Call out any system exception, unresolved legacy value, or missing state instead of quietly inventing around it."],"fallback":"If the canonical source is unavailable or contradicts the implementation, stop visual invention, report the mismatch, and repair the contract and code together."},"governance":{"canonicalSource":"src/data/design-system.json","schemaSource":"src/data/design-system.schema.json","codeTokens":"src/app/globals.css","publicReference":"/design-system","machineReference":"/design-system.json","schemaReference":"/design-system.schema.json","agentRule":"Read the canonical source before changing user-facing layout, typography, color, components, interaction, or product copy.","versionPolicy":{"patch":"Clarifications and corrections that do not change an implementation contract.","minor":"A new token, component, page pattern, visual mode, or additive rule.","major":"A breaking change to identity, semantic tokens, required anatomy, or a prohibited pattern."},"deprecationPolicy":["Mark a deprecated token, component, or pattern in the manifest with its replacement and earliest removal version.","Keep the replacement and migration note public for at least one minor release before removal unless the old behavior creates a safety, privacy, accessibility, or evidence-integrity failure.","Remove superseded implementation only after repository search and the relevant audits show no remaining use.","A screenshot matching the old appearance is not a reason to retain a deprecated rule."],"releases":[{"version":"1.21.1","date":"2026-07-28","status":"Current","changes":["Clarified that calculators must expose base arithmetic and every user-entered adjustment as separate quantities.","Prohibited presenting sample-to-area scaling as an accurate garment or shaped-project quantity.","Separated a known pattern-quantity package plan from a bounded sample-to-known-area estimate."],"migration":"Remove universal yardage ranges and prefilled project dimensions or reserves. For sample scaling, require a user-supplied equivalent area, show base and reserve separately, state comparability limits, and hand whole-package planning to the dedicated workflow."},{"version":"1.21.0","date":"2026-07-28","status":"Superseded","changes":["Required calculators to begin empty when no universal or source-backed input default exists.","Prohibited invented typical project dimensions and hidden fit or ease adjustments.","Required count planners to expose raw arithmetic, user-supplied repeat and edge constraints, nearby valid totals, and the unresolved decision between them."],"migration":"Consolidate overlapping calculators around the actual user decision. Remove preset project sizes and automatic fit assumptions unless a current controlled source and exact applicability are present; show raw arithmetic and reversible alternatives instead."},{"version":"1.20.1","date":"2026-07-28","status":"Superseded","changes":["Clarified the fabric-conversion interface so an observed gauge-to-GSM query receives an immediate no-conversion answer instead of an unrelated numerical result.","Required ambiguous measurement language to name the intended quantity before calculation and to route deeper evidence to the maintained decision guide.","Kept query impressions, internal routing, and implementation checks separate from click improvement or participant validation."],"migration":"When a calculator receives a query whose requested quantities are not convertible, state that boundary beside the controls, identify the ambiguous term, and route to the maintained explanation instead of manufacturing a formula."},{"version":"1.20.0","date":"2026-07-28","status":"Superseded","changes":["Added a compact research-task invitation for use beside an active directory task instead of as a detached end-of-page campaign block.","Required plain time and privacy scope, participant-centered track choices, and bounded aggregate handoff attribution through positive consent.","Separated invitation clicks, consented starts, self-guided discovery, and qualified moderated validation in both interface copy and reporting."],"migration":"Use the shared ResearchTaskPrompt where an active research round needs volunteers. Do not count its link events as people, consent, task completion, or validation."},{"version":"1.19.0","date":"2026-07-28","status":"Superseded","changes":["Added a shared progressive-disclosure component for optional methods, worksheets, and supporting detail.","Required native details and summary semantics, a 44px target, visible focus, reduced-motion-safe state feedback, and expanded print content.","Kept the immediate answer and consequential consent, price, safety, or decision information outside collapsed regions."],"migration":"Use the shared Disclosure component when optional long-form content overwhelms the primary task. Do not use it to conceal information a visitor needs before acting."},{"version":"1.18.0","date":"2026-07-28","status":"Superseded","changes":["Added thin repository adapters for Gemini CLI and GitHub Copilot while retaining the existing Codex and Claude entry points.","Made vendor-specific instructions route through AGENTS.md and the canonical JSON instead of duplicating visual or verbal values.","Extended the interface-quality audit and workflow so adapter drift fails before merge."],"migration":"Repository agents should begin with their native instruction file, then follow AGENTS.md to src/data/design-system.json. Do not copy tokens, component rules, or prohibited patterns into a vendor-specific adapter."},{"version":"1.17.1","date":"2026-07-28","status":"Superseded","changes":["Added authenticated parity checks for protected immutable Vercel candidates without weakening deployment protection.","Separated the protected-candidate command from the ordinary public canonical-domain check.","Made the exact release workflow discoverable from repository agent instructions and the public agent handoff."],"migration":"Use --deployment=https://deployment-url for the protected candidate, then run the audit without arguments after promotion. Do not disable deployment protection to make a public fetch pass."},{"version":"1.17.0","date":"2026-07-28","status":"Superseded","changes":["Added an explicit deployment-parity handoff so agents cannot present a locally verified system as live while production serves an older contract.","Required exact deployment and canonical checks for design-system, resource-export, maintenance, CORS, content-date, and record-action identity.","Kept contract parity separate from usability, source accuracy, cache completeness, and participant validation."],"migration":"After deployment, run the production-parity audit against the immutable deployment URL and then the canonical domain. Treat any mismatch as release drift, not as absent behavior."},{"version":"1.16.0","date":"2026-07-28","status":"Superseded","changes":["Connected every machine-readable directory record to its prefilled correction handoff and portable source-review packet.","Added collection-level maintenance and correction entry points so downstream agents can return evidence changes instead of silently forking stale data.","Kept opening or generating an action separate from submission, assignment, completion, and acceptance."],"migration":"Resource-export consumers should adopt schema 2.0.0 and preserve correctionUrl and reviewPacketUrl with each record. Do not treat an opened action as delivered or completed work."},{"version":"1.15.1","date":"2026-07-28","status":"Superseded","changes":["Completed field-level JSON Schema coverage for brand, identity, imagery, voice, foundations, implementation, agent discovery, and governance.","Made every object contract reject undocumented fields instead of silently accepting a parallel visual or verbal source.","Added Draft 2020-12 validation of the canonical manifest and a negative drift fixture to the required design-system audit."],"migration":"No visual or manifest-field migration. Consumers should validate the unchanged canonical shape against the stricter public schema; malformed derivative documents and undocumented fields now fail."},{"version":"1.15.0","date":"2026-07-28","status":"Superseded","changes":["Added the research-participation funnel component and page-pattern contracts.","Required direct track-to-runner activation, concise consent scope, and progressive method disclosure.","Kept participant tasks, listed resources, represented practitioners, internal QA, self-guided discovery, and qualified moderated evidence as separate concepts."],"migration":"Research invitations and participant entry pages should use the shared field-test flow. Put the track choice and limited-data consent before the full protocol, but retain complete data, retention, recovery, withdrawal, and facilitation information on the same route."},{"version":"1.14.0","date":"2026-07-28","status":"Superseded","changes":["Added the formal public JSON Schema and discovery contract for automated design-system consumers.","Added brand strategy, audience jobs, differentiators, and personality-in-practice guidance.","Added a five-decision quick start and task-specific implementation recipes for agents."],"migration":"Automated consumers should validate against /design-system.schema.json, then use agentConsumption.defaultDecisions and taskRecipes before reading the relevant detailed sections. Do not create a separate agent summary or brand guide."},{"version":"1.13.0","date":"2026-07-28","status":"Superseded","changes":["Added the maintenance work-queue component contract with an as-of date, due threshold, honest nothing-due state, ordered work rows, and source-specific review packets.","Added the machine-readable directory maintenance queue to shared implementation and agent-discovery contracts."],"migration":"For maintained directory work, consume /directory/maintenance.json and its per-record packet routes instead of inferring urgency from check dates or reconstructing review outcomes from prose. Keep queue status separate from provider quality."},{"version":"1.12.0","date":"2026-07-28","status":"Superseded","changes":["Added a machine-readable evidence-export page pattern that preserves source, maintenance, evidence, limitation, and interpretation fields.","Added public directory data and schema discovery to the shared-source and agent-consumption contracts."],"migration":"For maintained evidence collections that need reuse outside the interface, expose a deterministic versioned export and schema. Do not publish names and links without their evidence, limitations, dates, and claim boundaries."},{"version":"1.11.0","date":"2026-07-28","status":"Superseded","changes":["Added the record-usefulness component contract for neutral, privacy-safe, server-confirmed feedback on permanent source records.","Kept anonymous record responses separate from provider ratings, unique-user totals, and qualified participant validation."],"migration":"Place the shared usefulness check after source evidence and limitations. Use only the closed outcome and reason codes; do not add free text, identity, stars, rankings, or endorsement language."},{"version":"1.10.1","date":"2026-07-28","status":"Superseded","changes":["Corrected the public reference specimens so decorative swatches stay out of the accessibility tree and labelled groups use valid ARIA roles.","Added a design-system audit guard against aria-label on generic specimen elements without a valid role."],"migration":"No visual migration. Use valid roles when a specimen needs an accessible group or image name; hide decorative swatches when adjacent text already names their values."},{"version":"1.10.0","date":"2026-07-26","status":"Superseded","changes":["Advertised the canonical machine-readable system from every rendered page with a typed alternate link.","Made the HTML, llms.txt, and repository discovery paths explicit in the public agent contract.","Extended the design-system audit so machine discovery cannot silently disappear."],"migration":"No visual migration. Agents may discover the canonical JSON from any rendered page instead of relying on a known URL."},{"version":"1.9.0","date":"2026-07-26","status":"Superseded","changes":["Added reusable messaging and contextual voice contracts.","Mapped every component contract to a shared source, reference implementation, or explicit pattern contract.","Added data-display rules that separate exact comparison from promotional metrics.","Made conformance boundaries, agent handoff requirements, deprecation, and release history public.","Required the public reference to use the same type, shape, and motion tokens it tells agents to use."],"migration":"Use componentInventory instead of guessing whether a named component is shared. Replace off-scale reference-page labels with the canonical metadata or body token."},{"version":"1.8.0","date":"2026-07-26","status":"Superseded","changes":["Added the correction-intake component contract and its public-delivery boundaries."],"migration":"No breaking change."},{"version":"1.7.0","date":"2026-07-26","status":"Superseded","changes":["Added agent discovery, shared-source mapping, interaction states, inverse tokens, and change-aware drift enforcement."],"migration":"No breaking change."}],"changeProtocol":["State the user problem and the existing rule affected.","Change the canonical manifest and implementation in the same commit.","Add or update an automated check for any non-obvious invariant.","Review desktop, tablet, and mobile in both themes when color or layout changes.","Review every new image at full size and at its smallest rendered crop against the imagery contract.","Record why the change improves task completion, accessibility, or evidence clarity.","Run the style-drift audit against the current base revision so new page-local values cannot enter unnoticed.","Do not claim success from a screenshot or local audit alone; retain the participant-validation boundary."]}}