{
  "schemaVersion": 1,
  "generatedAt": "2026-09-21T00:00:00.000Z",
  "sample": {
    "name": "Typelure Primer",
    "scope": "Eight-codepoint control-set prototype",
    "goal": "prototype",
    "proof": "AV OHO Ton",
    "codepoints": [
      "U+0020",
      "U+0041",
      "U+0048",
      "U+004F",
      "U+0054",
      "U+0056",
      "U+006E",
      "U+006F"
    ],
    "glyphCount": 9,
    "componentCount": 1,
    "componentInstanceCount": 3
  },
  "readiness": {
    "readyForDeclaredGoal": true,
    "overallScore": 100,
    "stages": [
      {
        "id": "create",
        "score": 100,
        "ready": true
      },
      {
        "id": "complete",
        "score": 100,
        "ready": true
      },
      {
        "id": "refine",
        "score": 100,
        "ready": true
      },
      {
        "id": "test",
        "score": 100,
        "ready": true
      },
      {
        "id": "ship",
        "score": 100,
        "ready": true
      }
    ],
    "checks": [
      {
        "id": "create-naming",
        "stage": "create",
        "status": "pass",
        "severity": "blocking",
        "title": "Core naming is set",
        "description": "4 of 4 required naming fields contain text."
      },
      {
        "id": "create-metrics",
        "stage": "create",
        "status": "pass",
        "severity": "blocking",
        "title": "Font metrics are numerically usable",
        "description": "UPM and vertical metrics are finite and span a positive design area."
      },
      {
        "id": "create-notdef",
        "stage": "create",
        "status": "pass",
        "severity": "blocking",
        "title": "A visible .notdef glyph exists",
        "description": "The missing-character glyph has an outline and usable width."
      },
      {
        "id": "create-space",
        "stage": "create",
        "status": "pass",
        "severity": "blocking",
        "title": "Space is mapped and blank",
        "description": "U+0020 has a positive width and no visible outline."
      },
      {
        "id": "create-first-outlines",
        "stage": "create",
        "status": "pass",
        "severity": "blocking",
        "title": "The project contains encoded outlines",
        "description": "7 encoded glyphs have drawable paths."
      },
      {
        "id": "complete-mappings",
        "stage": "complete",
        "status": "pass",
        "severity": "blocking",
        "title": "Required Unicode mappings exist",
        "description": "8 of 8 goal characters are present in the project."
      },
      {
        "id": "complete-outlines",
        "stage": "complete",
        "status": "pass",
        "severity": "blocking",
        "title": "Required characters have outlines",
        "description": "7 of 7 outline characters are drawn with usable widths."
      },
      {
        "id": "complete-blank-glyphs",
        "stage": "complete",
        "status": "pass",
        "severity": "blocking",
        "title": "Spacing characters are blank and measurable",
        "description": "1 of 1 required spacing characters are ready."
      },
      {
        "id": "refine-unicode",
        "stage": "refine",
        "status": "pass",
        "severity": "blocking",
        "title": "Unicode assignments are unique",
        "description": "No duplicate Unicode assignments were found."
      },
      {
        "id": "refine-finite-geometry",
        "stage": "refine",
        "status": "pass",
        "severity": "blocking",
        "title": "Outline coordinates are finite",
        "description": "8 of 8 drawn goal glyphs contain only finite coordinates."
      },
      {
        "id": "refine-contours",
        "stage": "refine",
        "status": "pass",
        "severity": "blocking",
        "title": "Drawn contours are closed and viable",
        "description": "8 of 8 drawn goal glyphs have closed contours with at least three distinct endpoints."
      },
      {
        "id": "refine-horizontal-metrics",
        "stage": "refine",
        "status": "pass",
        "severity": "blocking",
        "title": "Goal glyph widths and side bearings are usable",
        "description": "9 of 9 mapped goal glyphs have finite horizontal metrics and positive widths."
      },
      {
        "id": "refine-status-warnings",
        "stage": "refine",
        "status": "pass",
        "severity": "recommended",
        "title": "Stored glyph warnings are resolved",
        "description": "No goal glyph is marked with warning status."
      },
      {
        "id": "refine-metric-order",
        "stage": "refine",
        "status": "pass",
        "severity": "recommended",
        "title": "Vertical metrics follow a practical order",
        "description": "Ascender, cap height, x-height, baseline, and descender are internally ordered."
      },
      {
        "id": "test-proof-coverage",
        "stage": "test",
        "status": "pass",
        "severity": "blocking",
        "title": "The built-in proof strings can render",
        "description": "8 of 8 unique proof-string characters are ready."
      },
      {
        "id": "test-layout-inputs",
        "stage": "test",
        "status": "pass",
        "severity": "blocking",
        "title": "Preview layout inputs are usable",
        "description": "8 of 8 mapped goal glyphs have positive advance widths."
      },
      {
        "id": "test-warning-status",
        "stage": "test",
        "status": "pass",
        "severity": "recommended",
        "title": "No stored warnings remain in the proof set",
        "description": "The proof set has no warning-marked glyphs."
      },
      {
        "id": "ship-core-metadata",
        "stage": "ship",
        "status": "pass",
        "severity": "blocking",
        "title": "Export naming is complete",
        "description": "4 of 4 export naming fields contain text."
      },
      {
        "id": "ship-attribution",
        "stage": "ship",
        "status": "pass",
        "severity": "recommended",
        "title": "Authorship and licensing are documented",
        "description": "3 of 3 designer, copyright, and license fields contain text."
      },
      {
        "id": "ship-coverage",
        "stage": "ship",
        "status": "pass",
        "severity": "blocking",
        "title": "The Starter proof set recipe is complete",
        "description": "8 of 8 required characters are ready."
      },
      {
        "id": "ship-data-integrity",
        "stage": "ship",
        "status": "pass",
        "severity": "blocking",
        "title": "Measurable export data is internally consistent",
        "description": "5 of 5 structural ship checks pass."
      }
    ],
    "limitations": [
      "The project schema does not store kerning, ligatures, substitutions, anchors, or other OpenType layout data.",
      "The project schema does not record whether a person visually proofed, installed, or exported the font.",
      "Path checks cannot prove curve quality, correct winding, overlap removal, self-intersection safety, or rasterizer compatibility.",
      "A readiness score describes measurable project data for the selected goal; it is not a guarantee of typographic quality."
    ]
  },
  "verification": {
    "deterministicCompileRuns": 2,
    "deterministicCompileMatched": true,
    "ttfRoundTrip": {
      "parsed": true,
      "familyName": "Typelure Primer",
      "glyphCount": 9,
      "requiredMappingsPresent": 8,
      "metrics": {
        "unitsPerEm": 1000,
        "ascender": 800,
        "descender": -200
      }
    },
    "woff2Signature": "wOF2",
    "browserProof": "Reported live by the sample page through document.fonts.load; not asserted by this build script."
  },
  "glyphs": [
    {
      "name": ".notdef",
      "unicode": null,
      "advanceWidth": 600,
      "leftSideBearing": 50,
      "rightSideBearing": 50,
      "pathCommands": 10,
      "cubicSegments": 0
    },
    {
      "name": "space",
      "unicode": "U+0020",
      "advanceWidth": 300,
      "leftSideBearing": 0,
      "rightSideBearing": 300,
      "pathCommands": 0,
      "cubicSegments": 0
    },
    {
      "name": "A",
      "unicode": "U+0041",
      "advanceWidth": 700,
      "leftSideBearing": 45,
      "rightSideBearing": 45,
      "pathCommands": 15,
      "cubicSegments": 0
    },
    {
      "name": "H",
      "unicode": "U+0048",
      "advanceWidth": 700,
      "leftSideBearing": 70,
      "rightSideBearing": 70,
      "pathCommands": 15,
      "cubicSegments": 0
    },
    {
      "name": "O",
      "unicode": "U+004F",
      "advanceWidth": 720,
      "leftSideBearing": 45,
      "rightSideBearing": 45,
      "pathCommands": 12,
      "cubicSegments": 8
    },
    {
      "name": "T",
      "unicode": "U+0054",
      "advanceWidth": 700,
      "leftSideBearing": 45,
      "rightSideBearing": 45,
      "pathCommands": 10,
      "cubicSegments": 0
    },
    {
      "name": "V",
      "unicode": "U+0056",
      "advanceWidth": 700,
      "leftSideBearing": 30,
      "rightSideBearing": 30,
      "pathCommands": 8,
      "cubicSegments": 0
    },
    {
      "name": "n",
      "unicode": "U+006E",
      "advanceWidth": 600,
      "leftSideBearing": 60,
      "rightSideBearing": 60,
      "pathCommands": 13,
      "cubicSegments": 4
    },
    {
      "name": "o",
      "unicode": "U+006F",
      "advanceWidth": 600,
      "leftSideBearing": 45,
      "rightSideBearing": 45,
      "pathCommands": 12,
      "cubicSegments": 8
    }
  ],
  "artifacts": {
    "project": {
      "file": "typelure-primer.project.json",
      "bytes": 12552,
      "sha256": "7d941f8687f7f4a058b30912318180cd299e3376c748a8b9db27ec2d4a452fb8"
    },
    "specimen": {
      "file": "typelure-primer-outlines.svg",
      "bytes": 2841,
      "sha256": "1bb6a0b7a1f4169b4924399af997f05281579b2012c557f0d943d78396275c95"
    },
    "ttf": {
      "file": "typelure-primer.ttf",
      "bytes": 2704,
      "sha256": "688c25da758987f24a8f4a5123b0e6f6d5a47d6e2401dbfb05398a1ca75d2a91"
    },
    "woff2": {
      "file": "typelure-primer.woff2",
      "bytes": 1200,
      "sha256": "802f7f3ea7b072f7cdacb384df4a5d7b9b9d58bdca8778c8b20d2110aaf87c25"
    }
  },
  "claimBoundaries": [
    "This project is complete only for Typelure's eight-codepoint prototype goal.",
    "It does not claim general text or language coverage.",
    "No kerning, advanced OpenType layout, hinting, variable-font, or image-tracing workflow is represented.",
    "Linked components are resolved to ordinary outlines in the exported font files.",
    "The files have not been claimed as installed or tested across desktop applications or operating systems.",
    "Automated checks do not certify optical quality."
  ]
}
