{
  "schema_version": "t8-manifest-draft-v1",
  "baseline_id": "SCOLA-V1-T8-DRAFT-20260831",
  "semantic_release": "V1-bounded-core-phase8-entry-draft",
  "freeze_utc": "2026-08-31T15:12:00Z",
  "phase": 8,
  "task": "T8-manifest-freeze-draft",
  "status": "DRAFT_SUPERSEDED_BY_FREEZE_CANDIDATE",
  "superseded_by": "execution/T8-manifest-freeze-candidate-20260831.json",
  "verdict": "NOT_CERTIFIED",
  "production_authorization": false,
  "v1_production_baseline_certified": false,
  "scope": "ENGINEERING_BOUNDED_PHASE8_ENTRY",
  "approvers": {
    "release_owner": "NOT SIGNED — draft only",
    "product_owner": "NOT SIGNED",
    "qa_owner": "NOT SIGNED",
    "operations_sre": "NOT SIGNED"
  },
  "contract_revision": "09-release-quality-gate.md §7 @ develop tip",
  "frontend": {
    "repository": "scola-fe-v2",
    "branch": "develop",
    "application_commit": "f89ca46b2ee8864877e018b4c514d39f75350d87",
    "application_commit_short": "f89ca46b",
    "application_tree_hash": "dbd129328de2a85b9e6af54b30cce156436d12dc",
    "clean_tree_assertion": "DIRTY — unrelated docs/src/mkdocs changes present; manifest records HEAD only",
    "lockfile_checksum_sha256": "851fe3892b8ba51162a883239efcb503201e9ee1dabd4c2aac237c0983bbcd5e",
    "node_version": "v22.23.0",
    "npm_version": "10.9.8",
    "build_id": "fe-build-f89ca46b2ee8-mthcyeum",
    "build_utc": "2026-08-31T14:54:08.552Z",
    "dist_checksums": {
      "index_html_sha256": "528aecc4fe966c424060d50a7a49798591cabad2dbfd60c9614ed3c720132258",
      "version_json_sha256": "be95800d9c475320e03ee123d575b370e20f0308dd35938aa593fd76d6751358"
    },
    "workspace_dist_path": "/home/scola/odoo/scola-fe-v2/dist",
    "served_dev_commit": "4314a4af4affea4a9185de7f37304e13a7258c70",
    "served_dev_docroot": "/var/www/dev-scola/dist",
    "served_dev_note": "DRIFT — dev serves 4314a4af; manifest tip is f89ca46b (12 commits ahead origin/develop, not pushed)"
  },
  "backend": {
    "repository": "custom_addons_scola/gcgscola",
    "branch": "main",
    "application_commit": "4ff6547c8d9eee7a6be6d5632eee00fc6aaa4850",
    "application_commit_short": "4ff6547",
    "application_tree_hash": "d83b2f53b18c4e059782bbace5f5ebbb3d782d73",
    "clean_tree_assertion": "DIRTY — scola_lms + scola_news uncommitted changes @ tip",
    "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": "FAIL — scola_news 1/0 (known pre-existing)",
    "controller_route_budget": "PASS @ T8 QG-13",
    "dirty_modules_at_tip": [
      "scola_lms",
      "scola_news"
    ]
  },
  "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": "NOT RUN — approval gate blocked T8 spot upgrade",
    "dev_module_state_snapshot_utc": "2026-08-31T15:11:43Z",
    "dev_installed_modules_sample": {
      "scola_core": { "version": "17.0.2.1.61", "state": "installed" },
      "scola_dapodik_connector": { "version": "17.0.1.0.1", "state": "installed" },
      "scola_lms": { "version": "17.0.1.1.25", "state": "installed" },
      "scola_news": { "version": "17.0.1.4.9", "state": "installed" }
    }
  },
  "addon_closure": {
    "topology_check": "dep_graph_check.py — 71 custom modules, 0 circular, scola_core deps 8/8",
    "topology_unit": "45/45 PASS (with 2 stale asserts noted in T0 — superseded @ later tip with W19 failures)",
    "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"
    }
  },
  "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",
      "test_e2e_smoke_core": "NOT RUN"
    },
    "backend": {
      "py_compile": "PASS",
      "unit_suites": "PARTIAL — 5/7 PASS; FAIL auth_capabilities (dapodik_configurator role), topology (dapodik _json_params assert)",
      "dep_graph_check": "PASS",
      "sudo_budget_strict": "FAIL — scola_news 1/0 (pre-existing)",
      "controller_route_budget": "PASS",
      "csrf_audit": "PASS",
      "init_import_check": "FAIL — scola_fees_finance_bridge/controllers missing __init__.py",
      "environment_isolation_live": "PASS"
    },
    "overall": "PARTIAL — not all required gates exit 0"
  },
  "qg15_deployment_parity": {
    "executed_utc": "2026-08-31T15:11:43Z",
    "module_upgrade_stop_after_init": "NOT RUN — approval gate",
    "dev_health": "PASS",
    "served_fe_identity_match": "FAIL — dev serves 4314a4af vs manifest f89ca46b",
    "served_be_identity_probe": "NOT AVAILABLE — empty response @ dev port 8074",
    "overall": "PARTIAL"
  },
  "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"
  },
  "docs_read": [
    "AGENTS.md",
    "docs/ai-guidelines/development-guide.md §10",
    "docs/ai-guidelines/release-environment-promotion.md",
    "docs/release-readiness/09-release-quality-gate.md §7",
    "/home/scola/.codex/skills/scola-release-promotion/SKILL.md"
  ]
}
