{ "schemaVersion": 1, "historyEvidence": [ { "commit": "c5120669d2b86f417f6dbd8fc7e01eeafbcea3ab", "proves": "split storage and the generated ProxiFyre config shape" }, { "commit": "e745633d91880b2f795fee2496d7fb4c35c54a38", "proves": "the later opportunistic generated-config bootstrap" }, { "commit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "proves": "the historical component candidate roots" }, { "commit": "dbba3806ccdc8c4792d59add359c7ade7fff1176", "proves": "the current app-adjacent component layout and strong ProxiFyre marker" } ], "startup": { "canonicalSplitSourceFiles": [ "config/profiles.json", "config/targets.json", "config/components.json", "config/local-singbox.json" ], "generatedRecoverySource": "generated/proxifyre-app-config.json", "rules": { "currentMetadata": "no_op", "anySplitSourceExists": "adopt_split_without_generated_import", "allSplitSourcesAbsentAndOneSupportedGeneratedConfig": "import_once", "partialOrCorruptSplit": "recover_or_warn_without_generated_merge" } }, "fixtures": [ { "id": "proxifyre-generated", "status": "supported", "files": [ "proxifyre-generated/app-config.json" ] }, { "id": "proxifyre-unsupported", "status": "unsupported_preserve_original", "files": [ "proxifyre-unsupported/app-config.json" ] }, { "id": "proxifyre-real-sanitized", "status": "supported_structure_preserving_sanitized_sample", "files": [ "proxifyre-real-sanitized/app-config.json" ], "provenance": { "capturedAt": "2026-08-17", "source": "C:\\ProgramData\\ProxyWarden\\generated\\proxifyre-app-config.json on a pre-1.2 local installation", "sourceSha256": "078C3E74B96D26DF155229B2F6FD380F762550B0A3F863CE2E913F5B6493F710", "preserved": "root/proxy key sets, proxy count, app count and app value categories, protocol values, default flags and endpoint shape", "replaced": "all app names, filesystem paths, hostnames and ports" } }, { "id": "marker-formats", "status": "schema_evidence_only", "files": [ "markers/install-proxyfier.marker.json", "markers/proxywarden-component.json" ] }, { "id": "pre-1.2-split", "status": "adopt_without_generated_import", "files": [ "pre-1.2-split/config/profiles.json", "pre-1.2-split/config/targets.json", "pre-1.2-split/config/components.json", "pre-1.2-split/config/local-singbox.json" ] } ], "proxifyreFieldMatrix": [ { "id": "log-level-info", "jsonPath": "$.logLevel == Info", "outcome": "derived", "destination": "generator default Info", "coverage": "proxifyre-generated" }, { "id": "log-level-other", "jsonPath": "$.logLevel != Info", "outcome": "unsupported", "coverage": "proxifyre-unsupported" }, { "id": "bypass-lan-true", "jsonPath": "$.bypassLan == true", "outcome": "derived", "destination": "generator default true", "coverage": "proxifyre-generated" }, { "id": "bypass-lan-other", "jsonPath": "$.bypassLan != true", "outcome": "unsupported", "coverage": "proxifyre-unsupported" }, { "id": "proxies", "jsonPath": "$.proxies[*]", "outcome": "derived", "destination": "one enabled profile and target pair per entry", "coverage": "proxifyre-generated" }, { "id": "app-names", "jsonPath": "$.proxies[*].appNames[*]", "outcome": "canonical", "destination": "profiles[*].items; folder recursive is derived because the generated format cannot represent it", "coverage": "proxifyre-generated" }, { "id": "plain-endpoint", "jsonPath": "$.proxies[*].socks5ProxyEndpoint plain host:port", "outcome": "canonical", "destination": "targets[*].host and targets[*].port", "coverage": "proxifyre-generated" }, { "id": "endpoint-scheme-or-userinfo", "jsonPath": "$.proxies[*].socks5ProxyEndpoint with scheme, userinfo, missing port, or port 0", "outcome": "unsupported", "coverage": "inline-uri-userinfo" }, { "id": "protocol-tcp", "jsonPath": "$.proxies[*].supportedProtocols[*] == TCP", "outcome": "canonical", "destination": "profiles[*].protocols TCP", "coverage": "proxifyre-generated" }, { "id": "protocol-udp", "jsonPath": "$.proxies[*].supportedProtocols[*] == UDP", "outcome": "canonical", "destination": "profiles[*].protocols UDP", "coverage": "proxifyre-generated" }, { "id": "protocol-other-or-empty", "jsonPath": "$.proxies[*].supportedProtocols empty or value other than TCP/UDP", "outcome": "unsupported", "coverage": "proxifyre-unsupported" }, { "id": "credentials-userinfo", "jsonPath": "$.proxies[*].username/password/userinfo", "outcome": "unsupported", "coverage": "proxifyre-unsupported" }, { "id": "tls", "jsonPath": "$.proxies[*].tls", "outcome": "unsupported", "coverage": "proxifyre-unsupported" }, { "id": "address-family", "jsonPath": "$.proxies[*].addressFamily", "outcome": "unsupported", "coverage": "proxifyre-unsupported" }, { "id": "unknown-root-key", "jsonPath": "$.* unknown root key", "outcome": "unsupported", "coverage": "proxifyre-unsupported" }, { "id": "unknown-proxy-key", "jsonPath": "$.proxies[*].* unknown proxy key", "outcome": "unsupported", "coverage": "proxifyre-unsupported" } ], "components": { "proxifyre": { "managedCurrentRootTemplate": "{controlAppDir}\\components\\ProxiFyre", "confirmedManagedLegacyDefaultRoots": [ "C:\\Tools\\ProxiFyre" ], "legacyCandidates": [ { "path": "C:\\Tools\\ProxiFyre", "classificationBeforeIdentity": "candidate", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/commands.rs" }, { "path": "%ProgramFiles%\\ProxiFyre", "classificationBeforeIdentity": "candidate", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/component_detection.rs" }, { "path": "%ProgramFiles(x86)%\\ProxiFyre", "classificationBeforeIdentity": "candidate", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/component_detection.rs" }, { "path": "%LOCALAPPDATA%\\ProxiFyre", "classificationBeforeIdentity": "candidate", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/component_detection.rs" }, { "path": "%ProgramFiles%\\ProxyWarden\\ProxiFyre", "classificationBeforeIdentity": "candidate", "evidenceCommit": "dbba3806ccdc8c4792d59add359c7ade7fff1176", "evidenceFile": "src-tauri/src/component_detection.rs" }, { "path": "%ProgramFiles(x86)%\\ProxyWarden\\ProxiFyre", "classificationBeforeIdentity": "candidate", "evidenceCommit": "dbba3806ccdc8c4792d59add359c7ade7fff1176", "evidenceFile": "src-tauri/src/component_detection.rs" }, { "path": "%LOCALAPPDATA%\\ProxyWarden\\ProxiFyre", "classificationBeforeIdentity": "candidate", "evidenceCommit": "dbba3806ccdc8c4792d59add359c7ade7fff1176", "evidenceFile": "src-tauri/src/component_detection.rs" } ], "managedLegacyClassificationRequires": [ "exact allowlisted root", "ProxiFyre.exe exists at that root", "service PathName points to that exact executable", "binary matches a known bundled package identity" ], "service": { "primaryName": "ProxiFyreService", "discoveryOnlyAliases": [ "ProxiFyre" ], "discoveryOnlyPathNameTemplate": "\"{root}\\ProxiFyre.exe\" --service", "autoCutoverPathNameTemplate": "\"{root}\\ProxiFyre.exe\" -displayname \"ProxiFyre Service\" -servicename \"ProxiFyreService\"" }, "autoCutover": { "decision": "automatic_proxifyre_2_2_1", "root": "C:\\Tools\\ProxiFyre", "versionValues": [ "2.2.1", "2.2.1.0" ], "packageManifest": [ { "relativePath": "Newtonsoft.Json.dll", "size": 711952, "sha256": "e1e27af7b07eeedf5ce71a9255f0422816a6fc5849a483c6714e1b472044fa9d" }, { "relativePath": "Newtonsoft.Json.xml", "size": 713541, "sha256": "79ee87d4ede8783461de05b93379d576f6e8575d4ab49359f15897a854b643c4" }, { "relativePath": "NLog.config", "size": 382, "sha256": "06b8e52be9385e4e6a2f042f0d7ca3dd0b043378b455535299846b02fd19250d" }, { "relativePath": "NLog.dll", "size": 940032, "sha256": "4b1d3cf9f1f3c4a6ead141243069162172e9ef48ba1a9bf4f7ccd618b8194b5c" }, { "relativePath": "NLog.xml", "size": 1608606, "sha256": "6871374d682e75aff17de2a8626a75e9c75409516f5e7527e9d159c1de6831bb" }, { "relativePath": "ProxiFyre.exe", "size": 35960, "sha256": "2a60a76480715fca52185163d7ac6d850d4b0abe4079b7d461d7d0fcb3f02d93" }, { "relativePath": "ProxiFyre.exe.config", "size": 177, "sha256": "8403846edd2ee98fd53b351dbf8773951c8e30f4b04dd53676a7e7dfbd8930b0" }, { "relativePath": "socksify.dll", "size": 1309184, "sha256": "940b22ae8e97ff575317cc4a6c20467ed2ff760d01c7b056d13fcb20e7043cbd" }, { "relativePath": "Topshelf.dll", "size": 190464, "sha256": "bd70a5832124e36840452ff46e442efa0a09a4ceba842aea72c79b2d322d7fe8" }, { "relativePath": "Topshelf.xml", "size": 80754, "sha256": "3b2228b3333c4fd86e29020bc2d77a5260dbf03e911829d6226498ade53c2790" } ], "scmProfile": { "serviceType": "win32_own_process", "startType": "auto_start", "errorControl": "normal", "account": "LocalSystem", "displayName": "ProxiFyre Service", "description": "ProxiFyre - SOCKS5 ProxiFyre Service", "dependencies": [], "loadOrderGroup": null, "failureActions": [], "failureActionsOnNonCrash": false, "delayedAutoStart": false, "sidType": "none", "requiredPrivileges": [], "triggers": [], "untrustedMutationRights": false }, "allOtherDiscoveryCandidates": { "decision": "manual_migration_required", "mutationPlan": [] } }, "markers": { "managedLegacyRoot": "none", "weakStandaloneScriptHint": { "file": "install-proxyfier.marker.json", "fields": [ "component", "packagePath", "serviceName", "installedAt" ], "ownershipProof": false }, "managedCurrent": { "file": "proxywarden-component.json", "requiredValues": { "manager": "ProxyWarden", "component": "proxifyre", "serviceName": "ProxiFyreService" }, "rootField": "installRoot", "packetFilterOwnershipField": "packetFilterInstalledByProxyWarden" } } }, "singbox": { "managedCurrentRootTemplate": "{controlAppDir}\\components\\sing-box", "confirmedManagedLegacyDefaultRoots": [ "C:\\Program Files\\ProxyWarden\\sing-box" ], "legacyCandidates": [ { "path": "C:\\Tools\\ProxyWarden\\sing-box", "classificationBeforeIdentity": "candidate", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/component_detection.rs" }, { "path": "%ProgramFiles%\\ProxyWarden\\sing-box", "classificationBeforeIdentity": "candidate", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/component_detection.rs" }, { "path": "%ProgramFiles(x86)%\\ProxyWarden\\sing-box", "classificationBeforeIdentity": "candidate", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/component_detection.rs" }, { "path": "%LOCALAPPDATA%\\ProxyWarden\\sing-box", "classificationBeforeIdentity": "candidate", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/component_detection.rs" } ], "managedLegacyClassificationRequires": [ "exact allowlisted root", "sing-box.exe and ProxyWardenSingBox.exe exist at that root", "service PathName points to that exact wrapper", "ProxyWardenSingBox.xml has matching id, executable, and config arguments", "binaries match known bundled package identities" ], "foreignByDefaultCandidates": [ { "path": "%ProgramFiles%\\sing-box", "classificationBeforeIdentity": "foreign", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/component_detection.rs" }, { "path": "%ProgramFiles(x86)%\\sing-box", "classificationBeforeIdentity": "foreign", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/component_detection.rs" }, { "path": "%LOCALAPPDATA%\\sing-box", "classificationBeforeIdentity": "foreign", "evidenceCommit": "9fd0a8c0b9e8472aa8e9a983e6c07780f5236c4a", "evidenceFile": "src-tauri/src/component_detection.rs" } ], "service": { "primaryName": "ProxyWardenSingBox", "pathNameTemplate": "\"{root}\\ProxyWardenSingBox.exe\"", "identityFiles": [ "ProxyWardenSingBox.exe", "ProxyWardenSingBox.xml", "sing-box.exe" ] }, "markers": { "managedLegacyRoot": "none" }, "autoCutover": { "decision": "manual_migration_required", "reason": "historical installer downloaded moving latest sing-box and WinSW-x64 without a frozen inner identity", "mutationPlan": [] } } }, "collisionPolicy": { "currentAndLegacy": "current_wins_orphan_untouched_manual", "multipleLegacyCandidates": "block_without_mutation", "sameServiceNameForeignPath": "ownership_mismatch_without_mutation" }, "runningStatePolicy": { "running": "restore_running_after_success_or_rollback", "stopped": "keep_stopped_after_success_or_rollback", "pendingOrUnknown": "block_without_mutation" } }