Skip to content
§2.3

Traceability

Can every piece of the output be traced back to where it was printed?

✅ NormativeSettled. The requirement holds as written.📄 Page ruleCan be applied from the page alone.Read §2.3 in the RFC ↗

The requirement

Every element of the output MUST be attributable to the place on the page it was read from. When boxes are requested, every Markdown element MUST have a box, and every box MUST cover exactly the printed content of its element.

When it applies

Traceability is what lets a reader of the Markdown — a person or a model — go back to the page to check, cite or highlight a statement. It is also what makes the two principles checkable: a Markdown element with no printed source is invented; printed content with no Markdown element is dropped.

  • An element is traced by its box: the region of the page its content occupies. What a box covers and how fine boxes go are defined in Boxes and Granularity (§3.3); how boxes are carried is defined in The Sidecar (§3.4).
  • Content the protocol moves out of its printed position — a watermark placed first, a sidenote placed after its paragraph, a folio recorded on its own — still traces to where it was printed.
  • A Markdown element that was synthesised rather than transcribed (for example a chart table built from marks) traces to the region of the page it was read from.

Reading the examples. Each one pairs a source page with the output the rule expects. ✅ Sample: the rule applies. ❌ Counter-sample: it looks like it applies and does not, or a rendering got it wrong. A non-conforming output, in red, is shown only for contrast. … marks content left out of an excerpt.

The point, in a small example

Follow each output element back to the same service page. The footer has its own location; word character ranges refer to each element’s Markdown, including its syntax. These pages are made up to isolate the rule.

01

✅ SampleConstructedThe rule applies

The same service page at element granularity

This interior page has a level-2 section heading, one two-line paragraph and a footer. Element boxes were requested. The Markdown and sidecar below are separate deliverables; the footer is not part of the paragraph. Coordinates use the original 720×420 image, not its on-screen display size.

Source page
Traceability — The same service page at element granularity. Source page.
Expected output
Markdown
<!-- el p=1 x=48 y=54 w=179 h=22 -->
## Service note

<!-- el p=1 x=48 y=131 w=159 h=62 -->
Check valve A.
Record 12 psi.

<!-- el p=1 x=48 y=369 w=74 h=17 -->
Rev B | 7
Expected output · Sidecar JSON
Markdown
{
  "pages": [
    {
      "page": 1,
      "width": 720,
      "height": 420,
      "items": [
        {
          "type": "Section-header",
          "md": "## Service note",
          "bBox": {
            "x": 48,
            "y": 54,
            "w": 179,
            "h": 22
          }
        },
        {
          "type": "Text",
          "md": "Check valve A.\nRecord 12 psi.",
          "bBox": {
            "x": 48,
            "y": 131,
            "w": 159,
            "h": 62
          }
        },
        {
          "type": "Page-footer",
          "md": "Rev B | 7",
          "bBox": {
            "x": 48,
            "y": 369,
            "w": 74,
            "h": 17
          }
        }
      ]
    }
  ]
}
Traceability · Source page

The same service page at element granularity

Traceability — The same service page at element granularity. Source page.
02

✅ SampleConstructedThe rule applies

The same service page at word granularity

This interior page has a level-2 section heading, one two-line paragraph and a footer. Word boxes were requested. The Markdown and sidecar below are separate deliverables; the footer is not part of the paragraph. Coordinates use the original 720×420 image, not its on-screen display size.

Source page
Traceability — The same service page at word granularity. Source page.
Expected output
Markdown
<!-- el p=1 x=48 y=54 w=179 h=22 -->
## Service note

<!-- el p=1 x=48 y=131 w=159 h=62 -->
Check valve A.
Record 12 psi.

<!-- el p=1 x=48 y=369 w=74 h=17 -->
Rev B | 7
Expected output · Sidecar JSON
Markdown
{
  "pages": [
    {
      "page": 1,
      "width": 720,
      "height": 420,
      "items": [
        {
          "type": "Section-header",
          "md": "## Service note",
          "bBox": {
            "x": 48,
            "y": 54,
            "w": 179,
            "h": 22
          },
          "layoutAwareBbox": [
            {
              "x": 48.0,
              "y": 54,
              "w": 108.0,
              "h": 22,
              "startIndex": 3,
              "endIndex": 10
            },
            {
              "x": 164.0,
              "y": 55,
              "w": 63.0,
              "h": 21,
              "startIndex": 11,
              "endIndex": 15
            }
          ]
        },
        {
          "type": "Text",
          "md": "Check valve A.\nRecord 12 psi.",
          "bBox": {
            "x": 48,
            "y": 131,
            "w": 159,
            "h": 62
          },
          "layoutAwareBbox": [
            {
              "x": 48.0,
              "y": 131,
              "w": 67.0,
              "h": 17,
              "startIndex": 0,
              "endIndex": 5
            },
            {
              "x": 122.0,
              "y": 131,
              "w": 55.0,
              "h": 17,
              "startIndex": 6,
              "endIndex": 11
            },
            {
              "x": 183.0,
              "y": 131,
              "w": 24.0,
              "h": 17,
              "startIndex": 12,
              "endIndex": 14
            },
            {
              "x": 48.0,
              "y": 171,
              "w": 76.0,
              "h": 17,
              "startIndex": 15,
              "endIndex": 21
            },
            {
              "x": 131.0,
              "y": 171,
              "w": 26.0,
              "h": 17,
              "startIndex": 22,
              "endIndex": 24
            },
            {
              "x": 164.0,
              "y": 171,
              "w": 37.0,
              "h": 22,
              "startIndex": 25,
              "endIndex": 29
            }
          ]
        },
        {
          "type": "Page-footer",
          "md": "Rev B | 7",
          "bBox": {
            "x": 48,
            "y": 369,
            "w": 74,
            "h": 17
          },
          "layoutAwareBbox": [
            {
              "x": 48.0,
              "y": 369,
              "w": 32.0,
              "h": 13,
              "startIndex": 0,
              "endIndex": 3
            },
            {
              "x": 85.0,
              "y": 369,
              "w": 12.0,
              "h": 13,
              "startIndex": 4,
              "endIndex": 5
            },
            {
              "x": 102.0,
              "y": 369,
              "w": 5.0,
              "h": 17,
              "startIndex": 6,
              "endIndex": 7
            },
            {
              "x": 112.0,
              "y": 369,
              "w": 10.0,
              "h": 13,
              "startIndex": 8,
              "endIndex": 9
            }
          ]
        }
      ]
    }
  ]
}
Traceability · Source page

The same service page at word granularity

Traceability — The same service page at word granularity. Source page.

More

Rule id principles-traceability · principles boxes