{
  "schema_version": "t8-manifest-freeze-candidate-v1",
  "baseline_id": "SCOLA-V1-T8-FREEZE-CANDIDATE-20260831",
  "semantic_release": "V1-bounded-core-phase8-freeze-candidate",
  "freeze_utc": "2026-08-31T17:57:05Z",
  "phase": 8,
  "task": "T8-manifest-freeze-candidate",
  "status": "FREEZE_CANDIDATE",
  "status_note": "FREEZE CANDIDATE only — NOT an immutable CERTIFIED freeze. Not eligible for demo immutable promotion or production.",
  "verdict": "NOT_CERTIFIED",
  "production_authorization": false,
  "v1_production_baseline_certified": false,
  "immutable_certified_freeze": false,
  "scope": "ENGINEERING_BOUNDED_PHASE8_FREEZE_CANDIDATE",
  "promoted_from_draft": "execution/T8-manifest-draft-20260831.json",
  "approvers": {
    "release_owner": "NOT SIGNED — freeze candidate only",
    "product_owner": "NOT SIGNED",
    "qa_owner": "NOT SIGNED",
    "operations_sre": "NOT SIGNED",
    "section_8_signoff": "NOT SIGNED"
  },
  "contract_revision": "09-release-quality-gate.md §7 @ develop tip",
  "frontend": {
    "repository": "scola-fe-v2",
    "branch": "develop",
    "application_commit": "7b93d9748c187daaa93907058d37770d8d75998f",
    "application_commit_short": "7b93d974",
    "application_tree_hash": "6371eef22721742d34671221883ddf097ed1afd3",
    "clean_tree_assertion": "DIRTY — unrelated docs/src/mkdocs + NewsWizard WIP present; freeze candidate records HEAD commit only (not worktree)",
    "lockfile_checksum_sha256": "851fe3892b8ba51162a883239efcb503201e9ee1dabd4c2aac237c0983bbcd5e",
    "node_version": "v22.23.0",
    "npm_version": "10.9.8",
    "build_id": "fe-build-7b93d9748c18-mthjgjz4",
    "build_utc": "2026-08-31T17:56:48.130Z",
    "dist_checksums": {
      "index_html_sha256": "6df8337e03047c0de4e3f4cdb56419fe3e7089572f73fe7cfca200f5d7b35fb8",
      "version_json_sha256": "e59db3231e0c9e3ff6a66c7a587d0e8d170372c25d1a6b2f8902f799daf6ea40"
    },
    "workspace_dist_path": "/home/scola/odoo/scola-fe-v2/dist",
    "served_dev_commit": "7b93d9748c187daaa93907058d37770d8d75998f",
    "served_dev_docroot": "/var/www/dev-scola/dist",
    "served_dev_note": "PARITY PASS — rebuild+rsync 2026-08-31T17:57:05Z; served version.json matches FE tip 7b93d974",
    "remote_push_status": "NOT PUSHED — develop ahead of origin/develop (16 commits at freeze time)"
  },
  "backend": {
    "repository": "custom_addons_scola/gcgscola",
    "branch": "main",
    "application_commit": "7df2d58ea3031140f386f08b6251c76c831610b6",
    "application_commit_short": "7df2d58",
    "application_tree_hash": "283c40d9b70b007c550297b12501fee4337318d1",
    "clean_tree_assertion": "DIRTY — scola_lms + scola_news uncommitted changes @ tip; NOT included in freeze candidate; do not commit/push with this WIP",
    "python_version": "3.12.3",
    "odoo_version": "17.0",
    "addons_path": "/home/scola/odoo/addons,/home/scola/odoo/odoo/addons,/home/scola/odoo/custom_addons_scola/openeducat,/home/scola/odoo/custom_addons_scola/opensource_modules,/home/scola/odoo/custom_addons_scola/gcgscola",
    "custom_module_count": 71,
    "dep_graph_check": "PASS @ T8 QG-13",
    "sudo_budget_strict": "PASS @ committed HEAD 7df2d58; FAIL on dirty scola_news WIP (1/0) — WIP excluded from freeze",
    "controller_route_budget": "PASS @ T8 QG-13",
    "dirty_modules_at_tip": [
      "scola_lms",
      "scola_news"
    ],
    "remote_push_status": "NOT PUSHED — main ahead of origin/main (9 commits at freeze time)"
  },
  "database": {
    "golden_harness_database": "scola_golden",
    "golden_fixture_version": "gt-core-b1.1",
    "dev_database": "scoladev",
    "dev_config": "/home/scola/odoo/odoo-devscola.conf",
    "demo_database": "scoladev_demo",
    "module_upgrade_run_id": "T8-QG15-module-upgrade-scoladev-20260831T151836Z",
    "dev_module_state_snapshot_utc": "2026-08-31T17:57:05Z",
    "dev_installed_modules_sample": {
      "scola_core": { "version": "17.0.2.1.61", "state": "installed" },
      "scola_dapodik_connector": { "version": "17.0.1.0.2", "state": "installed" },
      "scola_lms": { "version": "17.0.1.1.25", "state": "installed" },
      "scola_news": { "version": "17.0.1.4.9", "state": "installed" },
      "scola_fees_finance_bridge": { "version": null, "state": "uninstalled" }
    }
  },
  "addon_closure": {
    "topology_check": "dep_graph_check.py — 71 custom modules, 0 circular, scola_core deps 8/8",
    "topology_unit": "45/45 PASS @ QG-13 fix tip",
    "golden_tenant_installed_core": [
      "scola_attendance",
      "scola_bundle_core",
      "scola_core",
      "scola_hr",
      "scola_identity_admin",
      "scola_leadership_hub",
      "scola_lesson_hours",
      "scola_news",
      "scola_observability",
      "scola_parent",
      "scola_platform",
      "scola_platform_support",
      "scola_portal",
      "scola_timetable"
    ],
    "note": "Full 71-module closure from dep_graph; per-SKU immutable bundle manifests remain unsigned (QG-14 PARTIAL)"
  },
  "harness_inventory_19_of_21_pass": {
    "denominator": 21,
    "pass_count": 19,
    "grey_containment_count": 3,
    "grey_waves": ["W08", "W17", "W18"],
    "waves": [
      {
        "wave": "W00",
        "harness": "scripts/golden/e12_security_matrix.py + role-home crawl",
        "result": "PASS bounded",
        "evidence": "execution/T0-E1.2-evidence/T0-W00-role-home-20260831T092418Z.json"
      },
      {
        "wave": "W01",
        "harness": "scripts/golden/w01_runtime_certify.py",
        "result": "PASS bounded 64/64 ×2",
        "evidence": "execution/T2.1-W01-evidence/"
      },
      {
        "wave": "W02",
        "harness": "scripts/golden/w02_runtime_certify.py",
        "result": "PASS bounded 33/33 ×2",
        "evidence": "execution/T3-W02-evidence/"
      },
      {
        "wave": "W03",
        "harness": "scripts/golden/w03_runtime_certify.py",
        "result": "PASS bounded 31/31",
        "evidence": "execution/T4-W03-closure-decision.md"
      },
      {
        "wave": "W04",
        "harness": "scripts/golden/w04_runtime_certify.py",
        "result": "PASS 11/11 ×2",
        "evidence": "execution/T6D-evidence/"
      },
      {
        "wave": "W05",
        "harness": "scripts/golden/w05_runtime_certify.py + w05c_runtime_certify.py",
        "result": "PASS bounded 16/16 + 4/4 daily",
        "evidence": "execution/T4-W05-evidence/"
      },
      {
        "wave": "W06",
        "harness": "T4-W06 runtime matrix (scripts/golden/)",
        "result": "PASS bounded",
        "evidence": "execution/T4-W06-20260830T171130Z-runtime-matrix.json"
      },
      {
        "wave": "W07",
        "harness": "scripts/golden/w07_runtime_certify.py",
        "result": "PASS 11/11 ×2",
        "evidence": "execution/T6C-evidence/T6C-W07-20260831T123728Z-runtime-matrix.json"
      },
      {
        "wave": "W09",
        "harness": "scripts/golden/w09_runtime_certify.py",
        "result": "PASS 11/11 ×2",
        "evidence": "execution/T6F-evidence/T6F-W09-20260831T131430Z-runtime-matrix.json"
      },
      {
        "wave": "W10",
        "harness": "scripts/golden/w10_runtime_certify.py",
        "result": "PASS bounded 11/11",
        "evidence": "execution/T4-W10-closure-decision.md"
      },
      {
        "wave": "W11",
        "harness": "scripts/golden/w11_runtime_certify.py",
        "result": "PASS 11/11 ×2",
        "evidence": "execution/T6G-evidence/T6G-W11-20260831T104100Z-run2.json"
      },
      {
        "wave": "W12",
        "harness": "scripts/golden/w12_runtime_certify.py",
        "result": "PASS 11/11 ×2",
        "evidence": "execution/T6G-W12-evidence/T6G-W12-20260831T140257Z-runtime-matrix.json"
      },
      {
        "wave": "W13",
        "harness": "scripts/golden/w13_runtime_certify.py",
        "result": "PASS 11/11 ×2",
        "evidence": "execution/T6G-W13-evidence/T6G-W13-20260831T133949Z-runtime-matrix.json"
      },
      {
        "wave": "W14",
        "harness": "scripts/golden/w14_runtime_certify.py",
        "result": "PASS 11/11 ×2",
        "evidence": "execution/T6E-evidence/T6E-W14-20260831T111539Z-runtime-matrix.json"
      },
      {
        "wave": "W15",
        "harness": "scripts/golden/w15_runtime_certify.py",
        "result": "PASS 19/19 ×2",
        "evidence": "execution/T6F-evidence/T6F-STUDENT-FULL-20260831T093100Z-run2.json"
      },
      {
        "wave": "W16",
        "harness": "scripts/golden/w16_runtime_certify.py",
        "result": "PASS 12/12 ×2",
        "evidence": "execution/T5-W16-evidence/T5-W16-20260831T104100Z-run2.json"
      },
      {
        "wave": "W19",
        "harness": "scripts/golden/w19_runtime_certify.py",
        "result": "PASS 11/11 ×2",
        "evidence": "execution/T6J-W19-evidence/T6J-W19-20260831T143437Z-runtime-matrix.json"
      },
      {
        "wave": "W20",
        "harness": "scripts/golden/w20_runtime_certify.py",
        "result": "PASS 11/11 ×2",
        "evidence": "execution/T6I-evidence/T6I-W20-20260831T104139Z-runtime-matrix.json"
      },
      {
        "wave": "W21",
        "harness": "scripts/golden/w21_runtime_certify.py",
        "result": "PASS 11/11 ×2",
        "evidence": "execution/T6E-evidence/T6E-LEARN-20260830T171500Z-run2.json"
      }
    ],
    "bridge_harness": {
      "FFBR": "Fees→Finance bridge 4/4 ×2 @ dd97fac",
      "evidence": "execution/T6G-evidence/T6G-FF-BRIDGE-20260831T061834Z.json"
    }
  },
  "e2e_smoke_core": {
    "result": "PASS 9/9",
    "executed_utc": "2026-08-31T15:29:33Z",
    "evidence": "execution/T8-qg13-evidence/T8-E2E-smoke-core-20260831T152933Z.log",
    "fix_note": "CORE-T0C-001 parents text fallback (Data Orang Tua / Kelola ortu) @ FE 7b93d974"
  },
  "qg13_regression_bundle": {
    "executed_utc": "2026-08-31T14:50:35Z",
    "evidence_dir": "execution/T8-qg13-evidence/",
    "frontend": {
      "lint_diff": "PASS",
      "check_capability_diff": "PASS",
      "type_check": "PASS",
      "vitest_changed": "PASS — 46 files, 247 tests",
      "test_contract": "PASS — 83 passed, 4 skipped (prefix parity optional)",
      "build": "PASS — freeze-candidate rebuild @ 7b93d974",
      "test_e2e_smoke_core": "PASS — 9/9"
    },
    "backend": {
      "py_compile": "PASS",
      "unit_suites": "PASS — 7/7 @ QG-13 fix tip",
      "dep_graph_check": "PASS",
      "sudo_budget_strict": "PASS @ committed HEAD; FAIL if dirty scola_news WIP present",
      "controller_route_budget": "PASS",
      "csrf_audit": "PASS",
      "init_import_check": "PASS",
      "environment_isolation_live": "PASS"
    },
    "overall": "PARTIAL — dirty scola_news WIP blocks clean-tree sudo_budget; remaining owner gates open"
  },
  "qg15_deployment_parity": {
    "executed_utc": "2026-08-31T17:57:05Z",
    "module_upgrade_stop_after_init": "PASS — T8-QG15-module-upgrade-scoladev-20260831T151836Z.log",
    "dev_health": "PASS",
    "served_fe_identity_match": "PASS — serves 7b93d974 matching freeze-candidate FE tip",
    "served_fe_evidence": "execution/T8-qg13-evidence/T8-QG15-served-identity-20260831T175705Z.log",
    "served_be_identity_probe": "NOT AVAILABLE — empty/no public SHA endpoint @ be-dev",
    "overall": "PARTIAL — FE parity proven; BE probe N/A; freeze is CANDIDATE not CERTIFIED immutable"
  },
  "quality_gates_snapshot": {
    "certified_pass": "0/18",
    "partial": "17/18",
    "blocked": "1/18",
    "not_run_or_partial": "QG-13 PARTIAL, QG-15 PARTIAL",
    "blocked_gate": "QG-11"
  },
  "remaining_blockers_to_v1_certified": [
    "QG-11 DPO/security sign-off (STAB-001/006 + DG-W17-01/DG-W18-01)",
    "scola_news dirty tree must be reverted or refactored before BE push",
    "QG-17 two full matrix runs @ this frozen tip",
    "Formal §8 sign-off matrix (release/product/qa/ops)",
    "Remote push of FE develop tip and BE main tip (currently ahead, not pushed)",
    "Promote FREEZE_CANDIDATE → immutable CERTIFIED freeze only after blockers cleared"
  ],
  "docs_read": [
    "AGENTS.md",
    "docs/ai-guidelines/development-guide.md",
    "docs/ai-guidelines/release-environment-promotion.md",
    "docs/release-readiness/execution/T8-manifest-draft-20260831.json",
    "docs/release-readiness/execution/T8-phase8-entry-status.md",
    "/home/scola/.codex/skills/scola-release-promotion/SKILL.md"
  ]
}
