{
  "acceptance_criteria": [
    "Every r in R_cal finishes or is explicit HOLD",
    "Diagnosis remains sealed",
    "PTSD nuclei remain excluded",
    "Original ENSG row order unchanged",
    "No AST_MEMBERSHIP_FREEZE",
    "No single privileged resolution declared as biological truth",
    "Admissible set size is not 0 or 1, or the report is HOLD",
    "IMPLEMENTATION_CHECK records Pegasus with registered kwargs (no Scanpy substitute, no live library defaults)",
    "If r=0.4 or r=2.4 is admissible, report RANGE_BOUNDARY_NOT_BRACKETED and do not claim a complete range",
    "If any required grid point is unfinished, calibration is HOLD/INCOMPLETE and does not claim a complete range",
    "marker_separability is HOLD_NOT_RUN unless a frozen public panel identity/hash was resolved before freeze"
  ],
  "canonical_stop": "WAITING_FOR_INVESTIGATOR_REVIEW",
  "cloud_environment_manifest_sha256": "0fe8e83f3513bd9766faae0b7175fb393bfbe160272798b7089fbf4890c2de7c",
  "contract_body_sha256": "05b746e5aafcbe67e352273f63fdf44ec7c2ccc4b88757355acacd386205a27c",
  "excluded_scope": "Do not run clustering GO, annotation, unblind, DE, pathway, PTSD inclusion, P1 C2 copy, OPEN_01 auto-approval, production ENSG remapping, or scientific GO change. Do not use diagnosis, AST count-max, Channel balance, P1 concordance, 241/DEG, or Hwang ST2 AST fraction as selection targets. Do not use P1 8-gene panel. Do not open the restricted diagnosis asset. UMAP is sanity only and does not define identity. Do not execute archived frozen contracts.",
  "execution_runtime_release_id": "0.3.2-rc4-realexec-v2",
  "holds": [
    "OPEN_01 UNION_REMOVE remains unapproved; this task does not decide Round-1 merge",
    "Public class-marker panel has no frozen Record Core identity/hash; marker_separability = HOLD_NOT_RUN; do not search or substitute P1 panels",
    "G2 specimen HOLD remains; this task is nucleus-level geometry only; 70 Channels are not 70 verified specimens",
    "RNA gene identity ledger is audit-only; no remap",
    "CALIBRATION/CLUSTERING/ANNOTATION Record Core flags remain NOT_AUTHORIZED until a later approved execution actually records them",
    "CSR matrix is CLOUD_AUTHORITATIVE; execution must be on the registered cloud host after approval",
    "Previous frozen calibration contracts are archived and not executable on this runtime"
  ],
  "method_identity": "p2-task-contract/0.3.2-rc4",
  "objective": "Determine a phenotype-blind Leiden resolution range and selection basis for later P2 clustering. This freeze is not execution approval.",
  "output_assets": [
    {
      "asset_id": "P2_CALIBRATION_METRICS",
      "filename": "calibration_metrics.tsv",
      "media_type": null,
      "required": true,
      "role": "calibration_metrics"
    },
    {
      "asset_id": "P2_CALIBRATION_PAIRWISE_ARI",
      "filename": "pairwise_ari.tsv",
      "media_type": null,
      "required": true,
      "role": "pairwise_ari"
    },
    {
      "asset_id": "P2_CALIBRATION_IMPLEMENTATION_CHECK",
      "filename": "IMPLEMENTATION_CHECK.json",
      "media_type": null,
      "required": true,
      "role": "implementation_check"
    },
    {
      "asset_id": "P2_CALIBRATION_UNIVERSE_CHECK",
      "filename": "UNIVERSE_CHECK.json",
      "media_type": null,
      "required": true,
      "role": "universe_check"
    },
    {
      "asset_id": "P2_CALIBRATION_REPORT",
      "filename": "CALIBRATION_REPORT.md",
      "media_type": null,
      "required": true,
      "role": "calibration_report"
    },
    {
      "asset_id": "P2_CALIBRATION_MARKER_SEPARABILITY",
      "filename": "marker_separability.tsv",
      "media_type": null,
      "required": false,
      "role": "marker_separability"
    }
  ],
  "project_id": "P2_HWANG",
  "record_checkpoint_id": "ckpt-f099eaaa-64f0-4b91-bf90-0df3f13bd62a",
  "resolved_inputs": [
    {
      "access_mode": "cloud_live_hash",
      "alias_zh": "P2 MDD+CON 聚类队列（625,220 / 70 Channels）",
      "asset_id": "P2_MDD_CON_CLUSTERING_COHORT_625220",
      "bytes": 21882716,
      "execution_location": "cloud",
      "execution_site": "SSH_CLOUD",
      "object_identity": null,
      "object_identity_status": "not_applicable",
      "path_withheld": true,
      "restricted": false,
      "restricted_class": "none",
      "role": "analysis_cohort",
      "selected_replica": "SSH_CLOUD",
      "sha256": "ffc9dcc707452e5b49ebd12132d3b2bff2143b1871bb59bbb1f45536bcd1e3f4",
      "status": "MATCH"
    },
    {
      "access_mode": "cloud_live_hash",
      "alias_zh": "P2 计数矩阵（只公布逻辑名与哈希）",
      "asset_id": "P2_CSR_COUNT_MATRIX",
      "bytes": 5948837770,
      "execution_location": "cloud",
      "execution_site": "SSH_CLOUD",
      "object_identity": null,
      "object_identity_status": "not_applicable",
      "path_withheld": true,
      "restricted": false,
      "restricted_class": "none",
      "role": "count_matrix_csr",
      "selected_replica": "SSH_CLOUD",
      "sha256": "79876eda346f3a6c325a2cb33de9f35cfc2d276018b79462bd749a957b279922",
      "status": "MATCH"
    },
    {
      "access_mode": "cloud_live_hash",
      "alias_zh": "P2_RNA_CELLNAMES",
      "asset_id": "P2_RNA_CELLNAMES",
      "bytes": 24319646,
      "execution_location": "cloud",
      "execution_site": "SSH_CLOUD",
      "object_identity": null,
      "object_identity_status": "not_applicable",
      "path_withheld": true,
      "restricted": false,
      "restricted_class": "none",
      "role": "cell_id_order",
      "selected_replica": "SSH_CLOUD",
      "sha256": "3d274bcc16ef0d57014e4c2a47bf47e7f83bdf579f2fc8d8be349c17a9b7a9ba",
      "status": "MATCH"
    },
    {
      "access_mode": "cloud_live_hash",
      "alias_zh": "P2_RNA_GENENAMES",
      "asset_id": "P2_RNA_GENENAMES",
      "bytes": 3271355,
      "execution_location": "cloud",
      "execution_site": "SSH_CLOUD",
      "object_identity": null,
      "object_identity_status": "not_applicable",
      "path_withheld": true,
      "restricted": false,
      "restricted_class": "none",
      "role": "gene_id_order",
      "selected_replica": "SSH_CLOUD",
      "sha256": "ba827830af502d16a9aa4dbc80a31bb61bc5b7ec440698171d78bfc5af1fee62",
      "status": "MATCH"
    }
  ],
  "review_schema": "p2.contract_review_projection.v1",
  "runtime_manifest_sha256": "6cd1282951e84bef2d2a7cf0120ecd19e679bae3f8c6a66a227c997ebd8cc9c0",
  "schema": "p2.review_public_contract.v1",
  "schema_version": "p2-task-contract/0.3.2-rc4",
  "scientific_go": false,
  "scientific_parameters": {
    "calibration_spec": {
      "author_leiden_resolution": "NOT_FOUND",
      "design_reference": "reviewed Pegasus-only calibration design; grid/seeds/guardrails unchanged",
      "forbidden_selection_targets": [
        "diagnosis",
        "AST_count_max",
        "channel_balance_optimization",
        "P1_C2_concordance",
        "DEG_241",
        "Hwang_ST2_AST_fraction",
        "UMAP_aesthetics"
      ],
      "g3b_operational_subset": [
        0.6,
        1.2,
        1.8
      ],
      "grid": [
        0.4,
        0.6,
        1.0,
        1.2,
        1.6,
        1.8,
        2.4
      ],
      "guardrails": {
        "GAP_WEAK": "DELETED",
        "admissible_set_size_0_or_1": "HOLD",
        "collapse_if_n_clusters_lt": 7,
        "incomplete_grid": {
          "claim_complete_admissible_range": false,
          "if_any_required_grid_point_unfinished": "HOLD/INCOMPLETE",
          "may_report_completed_diagnostics": true
        },
        "marker_separability": "diagnostic distribution only; no pass/fail cutoff; requires frozen public panel identity/hash",
        "overfragment_if_frac_clusters_size_lt_50_gt": 0.25,
        "overfragment_if_n_clusters_gt": 80,
        "overfragment_if_seed_ari_median_lt": 0.7,
        "range_boundary": {
          "claim_complete_admissible_range": false,
          "follow_up": "later grid-extension contract",
          "highest_r": 2.4,
          "if_lowest_or_highest_still_admissible": "RANGE_BOUNDARY_NOT_BRACKETED",
          "lowest_r": 0.4
        }
      },
      "harmony_covariate": "Channel",
      "hvg_batch": "Channel",
      "hvg_n_top": 2000,
      "implementation": {
        "family": "Pegasus",
        "harmony": {
          "batch": "Channel"
        },
        "hvg": {
          "batch": "Channel",
          "fn": "highly_variable_features",
          "n_top": 2000
        },
        "log_norm": "pg.log_norm; raw counts retained in a separate layer",
        "neighbors": {
          "K": 100,
          "use_cache": false
        },
        "no_live_library_defaults": true,
        "no_scanpy_substitute": true,
        "pca": {
          "n_components": 50
        },
        "required_library": "Pegasus",
        "robust_genes": "pg.identify_robust_genes; keep var.robust",
        "worker_may_choose_scanpy": false
      },
      "k_neighbors": 100,
      "marker_separability": {
        "do_not_search_or_replace": true,
        "reason": "no frozen public class-marker panel asset_id with identity/hash in Record Core; P1 panels are not requested and are not substitutes",
        "status": "HOLD_NOT_RUN"
      },
      "n_pcs": 50,
      "ptsd_included": false,
      "seeds": [
        0,
        1,
        2
      ],
      "universe_asset_id": "P2_MDD_CON_CLUSTERING_COHORT_625220",
      "universe_n_channels": 70,
      "universe_n_nuclei": 625220
    },
    "csr_axis_semantics": {
      "cell_order_asset_id": "P2_RNA_CELLNAMES",
      "columns": "genes",
      "gene_order_asset_id": "P2_RNA_GENENAMES",
      "rows": "cells"
    }
  },
  "scientific_scope": "Accepted clustering universe = 625220 MDD+CON nuclei / 70 Channels. Canonical clustering implementation is Pegasus only; Worker may not substitute Scanpy. Registered Pegasus kwargs: robust genes; log-norm with counts retained; HVG n_top=2000 batch=Channel; pca n_components=50; Harmony attrs=Channel; neighbors K=100; Leiden r from R_cal only. UMAP is sanity only. Grid R_cal = [0.4, 0.6, 1.0, 1.2, 1.6, 1.8, 2.4] with seeds [0, 1, 2]. G3b operational set {0.6, 1.2, 1.8} is included; author Leiden resolution remains NOT_FOUND. Admissible range uses operational guardrails (collapse n_clusters<7; over-fragment n_clusters>80 or >25% clusters size<50 or seed-ARI median<0.70). If lowest r=0.4 or highest r=2.4 remains admissible, mark RANGE_BOUNDARY_NOT_BRACKETED and do not claim a complete admissible range; recommend a later grid-extension contract. If any required grid point is unfinished, report completed diagnostics only and mark the calibration HOLD/INCOMPLETE; do not claim a complete admissible range. Do not declare one biological true resolution. Do not assign class labels. Marker-panel gaps are diagnostic distributions only (no GAP_WEAK cutoff) and run only if a frozen public panel identity/hash is resolved; otherwise HOLD_NOT_RUN.",
  "task_id": "b0780b59-f106-4e0a-8795-12790307aab0",
  "test_only": false,
  "title": "P2 resolution calibration (phenotype-blind, MDD+CON 625220)",
  "webpage_is_not_scientific_authorization": true
}
