Hard-fail checklist // static output artifact

patterns/output-artifact/hard-fail-checklist.md · 6012 B · source sha256 bbee78f76a8a

A static output artifact fails design-system-ASK inheritance if any of the following are present. Treat each as a hard fail, not a stylistic preference.

on this page

Styling fails

  • Generic memo, academic-paper, beige/off-white paper, or serif-document styling
  • Body copy in a serif typeface
  • Default browser tables dominating layout
  • The artifact reads as a static Word document or legal-memo PDF

Theme inheritance fails

  • A theme is hard-coded on <html> or <body> (e.g. data-theme="dark") without explicit reason
  • The artifact does not honor prefers-color-scheme (the upstream colors_and_type.css resolves it; the artifact must not override)
  • A JavaScript theme toggle is present without explicit reason

Color discipline fails

  • Any color outside the closed palette appears. The core set: the gradient stops (#E2D3F0 / #D4C6E1 light; #201D26 / #0A090C dark), white (#FFFFFF, the wordmark pairing — not body text), and the default light-mode foreground #6A637F (the approved dark purple); #201D26 doubles as the opt-in high-contrast foreground (not the default here — do not apply by font size, and never a rebind of the gradient-surface foreground ramp; registered uses only — see the next item). Plus surface (#BFB3D4 / #C9BCDE) + two UI accents (#8B79A2, #AE87C2) + three emphasis accents (#FF00FF, #AA40FF, #00BEFF). An artifact that adopts the opt-in semantic-state modules, spectral-state.css, evidence-state.css and review-semantics.css, loaded by name, may show their role values only where those modules present their roles, each with its visible label: a state or evidence role on its element, or a Review Semantics mark. Its Tier 3 overlay and all other chrome stay in the core set
  • --fg-high-contrast is applied outside the registered-use list in design-system-ASK, under High-contrast foreground — registered uses — the role is opt-in and gated: measured need, explicit ASK authorization, registration there
  • A semantic green / red / yellow status system appears, other than the sanctioned semantic-state primitive and its profiles (Spectral State, Evidence State, Review State), loaded by name and shown in those roles' own presentations with their visible labels
  • Invented hex values appear in the artifact's overlay CSS
  • A local --fg-* / --line-* rebind appears (foreground must be inherited from the foundation ramp, not re-declared at the artifact layer). The only sanctioned token override is the Class B line-intensity overlay (--artifact-line / --artifact-line-soft): white at higher alpha in light mode, foundation lines in dark — white is in-palette and the override is scoped to structural lines, not foreground.

Self-contained / sealed-output fails

  • The delivered artifact is not self-contained: it requires the network, a sibling stylesheet, or a sidecar font to render with full styling
  • An external <link> / @import / live raw-URL stylesheet reference survives into the delivered artifact (the editable template links the local mirror; the delivered artifact must be sealed)
  • A relative font URL that resolves outside the artifact survives into the delivered artifact (fonts must be embedded at seal time)
  • An unreplaced template marker ([placeholder], 0000000, etc.) appears in the delivered artifact
  • A single-file artifact does not inline the document-register modules verbatim after the foundation, in the template's order — surface-panel.css, surface-text-link.css, surface-document.css, surface-treatments.css — or a multi-file package does not link them once from its bundle, in that order; or an artifact that adopts Review Semantics does not follow them with spectral-state.css, evidence-state.css and review-semantics.css, in that order

Type discipline fails

  • Inter is used for code or tabular data
  • JetBrains Mono is used for prose body
  • Text the document register governs is set outside its roles: a title, heading, paragraph, list item, label, metadata value, code span, quotation, preformatted block or dense table value styled by an element rule or a local type declaration instead of its role, or a heading set smaller than the prose it governs
  • The register's rendered check (node tools/check-role-conformance.mjs --url <artifact>, run from a design-system-ASK checkout at the commit the artifact's MANIFEST.md records) reports a finding on the delivered artifact, reports it vacuous, or lists any text as unmapped
  • Weights outside the register's assignment appear. Inter: 200 for body, lede and quotation text; 300 for subsection and entry titles; 400 for document and section titles and the Caption role; 500 only for the deep heading (h4 and deeper) and for strong emphasis. JetBrains Mono: 300, and 500 only for strong emphasis inside a mono role
  • 600 SemiBold or heavier weights appear

Source-truth fails

  • The artifact does not record a design-system-ASK source SHA
  • A MANIFEST.md (or equivalent provenance record) is missing
  • Live CSS is hot-linked from the upstream repo's raw URL or any live path (static artifacts must freeze inheritance at render time)
  • The artifact cannot be audited against a known upstream commit

Tier boundary fails

  • Visible design-system-ASK Tier 3 instance identity — the "ASK Design System" branding or the logo-ASK wordmark — is propagated into the consuming project's artifact unless the consuming project is itself an ASK-instance surface and has explicitly accepted that overlay, or, for the logo-ASK wordmark alone, ASK has explicitly assigned that wordmark to the consuming project as its locally supplied Tier 3 and the artifact falls within the assignment's recorded scope. An assignment does not make that project ASK-the-entity.
  • The consuming project's own Tier 3 identity is fused with the upstream Tier 2 design language rather than layered cleanly on top