{
  "account_referral_routes": {
    "backend": "10.71.100.83:18080",
    "collection": {
      "methods": [
        "GET",
        "POST"
      ],
      "path": "/v2/account/referrals"
    },
    "reissue": {
      "method": "POST",
      "path_shape": "/v2/account/referrals/{invite_id:uuid}/share-token/reissue"
    },
    "revoke": {
      "method": "POST",
      "path_shape": "/v2/account/referrals/{invite_id:uuid}/revoke"
    }
  },
  "activation_contract": "install candidate -> caddy validate -> systemctl restart caddy -> systemctl is-active -> focused exact-method HTTPS probes",
  "admin_application_auth_intended_change": false,
  "baseline_commit": "8ba95c7f3452bd73ccaa8bae2e430ba1e2e23440",
  "baseline_file_count": 20,
  "baseline_file_sha256": {
    "etc/caddy/Caddyfile": "f2eb4657d57631b022ab8b6603295563c560bb10b2dc871c72eacd150ad383fd"
  },
  "baseline_tree": "564224fa353533e6e4af4f4e1acb6e5ed04dfa70",
  "billing_routes_semantics_intended_change": false,
  "canonical_zip_required": true,
  "classification": "core",
  "current_latest": "WG_PAID_MGTS_LATEST_20260922-094549.zip",
  "current_latest_sha256": "e7db950add9c0f6f13e673bfd19beb65cfc15a74525429aff271c01c24b9090e",
  "database_schema_intended_change": false,
  "exact_worker_fixture": "tests/exact-worker.sh",
  "expected_installer_sha256": "a605e2294ec07b5ccc1ac6ad94bd5574cba5a15c9a9759d76cd817338501adc6",
  "expected_target_file_count": 20,
  "expected_target_tree": "b1416a644cab4dc7c8fc80290d92ff68c089b7b1",
  "firewall_uci_intended_change": false,
  "functional_stage": "p29e5_vm103_account_referral_route_exposure",
  "machine_git_change_required": true,
  "mandatory_fixture_count": 5,
  "network_uci_intended_change": false,
  "path_ownership_manifest": "reference/path-ownership.tsv",
  "payment_create_during_step": false,
  "provider_write_during_step": false,
  "public_access_routes_intended_change": true,
  "revision": "R02",
  "rollback_contract": "restore exact P29E2 baseline Caddyfile -> caddy validate -> systemctl restart caddy -> systemctl is-active -> referral routes return 404 again while billing routes and YooKassa webhook stay exposed",
  "runtime_impact": true,
  "same_class_skeleton": "STEP_050M07P29E2_R01_VM103_BILLING_API",
  "same_class_skeleton_sha256": "09a9a032f3c129920511411293478d161a1cff6d71c4ac207effab0809c6f4b4",
  "schema": "router-step-release-v1",
  "source_of_truth": "current_latest_vm103_machine_git_plus_exact_P29E2_R01_VM103_Caddy_skeleton",
  "step_class": "B",
  "step_id": "STEP_050M07P29E5_R02_VM103_REFERRAL_API",
  "target_caddy_sha256": "440de7afba51de52009fa476d2d406d027c504d07a59e6981d049abcb655a9d9",
  "target_environment_matrix": "reference/target-environment.tsv",
  "target_package_path": "payload/vm103-referral-api-target-package.tar.gz",
  "target_package_sha256": "a5fc8140ef01841d5cf1432e39b9800607f3bdeb8a5b9d6f7d64b407f07e5ab9",
  "touched_machines": [
    "VM103"
  ],
  "vm130_contract_commit": "fadde79bcc5756d478b8814f94ad16ad48fd25d2",
  "webhook_semantics_intended_change": false,
  "worker_entry": "scripts/worker.sh",
  "workflow_contract_version": 2,
  "packaging_correction": "R02 fixes installer.sha256 file format only; target payload is byte-identical to rehearsed R01 payload"
}
