{
    "label": "Safe Deploy \u2022 All-in-One Communications V16.13.01 Unified Contact Timeline",
    "mode": "safe-deploy",
    "applied_at": "2026-04-17T19:33:28+00:00",
    "from_version": "16.13.00",
    "to_version": "16.13.01",
    "preflight": {
        "overall": "pass",
        "checks": [
            {
                "label": "Package manifest",
                "status": "pass",
                "detail": "All-in-One Communications V16.13.01 Unified Contact Timeline loaded successfully.",
                "hint": ""
            },
            {
                "label": "Version compatibility",
                "status": "pass",
                "detail": "Current version 16.13.00 matches the package start version.",
                "hint": ""
            },
            {
                "label": "Target version",
                "status": "pass",
                "detail": "Package upgrades the app to 16.13.01.",
                "hint": ""
            },
            {
                "label": "Changed files",
                "status": "pass",
                "detail": "5 file(s) will be updated.",
                "hint": ""
            },
            {
                "label": "Update storage",
                "status": "pass",
                "detail": "Writable: /home/smalltown/public_html/smsemail/storage/updates",
                "hint": ""
            },
            {
                "label": "Rollback snapshot storage",
                "status": "pass",
                "detail": "Writable: /home/smalltown/public_html/smsemail/storage/updates/backups",
                "hint": ""
            },
            {
                "label": "Protected paths",
                "status": "pass",
                "detail": "Package avoids runtime config, storage, and uploads.",
                "hint": ""
            },
            {
                "label": "Schema impact",
                "status": "pass",
                "detail": "Package is code-only.",
                "hint": ""
            },
            {
                "label": "App config",
                "status": "pass",
                "detail": "Installed config found.",
                "hint": ""
            },
            {
                "label": "Boot files",
                "status": "pass",
                "detail": "Critical boot files are present.",
                "hint": ""
            }
        ]
    },
    "before_health": {
        "overall": "pass",
        "checks": [
            {
                "label": "Boot files",
                "status": "pass",
                "detail": "Critical boot files are present.",
                "hint": ""
            },
            {
                "label": "Update storage",
                "status": "pass",
                "detail": "Writable: /home/smalltown/public_html/smsemail/storage/updates",
                "hint": ""
            },
            {
                "label": "Code version",
                "status": "pass",
                "detail": "Current code version is 16.13.00.",
                "hint": ""
            },
            {
                "label": "Database connection",
                "status": "pass",
                "detail": "Database connection succeeded.",
                "hint": ""
            },
            {
                "label": "Schema version",
                "status": "pass",
                "detail": "Schema version is 16.13.00.",
                "hint": ""
            },
            {
                "label": "Missing tables",
                "status": "pass",
                "detail": "All expected tables are present.",
                "hint": ""
            },
            {
                "label": "Worker heartbeat",
                "status": "pass",
                "detail": "Worker healthy \u2022 Last heartbeat: 2026-04-17 19:33:03",
                "hint": ""
            },
            {
                "label": "Queue health",
                "status": "pass",
                "detail": "Queued: 2 \u2022 Processing: 0 \u2022 Failed: 0 \u2022 Done: 0",
                "hint": ""
            }
        ],
        "generated_at": "2026-04-17T19:33:27+00:00"
    },
    "after_health": {
        "overall": "pass",
        "checks": [
            {
                "label": "Boot files",
                "status": "pass",
                "detail": "Critical boot files are present.",
                "hint": ""
            },
            {
                "label": "Update storage",
                "status": "pass",
                "detail": "Writable: /home/smalltown/public_html/smsemail/storage/updates",
                "hint": ""
            },
            {
                "label": "Code version",
                "status": "pass",
                "detail": "Current code version is 16.13.01.",
                "hint": ""
            },
            {
                "label": "Database connection",
                "status": "pass",
                "detail": "Database connection succeeded.",
                "hint": ""
            },
            {
                "label": "Schema version",
                "status": "pass",
                "detail": "Schema version is 16.13.01.",
                "hint": ""
            },
            {
                "label": "Missing tables",
                "status": "pass",
                "detail": "All expected tables are present.",
                "hint": ""
            },
            {
                "label": "Worker heartbeat",
                "status": "pass",
                "detail": "Worker healthy \u2022 Last heartbeat: 2026-04-17 19:33:03",
                "hint": ""
            },
            {
                "label": "Queue health",
                "status": "pass",
                "detail": "Queued: 2 \u2022 Processing: 0 \u2022 Failed: 0 \u2022 Done: 0",
                "hint": ""
            }
        ],
        "generated_at": "2026-04-17T19:33:28+00:00"
    },
    "repair_status": "Completed",
    "rollback_snapshot": "20260417_193327",
    "notes": [
        "Expands the contact activity card into a unified timeline across email, SMS, message events, and internal contact notes.",
        "Adds timeline summary badges for email, SMS, notes, events, last activity, and last reply.",
        "Adds timeline filters for all activity, email-only, SMS-only, and notes-only views.",
        "Adds quick links from timeline entries back to the originating communication workspace when available.",
        "No database migration is required for V16.13.01."
    ]
}