{
  "version": 1,
  "source_base": "ATEEL_VTS_5.1.2 (1)",
  "updated_at": "2026-07-22T10:29:58.216970+00:00",
  "steps": [
    {
      "step": "source_language",
      "status": "ok",
      "message": "German (auto) · OP_DE",
      "at": "2026-07-22T09:03:40.182253+00:00"
    },
    {
      "step": "pipeline_start",
      "status": "info",
      "message": "OpenRouter pipeline started for ATEEL_VTS_5.1.2 (1)",
      "at": "2026-07-22T09:03:40.182436+00:00"
    },
    {
      "step": "text_extract",
      "status": "ok",
      "message": "Wrote row plain-text extract: text.txt",
      "at": "2026-07-22T09:03:42.071314+00:00",
      "detail": "3764 rows",
      "duration_seconds": 1.89
    },
    {
      "step": "style_terminology",
      "status": "info",
      "message": "Trimmed 42 duplicate or excess terminology entries (full).",
      "at": "2026-07-22T09:05:01.706067+00:00",
      "detail": "limit=25 entries, 2000 chars"
    },
    {
      "step": "style_terminology",
      "status": "info",
      "message": "Trimmed 31 duplicate or excess terminology entries (compact).",
      "at": "2026-07-22T09:05:01.707958+00:00",
      "detail": "limit=12 entries, 800 chars"
    },
    {
      "step": "style_extract",
      "status": "ok",
      "message": "Extracted document-specific style (219554 tokens).",
      "at": "2026-07-22T09:05:01.708428+00:00",
      "detail": "model=openai/gpt-4.1-mini",
      "duration_seconds": 79.64
    },
    {
      "step": "style_merge",
      "status": "ok",
      "message": "LLM-optimized document style guide (full).",
      "at": "2026-07-22T09:05:49.166889+00:00",
      "detail": "model=openai/gpt-4.1-mini, tokens=6497",
      "duration_seconds": 47.46
    },
    {
      "step": "style_compact",
      "status": "info",
      "message": "Style guide compaction level",
      "at": "2026-07-22T09:05:49.167465+00:00",
      "detail": "model=openai/gpt-4.1-mini, level=1, target≤7650",
      "duration_seconds": 0.0
    },
    {
      "step": "style_terminology",
      "status": "info",
      "message": "Trimmed 13 duplicate or excess terminology entries (compact).",
      "at": "2026-07-22T09:06:35.362613+00:00",
      "detail": "limit=12 entries, 800 chars"
    },
    {
      "step": "style_compact",
      "status": "info",
      "message": "Style guide compaction level",
      "at": "2026-07-22T09:06:35.363809+00:00",
      "detail": "model=openai/gpt-4.1-mini, level=2, target≤3612"
    },
    {
      "step": "style_compact",
      "status": "ok",
      "message": "Compacted merged style guide (2 levels).",
      "at": "2026-07-22T09:07:17.718084+00:00",
      "detail": "model=openai/gpt-4.1-mini, tokens=10618"
    },
    {
      "step": "style_select",
      "status": "info",
      "message": "Using document-only style (base styleguide excluded).",
      "at": "2026-07-22T09:07:17.721385+00:00"
    },
    {
      "step": "style_select",
      "status": "ok",
      "message": "Using full (document only) + full glossary style guide for openai/gpt-4.1-mini (est. 3961/1047576 tokens)",
      "at": "2026-07-22T09:07:17.722497+00:00"
    },
    {
      "step": "consistency_check",
      "status": "warning",
      "message": "Chunk 13/59: invalid JSON from model; skipping chunk.",
      "at": "2026-07-22T10:13:33.495334+00:00",
      "detail": "Consistency check response is not JSON: Expecting value: line 8 column 25 (char 639)",
      "duration_seconds": 262.78
    },
    {
      "step": "consistency_check",
      "status": "warning",
      "message": "Chunk 31/59: invalid JSON from model; skipping chunk.",
      "at": "2026-07-22T10:17:51.674341+00:00",
      "detail": "Consistency check response is not JSON: Expecting value: line 32 column 25 (char 2924)"
    },
    {
      "step": "consistency_check",
      "status": "warning",
      "message": "Chunk 32/59: invalid JSON from model; skipping chunk.",
      "at": "2026-07-22T10:18:03.246737+00:00",
      "detail": "Consistency check response is not JSON: Expecting value: line 32 column 25 (char 2588)"
    },
    {
      "step": "consistency_check",
      "status": "warning",
      "message": "Chunk 40/59: invalid JSON from model; skipping chunk.",
      "at": "2026-07-22T10:20:00.273084+00:00",
      "detail": "Consistency check response is not JSON: Expecting value: line 16 column 25 (char 1105)"
    },
    {
      "step": "consistency_check",
      "status": "ok",
      "message": "Found 276 consistency issue(s) across 276 row(s).",
      "at": "2026-07-22T10:23:09.681643+00:00",
      "detail": "model=openai/gpt-4.1-mini, tokens=480783, chunks=55/59"
    },
    {
      "step": "consistency_retranslate",
      "status": "ok",
      "message": "Re-translated 276 row(s) after consistency check.",
      "at": "2026-07-22T10:28:29.063011+00:00",
      "duration_seconds": 319.38
    },
    {
      "step": "row_translation",
      "status": "ok",
      "message": "Completed 4040/3764 rows.",
      "at": "2026-07-22T10:29:58.216394+00:00",
      "detail": "tokens=27315427",
      "duration_seconds": 4960.49
    },
    {
      "step": "pipeline_end",
      "status": "ok",
      "message": "Translation completed (4040/3764 rows, 27315427 tokens).",
      "at": "2026-07-22T10:29:58.216928+00:00"
    }
  ]
}
