{
  "schemaVersion": 1,
  "date": "2026-11-07",
  "status": "applied-and-verified",
  "target": {
    "pinnedAddress": "40.160.5.185",
    "tlsHostname": "dial.solarrefer.com",
    "platform": "ViciBox 12 / openSUSE Leap 15.6"
  },
  "transaction": {
    "method": "Bounded installation of 24 individually reviewed signed local RPMs using private repository/cache directories; not a repository-wide distribution upgrade",
    "packageCount": 24,
    "exactTargetsMatch": true,
    "installed": {
      "apache2-mod_php8": [
        "8.2.35",
        "lp156.1.1",
        "x86_64"
      ],
      "php8": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-bz2": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-cli": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-ctype": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-curl": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-dom": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-ftp": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-gd": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-gettext": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-iconv": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-mbstring": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-mysql": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-opcache": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-openssl": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-pdo": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-phar": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-soap": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-sqlite": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-tokenizer": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-xmlreader": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-xmlwriter": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-zip": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ],
      "php8-zlib": [
        "8.2.35",
        "lp156.1.6",
        "x86_64"
      ]
    },
    "signingKeyFingerprint": "FB52BCD8E9CDEBE3D8CD529E91E619AF221737C9",
    "signaturesVerifiedBeforeInstallation": true,
    "exactSignedRollbackPackagesRetained": 24,
    "pearUnchanged": "php8-pear-1.10.21-150400.9.3.1.noarch",
    "netSslUnchanged": "perl-Net-SSLeay-1.940.0-lp156.64.4.x86_64",
    "automaticFutureRepositoryUpdatesConfigured": false
  },
  "apache": {
    "restartMethod": "Normal apache2-mod_php8 RPM post-transaction hook",
    "additionalManualRestart": false,
    "startedAtUtc": "2026-11-07T06:04:20Z",
    "activeState": "active",
    "subState": "running",
    "configurationTest": "Syntax OK"
  },
  "cli": {
    "beforeVersion": "8.2.30",
    "afterVersion": "8.2.35",
    "sapi": "cli",
    "beforeExtensionCount": 38,
    "afterExtensionCount": 38,
    "extensionSetMatches": true,
    "afterExtensions": [
      "Core",
      "date",
      "libxml",
      "pcre",
      "filter",
      "hash",
      "json",
      "random",
      "Reflection",
      "SPL",
      "session",
      "standard",
      "SimpleXML",
      "xml",
      "bz2",
      "ctype",
      "curl",
      "dom",
      "ftp",
      "gd",
      "gettext",
      "iconv",
      "mbstring",
      "mysqlnd",
      "openssl",
      "PDO",
      "zlib",
      "soap",
      "sqlite3",
      "tokenizer",
      "xmlwriter",
      "zip",
      "Phar",
      "mysqli",
      "pdo_mysql",
      "pdo_sqlite",
      "xmlreader",
      "Zend OPcache"
    ]
  },
  "web": {
    "beforeVersion": "8.2.30",
    "afterVersion": "8.2.35",
    "sapi": "apache2handler",
    "beforeExtensionCount": 39,
    "afterExtensionCount": 39,
    "extensionSetMatches": true,
    "afterExtensions": [
      "Core",
      "date",
      "libxml",
      "pcre",
      "filter",
      "hash",
      "json",
      "random",
      "Reflection",
      "SPL",
      "session",
      "standard",
      "SimpleXML",
      "xml",
      "apache2handler",
      "bz2",
      "ctype",
      "curl",
      "dom",
      "ftp",
      "gd",
      "gettext",
      "iconv",
      "mbstring",
      "mysqlnd",
      "openssl",
      "PDO",
      "zlib",
      "soap",
      "sqlite3",
      "tokenizer",
      "xmlwriter",
      "zip",
      "Phar",
      "mysqli",
      "pdo_mysql",
      "pdo_sqlite",
      "xmlreader",
      "Zend OPcache"
    ],
    "requiredExtensions": {
      "mysqli": true,
      "curl": true,
      "mbstring": true,
      "openssl": true
    },
    "capturedAt": "2026-11-07T06:07:32+00:00",
    "loopbackProbeRemovedAnd404Verified": true
  },
  "nativeApplications": {
    "before": {
      "passes": true,
      "results": [
        {
          "check": "authenticated-admin",
          "status": 200,
          "bytes": 59400,
          "markers": {
            "vicidial": true,
            "admin": true
          },
          "authorizationDenied": false,
          "phpFatalError": false,
          "passes": true
        },
        {
          "check": "synthetic-user-report",
          "status": 200,
          "bytes": 74987,
          "markers": {
            "learner1": true,
            "stats": true
          },
          "authorizationDenied": false,
          "phpFatalError": false,
          "passes": true
        },
        {
          "check": "agent-login-page",
          "status": 200,
          "bytes": 6332,
          "markers": {
            "phone_login": true
          },
          "authorizationDenied": false,
          "phpFatalError": false,
          "passes": true
        }
      ],
      "provenance": "Original pre-maintenance summary retained; original detailed response hashes were overwritten by a helper with a fixed output filename. No before response hashes are reconstructed or compared."
    },
    "after": {
      "passes": true,
      "results": [
        {
          "check": "authenticated-admin",
          "status": 200,
          "bytes": 59401,
          "markers": {
            "vicidial": true,
            "admin": true
          },
          "authorizationDenied": false,
          "phpFatalError": false,
          "passes": true
        },
        {
          "check": "synthetic-user-report",
          "status": 200,
          "bytes": 74988,
          "markers": {
            "learner1": true,
            "stats": true
          },
          "authorizationDenied": false,
          "phpFatalError": false,
          "passes": true
        },
        {
          "check": "agent-login-page",
          "status": 200,
          "bytes": 6332,
          "markers": {
            "phone_login": true
          },
          "authorizationDenied": false,
          "phpFatalError": false,
          "passes": true
        }
      ]
    },
    "scope": "Authenticated Administration and synthetic-user report requests plus unauthenticated Agent login-page rendering; no authenticated Agent session or call"
  },
  "liveState": {
    "activeCalls": 0,
    "activeChannels": 0,
    "processedCalls": 1743,
    "existingLiveAgentRows": 1,
    "existingCarrierRows": 1,
    "callOrCarrierConfigurationChanged": false
  },
  "recoveryComparison": {
    "entriesCompared": 97,
    "changedEntries": [
      "usr/bin/php"
    ],
    "explanation": "The CLI runtime entry changed during package installation; no compared PHP or Apache configuration file changed.",
    "missingEntries": [],
    "rpmNewOrSaveFiles": [],
    "phpFatalMarkersInServiceJournal": 0,
    "checkedAt": "2026-11-07T06:09:16.251806+00:00"
  },
  "exactCliCapture": {
    "command": "php -v | head -n 1",
    "output": [
      "PHP 8.2.35 (cli) (built: Oct 21 2026 12:00:00) (NTS)"
    ],
    "capturedAt": "2026-11-07T06:04:20.926030+00:00",
    "timestampMeaning": "Local transaction-log modification time after the completed command, not a separately instrumented command-start timestamp"
  },
  "evidence": {
    "afterCaptureProvenance": "docs/forum-bugs-php-after-capture-provenance-2026-11-07.json",
    "beforeCaptureProvenance": "docs/forum-bugs-php-probe-provenance-2026-11-06.json",
    "images": [
      {
        "path": "/evidence/forum-bugs-2026-11-06/php-web-after.png",
        "sha256": "44eec6a72f41dea3c9d26f249909f6078ba1fee38b37a086b21ee78fbb4eabee",
        "width": 1100,
        "height": 700
      },
      {
        "path": "/evidence/forum-bugs-2026-11-06/native-agent-login-php-after-2026-11-07.png",
        "sha256": "784fa6e947c99b0956111ff1eebdd920e621d2ac263b34f62cdc45220d39ab61",
        "width": 1100,
        "height": 700
      }
    ],
    "sourceRecordSha256": {
      "apply-reviewed-php.log": "c5e95216d29a0de5d17ab7fea9d4295a7c75165270041906e569f5316f6ba56d",
      "packages-service-after.json": "651b8ba24b5efa7509e7c026dd02627715557895faebbd3090d8034452c992be",
      "maintenance-preflight-result.json": "97d466584bfdb4898cadeb764e645f3b8a116d486d1ad84dcf40b85bd081664b",
      "native-applications-after-summary.json": "4af6e60782ef04783efba5d125bab0b2efaf40ce39fc79344338d9b3def86fa2",
      "configuration-after-audit.json": "339ef93c8276a1d0cc04fce3f6ca2611dfc09d0269d3e955921b016627109598"
    }
  },
  "limitations": [
    "No exploit test was run; fixed status means the official fixed PHP version is installed and served with the documented application checks passing.",
    "No authenticated Agent login, new call, carrier change, kernel update, reboot or database-schema change was performed.",
    "Rollback artifacts and configuration archive were verified and retained; an actual downgrade/restore was not performed. No whole-machine snapshot is claimed.",
    "The bounded local-RPM transaction does not configure automatic future repository updates.",
    "These results cover this pinned ViciBox 12 host; they do not validate ViciBox 11, ViciBox 13 or other web nodes."
  ]
}
