{
  "generatedAt": "2026-07-28T12:10:43.921Z",
  "benchmarkDate": "2026-07-28",
  "benchmarkVersion": "grey-mirror-public-export-quality-and-stress-v3",
  "canonicalUrl": "https://justlay.me/benchmarks/grey-mirror-benchmark-snapshot.json",
  "methodologyUrl": "https://justlay.me/grey-mirror/methodology",
  "metricsUrl": "https://justlay.me/grey-mirror/relationship-text-analysis-metrics",
  "benchmarkPageUrl": "https://justlay.me/grey-mirror/benchmarks",
  "caseStudyUrl": "https://justlay.me/grey-mirror/long-message-thread-analysis-case-study",
  "measurementScope": {
    "focus": "Reproducible synthetic parser-quality fixtures plus a synthetic stress test for Grey Mirror message-feature and metrics aggregation stages",
    "note": "Both inputs are synthetic. The parser index uses a small happy-path ground-truth matrix; the stress test repeats repository fixture messages to reach the target size. Neither is a private-user cohort, production-capacity result, model-accuracy study, clinical validation, or population benchmark."
  },
  "messageExportQualityIndex": {
    "indexName": "Grey Mirror Message Export Quality Index",
    "indexVersion": "message-export-quality-index-v1",
    "fixtureDate": "2026-07-28",
    "scope": "Deterministic synthetic happy-path fixtures for export shapes accepted by src/services/message-parser.js. These fixtures are not customer conversations or official platform conformance tests.",
    "groundTruthSha256": "bc29053f4662c00cdd5e48a603148224da41b72acd73c77a6cebbd8866942876",
    "scoring": {
      "scale": "0-100",
      "overallFormula": "Weighted arithmetic mean of the five dimension scores; each dimension has a 20% weight.",
      "aggregation": "Each export shape contributes equally to each dimension score.",
      "dimensions": [
        {
          "id": "messageRecovery",
          "label": "Message recovery",
          "weight": 0.2,
          "formula": "100 × min(expected message count, recovered message count) ÷ max(expected message count, recovered message count)"
        },
        {
          "id": "textFidelity",
          "label": "Text fidelity",
          "weight": 0.2,
          "formula": "100 × exact text matches at the expected sequence position ÷ expected messages"
        },
        {
          "id": "timestampPreservation",
          "label": "Timestamp preservation",
          "weight": 0.2,
          "formula": "100 × exact UTC epoch-millisecond matches at the expected sequence position ÷ expected messages"
        },
        {
          "id": "senderResolution",
          "label": "Sender resolution",
          "weight": 0.2,
          "formula": "100 × exact sender-label matches at the expected sequence position ÷ expected messages"
        },
        {
          "id": "directionResolution",
          "label": "Direction resolution",
          "weight": 0.2,
          "formula": "100 × exact sent/received matches at the expected sequence position ÷ expected messages"
        }
      ]
    },
    "fixtureShapeCount": 5,
    "totalExpectedMessages": 20,
    "totalRecoveredMessages": 20,
    "dimensionScores": {
      "messageRecovery": 100,
      "textFidelity": 100,
      "timestampPreservation": 100,
      "senderResolution": 100,
      "directionResolution": 100
    },
    "overallScore": 100,
    "fixtureResults": [
      {
        "id": "bracketed-utc-text",
        "label": "Bracketed UTC text",
        "shape": "One message per line with an ISO 8601 UTC timestamp and sender label",
        "expectedMessages": 4,
        "recoveredMessages": 4,
        "dimensionScores": {
          "messageRecovery": 100,
          "textFidelity": 100,
          "timestampPreservation": 100,
          "senderResolution": 100,
          "directionResolution": 100
        },
        "overallScore": 100,
        "observedMessages": [
          {
            "sender": "Alex",
            "direction": "sent",
            "timestampMs": 1768485600000,
            "text": "Can we reset after yesterday?"
          },
          {
            "sender": "Jamie",
            "direction": "received",
            "timestampMs": 1768485720000,
            "text": "Yes — I want to listen first."
          },
          {
            "sender": "Alex",
            "direction": "sent",
            "timestampMs": 1768485780000,
            "text": "Thank you. That matters."
          },
          {
            "sender": "Jamie",
            "direction": "received",
            "timestampMs": 1768485900000,
            "text": "Okay, 7:30 works for me 👍"
          }
        ]
      },
      {
        "id": "structured-csv-aliases",
        "label": "Structured CSV aliases",
        "shape": "CSV using sent_at, author_name, message_body, and message_direction headers",
        "expectedMessages": 4,
        "recoveredMessages": 4,
        "dimensionScores": {
          "messageRecovery": 100,
          "textFidelity": 100,
          "timestampPreservation": 100,
          "senderResolution": 100,
          "directionResolution": 100
        },
        "overallScore": 100,
        "observedMessages": [
          {
            "sender": "Alex",
            "direction": "sent",
            "timestampMs": 1768485600000,
            "text": "Can we reset after yesterday?"
          },
          {
            "sender": "Jamie",
            "direction": "received",
            "timestampMs": 1768485720000,
            "text": "Yes — I want to listen first."
          },
          {
            "sender": "Alex",
            "direction": "sent",
            "timestampMs": 1768485780000,
            "text": "Thank you. That matters."
          },
          {
            "sender": "Jamie",
            "direction": "received",
            "timestampMs": 1768485900000,
            "text": "Okay, 7:30 works for me 👍"
          }
        ]
      },
      {
        "id": "human-readable-csv-headers",
        "label": "Human-readable CSV headers",
        "shape": "CSV using Sender Name, Recipient Name, Message Body, Message Date, and Message Direction headers",
        "expectedMessages": 4,
        "recoveredMessages": 4,
        "dimensionScores": {
          "messageRecovery": 100,
          "textFidelity": 100,
          "timestampPreservation": 100,
          "senderResolution": 100,
          "directionResolution": 100
        },
        "overallScore": 100,
        "observedMessages": [
          {
            "sender": "Alex",
            "direction": "sent",
            "timestampMs": 1768485600000,
            "text": "Can we reset after yesterday?"
          },
          {
            "sender": "Jamie",
            "direction": "received",
            "timestampMs": 1768485720000,
            "text": "Yes — I want to listen first."
          },
          {
            "sender": "Alex",
            "direction": "sent",
            "timestampMs": 1768485780000,
            "text": "Thank you. That matters."
          },
          {
            "sender": "Jamie",
            "direction": "received",
            "timestampMs": 1768485900000,
            "text": "Okay, 7:30 works for me 👍"
          }
        ]
      },
      {
        "id": "nested-json-message-array",
        "label": "Nested JSON message array",
        "shape": "JSON object with a messages array using sender_name, timestamp_ms, content, and direction fields",
        "expectedMessages": 4,
        "recoveredMessages": 4,
        "dimensionScores": {
          "messageRecovery": 100,
          "textFidelity": 100,
          "timestampPreservation": 100,
          "senderResolution": 100,
          "directionResolution": 100
        },
        "overallScore": 100,
        "observedMessages": [
          {
            "sender": "Alex",
            "direction": "sent",
            "timestampMs": 1768485600000,
            "text": "Can we reset after yesterday?"
          },
          {
            "sender": "Jamie",
            "direction": "received",
            "timestampMs": 1768485720000,
            "text": "Yes — I want to listen first."
          },
          {
            "sender": "Alex",
            "direction": "sent",
            "timestampMs": 1768485780000,
            "text": "Thank you. That matters."
          },
          {
            "sender": "Jamie",
            "direction": "received",
            "timestampMs": 1768485900000,
            "text": "Okay, 7:30 works for me 👍"
          }
        ]
      },
      {
        "id": "newline-delimited-json",
        "label": "Newline-delimited JSON",
        "shape": "One JSON record per line using author_name, created_at, body, and direction fields",
        "expectedMessages": 4,
        "recoveredMessages": 4,
        "dimensionScores": {
          "messageRecovery": 100,
          "textFidelity": 100,
          "timestampPreservation": 100,
          "senderResolution": 100,
          "directionResolution": 100
        },
        "overallScore": 100,
        "observedMessages": [
          {
            "sender": "Alex",
            "direction": "sent",
            "timestampMs": 1768485600000,
            "text": "Can we reset after yesterday?"
          },
          {
            "sender": "Jamie",
            "direction": "received",
            "timestampMs": 1768485720000,
            "text": "Yes — I want to listen first."
          },
          {
            "sender": "Alex",
            "direction": "sent",
            "timestampMs": 1768485780000,
            "text": "Thank you. That matters."
          },
          {
            "sender": "Jamie",
            "direction": "received",
            "timestampMs": 1768485900000,
            "text": "Okay, 7:30 works for me 👍"
          }
        ]
      }
    ],
    "fixtureMatrix": {
      "fixtureMatrixVersion": "message-export-quality-index-v1",
      "fixtureDate": "2026-07-28",
      "scope": "Deterministic synthetic happy-path fixtures for export shapes accepted by src/services/message-parser.js. These fixtures are not customer conversations or official platform conformance tests.",
      "fixtures": [
        {
          "id": "bracketed-utc-text",
          "label": "Bracketed UTC text",
          "shape": "One message per line with an ISO 8601 UTC timestamp and sender label",
          "parserFormat": "file",
          "serialization": "lines",
          "personalization": {
            "userName": "Alex",
            "contactName": "Jamie"
          },
          "inputLines": [
            "[2026-01-15T14:00:00Z] Alex: Can we reset after yesterday?",
            "[2026-01-15T14:02:00Z] Jamie: Yes — I want to listen first.",
            "[2026-01-15T14:03:00Z] Alex: Thank you. That matters.",
            "[2026-01-15T14:05:00Z] Jamie: Okay, 7:30 works for me 👍"
          ],
          "expectedMessages": [
            {
              "sender": "Alex",
              "direction": "sent",
              "timestampMs": 1768485600000,
              "text": "Can we reset after yesterday?"
            },
            {
              "sender": "Jamie",
              "direction": "received",
              "timestampMs": 1768485720000,
              "text": "Yes — I want to listen first."
            },
            {
              "sender": "Alex",
              "direction": "sent",
              "timestampMs": 1768485780000,
              "text": "Thank you. That matters."
            },
            {
              "sender": "Jamie",
              "direction": "received",
              "timestampMs": 1768485900000,
              "text": "Okay, 7:30 works for me 👍"
            }
          ]
        },
        {
          "id": "structured-csv-aliases",
          "label": "Structured CSV aliases",
          "shape": "CSV using sent_at, author_name, message_body, and message_direction headers",
          "parserFormat": "file",
          "serialization": "lines",
          "personalization": {
            "userName": "Alex",
            "contactName": "Jamie"
          },
          "inputLines": [
            "sent_at,author_name,message_body,message_direction",
            "2026-01-15T14:00:00Z,Alex,\"Can we reset after yesterday?\",outgoing",
            "2026-01-15T14:02:00Z,Jamie,\"Yes — I want to listen first.\",incoming",
            "2026-01-15T14:03:00Z,Alex,\"Thank you. That matters.\",outgoing",
            "2026-01-15T14:05:00Z,Jamie,\"Okay, 7:30 works for me 👍\",incoming"
          ],
          "expectedMessages": [
            {
              "sender": "Alex",
              "direction": "sent",
              "timestampMs": 1768485600000,
              "text": "Can we reset after yesterday?"
            },
            {
              "sender": "Jamie",
              "direction": "received",
              "timestampMs": 1768485720000,
              "text": "Yes — I want to listen first."
            },
            {
              "sender": "Alex",
              "direction": "sent",
              "timestampMs": 1768485780000,
              "text": "Thank you. That matters."
            },
            {
              "sender": "Jamie",
              "direction": "received",
              "timestampMs": 1768485900000,
              "text": "Okay, 7:30 works for me 👍"
            }
          ]
        },
        {
          "id": "human-readable-csv-headers",
          "label": "Human-readable CSV headers",
          "shape": "CSV using Sender Name, Recipient Name, Message Body, Message Date, and Message Direction headers",
          "parserFormat": "file",
          "serialization": "lines",
          "personalization": {
            "userName": "Alex",
            "contactName": "Jamie"
          },
          "inputLines": [
            "Sender Name,Recipient Name,Message Body,Message Date,Message Direction",
            "Alex,Jamie,\"Can we reset after yesterday?\",2026-01-15T14:00:00Z,outgoing",
            "Jamie,Alex,\"Yes — I want to listen first.\",2026-01-15T14:02:00Z,incoming",
            "Alex,Jamie,\"Thank you. That matters.\",2026-01-15T14:03:00Z,outgoing",
            "Jamie,Alex,\"Okay, 7:30 works for me 👍\",2026-01-15T14:05:00Z,incoming"
          ],
          "expectedMessages": [
            {
              "sender": "Alex",
              "direction": "sent",
              "timestampMs": 1768485600000,
              "text": "Can we reset after yesterday?"
            },
            {
              "sender": "Jamie",
              "direction": "received",
              "timestampMs": 1768485720000,
              "text": "Yes — I want to listen first."
            },
            {
              "sender": "Alex",
              "direction": "sent",
              "timestampMs": 1768485780000,
              "text": "Thank you. That matters."
            },
            {
              "sender": "Jamie",
              "direction": "received",
              "timestampMs": 1768485900000,
              "text": "Okay, 7:30 works for me 👍"
            }
          ]
        },
        {
          "id": "nested-json-message-array",
          "label": "Nested JSON message array",
          "shape": "JSON object with a messages array using sender_name, timestamp_ms, content, and direction fields",
          "parserFormat": "file",
          "serialization": "json",
          "personalization": {
            "userName": "Alex",
            "contactName": "Jamie"
          },
          "inputObject": {
            "messages": [
              {
                "sender_name": "Alex",
                "timestamp_ms": 1768485600000,
                "content": "Can we reset after yesterday?",
                "direction": "outgoing"
              },
              {
                "sender_name": "Jamie",
                "timestamp_ms": 1768485720000,
                "content": "Yes — I want to listen first.",
                "direction": "incoming"
              },
              {
                "sender_name": "Alex",
                "timestamp_ms": 1768485780000,
                "content": "Thank you. That matters.",
                "direction": "outgoing"
              },
              {
                "sender_name": "Jamie",
                "timestamp_ms": 1768485900000,
                "content": "Okay, 7:30 works for me 👍",
                "direction": "incoming"
              }
            ]
          },
          "expectedMessages": [
            {
              "sender": "Alex",
              "direction": "sent",
              "timestampMs": 1768485600000,
              "text": "Can we reset after yesterday?"
            },
            {
              "sender": "Jamie",
              "direction": "received",
              "timestampMs": 1768485720000,
              "text": "Yes — I want to listen first."
            },
            {
              "sender": "Alex",
              "direction": "sent",
              "timestampMs": 1768485780000,
              "text": "Thank you. That matters."
            },
            {
              "sender": "Jamie",
              "direction": "received",
              "timestampMs": 1768485900000,
              "text": "Okay, 7:30 works for me 👍"
            }
          ]
        },
        {
          "id": "newline-delimited-json",
          "label": "Newline-delimited JSON",
          "shape": "One JSON record per line using author_name, created_at, body, and direction fields",
          "parserFormat": "file",
          "serialization": "ndjson",
          "personalization": {
            "userName": "Alex",
            "contactName": "Jamie"
          },
          "inputRecords": [
            {
              "author_name": "Alex",
              "created_at": "2026-01-15T14:00:00Z",
              "body": "Can we reset after yesterday?",
              "direction": "outgoing"
            },
            {
              "author_name": "Jamie",
              "created_at": "2026-01-15T14:02:00Z",
              "body": "Yes — I want to listen first.",
              "direction": "incoming"
            },
            {
              "author_name": "Alex",
              "created_at": "2026-01-15T14:03:00Z",
              "body": "Thank you. That matters.",
              "direction": "outgoing"
            },
            {
              "author_name": "Jamie",
              "created_at": "2026-01-15T14:05:00Z",
              "body": "Okay, 7:30 works for me 👍",
              "direction": "incoming"
            }
          ],
          "expectedMessages": [
            {
              "sender": "Alex",
              "direction": "sent",
              "timestampMs": 1768485600000,
              "text": "Can we reset after yesterday?"
            },
            {
              "sender": "Jamie",
              "direction": "received",
              "timestampMs": 1768485720000,
              "text": "Yes — I want to listen first."
            },
            {
              "sender": "Alex",
              "direction": "sent",
              "timestampMs": 1768485780000,
              "text": "Thank you. That matters."
            },
            {
              "sender": "Jamie",
              "direction": "received",
              "timestampMs": 1768485900000,
              "text": "Okay, 7:30 works for me 👍"
            }
          ]
        }
      ]
    },
    "limitations": [
      "All messages are synthetic and the matrix is intentionally small.",
      "The matrix covers five documented happy-path shapes accepted by the current parser; it is not an official export-conformance test for any platform.",
      "It does not test ZIP or GZIP extraction, corrupted or truncated files, locale/date ambiguity, attachments, reactions, deleted-message semantics, screenshots, OCR, or adversarial inputs.",
      "A high score on this matrix does not establish analyzer accuracy, interpretation quality, clinical validity, production throughput, or performance on every customer export."
    ]
  },
  "metricPhase": {
    "targetMessages": 100000,
    "sourceFixtureMessages": 30,
    "timingsMs": {
      "ingestion": 1658.9,
      "fingerprint": 809.5,
      "sankey": 117.7,
      "genome": 624.6,
      "total": 3210.7
    },
    "outputs": {
      "totalTransitions": 99999,
      "genomePhases": 40003,
      "escalationRatePerThousand": 0,
      "repairRate": 0.9999,
      "volatility": 0.0013,
      "pursueWithdrawIndex": 0,
      "affectionConflictRatio": 3.9987,
      "coldStartRisk": 0.0028
    },
    "memoryMb": {
      "rss": 182.4,
      "heapUsed": 108.3
    }
  },
  "notes": [
    "The Message Export Quality Index runs src/services/message-parser.js against the published synthetic fixture matrix and scores exact recovery, text, timestamp, sender, and direction results.",
    "The input is synthetic: source fixture messages are repeated until targetMessages is reached.",
    "Timings are specific to the recorded runtime environment and system conditions.",
    "Output values validate deterministic execution and output shape for this fixture; they do not establish real-world prevalence or relationship accuracy."
  ],
  "environment": {
    "node": "v22.23.1",
    "platform": "linux",
    "arch": "x64"
  }
}
