{
  "id": "volume_persistence_governance",
  "label": "Volume & Persistence Governance Canonical",
  "phase": "phase-04",
  "category": "containerization",
  "status": "ACTIVE_DH_MIRROR",
  "purpose": "Define which DEVON-DEV data must persist beyond container lifecycle events before containers, rebuilds, cleanup routines, migrations, backups, rollbacks or deployments can operate safely.",
  "function": "Ensure containers may die, rebuild or move without destroying persistent state by registering each governed volume with owner, mount path, persistence type, backup requirement, retention policy, encryption requirement, cleanup policy, restore path and risk level.",
  "persistence_contract": {
    "requires_volume_id": true,
    "requires_service_owner": true,
    "requires_mount_path": true,
    "requires_persistence_type": true,
    "requires_backup_required": true,
    "requires_retention_policy": true,
    "requires_encryption_required": true,
    "requires_cleanup_policy": true,
    "requires_restore_path": true,
    "requires_risk_level": true,
    "covers_relational_database": true,
    "covers_persistent_cache_queue": true,
    "covers_vector_index": true,
    "covers_local_models": true,
    "covers_embeddings": true,
    "covers_logs": true,
    "covers_backups": true,
    "covers_artifacts": true,
    "covers_snapshots": true,
    "covers_evidence_store": true,
    "covers_uploaded_files": true,
    "covers_policies": true,
    "covers_source_registry": true,
    "covers_execution_ledger": true,
    "covers_audit_trail": true,
    "blocks_unregistered_persistent_data": true,
    "blocks_cleanup_without_policy": true,
    "blocks_volume_removal_without_restore_path": true,
    "decision_authority": "NONE_FSM_DECIDES"
  },
  "technology_requirements": [
    {
      "technology": "Docker volumes",
      "required_for": "Persist DEVON-DEV container state that must survive rebuild, restart, image replacement, cleanup and rollback.",
      "required_by_phase": "phase-04",
      "required_by_category": "volume_persistence_governance",
      "required_by_buckets": [
        "Prerequisites",
        "Installation",
        "Configuration",
        "Validation",
        "Observable Evidence",
        "Failure Modes & Recovery",
        "Completion & Promotion"
      ],
      "expected_version": "MISSING until Docker runtime and volume registry are materially present",
      "validation_command": "MISSING until Docker volume inspect can prove volume_id, owner, mount path, labels, backup flag, retention policy and restore path",
      "evidence_path": "/home/yeff/public_html/devon/canon/execution/state/dh_sources/volume_persistence_governance_canonical.json",
      "status_source": "Documentation Hub + future Docker runtime support + Volume Registry + Execution Ledger",
      "blocking_if_missing": true,
      "failure_impact": "Without Docker volume governance, DEVON-DEV can rebuild or remove containers while silently destroying database state, vector state, model assets, logs, evidence or artifacts."
    },
    {
      "technology": "Controlled bind mounts",
      "required_for": "Mount host directories into containers only when the path is declared, policy-bound, owned and recoverable.",
      "required_by_phase": "phase-04",
      "required_by_category": "volume_persistence_governance",
      "required_by_buckets": [
        "Installation",
        "Configuration",
        "Validation",
        "Observable Evidence",
        "Failure Modes & Recovery"
      ],
      "expected_version": "MISSING until bind mount policy and allowed root mapping exist",
      "validation_command": "MISSING until bind mount validation can prove host path, container path, owner, access mode and workspace-root membership",
      "evidence_path": "/home/yeff/public_html/devon/canon/execution/state/dh_sources/volume_persistence_governance_canonical.json",
      "status_source": "Documentation Hub + future Server Workspace Registry + Docker runtime support",
      "blocking_if_missing": true,
      "failure_impact": "Without controlled bind mounts, containers can write persistent state into arbitrary host paths and bypass workspace governance."
    },
    {
      "technology": "Volume labels",
      "required_for": "Attach machine-readable ownership, risk, backup, retention and restore metadata to persistent DEVON-DEV volumes.",
      "required_by_phase": "phase-04",
      "required_by_category": "volume_persistence_governance",
      "required_by_buckets": [
        "Configuration",
        "Validation",
        "Observable Evidence",
        "Failure Modes & Recovery",
        "Completion & Promotion"
      ],
      "expected_version": "MISSING until volume label schema exists",
      "validation_command": "MISSING until volume labels can prove service_owner, persistence_type, backup_required, retention_policy, cleanup_policy and risk_level",
      "evidence_path": "/home/yeff/public_html/devon/canon/execution/state/dh_sources/volume_persistence_governance_canonical.json",
      "status_source": "Documentation Hub + future Volume Registry + Docker runtime support",
      "blocking_if_missing": true,
      "failure_impact": "Without volume labels, persistent storage cannot be reliably filtered, audited, backed up, retained or protected during cleanup."
    },
    {
      "technology": "Backup hooks",
      "required_for": "Trigger backup capture before destructive cleanup, rebuild, migration, deployment or rollback touches persistent storage.",
      "required_by_phase": "phase-04",
      "required_by_category": "volume_persistence_governance",
      "required_by_buckets": [
        "Installation",
        "Configuration",
        "Validation",
        "Observable Evidence",
        "Failure Modes & Recovery",
        "Completion & Promotion"
      ],
      "expected_version": "MISSING until backup hook mechanism is wired to volume registry and execution gates",
      "validation_command": "MISSING until backup hook can prove pre-operation snapshot, backup path, checksum, retention class and restore readiness",
      "evidence_path": "/home/yeff/public_html/devon/canon/execution/state/dh_sources/volume_persistence_governance_canonical.json",
      "status_source": "Documentation Hub + future Backup & Rollback records + Execution Ledger",
      "blocking_if_missing": true,
      "failure_impact": "Without backup hooks, DEVON-DEV can perform destructive operations before capturing the persistent data needed for recovery."
    },
    {
      "technology": "Retention policy",
      "required_for": "Define how long databases, logs, backups, artifacts, snapshots, evidence, uploads, policies, ledgers and audit records must survive.",
      "required_by_phase": "phase-04",
      "required_by_category": "volume_persistence_governance",
      "required_by_buckets": [
        "Configuration",
        "Validation",
        "Observable Evidence",
        "Failure Modes & Recovery",
        "Completion & Promotion"
      ],
      "expected_version": "MISSING until retention classes and cleanup rules exist",
      "validation_command": "MISSING until retention policy can prove keep/delete windows, protected classes, cleanup rules and backup requirements",
      "evidence_path": "/home/yeff/public_html/devon/canon/execution/state/dh_sources/volume_persistence_governance_canonical.json",
      "status_source": "Documentation Hub + future Retention Policy Registry + Execution Ledger",
      "blocking_if_missing": true,
      "failure_impact": "Without retention policy, cleanup can delete critical evidence too early or retain sensitive data without governed limits."
    },
    {
      "technology": "Storage registry",
      "required_for": "Register persistent storage classes, owners, paths, backup requirements, encryption requirements, cleanup rules and restore paths.",
      "required_by_phase": "phase-04",
      "required_by_category": "volume_persistence_governance",
      "required_by_buckets": [
        "Prerequisites",
        "Installation",
        "Configuration",
        "Validation",
        "Observable Evidence",
        "Failure Modes & Recovery",
        "Completion & Promotion"
      ],
      "expected_version": "MISSING until persistent storage schema and registry path exist",
      "validation_command": "MISSING until storage registry lookup can prove owner, class, mount path, risk, retention, backup and restore data",
      "evidence_path": "/home/yeff/public_html/devon/canon/execution/state/dh_sources/volume_persistence_governance_canonical.json",
      "status_source": "Documentation Hub + future Storage Registry + Volume Registry + Execution Ledger",
      "blocking_if_missing": true,
      "failure_impact": "Without Storage Registry, DEVON-DEV cannot distinguish disposable container state from protected platform memory, evidence, model, database or audit state."
    }
  ],
  "depends_on": [
    "cdms",
    "server_workspace_manager",
    "environment_registry",
    "container_image_registry_build_pipeline",
    "container_network_policy",
    "artifact_registry",
    "validation_matrix",
    "fsm_absolute_decision",
    "decision_rule_registry",
    "tool_registry",
    "config_registry",
    "architecture_source_registry"
  ],
  "used_by": [
    "filesystem_operations",
    "shell_execution",
    "backup_rollback",
    "production_deployment_gate",
    "test_validation_runner",
    "execution_ledger",
    "evidence_store",
    "vector_index",
    "model_artifact_registry",
    "observability_core",
    "future_execution_monitoring_panel"
  ]
}
