{
  "generatedAt": "2026-06-07T08:34:34.580Z",
  "network": {
    "name": "Ethereum mainnet",
    "chainId": 1,
    "blockNumber": 25264357
  },
  "status": "safe-owner-list-required",
  "execute": false,
  "token": {
    "name": "Dark Coin",
    "symbol": "DRK",
    "contract": "0xF0F17A04B717d1cF07E4f75d3B84B0D1d0Bbf745",
    "currentKnownRoleHolder": "0x4b07D86cddE01400Fb302cDc1892a876E5Ba1D61"
  },
  "safeDeploymentRegistry": {
    "source": "https://github.com/safe-global/safe-deployments/tree/main/src/assets/v1.4.1",
    "version": "1.4.1",
    "network": "ethereum-mainnet",
    "chainId": 1,
    "contracts": {
      "safeSingleton": {
        "name": "Safe",
        "address": "0x41675C099F32341bf84BFc5382aF534df5C7461a",
        "expectedRuntimeCodeHash": "0x1fe2df852ba3299d6534ef416eefa406e56ced995bca886ab7a553e6d0c5e1c4"
      },
      "proxyFactory": {
        "name": "SafeProxyFactory",
        "address": "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
        "expectedRuntimeCodeHash": "0x50c3cdc4074750a7a974204a716c999edd37482f907608d960b2b025ee0b3317"
      },
      "compatibilityFallbackHandler": {
        "name": "CompatibilityFallbackHandler",
        "address": "0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99",
        "expectedRuntimeCodeHash": "0x7c6007a5d711cea8dfd5d91f5940ec29c7f200fe511eb1fc1397b367af3c42f9"
      }
    }
  },
  "safeContractChecks": [
    {
      "label": "safeSingleton",
      "address": "0x41675C099F32341bf84BFc5382aF534df5C7461a",
      "hasCode": true,
      "runtimeCodeHash": "0x1fe2df852ba3299d6534ef416eefa406e56ced995bca886ab7a553e6d0c5e1c4",
      "expectedRuntimeCodeHash": "0x1fe2df852ba3299d6534ef416eefa406e56ced995bca886ab7a553e6d0c5e1c4",
      "matchesExpectedRuntimeCodeHash": true
    },
    {
      "label": "proxyFactory",
      "address": "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
      "hasCode": true,
      "runtimeCodeHash": "0x50c3cdc4074750a7a974204a716c999edd37482f907608d960b2b025ee0b3317",
      "expectedRuntimeCodeHash": "0x50c3cdc4074750a7a974204a716c999edd37482f907608d960b2b025ee0b3317",
      "matchesExpectedRuntimeCodeHash": true
    },
    {
      "label": "compatibilityFallbackHandler",
      "address": "0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99",
      "hasCode": true,
      "runtimeCodeHash": "0x7c6007a5d711cea8dfd5d91f5940ec29c7f200fe511eb1fc1397b367af3c42f9",
      "expectedRuntimeCodeHash": "0x7c6007a5d711cea8dfd5d91f5940ec29c7f200fe511eb1fc1397b367af3c42f9",
      "matchesExpectedRuntimeCodeHash": true
    }
  ],
  "configuredAddressPreflight": {
    "candidateAddresses": [
      "0xfa4Cc3259f4b6AD71931B771412713Da5b020138",
      "0x4b07D86cddE01400Fb302cDc1892a876E5Ba1D61"
    ],
    "codeChecks": [
      {
        "label": "configured-or-candidate-address",
        "address": "0xfa4Cc3259f4b6AD71931B771412713Da5b020138",
        "hasCode": false,
        "runtimeCodeHash": null,
        "expectedRuntimeCodeHash": null,
        "matchesExpectedRuntimeCodeHash": null
      },
      {
        "label": "configured-or-candidate-address",
        "address": "0x4b07D86cddE01400Fb302cDc1892a876E5Ba1D61",
        "hasCode": false,
        "runtimeCodeHash": null,
        "expectedRuntimeCodeHash": null,
        "matchesExpectedRuntimeCodeHash": null
      }
    ],
    "decision": "current-configured-targets-are-not-safe-contracts"
  },
  "requestedSafePolicy": {
    "owners": [],
    "ownerCount": 0,
    "threshold": 0,
    "ownerCodeChecks": [],
    "validation": {
      "ok": false,
      "failures": [
        "At least three Safe owners are required for the production custody build packet.",
        "Threshold must be at least 2 for production custody."
      ],
      "warnings": [],
      "policy": {
        "minimumOwnerCount": 3,
        "minimumThreshold": 2,
        "recommended": "2-of-3 minimum; 3-of-5 preferred for long-lived production custody."
      }
    }
  },
  "deploymentEstimate": null,
  "deploymentPacket": null,
  "execution": null,
  "nextRoleTransferCommand": "Deploy a Safe first, then run node prepare-drk-role-custody.js --safe <SAFE_ADDRESS> --revoke-deployer --revoke-admin",
  "safetyBoundary": [
    "This artifact builds the Safe custody path; it is not proof that Safe custody is live unless execution.safeAddress and mined role-transfer receipts exist.",
    "Do not publish Safe custody claims until DRK roles are granted to the Safe and deployer roles are revoked where intended.",
    "Do not use an EOA as the Safe target.",
    "Safe deployment costs ETH and must be signed deliberately from a funded wallet.",
    "Role transfer remains a separate high-impact transaction plan after Safe deployment."
  ],
  "references": [
    "https://github.com/safe-global/safe-deployments",
    "https://docs.safe.global/reference-smart-account/deployment/SafeProxyFactory"
  ]
}
