{
  "run_id": "T5-W16-20260831T033743Z",
  "overlay_version": "gt-w16-1.0",
  "fixture_base": "gt-core-b1.1",
  "certified_claim": true,
  "matrix_section": "07-release-test-matrix.md §5.3",
  "pass": true,
  "total": 12,
  "passed": 12,
  "failed": 0,
  "skipped": 0,
  "blocked_skipped": 0,
  "backend_sha": "7ffb0ad8d1c336fa8c34603ae1b8871489798919",
  "frontend_sha": "5767656144eeeef53eb18ff0813d11076b8e1e78",
  "surface": {
    "model_exists": true,
    "legacy_announcement": true,
    "overlay": "gt-w16-1.0",
    "overlay_version": "gt-w16-1.0"
  },
  "ctx_ids": {
    "manage_probe_status": 200
  },
  "seed": {
    "overlay": "gt-w16-1.0"
  },
  "cleanup": {
    "news": 10,
    "suffix": "33743Z"
  },
  "cases": [
    {
      "case_id": "W16-POS-PUBLISH-LIFECYCLE",
      "matrix_id": "RT-W16-POS-01",
      "status": "PASS",
      "actor": "gt.school_admin",
      "precondition": null,
      "action": "POST manage/news + transition submit→approve→publish + portal list",
      "expected": "published row company 20; intended reader sees once",
      "actual": {
        "create": {
          "success": true,
          "data": {
            "id": 56,
            "name": "W16-POS 33743Z",
            "title": "W16-POS 33743Z",
            "subtitle": false,
            "summary": "W16 harness disposable",
            "body_html": "<p>W16 harness body</p>",
            "content": "<p>W16 harness body</p>",
            "category_id": false,
            "category_name": false,
            "author_name": "GT School Admin",
            "publish_date_from": "2026-08-31T03:37:56+00:00",
            "publish_date_to": null,
            "publish_date": "2026-08-31T03:37:56+00:00",
            "state": "draft",
            "priority": "normal",
            "target_audience_type": "all",
            "is_pinned": false,
            "source_url": false,
            "slug": "w16-pos-33743z",
            "circular_number": false,
            "company_id": 20,
            "company_name": "Scola Golden School",
            "foundation_broadcast": false,
            "target_company_ids": [
              20
            ],
            "target_company_names": [
              "Scola Golden School"
            ],
            "featured_image_url": false,
            "image_urls": [],
            "view_count": 0,
            "last_viewed_at": null,
            "is_read": false,
            "author_id": 372,
            "approved_by_id": false,
            "approved_at": null,
            "approval_notes": false,
            "rejection_notes": false,
            "class_ids": [],
            "grade_ids": [],
            "attachment_ids": [],
            "publish_notification_sent": false,
            "available_actions": [
              "submit",
              "delete"
            ]
          }
        },
        "chain": {
          "submit": {
            "http": 200,
            "final_state": "submitted",
            "success": true
          },
          "approve": {
            "http": 200,
            "final_state": "approved",
            "success": true
          },
          "publish": {
            "http": 200,
            "final_state": "published",
            "success": true
          },
          "reader_sees": true
        },
        "persisted": {
          "state": "draft",
          "company_id": 20,
          "name": "W16-POS 33743Z"
        }
      },
      "before_state": {
        "count": 0
      },
      "after_state": {
        "count": 1,
        "id": 56
      },
      "notes": ""
    },
    {
      "case_id": "W16-NEG-READONLY-DENIED",
      "matrix_id": "RT-W16-NEG-01",
      "status": "PASS",
      "actor": "gt.student.s1 + legacy probe",
      "precondition": null,
      "action": "manage API denied; legacy announcement create blocked; teacher approve denied",
      "expected": "403/denied; legacy UserError; submitted unchanged after teacher approve",
      "actual": {
        "student": {
          "list_http": 403,
          "create_http": 403
        },
        "legacy_write": {
          "model_exists": true,
          "blocked": true,
          "error": "UserError"
        },
        "teacher_approve": {
          "http": 400,
          "state": "submitted"
        }
      },
      "before_state": null,
      "after_state": null,
      "notes": ""
    },
    {
      "case_id": "W16-SCP-AUDIENCE-SCOPE",
      "matrix_id": "RT-W16-SCP-01",
      "status": "PASS",
      "actor": "gt.parent.p1",
      "precondition": null,
      "action": "GET portal/news/<id> for students-only item",
      "expected": "non-target parent denied or empty without leak",
      "actual": {
        "http": 404,
        "body": {
          "success": false,
          "error": "Berita tidak tersedia untuk akun Anda (unit atau audiens tidak sesuai).",
          "error_code": "not_available"
        }
      },
      "before_state": null,
      "after_state": null,
      "notes": ""
    },
    {
      "case_id": "W16-TEN-CROSS-TENANT",
      "matrix_id": "RT-W16-TEN-01",
      "status": "PASS",
      "actor": "gt.school_admin",
      "precondition": null,
      "action": "T1 admin GET/PUT T2 news id",
      "expected": "denied; T2 name unchanged",
      "actual": {
        "detail": {
          "success": false,
          "error": "Berita tidak ditemukan.",
          "error_code": "not_found"
        },
        "mutate": {
          "success": false,
          "error": "Berita tidak ditemukan."
        },
        "t2_name": "W16-TEN-T2 33743Z"
      },
      "before_state": null,
      "after_state": null,
      "notes": ""
    },
    {
      "case_id": "W16-VAL-INVALID-PAYLOAD",
      "matrix_id": "RT-W16-VAL-01",
      "status": "PASS",
      "actor": "gt.school_admin",
      "precondition": null,
      "action": "POST manage/news invalid window + class without ids",
      "expected": "validation failure; zero new row",
      "actual": {
        "success": false,
        "error": "Tanggal akhir publikasi harus sesudah tanggal mulai publikasi."
      },
      "before_state": {
        "count": 0
      },
      "after_state": {
        "count": 0
      },
      "notes": ""
    },
    {
      "case_id": "W16-VAL-OPTIONAL-SUMMARY",
      "matrix_id": "RT-W16-VAL-02",
      "status": "PASS",
      "actor": "gt.school_admin",
      "precondition": null,
      "action": "POST manage/news without summary; POST with explicit summary",
      "expected": "omitted summary empty in DB/API; explicit summary preserved",
      "actual": {
        "empty": {
          "id": 60,
          "api_summary": false,
          "db_summary": false
        },
        "explicit": {
          "id": 61,
          "api_summary": "Ringkasan eksplisit dari harness W16.",
          "db_summary": "Ringkasan eksplisit dari harness W16."
        }
      },
      "before_state": null,
      "after_state": null,
      "notes": ""
    },
    {
      "case_id": "W16-STA-TRANSITION-MATRIX",
      "matrix_id": "RT-W16-STA-01",
      "status": "PASS",
      "actor": "gt.school_admin",
      "precondition": null,
      "action": "invalid archive/reject on draft; valid publish→archive; republish denied",
      "expected": "invalid denied atomically; valid chain succeeds; archived blocks republish",
      "actual": {
        "invalid": [
          {
            "intent": "archive",
            "http": 400,
            "denied": true,
            "state_unchanged": true
          },
          {
            "intent": "reject",
            "http": 400,
            "denied": true,
            "state_unchanged": true
          }
        ],
        "chain": {
          "submit": {
            "http": 200,
            "success": true
          },
          "approve": {
            "http": 200,
            "success": true
          },
          "publish": {
            "http": 200,
            "success": true
          }
        },
        "published": {
          "state": "published"
        },
        "archived": {
          "state": "archived"
        },
        "republish": {
          "http": 400,
          "state": "archived"
        }
      },
      "before_state": null,
      "after_state": null,
      "notes": ""
    },
    {
      "case_id": "W16-IDM-DOUBLE-PUBLISH",
      "matrix_id": "RT-W16-IDM-01",
      "status": "PASS",
      "actor": "gt.school_admin",
      "precondition": null,
      "action": "duplicate publish action on published row",
      "expected": "state remains published; no duplicate side-effect observable",
      "actual": {
        "before": {
          "state": "published"
        },
        "after": {
          "state": "published"
        },
        "pub1": {
          "success": true,
          "data": {
            "id": 63,
            "name": "W16-IDM 33743Z",
            "title": "W16-IDM 33743Z",
            "subtitle": false,
            "summary": "W16 harness disposable",
            "body_html": "<p>W16 harness body</p>",
            "content": "<p>W16 harness body</p>",
            "category_id": false,
            "category_name": false,
            "author_name": "GT School Admin",
            "publish_date_from": "2026-08-31T03:39:01+00:00",
            "publish_date_to": null,
            "publish_date": "2026-08-31T03:39:01+00:00",
            "state": "published",
            "priority": "normal",
            "target_audience_type": "all",
            "is_pinned": false,
            "source_url": false,
            "slug": "w16-idm-33743z",
            "circular_number": "SE/2026/0040",
            "company_id": 20,
            "company_name": "Scola Golden School",
            "foundation_broadcast": false,
            "target_company_ids": [
              20
            ],
            "target_company_names": [
              "Scola Golden School"
            ],
            "featured_image_url": false,
            "image_urls": [],
            "view_count": 0,
            "last_viewed_at": null,
            "is_read": false,
            "author_id": 372,
            "approved_by_id": 372,
            "approved_at": "2026-08-31T03:39:02+00:00",
            "approval_notes": false,
            "rejection_notes": false,
            "class_ids": [],
            "grade_ids": [],
            "attachment_ids": [],
            "publish_notification_sent": true,
            "available_actions": [
              "draft",
              "unpublish",
              "archive",
              "delete"
            ]
          }
        },
        "pub2": {
          "success": true,
          "data": {
            "id": 63,
            "name": "W16-IDM 33743Z",
            "title": "W16-IDM 33743Z",
            "subtitle": false,
            "summary": "W16 harness disposable",
            "body_html": "<p>W16 harness body</p>",
            "content": "<p>W16 harness body</p>",
            "category_id": false,
            "category_name": false,
            "author_name": "GT School Admin",
            "publish_date_from": "2026-08-31T03:39:01+00:00",
            "publish_date_to": null,
            "publish_date": "2026-08-31T03:39:01+00:00",
            "state": "published",
            "priority": "normal",
            "target_audience_type": "all",
            "is_pinned": false,
            "source_url": false,
            "slug": "w16-idm-33743z",
            "circular_number": "SE/2026/0040",
            "company_id": 20,
            "company_name": "Scola Golden School",
            "foundation_broadcast": false,
            "target_company_ids": [
              20
            ],
            "target_company_names": [
              "Scola Golden School"
            ],
            "featured_image_url": false,
            "image_urls": [],
            "view_count": 0,
            "last_viewed_at": null,
            "is_read": false,
            "author_id": 372,
            "approved_by_id": 372,
            "approved_at": "2026-08-31T03:39:02+00:00",
            "approval_notes": false,
            "rejection_notes": false,
            "class_ids": [],
            "grade_ids": [],
            "attachment_ids": [],
            "publish_notification_sent": true,
            "available_actions": [
              "draft",
              "unpublish",
              "archive",
              "delete"
            ]
          }
        }
      },
      "before_state": null,
      "after_state": null,
      "notes": ""
    },
    {
      "case_id": "W16-REC-NOTIFICATION-RECOVERY",
      "matrix_id": "RT-W16-REC-01",
      "status": "PASS",
      "actor": "gt.school_admin + shell retry",
      "precondition": null,
      "action": "publish then reset notification flag and retry send",
      "expected": "canonical row published; retry marks sent; duplicate delivery deduped",
      "actual": {
        "before": {
          "state": "published",
          "publish_notification_sent": "True"
        },
        "recovery": {
          "before_count": 0,
          "mid_count": 0,
          "final_count": 0,
          "retried": true,
          "deduped": true,
          "state": "published",
          "flag": true
        },
        "after": {
          "state": "published",
          "publish_notification_sent": "True"
        }
      },
      "before_state": null,
      "after_state": null,
      "notes": ""
    },
    {
      "case_id": "W16-XRP-READER-PROPAGATION",
      "matrix_id": "RT-W16-XRP-01",
      "status": "PASS",
      "actor": "gt.student.s1 + gt.parent.p1",
      "precondition": null,
      "action": "target reader sees publish; non-target denied; archive removes from feed",
      "expected": "propagation once to target; non-target zero leak; archive updates feed",
      "actual": {
        "all_id": 65,
        "student_sees_all": true,
        "stu_id": 66,
        "student_sees_stu": true,
        "parent_denied": true,
        "archived_hidden": true
      },
      "before_state": null,
      "after_state": null,
      "notes": ""
    },
    {
      "case_id": "W16-XMD-LEGACY-MIGRATION",
      "matrix_id": "RT-W16-XMD-01",
      "status": "PASS",
      "actor": "legacy probe + gt.student.s1 + gt.school_admin",
      "precondition": null,
      "action": "legacy write blocked; legacy GET readable; canonical publish succeeds",
      "expected": "legacy read-only; scola.news sole writable publish path",
      "actual": {
        "legacy": {
          "model_exists": true,
          "blocked": true,
          "error": "UserError"
        },
        "legacy_read_ok": true,
        "canonical": {
          "news_id": 67,
          "ok": true
        }
      },
      "before_state": null,
      "after_state": null,
      "notes": ""
    },
    {
      "case_id": "W16-UIA-CANONICAL-ROUTES",
      "matrix_id": "RT-W16-UIA-01",
      "status": "PASS",
      "actor": "check:core-nav-ux + FE route probe",
      "precondition": null,
      "action": "verify canonical /admin/news routes; legacy write absent; manage API live",
      "expected": "single canonical create/publish surface; no /admin/announcement write route",
      "actual": {
        "nav": {
          "passed": true,
          "exit_code": 0,
          "stdout_tail": "\n> scola-pwa@0.0.0 check:core-nav-ux\n> node scripts/t1c/check-core-nav-ux.mjs\n\n{\n  \"pass\": true,\n  \"hard_count\": 0,\n  \"warn_count\": 0\n}\nT1-C core-nav-ux checker PASSED\nWrote /home/scola/odoo/scola-fe-v2/docs/release-readiness/execution/T1-C-evidence/T1-C-core-nav-ux-check.json\n",
          "stderr_tail": ""
        },
        "fe": {
          "canonical_present": true,
          "legacy_write_absent": true,
          "legacy_hits": []
        },
        "manage_http": 200
      },
      "before_state": null,
      "after_state": null,
      "notes": ""
    }
  ],
  "catalog": [
    {
      "matrix_id": "RT-W16-POS-01",
      "case_id": "W16-POS-PUBLISH-LIFECYCLE",
      "category": "POS",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "summary": "Publisher draft→submit→approve→publish; reader sees once; audit trail."
    },
    {
      "matrix_id": "RT-W16-NEG-01",
      "case_id": "W16-NEG-READONLY-DENIED",
      "category": "NEG",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "dec_refs": [
        "DEC-003",
        "DEC-004"
      ],
      "summary": "Read-only actor cannot create/approve/publish/archive via manage API."
    },
    {
      "matrix_id": "RT-W16-SCP-01",
      "case_id": "W16-SCP-AUDIENCE-SCOPE",
      "category": "SCP",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "summary": "Audience/ownership constrains edit/read; non-target readers denied."
    },
    {
      "matrix_id": "RT-W16-TEN-01",
      "case_id": "W16-TEN-CROSS-TENANT",
      "category": "TEN",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "summary": "GT-T2 news IDs invisible/mutate-denied for GT-T1 admin."
    },
    {
      "matrix_id": "RT-W16-VAL-01",
      "case_id": "W16-VAL-INVALID-PAYLOAD",
      "category": "VAL",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "summary": "Invalid window/target rejected atomically; no partial row."
    },
    {
      "matrix_id": "RT-W16-VAL-02",
      "case_id": "W16-VAL-OPTIONAL-SUMMARY",
      "category": "VAL",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "summary": "Summary omitted stays empty; explicit summary preserved (no body snippet)."
    },
    {
      "matrix_id": "RT-W16-STA-01",
      "case_id": "W16-STA-TRANSITION-MATRIX",
      "category": "STA",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "dec_refs": [
        "DEC-007"
      ],
      "summary": "Approved state transitions only for authorized actor; invalid denied."
    },
    {
      "matrix_id": "RT-W16-IDM-01",
      "case_id": "W16-IDM-DOUBLE-PUBLISH",
      "category": "IDM",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "summary": "Repeated publish/scheduler creates one publication effect."
    },
    {
      "matrix_id": "RT-W16-REC-01",
      "case_id": "W16-REC-NOTIFICATION-RECOVERY",
      "category": "REC",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "dec_refs": [
        "DEC-005",
        "DEC-010"
      ],
      "summary": "Failed delivery visible/retryable; canonical record authoritative."
    },
    {
      "matrix_id": "RT-W16-XRP-01",
      "case_id": "W16-XRP-READER-PROPAGATION",
      "category": "XRP",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "dec_refs": [
        "DEC-010",
        "STAB-033"
      ],
      "summary": "Publish/correction/archive propagates once to intended readers only."
    },
    {
      "matrix_id": "RT-W16-XMD-01",
      "case_id": "W16-XMD-LEGACY-MIGRATION",
      "category": "XMD",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "dec_refs": [
        "DEC-011",
        "STAB-033",
        "IA-010"
      ],
      "summary": "Legacy announcement read-only; no duplicate writer/notification."
    },
    {
      "matrix_id": "RT-W16-UIA-01",
      "case_id": "W16-UIA-CANONICAL-ROUTES",
      "category": "UIA",
      "matrix_status": "NOT RUN",
      "blocked": false,
      "dec_refs": [
        "STAB-033",
        "DEC-011",
        "IA-010"
      ],
      "summary": "Single canonical create/publish route; legacy write absent (FE scope)."
    }
  ]
}
