{
  "contract": "aesthetary.record/1.0",
  "record_spec": "1.1.0",
  "semantics": {
    "vocabulary": "aesthetary.public-evidence/1.0",
    "definitions": "vocabulary.json"
  },
  "slug": "teletext",
  "name": "Teletext",
  "identity": {
    "definition": {
      "state": "resolved",
      "text": "Blocky broadcast characters, coarse colour grid, fixed rows, saturated primaries"
    },
    "scope": {
      "state": "none"
    },
    "aliases": [
      "Ceefax",
      "broadcast text",
      "blocky"
    ],
    "layer_verdict": {
      "state": "ruled",
      "value": "coherent_visual_language",
      "ruling": "D0-1"
    }
  },
  "native_medium": {
    "state": "resolved",
    "value": [
      "broadcast"
    ],
    "ruling": null
  },
  "research": {
    "line": "partly_sourced",
    "text": "Partly sourced",
    "sentence": "9 sources attached. 3 claims graded by our research brief, no source attached."
  },
  "areas": [
    {
      "area": "layout",
      "state": "resolved",
      "canon": "specified",
      "importance": "unknown",
      "posture_basis": "synthesis",
      "label": {
        "text": "Specified"
      }
    },
    {
      "area": "typography",
      "state": "resolved",
      "canon": "specified",
      "importance": "unknown",
      "posture_basis": "synthesis",
      "label": {
        "text": "Specified"
      }
    },
    {
      "area": "color",
      "state": "resolved",
      "canon": "specified",
      "importance": "unknown",
      "posture_basis": "synthesis",
      "label": {
        "text": "Specified"
      }
    },
    {
      "area": "imagery",
      "state": "resolved",
      "canon": "specified",
      "importance": "unknown",
      "posture_basis": "synthesis",
      "label": {
        "text": "Specified"
      }
    },
    {
      "area": "surface",
      "state": "resolved",
      "canon": "not_canonically_specified",
      "importance": "unknown",
      "posture_basis": null,
      "label": {
        "text": "Not specified by the source"
      }
    },
    {
      "area": "interface",
      "state": "resolved",
      "canon": "specified",
      "importance": "unknown",
      "posture_basis": null,
      "label": {
        "text": "Specified"
      }
    },
    {
      "area": "motion",
      "state": "resolved",
      "canon": "specified",
      "importance": "unknown",
      "posture_basis": "synthesis",
      "label": {
        "text": "Specified"
      }
    },
    {
      "area": "motif",
      "state": "resolved",
      "canon": "specified",
      "importance": "unknown",
      "posture_basis": null,
      "label": {
        "text": "Specified"
      }
    },
    {
      "area": "technique",
      "state": "resolved",
      "canon": "specified",
      "importance": "unknown",
      "posture_basis": null,
      "label": {
        "text": "Specified"
      }
    },
    {
      "area": "form",
      "state": "owed",
      "owed": "research",
      "why": "No source has been examined for this yet."
    },
    {
      "area": "hierarchy",
      "state": "resolved",
      "canon": "specified",
      "importance": "unknown",
      "posture_basis": "synthesis",
      "label": {
        "text": "Specified"
      }
    },
    {
      "area": "density",
      "state": "resolved",
      "canon": "specified",
      "importance": "unknown",
      "posture_basis": "synthesis",
      "label": {
        "text": "Specified"
      }
    }
  ],
  "claims": [
    {
      "id": "layout-3",
      "text": "Composition: 40×24 character grid.",
      "role": "rule",
      "area": "layout",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "mass-01:teletext:ETSI_ETS300706"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "typography-4",
      "text": "Typography: fixed-width cell glyphs; double-height only.",
      "role": "rule",
      "area": "typography",
      "basis": "documentary",
      "support": {
        "state": "graded_unlinked",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "graded",
        "mark": "none",
        "text": "Graded by our research brief · No source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "hierarchy-13",
      "text": "is unusually clean and worth stating plainly: rank comes from double height, colour, and row position — and from nothing else. There is no weight axis, no size axis beyond ×2, and no indentation finer than a cell. A designer who understands only this sentence can already compose the page.",
      "role": "rule",
      "area": "hierarchy",
      "basis": "documentary",
      "support": {
        "state": "graded_unlinked",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "graded",
        "mark": "none",
        "text": "Graded by our research brief · No source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "color-5",
      "text": "Colour: 7 colours on black, no intermediates.",
      "role": "rule",
      "area": "color",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "mass-01:teletext:ETSI_ETS300706"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "imagery-7",
      "text": "Imagery: 2×3 mosaic blocks only.",
      "role": "rule",
      "area": "imagery",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "mass-01:teletext:WP_WST"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "surface-8",
      "text": "Form / motif / surface / technique: block mosaic; no surface treatment exists.",
      "role": "rule",
      "area": null,
      "basis": "documentary",
      "support": {
        "state": "graded_unlinked",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "graded",
        "mark": "none",
        "text": "Graded by our research brief · No source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "motion-14",
      "text": "No claim. CURATORIAL from material: the native behaviours are page-flip on a timer, the reveal of concealed text, and the rolling subpage counter — not scrolling, which the format cannot do. Scroll-based animation would be the failure mode block 14 exists to prevent.",
      "role": "rule",
      "area": "motion",
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "tt-r1",
      "text": "A 40x24 character grid with block graphics drawn on a 2x3 mosaic matrix inside each cell, in eight colours. These are the broadcast specification, not stylistic choices.",
      "role": "rule",
      "area": "layout",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "mass-01:teletext:ETSI_ETS300706"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "intent",
      "text": "Information delivered under a hard bandwidth budget. The constraint is not concealed or apologised for — the grid, the eight colours and the blocky glyphs are the budget made visible, and legibility at broadcast distance outranks everything else.",
      "role": "argument",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "gestalt",
      "text": "A fixed grid of 40 columns by 24 rows in which every element occupies whole character cells, drawn from a palette of seven saturated colours on black, with graphics built from 2×3 mosaic blocks inside those same cells and headings set by doubling character height. The diagnostic condition is that the grid is a transmission constraint rather than a design decision: nothing can sit between cells, no colour can fall between the seven, and no shape can be finer than a sixth of a cell. Terminal shares the monospace ground but is a console with a prompt and a phosphor-derived palette; Arcade shares the low-resolution look but draws sprites in hard-edged pixels against a coin-op frame.",
      "role": "diagnostic",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "failure-1",
      "text": "No anti-aliasing.",
      "role": "negative",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "failure-2",
      "text": "No intermediate colours or gradients.",
      "role": "negative",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "failure-3",
      "text": "No proportional type.",
      "role": "negative",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "failure-4",
      "text": "No scrolling.",
      "role": "negative",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "failure-5",
      "text": "No element smaller than a character cell or positioned off-grid.",
      "role": "negative",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "failure-6",
      "text": "Against Terminal: broadcast page versus interactive console. Inherited from distinguishing — *\"colour blocks, not phosphor lines\"*. Against Arcade: character cells versus sprites drawn in hard-edged pixels, and no coin-op furniture (score, lives). Anti-signature: adding a prompt or cursor makes it Terminal. Adding a score counter makes it Arcade. Allowing any element to sit off-cell makes it neither.",
      "role": "negative",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "failure-7",
      "text": "Not open: the grid.",
      "role": "negative",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "failure-8",
      "text": "Not open: the palette size.",
      "role": "negative",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "failure-9",
      "text": "Not open: the mosaic geometry..",
      "role": "negative",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "intent-negation",
      "text": "Refuses continuous tone, intermediate colour, free placement, and any element smaller than one character cell.",
      "role": "argument",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "intent-cost",
      "text": "Costs accepted: Image fidelity; Typographic range; Free composition",
      "role": "argument",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "intent-audience",
      "text": "Audience: A viewer at domestic television distance, reading a page that will be replaced on a timer.",
      "role": "argument",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "gestalt-boundary",
      "text": "Against Terminal: broadcast page versus interactive console. Inherited from distinguishing — *\"colour blocks, not phosphor lines\"*. Against Arcade: character cells versus sprites drawn in hard-edged pixels, and no coin-op furniture (score, lives). Anti-signature: adding a prompt or cursor makes it Terminal. Adding a score counter makes it Arcade. Allowing any element to sit off-cell makes it neither.",
      "role": "boundary",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "v1-distinguishing",
      "text": "Broadcast grid rather than console; colour blocks, not phosphor lines",
      "role": "diagnostic",
      "area": null,
      "basis": "inherited",
      "support": {
        "state": "inherited",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "catalogue",
        "text": "From our catalogue entry"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "v1-era",
      "text": "Era: 1980s",
      "role": "context",
      "area": null,
      "basis": "inherited",
      "support": {
        "state": "inherited",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "catalogue",
        "text": "From our catalogue entry"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "v1-mood",
      "text": "Mood: nostalgic, technical",
      "role": "context",
      "area": null,
      "basis": "inherited",
      "support": {
        "state": "inherited",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "catalogue",
        "text": "From our catalogue entry"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "v1-cross-library",
      "text": "Cross-library: Typography: bitmap · Layout: fixed character grid",
      "role": "context",
      "area": null,
      "basis": "inherited",
      "support": {
        "state": "inherited",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "catalogue",
        "text": "From our catalogue entry"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "typography-block",
      "text": "Typography: bitmap; class bitmap",
      "role": "rule",
      "area": "typography",
      "basis": "inherited",
      "support": {
        "state": "inherited",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "catalogue",
        "text": "From our catalogue entry"
      },
      "derives_from": [],
      "ruling": "D0-3 C2 typo"
    },
    {
      "id": "surface-8.technique",
      "text": "Technique: block mosaic",
      "role": "rule",
      "area": "technique",
      "basis": "documentary",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "none",
        "text": "No source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "surface-reason",
      "text": "No surface treatment exists.",
      "role": "context",
      "area": "surface",
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "declared-freedom",
      "text": "Declared freedom: page content and pacing; how much.",
      "role": "context",
      "area": null,
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:interface-1",
      "text": "Navigation is by single key press on the remote: under the FLOF (Fastext) code of practice four keys coloured red, green, yellow and cyan select linked pages, with matching prompts displayed on row 24 at the bottom of the page.",
      "role": "rule",
      "area": "interface",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T1"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "scope": {
        "practice": "FLOF/Fastext pages; Level 1 pages without it rely on typed page numbers"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:interface-2",
      "text": "The top row is a page header that normally carries a real-time clock and a rolling page counter.",
      "role": "rule",
      "area": "interface",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T1",
          "kcc-teletext-T7"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:interface-3",
      "text": "Services such as ARD Text and Teefax use rows 0 and 24 for things like the date and fastext links.",
      "role": "diagnostic",
      "area": "interface",
      "basis": "observed",
      "support": {
        "state": "observed_instances",
        "for": [
          "kcc-teletext-T4"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "seen",
        "text": "Seen in the work"
      },
      "scope": {
        "practice": "practitioner guidance; ARD Text and Teefax"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:interface-4",
      "text": "Concealed text is hidden as spaces until the viewer reveals it with a decoder operation.",
      "role": "rule",
      "area": "interface",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T1"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:interface-5",
      "text": "On newsflash and subtitle pages, boxed areas are inset into the live television picture instead of a black page.",
      "role": "rule",
      "area": "interface",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T1",
          "kcc-teletext-T2"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "scope": {
        "practice": "Newsflash/subtitle pages only"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:motif-1",
      "text": "The recurring graphic device is the mosaic page header or section banner above text content.",
      "role": "diagnostic",
      "area": "motif",
      "basis": "observed",
      "support": {
        "state": "observed_instances",
        "for": [
          "kcc-teletext-T4",
          "kcc-teletext-T3",
          "kcc-teletext-T5"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "seen",
        "text": "Seen in the work"
      },
      "scope": {
        "practice": "UK services; Channel 26's frequency claim rests on its author's own experience"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:motif-2",
      "text": "Black cells where colour changes sit, which cost a character cell each, recur as heavy black outlines ('code borders') around shapes.",
      "role": "diagnostic",
      "area": "motif",
      "basis": "observed",
      "support": {
        "state": "observed_instances",
        "for": [
          "kcc-teletext-T4",
          "kcc-teletext-T2"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "seen",
        "text": "Seen in the work"
      },
      "scope": {
        "practice": "practitioner jargon; the BBC proposed 'Graphics hold' precisely to remove such black areas"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:motif-3",
      "text": "Separated graphics, adding gaps between mosaic cells, is a standard option alongside the default contiguous blocks.",
      "role": "context",
      "area": "motif",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T2",
          "kcc-teletext-T1"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:motif-4",
      "text": "A statement reported by the teletext wiki says the 3 x 2 mosaic matrix limits the design of any motif.",
      "role": "negative",
      "area": "motif",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T3"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "scope": {
        "practice": "Prestel viewdata, as reported by the teletext wiki"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:motion-1",
      "text": "Text and mosaics can flash, alternating foreground and background colour, set by a control character and cancelled by Steady or a new row; early Ceefax could flash selected words.",
      "role": "rule",
      "area": "motion",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T1",
          "kcc-teletext-T2"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:motion-2",
      "text": "Multi-frame pages rotate on a sub-page carousel, and early Ceefax animations used that carousel.",
      "role": "rule",
      "area": "motion",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T3",
          "kcc-teletext-T5"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:motion-3",
      "text": "The header row rolls through page numbers and keeps a live clock.",
      "role": "rule",
      "area": "motion",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T1"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:motion-4",
      "text": "In-vision teletext, broadcast as a TV programme free of carousel sub-page timing, could feature animated elements.",
      "role": "context",
      "area": "motion",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T3"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "scope": {
        "practice": "separates in-vision teletext from the decoded page"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "kcc:form-1",
      "text": "A teletext page is a grid of 40 columns by 24 rows, 960 characters.",
      "role": "context",
      "area": "form",
      "basis": "documentary",
      "support": {
        "state": "cited",
        "for": [
          "kcc-teletext-T3",
          "kcc-teletext-T8"
        ],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "documented",
        "mark": "attached",
        "text": "Documented · Source attached"
      },
      "derives_from": [],
      "ruling": null
    },
    {
      "id": "dcc:density-6",
      "text": "960 cells is a fixed budget, so density is a consequence of content rather than a style choice. A page should run near the budget, because a sparse teletext page reads as a broken one.",
      "role": "rule",
      "area": "density",
      "basis": "synthesis",
      "support": {
        "state": "none",
        "for": [],
        "against": [],
        "contested": false
      },
      "label": {
        "kind": "reading",
        "text": "Our reading"
      },
      "derives_from": [],
      "ruling": null
    }
  ],
  "web_translations": [],
  "standard_practice": [],
  "sources": [
    {
      "id": "mass-01:teletext:ETSI_ETS300706",
      "kind": "source",
      "title": "Enhanced Teletext specification",
      "url": "https://www.etsi.org/deliver/etsi_i_ets/300700_300799/300706/01_60/ets_300706e01p.pdf",
      "status": "verified",
      "retrieval": "retrieved"
    },
    {
      "id": "mass-01:teletext:WP_WST",
      "kind": "source",
      "title": "World System Teletext",
      "url": "https://en.wikipedia.org/wiki/World_System_Teletext",
      "status": "verified",
      "retrieval": "retrieved"
    },
    {
      "id": "kcc-teletext-T1",
      "kind": "source",
      "title": "ETS 300 706: Enhanced Teletext specification",
      "url": "https://www.etsi.org/deliver/etsi_i_ets/300700_300799/300706/01_60/ets_300706e01p.pdf",
      "status": "verified",
      "retrieval": "retrieved"
    },
    {
      "id": "kcc-teletext-T2",
      "kind": "source",
      "title": "A History of Ceefax: A Summary of the Steps leading to the Broadcast Teletext Specification of September 1976",
      "url": "https://www.bbceng.info/additions/2016/The%20History%20Of%20Ceefax.pdf",
      "status": "verified",
      "retrieval": "retrieved"
    },
    {
      "id": "kcc-teletext-T3",
      "kind": "source",
      "title": "Teletext art",
      "url": "https://teletext.wiki.zxnet.co.uk/wiki/Teletext_art",
      "status": "verified",
      "retrieval": "retrieved"
    },
    {
      "id": "kcc-teletext-T4",
      "kind": "source",
      "title": "Teletext Design",
      "url": "https://channel26.uk/teletext-design/",
      "status": "verified",
      "retrieval": "retrieved"
    },
    {
      "id": "kcc-teletext-T5",
      "kind": "source",
      "title": "Interview: Ian Irving - Ceefax & Intelfax designer, creator of 4-T the Dog",
      "url": "https://teletextart.co.uk/interview-ian-irving-ceefax-intelfax-designer-creator-of-4-t-the-dog",
      "status": "verified",
      "retrieval": "retrieved"
    },
    {
      "id": "kcc-teletext-T7",
      "kind": "source",
      "title": "The Teletext Museum - ORACLE",
      "url": "https://teletext.mb21.co.uk/gallery/oracle/main1.shtml",
      "status": "verified",
      "retrieval": "retrieved"
    },
    {
      "id": "kcc-teletext-T8",
      "kind": "source",
      "title": "World System Teletext",
      "url": "https://en.wikipedia.org/wiki/World_System_Teletext",
      "status": "verified",
      "retrieval": "retrieved"
    }
  ],
  "relations": [
    {
      "slug": "arcade",
      "kind": "confused_with",
      "status": "proposed"
    },
    {
      "slug": "terminal",
      "kind": "confused_with",
      "status": "proposed"
    },
    {
      "slug": "terminal",
      "kind": "specialises",
      "status": "proposed"
    }
  ],
  "open": [
    {
      "kind": "missing_research",
      "question": "Can a Level 1 teletext page scroll?"
    }
  ],
  "aesthetary_build": {
    "note": "Values Aesthetary built with. Not claims about the Aesthetic.",
    "measured": {
      "note": "Read from the page's own stylesheet at build time. Values Aesthetary built with, not claims about the Aesthetic.",
      "slug": "teletext",
      "stylesheet": "teletext.css",
      "bytes": 12703,
      "colours": [
        "#000000",
        "#FF0000",
        "#00FF00",
        "#FFFF00",
        "#0000FF",
        "#FF00FF",
        "#00FFFF",
        "#FFFFFF",
        "#1A1A1A",
        "#333333"
      ],
      "radii": [
        "8px",
        "10px"
      ],
      "fontSizes": [
        ".75em",
        ".9em",
        "1.2rem",
        "1.25rem",
        "1.3rem",
        "1.8rem",
        "1.85rem",
        "1.9rem",
        "24px"
      ],
      "faces": [
        "VT323 X"
      ],
      "tokens": [
        {
          "name": "--tt-k",
          "value": "#000000"
        },
        {
          "name": "--tt-r",
          "value": "#FF0000"
        },
        {
          "name": "--tt-g",
          "value": "#00FF00"
        },
        {
          "name": "--tt-y",
          "value": "#FFFF00"
        },
        {
          "name": "--tt-b",
          "value": "#0000FF"
        },
        {
          "name": "--tt-m",
          "value": "#FF00FF"
        },
        {
          "name": "--tt-c",
          "value": "#00FFFF"
        },
        {
          "name": "--tt-w",
          "value": "#FFFFFF"
        },
        {
          "name": "--tt-set",
          "value": "#1A1A1A"
        },
        {
          "name": "--tt-face",
          "value": "\"VT323 X\", \"VT323\", ui-monospace, Menlo, monospace"
        },
        {
          "name": "--tt-cw",
          "value": "calc(100cqw / 40)"
        }
      ],
      "animates": true,
      "absent": [
        "no text-shadow anywhere"
      ]
    },
    "design_grammar": {
      "note": "Aesthetary's translation of this record into web primitives. Every value carries a basis: \"record\" is a rule the record holds (cites names it), \"translation\" is our choice derived from the cited rules (because says how), \"not_recorded\" means the record is silent (guidance says what to do). A \"record\" value restates a claim the record holds; its standing is that claim's own kind in the record (a requirement, period practice, modern practice, or our interpretation), which the cited rule states. \"record\" does not by itself make a value a property of the language.",
      "slug": "teletext",
      "version": "2026-09-29",
      "summary": "A starting grammar for a website in Teletext: one 40 x 24 cell grid, seven saturated colours on black, 2 x 3 mosaic graphics, double height as the only rank, and navigation by page number and four coloured keys.",
      "color": {
        "roles": [
          {
            "role": "black",
            "value": "#000000",
            "use": "The ground, and the eighth colour.",
            "basis": "record",
            "cites": [
              "token_rule:color-5"
            ]
          },
          {
            "role": "white",
            "value": "#FFFFFF",
            "contrast": "21:1",
            "use": "Body text.",
            "basis": "record",
            "cites": [
              "token_rule:color-5"
            ]
          },
          {
            "role": "yellow",
            "value": "#FFFF00",
            "contrast": "19.6:1",
            "use": "Titles, the header, page numbers.",
            "basis": "record",
            "cites": [
              "token_rule:color-5"
            ]
          },
          {
            "role": "cyan",
            "value": "#00FFFF",
            "contrast": "16.7:1",
            "use": "Secondary text, the fourth Fastext key.",
            "basis": "record",
            "cites": [
              "token_rule:color-5"
            ]
          },
          {
            "role": "green",
            "value": "#00FF00",
            "contrast": "15.3:1",
            "use": "Text, the second Fastext key.",
            "basis": "record",
            "cites": [
              "token_rule:color-5"
            ]
          },
          {
            "role": "magenta",
            "value": "#FF00FF",
            "contrast": "6.7:1",
            "use": "Text and bars.",
            "basis": "record",
            "cites": [
              "token_rule:color-5"
            ]
          },
          {
            "role": "red",
            "value": "#FF0000",
            "contrast": "5.3:1",
            "use": "Warnings, the first Fastext key.",
            "basis": "record",
            "cites": [
              "token_rule:color-5"
            ]
          },
          {
            "role": "blue",
            "value": "#0000FF",
            "contrast": "2.4:1",
            "use": "Bars and mosaics only; never text on black.",
            "basis": "record",
            "cites": [
              "token_rule:color-5"
            ]
          }
        ],
        "alternates": [],
        "rules": [
          {
            "rule": "Use seven colours on black and no intermediates.",
            "basis": "record",
            "cites": [
              "token_rule:color-5"
            ]
          },
          {
            "rule": "No intermediate colours, no gradients.",
            "basis": "record",
            "cites": [
              "claim:failure-2"
            ]
          },
          {
            "rule": "Never set blue as text on black; use it for bars under yellow lettering.",
            "basis": "translation",
            "cites": [
              "token_rule:color-5"
            ],
            "because": "Blue on black is 2.4:1; the palette is fixed, so the fix is where blue is used."
          }
        ]
      },
      "typography": {
        "family": {
          "stack": "\"VT323 X\", \"VT323\", ui-monospace, Menlo, monospace",
          "class": "fixed-width cell glyphs (the room's VT323 as the screen face)"
        },
        "roles": [
          {
            "role": "double",
            "size": "2 rows",
            "weight": 400,
            "lineHeight": "2 cells",
            "case": "uppercase",
            "tracking": null,
            "measure": "38 cells",
            "use": "Titles: double height is the only size."
          },
          {
            "role": "row",
            "size": "1 row",
            "weight": 400,
            "lineHeight": "1 cell",
            "case": null,
            "tracking": null,
            "measure": "39 cells",
            "use": "Everything else, one glyph to a cell."
          }
        ],
        "tokens": {
          "cell-columns": "40",
          "cell-rows": "24"
        },
        "rules": [
          {
            "rule": "Set fixed-width cell glyphs; the only size change is double height.",
            "basis": "record",
            "cites": [
              "token_rule:typography-4"
            ]
          },
          {
            "rule": "No proportional type.",
            "basis": "record",
            "cites": [
              "claim:failure-3"
            ]
          },
          {
            "rule": "Use VT323 for the cell face.",
            "basis": "translation",
            "cites": [
              "token_rule:typography-4"
            ],
            "because": "The record names the class (bitmap, fixed-width cells), not a face; VT323 is the room's."
          },
          {
            "rule": "The format has no weight axis: do not bold; rank with colour, double height or row position.",
            "basis": "record",
            "cites": [
              "token_rule:hierarchy-13"
            ]
          }
        ]
      },
      "gridLayout": {
        "summary": "The grid is the transmission: 40 columns by 24 rows, 960 cells. The header is row 0, Fastext prompts are row 24; nothing sits between cells.",
        "columns": [
          {
            "width": "all",
            "columns": 40
          }
        ],
        "module": "1 character cell",
        "gutter": "0",
        "margin": "none inside the page",
        "tokens": {
          "rows": "24",
          "header": "row 0",
          "fastext": "row 24"
        },
        "rules": [
          {
            "rule": "Compose on a 40 x 24 character grid.",
            "basis": "record",
            "cites": [
              "token_rule:layout-3"
            ]
          },
          {
            "rule": "A page is 40 columns by 24 rows, 960 characters.",
            "basis": "record",
            "cites": [
              "claim:kcc:form-1"
            ]
          },
          {
            "rule": "No element smaller than a cell or placed off-grid.",
            "basis": "record",
            "cites": [
              "claim:failure-5"
            ]
          },
          {
            "rule": "Run near the 960-cell budget: a sparse teletext page reads as a broken one.",
            "basis": "record",
            "cites": [
              "claim:dcc:density-6"
            ]
          },
          {
            "rule": "Scale the grid to the viewport: one cell is the page width divided by 40.",
            "basis": "translation",
            "cites": [
              "token_rule:layout-3"
            ],
            "because": "The cell is fixed in number, not in pixels; a screen that is not a television keeps the count."
          }
        ]
      },
      "shapeGeometry": {
        "tokens": {
          "radius": "0",
          "mosaic": "2 x 3 per cell",
          "border": "a black cell (the code border)"
        },
        "rules": [
          {
            "rule": "Draw graphics only from 2 x 3 mosaic blocks inside the cells.",
            "basis": "record",
            "cites": [
              "token_rule:imagery-7"
            ]
          },
          {
            "rule": "Separated graphics, with gaps between mosaic cells, are a standard option beside contiguous blocks.",
            "basis": "record",
            "cites": [
              "claim:kcc:motif-3"
            ]
          },
          {
            "rule": "Let the black cell a colour change costs stand as an outline: the code border.",
            "basis": "record",
            "cites": [
              "claim:kcc:motif-2"
            ]
          },
          {
            "rule": "No anti-aliasing.",
            "basis": "record",
            "cites": [
              "claim:failure-1"
            ]
          }
        ]
      },
      "imagery": {
        "rules": [
          {
            "rule": "Build every picture from 2 x 3 mosaic blocks.",
            "basis": "record",
            "cites": [
              "token_rule:imagery-7"
            ]
          },
          {
            "rule": "Expect the 3 x 2 matrix to limit any motif.",
            "basis": "record",
            "cites": [
              "claim:kcc:motif-4"
            ]
          },
          {
            "rule": "On newsflash and subtitle pages, inset boxed areas into the live picture instead of a black page.",
            "basis": "record",
            "cites": [
              "claim:kcc:interface-5"
            ]
          },
          {
            "rule": "No photographs or continuous tone: a photograph is outside the format, not a lower-fidelity version of it.",
            "basis": "record",
            "cites": [
              "claim:intent-negation"
            ]
          }
        ]
      },
      "components": {
        "button": {
          "name": "Button",
          "becomes": "A Fastext key: a whole-cell block in red, green, yellow or cyan with black lettering, matching its prompt on row 24.",
          "anatomy": [
            "solid key colour, one of four",
            "black cell-face label",
            "no border, no radius, no shadow"
          ],
          "tokens": {
            "red": "#FF0000",
            "green": "#00FF00",
            "yellow": "#FFFF00",
            "cyan": "#00FFFF",
            "color": "#000000",
            "radius": "0"
          },
          "states": {
            "default": "Key colour, black label.",
            "hover": "The label turns white on the red key; on the other three, the key goes to white.",
            "focus": "3px white outline, 3px outside.",
            "active": "Colours invert: key-coloured label on black.",
            "disabled": "Black key, label in the key colour, never blue."
          },
          "accessibility": [
            "Black on green, yellow and cyan is 15:1 or better; black on red is 5.3:1.",
            "The colour is never the only label: each key names its page.",
            "At least 44px tall."
          ],
          "values": [
            {
              "rule": "Offer four linked pages on red, green, yellow and cyan keys, with matching prompts on the bottom row.",
              "basis": "record",
              "cites": [
                "claim:kcc:interface-1"
              ]
            },
            {
              "rule": "Letter the keys in black on the key colour.",
              "basis": "translation",
              "cites": [
                "token_rule:color-5"
              ],
              "because": "Seven colours on black and no intermediates; black lettering on a solid colour is the format's own reverse."
            }
          ]
        },
        "card": {
          "name": "Card",
          "becomes": "A page: a mosaic banner, a double-height title on a colour bar, then rows of text in whole cells.",
          "anatomy": [
            "mosaic banner row",
            "double-height title on a full-width bar",
            "body text rows, one colour per run",
            "page number, P + three digits"
          ],
          "tokens": {
            "ground": "#000000",
            "columns": "40",
            "rows": "24",
            "title": "double height"
          },
          "states": {
            "default": "Black page, banner, bar, rows.",
            "hover": "The page number turns yellow.",
            "focus": "3px white outline around the page."
          },
          "accessibility": [
            "The mosaic banner is decoration (aria-hidden); the title is a real heading.",
            "Text is live, never an image of cells."
          ],
          "values": [
            {
              "rule": "Head the page or section with a mosaic banner above the text.",
              "basis": "record",
              "cites": [
                "claim:kcc:motif-1"
              ]
            },
            {
              "rule": "Rank by double height, colour and row position, and nothing else.",
              "basis": "record",
              "cites": [
                "token_rule:hierarchy-13"
              ]
            },
            {
              "rule": "Make the card one page of the 40 x 24 grid, spilling to a subpage rather than scrolling.",
              "basis": "translation",
              "cites": [
                "claim:kcc:form-1",
                "claim:failure-4"
              ],
              "because": "The page is a fixed 960-cell grid and cannot scroll; overflow in the format goes to subpages."
            }
          ]
        },
        "input": {
          "name": "Input",
          "becomes": "The page-number entry: three digits in yellow on black, keyed on the remote.",
          "anatomy": [
            "three-digit field",
            "yellow cell-face digits",
            "yellow block cursor"
          ],
          "tokens": {
            "color": "#FFFF00",
            "background": "#000000",
            "border": "2px solid #FFFF00",
            "width": "3ch + padding"
          },
          "states": {
            "default": "Yellow digits on black, yellow edge.",
            "focus": "3px white outline.",
            "error": "The field clears and row 1 prints \"PAGE NOT FOUND\" in red on black.",
            "disabled": "The edge dims to the cell grid; digits hidden."
          },
          "accessibility": [
            "A visible label or an accessible name, \"Page number\".",
            "inputmode=\"numeric\" with a three-digit pattern.",
            "Errors are words, not a red edge alone."
          ],
          "values": [
            {
              "rule": "Treat text entry as keying a page number.",
              "basis": "translation",
              "cites": [
                "claim:kcc:interface-1"
              ],
              "because": "Level 1 pages without Fastext rely on typed page numbers; that is the format's only entry."
            },
            {
              "rule": "Free-text forms are not part of the format.",
              "basis": "not_recorded",
              "cites": [],
              "guidance": "Keep any other field to whole cells in the seven colours; do not invent a teletext form.",
              "silence": "source"
            }
          ]
        },
        "navigation": {
          "name": "Navigation",
          "becomes": "Row 24: four coloured prompts naming the Fastext pages, with the header row above carrying the page number and a live clock.",
          "anatomy": [
            "header row: page number, service name, subpage counter, clock",
            "row 24: four coloured prompts",
            "Reveal for concealed text"
          ],
          "tokens": {
            "header": "row 0",
            "fastext": "row 24",
            "clock": "hh:mm:ss",
            "prompts": "red, green, yellow, cyan"
          },
          "states": {
            "default": "Four prompts in their colours on black.",
            "hover": "Prompt in white.",
            "focus": "3px white outline.",
            "current": "The header prints the current page number; the prompt for it is omitted."
          },
          "accessibility": [
            "aria-current on the current page link.",
            "The clock is aria-hidden or updated no more than once a minute to assistive technology.",
            "Concealed text is revealed by a button with aria-pressed."
          ],
          "values": [
            {
              "rule": "Put the four linked pages on row 24, in red, green, yellow and cyan.",
              "basis": "record",
              "cites": [
                "claim:kcc:interface-1"
              ]
            },
            {
              "rule": "Keep a header on the top row with a real-time clock and a rolling page counter.",
              "basis": "record",
              "cites": [
                "claim:kcc:interface-2"
              ]
            },
            {
              "rule": "Hide concealed text as spaces until the viewer reveals it.",
              "basis": "record",
              "cites": [
                "claim:kcc:interface-4"
              ]
            }
          ]
        }
      },
      "motion": {
        "spec": {
          "durations": {
            "flip": "8s per subpage",
            "flash": "1s per beat, 4 beats",
            "clock": "1s"
          },
          "easing": {
            "all": "steps(1) — nothing eases"
          },
          "transforms": "none: content changes whole, by page.",
          "entrance": "The page is replaced whole.",
          "hover": "A colour change, instant.",
          "reducedMotion": "No flip, no flash; the clock updates once a minute."
        },
        "rules": [
          {
            "rule": "Move by page-flip on a timer, the reveal of concealed text and the rolling subpage counter; never by scrolling.",
            "basis": "record",
            "cites": [
              "token_rule:motion-14"
            ]
          },
          {
            "rule": "Flash text or mosaics by alternating foreground and background, cancelled by Steady or a new row.",
            "basis": "record",
            "cites": [
              "claim:kcc:motion-1"
            ]
          },
          {
            "rule": "Rotate multi-frame pages on a subpage carousel.",
            "basis": "record",
            "cites": [
              "claim:kcc:motion-2"
            ]
          },
          {
            "rule": "Keep the header rolling through page numbers with a live clock.",
            "basis": "record",
            "cites": [
              "claim:kcc:motion-3"
            ]
          },
          {
            "rule": "Start the carousel only when the reader asks, stop it when asked, and stop flashing after four beats.",
            "basis": "translation",
            "cites": [
              "claim:kcc:motion-2",
              "claim:kcc:motion-1"
            ],
            "because": "Carousel and flash are the format's; the reader controlling them is the web's rule for moving content (WCAG 2.2.2)."
          }
        ]
      },
      "notRecorded": [
        {
          "category": "typography",
          "what": "A period typeface",
          "why": "The record names cell glyphs, not a face; VT323 is ours."
        },
        {
          "category": "components",
          "what": "A card and a free-text field",
          "why": "The format has pages and page-number entry; the card and the field are translations."
        },
        {
          "category": "surface",
          "what": "Any surface treatment",
          "why": "No surface treatment exists: no scanlines, glow or curvature."
        }
      ],
      "silence": {
        "color": "source",
        "typography": "source",
        "gridLayout": "source",
        "shapeGeometry": "source",
        "imagery": "source",
        "components": "source",
        "motion": "source"
      },
      "uiNote": "The record documents interface conventions for Teletext. These four components are contemporary builds on those conventions, not historical artefacts."
    }
  }
}