{
  "schemaVersion": 1,
  "version": "1.2.0",
  "markdown": "index.md",
  "exampleSource": "examples.json",
  "designRules": {
    "indexUrl": "https://lanej.io/viewrule/rules/index.json",
    "command": "viewrule guide rules",
    "authority": "installed engine policy; public URLs track the current site"
  },
  "pages": [
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "P-003",
      "kind": "pattern",
      "title": "Dense action lists with in-place expansion",
      "summary": "Start with compact comparable decision rows; expand supporting trends and diagnostics in place.",
      "applicability": [
        "action queues",
        "approval lists",
        "triage",
        "dynamic pricing"
      ],
      "related": [
        "P-001",
        "P-002",
        "P-004"
      ],
      "rules": [
        "DR-003",
        "DR-006",
        "DR-007"
      ],
      "sources": [
        "E-CARBON",
        "E-DISCLOSURE-APG",
        "E-SPARKLINES"
      ],
      "examples": [
        {
          "id": "action-compact",
          "quality": "good",
          "href": "../../examples/pricing.html?mode=compact&open=A",
          "task": "Review three synthetic price proposals without activating them.",
          "consequence": "Readable aligned factors remain visible above in-place diagnostics.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=compact&open=A"
        },
        {
          "id": "action-sparse",
          "quality": "bad",
          "href": "../../examples/pricing.html?mode=sparse",
          "task": "Compare those same proposals.",
          "consequence": "Routine fields require repeated navigation.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=sparse"
        },
        {
          "id": "action-overloaded",
          "quality": "bad",
          "href": "../../examples/pricing.html?mode=overloaded",
          "task": "Compare those same proposals.",
          "consequence": "All diagnostic histories interrupt the repeated row structure.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=overloaded"
        },
        {
          "id": "action-clipped",
          "quality": "bad",
          "href": "../../examples/pricing.html?mode=clipped",
          "task": "Identify the complete lane for each proposal.",
          "consequence": "Fixed-width labels truncate route identities; pricing-labels should fail.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=clipped"
        },
        {
          "id": "actions-table",
          "quality": "good",
          "href": "../../examples/pricing.html?mode=table&task=routine&open=A",
          "task": "Compare the same three proposals before review or hold.",
          "consequence": "All routine fields remain in the table while one item’s supporting evidence is inspected.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=table&task=routine&open=A"
        },
        {
          "id": "actions-audit",
          "quality": "good",
          "href": "../../examples/pricing.html?mode=detail&task=audit&open=A",
          "task": "Document A’s model assumptions and review rationale.",
          "consequence": "A dedicated view keeps the individual investigation and local note together.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=detail&task=audit&open=A"
        },
        {
          "id": "actions-isolated",
          "quality": "bad",
          "href": "../../examples/pricing.html?mode=detail&task=routine&open=A",
          "task": "Compare the same three proposals before review or hold.",
          "consequence": "The dedicated view hides alternatives needed for this task.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=detail&task=routine&open=A"
        }
      ],
      "markdown": "action-lists.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "guide-authoring",
      "kind": "authoring",
      "title": "Contribute guidance",
      "summary": "Add one task-scoped page, primary evidence, and original examples; validate the same source for people and agents.",
      "markdown": "authoring.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "P-001",
      "kind": "pattern",
      "title": "Decision-centered information organization",
      "summary": "Keep routine decision factors visible and comparable; disclose supporting work according to the task.",
      "applicability": [
        "dashboards",
        "decision support",
        "triage",
        "pricing"
      ],
      "related": [
        "P-002",
        "P-003"
      ],
      "rules": [
        "DR-003",
        "DR-006"
      ],
      "sources": [
        "E-DISCLOSURE",
        "E-RECALL"
      ],
      "examples": [
        {
          "id": "decision-visible",
          "quality": "good",
          "href": "../../examples/pricing.html?mode=compact",
          "task": "Compare three proposals before choosing review or hold.",
          "consequence": "Current/proposed price, forecast range, and constraint state stay with each identity.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=compact"
        },
        {
          "id": "decision-hidden",
          "quality": "bad",
          "href": "../../examples/pricing.html?mode=sparse",
          "task": "Compare the same three proposals.",
          "consequence": "Opening each proposal replaces the list; users must remember the previous alternative.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=sparse"
        },
        {
          "id": "decision-table",
          "quality": "good",
          "href": "../../examples/pricing.html?mode=table&task=routine&open=A",
          "task": "Compare three proposals before choosing review or hold.",
          "consequence": "The comparison table preserves the same factors alongside a selected-item panel.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=table&task=routine&open=A"
        }
      ],
      "markdown": "decision-context.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "E-CARBON",
      "kind": "evidence",
      "title": "Carbon: expandable data tables",
      "summary": "Variants: Expandable.",
      "evidenceType": "practitioner",
      "citation": "IBM Carbon Design System. Data table: Usage.",
      "url": "https://carbondesignsystem.com/components/data-table/usage/",
      "reviewed": "2026-09-13",
      "markdown": "evidence/carbon.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "E-CM1984",
      "kind": "evidence",
      "title": "Cleveland and McGill: graphical perception",
      "summary": "Original paper; sections 4.3–4.5, especially p. 543 and Figure 16.",
      "evidenceType": "experimental",
      "citation": "William S. Cleveland and Robert McGill. 1984. Graphical Perception: Theory, Experimentation, and Application to the Development of Graphical Methods. Journal of the American Statistical Association 79(387), 531–554.",
      "url": "https://doi.org/10.1080/01621459.1984.10478080",
      "reviewed": "2026-09-13",
      "markdown": "evidence/cm1984.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "E-DISCLOSURE-APG",
      "kind": "evidence",
      "title": "W3C APG: disclosure pattern",
      "summary": "Keyboard interaction and WAI-ARIA roles, states, and properties.",
      "evidenceType": "standard",
      "citation": "W3C WAI. ARIA Authoring Practices Guide: Disclosure (Show/Hide) Pattern.",
      "url": "https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/",
      "reviewed": "2026-09-13",
      "markdown": "evidence/disclosure-apg.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "E-DISCLOSURE",
      "kind": "evidence",
      "title": "Nielsen: progressive disclosure",
      "summary": "Usability criteria and staged disclosure; the hotel-choice example.",
      "evidenceType": "practitioner",
      "citation": "Jakob Nielsen. Progressive Disclosure. Nielsen Norman Group, December 3, 2006.",
      "url": "https://www.nngroup.com/articles/progressive-disclosure/",
      "reviewed": "2026-09-13",
      "markdown": "evidence/disclosure.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "E-HB2010",
      "kind": "evidence",
      "title": "Heer and Bostock: crowdsourced perception",
      "summary": "Original paper; experiment 1A and Figures 3–4.",
      "evidenceType": "experimental",
      "citation": "Jeffrey Heer and Michael Bostock. 2010. Crowdsourcing Graphical Perception: Using Mechanical Turk to Assess Visualization Design. CHI 2010, 203–212.",
      "url": "https://doi.org/10.1145/1753326.1753357",
      "reviewed": "2026-09-13",
      "markdown": "evidence/hb2010.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "E-RECALL",
      "kind": "evidence",
      "title": "Budiu: recognition and recall",
      "summary": "Promote recognition in user interfaces.",
      "evidenceType": "practitioner",
      "citation": "Raluca Budiu. Memory Recognition and Recall in User Interfaces. Nielsen Norman Group, January 15, 2024.",
      "url": "https://www.nngroup.com/articles/recognition-and-recall/",
      "reviewed": "2026-09-13",
      "markdown": "evidence/recall.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "E-SPARKLINES",
      "kind": "evidence",
      "title": "Tufte: sparkline theory and practice",
      "summary": "Author text on spatial adjacency, context, framing, and multiple sparklines.",
      "evidenceType": "practitioner",
      "citation": "Edward Tufte. Sparkline theory and practice. May 27, 2004; evolving author-hosted discussion.",
      "url": "https://www.edwardtufte.com/notebook/sparkline-theory-and-practice-edward-tufte/",
      "reviewed": "2026-09-13",
      "markdown": "evidence/sparklines.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "E-TUFTE",
      "kind": "evidence",
      "title": "Tufte: The Visual Display of Quantitative Information",
      "summary": "Graphical integrity; data-ink and graphical redesign; chartjunk; data density and small multiples.",
      "evidenceType": "practitioner",
      "citation": "Edward R. Tufte. The Visual Display of Quantitative Information. Graphics Press; first edition 1983, second edition 2001.",
      "url": "https://www.edwardtufte.com/book/the-visual-display-of-quantitative-information/",
      "reviewed": "2026-09-13",
      "markdown": "evidence/tufte.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "P-005",
      "kind": "pattern",
      "title": "Empirical graphical perception",
      "summary": "Prefer encodings suited to the comparison task; keep experimental results scoped to what was tested.",
      "applicability": [
        "magnitude comparison",
        "chart selection",
        "bars",
        "dots",
        "area"
      ],
      "related": [
        "P-004",
        "P-001"
      ],
      "rules": [
        "DR-001",
        "DR-002"
      ],
      "sources": [
        "E-CM1984",
        "E-HB2010"
      ],
      "examples": [
        {
          "id": "perception-position",
          "quality": "good",
          "href": "../../examples/encodings.html#position",
          "task": "Estimate B as a proportion of A: 40 of 80 USD/day.",
          "consequence": "Aligned positions provide a common reference, with exact labels available.",
          "publicUrl": "https://lanej.io/viewrule/examples/encodings.html#position"
        },
        {
          "id": "perception-area",
          "quality": "bad",
          "href": "../../examples/encodings.html#area",
          "task": "Make the same precise proportional comparison.",
          "consequence": "Area requires a less accurate tested judgment; it is still a truthful mapping.",
          "publicUrl": "https://lanej.io/viewrule/examples/encodings.html#area"
        }
      ],
      "markdown": "graphical-perception.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "guide-index",
      "kind": "index",
      "title": "Design for the decision",
      "summary": "Choose conditional guidance, inspect its evidence and examples, then measure the implementation.",
      "markdown": "index.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "P-002",
      "kind": "pattern",
      "title": "Progressive disclosure and memory load",
      "summary": "Disclose explanations and diagnostics without hiding information needed together.",
      "applicability": [
        "tabs",
        "drawers",
        "drilldowns",
        "multi-step flows"
      ],
      "related": [
        "P-001",
        "P-003"
      ],
      "rules": [
        "DR-003",
        "DR-006"
      ],
      "sources": [
        "E-DISCLOSURE",
        "E-RECALL",
        "E-DISCLOSURE-APG"
      ],
      "examples": [
        {
          "id": "disclosure-context",
          "quality": "good",
          "href": "../../examples/pricing.html?mode=compact&open=A",
          "task": "Investigate proposal A while retaining its action factors.",
          "consequence": "Expansion leaves the identity and summary in place.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=compact&open=A"
        },
        {
          "id": "disclosure-navigation",
          "quality": "bad",
          "href": "../../examples/pricing.html?mode=sparse&open=A",
          "task": "Compare A with B while inspecting supporting factors.",
          "consequence": "The detail view replaces B and C, forcing revisitation.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=sparse&open=A"
        },
        {
          "id": "disclosure-primary-trends",
          "quality": "good",
          "href": "../../examples/pricing.html?mode=trends&task=trend",
          "task": "Compare demand histories before choosing review or hold.",
          "consequence": "Common-scale histories are visible together at desktop width; notes remain secondary.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=trends&task=trend"
        },
        {
          "id": "disclosure-hidden-trends",
          "quality": "bad",
          "href": "../../examples/pricing.html?mode=compact&task=trend",
          "task": "Compare the same demand histories before review or hold.",
          "consequence": "Collapsed histories hide information assumed essential for this task.",
          "publicUrl": "https://lanej.io/viewrule/examples/pricing.html?mode=compact&task=trend"
        }
      ],
      "markdown": "progressive-disclosure.md"
    },
    {
      "schemaVersion": 1,
      "version": "1.2.0",
      "id": "P-004",
      "kind": "pattern",
      "title": "Tufte in practice",
      "summary": "Preserve truthful magnitudes and useful comparison; make every visual element earn its role.",
      "applicability": [
        "charts",
        "small multiples",
        "dashboards",
        "information density"
      ],
      "related": [
        "P-001",
        "P-003",
        "P-005"
      ],
      "rules": [
        "DR-001",
        "DR-002",
        "DR-003",
        "DR-007",
        "DR-008"
      ],
      "sources": [
        "E-TUFTE",
        "E-SPARKLINES"
      ],
      "examples": [
        {
          "id": "tufte-shared",
          "quality": "good",
          "href": "../../examples/encodings.html#shared",
          "task": "Compare absolute daily forecast contribution across three proposals.",
          "consequence": "Repeated panels share the scale and retain values, units, and period.",
          "publicUrl": "https://lanej.io/viewrule/examples/encodings.html#shared"
        },
        {
          "id": "tufte-rescaled",
          "quality": "bad",
          "href": "../../examples/encodings.html#rescaled",
          "task": "Compare the same absolute contributions.",
          "consequence": "Independent scales make different values look equally large.",
          "publicUrl": "https://lanej.io/viewrule/examples/encodings.html#rescaled"
        },
        {
          "id": "tufte-purposeful-context",
          "quality": "good",
          "href": "../../examples/encodings.html#context",
          "task": "Identify which midpoint exceeds the fictional 60 USD/day reference.",
          "consequence": "A restrained chart preserves the reference and labels needed for the comparison.",
          "publicUrl": "https://lanej.io/viewrule/examples/encodings.html#context"
        },
        {
          "id": "tufte-competing-frame",
          "quality": "bad",
          "href": "../../examples/encodings.html#ornament",
          "task": "Identify which of the same midpoints exceeds the same reference.",
          "consequence": "Heavy framing, gridlines, and a repeated legend compete with the task-relevant marks.",
          "publicUrl": "https://lanej.io/viewrule/examples/encodings.html#ornament"
        }
      ],
      "markdown": "tufte.md"
    }
  ]
}
