{
  "base_url": "http://127.0.0.1:8110",
  "cases": [
    {
      "case_id": "W19-POS-PREVIEW-EXECUTE",
      "detail": {
        "after": {
          "count": 2,
          "ids": [
            797,
            798
          ],
          "nisn_list": [
            "0099567801",
            "0099567802"
          ]
        },
        "before": {
          "count": 0,
          "ids": [],
          "nisn_list": []
        },
        "execute": {
          "error": null,
          "http_status": 200,
          "result": {
            "data": {
              "created": 2,
              "errors": 0,
              "log_id": 2,
              "preview_hash": "9151d718f1ea50b8a2e100c3c6396f29",
              "updated": 0
            },
            "message": "Sync completed: 2 created, 0 updated, 0 errors",
            "success": true
          }
        },
        "preview": {
          "error": null,
          "http_status": 200,
          "result": {
            "data": {
              "expires_at": "2026-08-31T15:03:44+00:00",
              "preview_hash": "9151d718f1ea50b8a2e100c3c6396f29",
              "preview_id": 1,
              "remote_version": "b859a9cf015da74f84e41c5dde59dc02",
              "stats": {
                "planned_create": 2,
                "planned_skip": 0,
                "planned_update": 0,
                "total": 2
              },
              "sync_type": "student"
            },
            "success": true
          }
        }
      },
      "matrix_id": "RT-W19-POS-01",
      "status": "PASS"
    },
    {
      "case_id": "W19-NEG-VIEWER-CONFIG-SPLIT",
      "detail": {
        "configurator_execute": {
          "error": null,
          "http_status": 200,
          "result": {
            "capability": "report_cards.dapodik.sync",
            "error": "capability_denied",
            "message": "Insufficient permissions for this API route.",
            "path": "/api/dapodik/sync/students",
            "success": false
          }
        },
        "configurator_preview": {
          "error": null,
          "http_status": 200,
          "result": {
            "capability": "settings.dapodik.preview",
            "error": "capability_denied",
            "message": "Insufficient permissions for this API route.",
            "path": "/api/dapodik/preview/students",
            "success": false
          }
        },
        "viewer_execute": {
          "error": null,
          "http_status": 200,
          "result": {
            "capability": "report_cards.dapodik.sync",
            "error": "capability_denied",
            "message": "Insufficient permissions for this API route.",
            "path": "/api/dapodik/sync/students",
            "success": false
          }
        },
        "viewer_preview": {
          "error": null,
          "http_status": 200,
          "result": {
            "capability": "settings.dapodik.preview",
            "error": "capability_denied",
            "message": "Insufficient permissions for this API route.",
            "path": "/api/dapodik/preview/students",
            "success": false
          }
        }
      },
      "matrix_id": "RT-W19-NEG-01",
      "status": "PASS"
    },
    {
      "case_id": "W19-SCP-FOREIGN-LOG",
      "detail": {
        "foreign_detail": {
          "body": "{\"success\": false, \"error\": \"access_denied\", \"message\": \"Log sinkronisasi di luar scope perusahaan.\"}",
          "http_status": 403
        }
      },
      "matrix_id": "RT-W19-SCP-01",
      "status": "PASS"
    },
    {
      "case_id": "W19-TEN-CROSS-COMPANY",
      "detail": {
        "t2_after": {
          "count": 1,
          "ids": [
            796
          ],
          "nisn_list": [
            "0099432101"
          ]
        },
        "t2_before": {
          "count": 1,
          "ids": [
            796
          ],
          "nisn_list": [
            "0099432101"
          ]
        },
        "t2_nisn_in_preview": false
      },
      "matrix_id": "RT-W19-TEN-01",
      "status": "PASS"
    },
    {
      "case_id": "W19-VAL-INVALID-NPSN",
      "detail": {
        "bad_config": {
          "error": null,
          "http_status": 200,
          "result": {
            "capability": "settings.dapodik.view",
            "error": "capability_denied",
            "message": "Insufficient permissions for this API route.",
            "path": "/api/dapodik/config",
            "success": false
          }
        }
      },
      "matrix_id": "RT-W19-VAL-01",
      "status": "PASS"
    },
    {
      "case_id": "W19-STA-NO-PREVIEW",
      "detail": {
        "execute_no_preview": {
          "error": null,
          "http_status": 200,
          "result": {
            "error": "validation_error",
            "message": "Preview wajib sebelum execute.",
            "success": false
          }
        }
      },
      "matrix_id": "RT-W19-STA-01",
      "status": "PASS"
    },
    {
      "case_id": "W19-IDM-REPLAY",
      "detail": {
        "second_execute": {
          "error": null,
          "http_status": 200,
          "result": {
            "data": {
              "created": 2,
              "errors": 0,
              "idempotent": true,
              "log_id": 2,
              "updated": 0
            },
            "message": "Idempotent replay \u2014 no duplicate effect",
            "success": true
          }
        },
        "snapshot": {
          "count": 2,
          "ids": [
            797,
            798
          ],
          "nisn_list": [
            "0099567801",
            "0099567802"
          ]
        }
      },
      "matrix_id": "RT-W19-IDM-01",
      "status": "PASS"
    },
    {
      "case_id": "W19-REC-ROLLBACK",
      "detail": {
        "after": {
          "count": 0,
          "ids": [],
          "nisn_list": []
        },
        "before": {
          "count": 2,
          "ids": [
            797,
            798
          ],
          "nisn_list": [
            "0099567801",
            "0099567802"
          ]
        },
        "recover": {
          "error": null,
          "http_status": 200,
          "result": {
            "data": {
              "log_id": 2,
              "removed": 2
            },
            "success": true
          }
        }
      },
      "matrix_id": "RT-W19-REC-01",
      "status": "PASS"
    },
    {
      "case_id": "W19-XRP-READER-BOUNDARY",
      "detail": {
        "operator_list": {
          "body": "{\"success\": true, \"data\": {\"logs\": [{\"id\": 2, \"sync_type\": \"student\", \"direction\": \"import\", \"status\": \"cancelled\", \"total_records\": 2, \"created_count\": 2, \"updated_count\": 0, \"skipped_count\": 0, \"error_count\": 0, \"start_time\": \"2026-08-31T14:33:44+00:00\", \"end_time\": \"2026-08-31T14:33:49+00:00\", \"duration_seconds\": 5.0, \"error_message\": \"Recovered: 2 records rolled back\", \"user_name\": \"w19.operator.0831T143107Z\"}], \"total\": 1, \"limit\": 5, \"offset\": 0}}",
          "http_status": 200
        },
        "viewer_list": {
          "body": "{\"success\": false, \"error\": \"capability_denied\", \"message\": \"Insufficient permissions for this API route.\", \"capability\": \"settings.dapodik.view\", \"path\": \"/api/dapodik/sync-logs\"}",
          "http_status": 403
        }
      },
      "matrix_id": "RT-W19-XRP-01",
      "status": "PASS"
    },
    {
      "case_id": "W19-XMD-ENTITLEMENT-OFF",
      "detail": {
        "preview_off": {
          "error": null,
          "http_status": 200,
          "result": {
            "error": "feature_disabled",
            "feature_flag": "scola_dapodik",
            "message": "Feature is disabled for the current tenant.",
            "path": "/api/dapodik/preview/students",
            "success": false
          }
        }
      },
      "matrix_id": "RT-W19-XMD-01",
      "status": "PASS"
    },
    {
      "case_id": "W19-UIA-API-ALIGNMENT",
      "detail": {
        "config_get": {
          "body": "{\"success\": true, \"data\": {\"id\": 1, \"host\": \"w19-stub.harness.local\", \"port\": 59999, \"npsn\": \"12345678\", \"access_token\": \"***\", \"is_connected\": false, \"auto_sync\": false, \"sync_interval\": 24, \"last_connection_test\": null, \"last_connection_message\": false, \"last_sync_students\": \"2026-08-31T14:33:44.357504+00:00\", \"last_sync_gtk\": null, \"last_sync_rombel\": null, \"last_sync_school\": null}}",
          "http_status": 200
        },
        "preview_route": {
          "capability": "settings.dapodik.preview",
          "feature_flag": "scola_dapodik"
        },
        "sync_route": {
          "capability": "report_cards.dapodik.sync",
          "feature_flag": "scola_dapodik"
        }
      },
      "matrix_id": "RT-W19-UIA-01",
      "status": "PASS"
    }
  ],
  "database": "scola_t6j_dapodik_audit_20260831T143107Z",
  "executed_at": "2026-08-31T14:34:37.267819+00:00",
  "overlay_version": "gt-w19-1.0",
  "schema": "t6j-w19-runtime-v1",
  "summary": {
    "fail": 0,
    "pass": 11,
    "total": 11
  }
}
