{
  "api_contract": "sourcey.catalog-api/v1",
  "release_id": "sha256:5f55a0147eca9a82d821b7cfb73339dd8059c146b9acbb6ed66c9e3d40a8e1b0",
  "artifact_sha256": "sha256:ec393385ec4e7be15a393d925f0df78d54a12787f2995a84fad1b570583dac06",
  "data": {
    "revision_contract": "sourcey.agent-readiness-revision/v1alpha1",
    "agent_readiness_profile_id": "arp_01kzf0m4x8r3etq6ck2b79hsw5",
    "entity_id": "ent_01kyh8fpe29kn3bm05h7kyqyka",
    "scope": {
      "product": {
        "key": "digitalocean-cloud",
        "name": "DigitalOcean Cloud"
      },
      "funnel": {
        "key": "api-resource-management",
        "name": "API resource management"
      }
    },
    "catalog_binding": {
      "base_release_id": "sha256:8986cb1640fd748dd005e5c94c7b02d3f44a3d39ff6b72573091bd81af84c61e",
      "entity_revision_digest": "sha256:ae848b42b55678a40e1d909ec75667458026e40dffc7076f7915db2281bfd38a"
    },
    "declaration_revision_digest": "sha256:91235dfb63f4063038c5b50a97063a080ec3a94bddf505c6d34db37f19ff4874",
    "declaration": {
      "declaration_id": "declaration_digitalocean_api_resource_management",
      "provenance": {
        "repository": "sourcey/agent-ready-services",
        "commit": "ca383f7867c18d91567fcb8326be55f7411d9554",
        "path": "entities/di/digitalocean.yaml",
        "git_blob_oid": "4ebb13f6372cf86c945ff48f0af96d44a6d8a9da",
        "blob_digest": "sha256:34bc72536600756c4ca214d5f33773ce14873367cc245b8a6ab254904ff66f81"
      },
      "status": "community_declared"
    },
    "lifecycle": "active",
    "effective_from": "2026-09-06T08:47:58Z",
    "signals": [
      {
        "stage": "evaluate",
        "signal_code": "eligibility_decidability",
        "selector_group_id": "eligibility_decidability-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:04.573Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "service-terms"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:059e06c45b103c3621e86bf9c195db78897e39d20643eca2855ce32eec15743e",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:123f926bec14faa8f194f2ea72996091aded4781a8b28f9dd93c1f74ffb09192",
              "sha256:1efc1f44f4092028c127cb4678a621d476725da3d073a77153c650253656a617",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:d56274ac08a6fa8540a9666b2b3cb8b8b6a7325c510d0aa898765ebb35287205"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "service-terms"
            },
            "locators": [
              {
                "artifact_digest": "sha256:123f926bec14faa8f194f2ea72996091aded4781a8b28f9dd93c1f74ffb09192",
                "start_byte": 11643,
                "end_byte": 12436,
                "value_digest": "sha256:0606021edad9b53baad07d3e02496330f69023006b00c56ea94c21680064ec63"
              },
              {
                "artifact_digest": "sha256:123f926bec14faa8f194f2ea72996091aded4781a8b28f9dd93c1f74ffb09192",
                "start_byte": 7602,
                "end_byte": 8448,
                "value_digest": "sha256:78b7de19695ed2852173eaa287e4c0d8a45f1ff8882beee1fed6f7d99a4efcbc"
              }
            ]
          }
        ],
        "note": "DigitalOcean's terms establish eligibility criteria, including requiring users to be 18 years or older or have legal consent and capacity, and requiring account registration with name, email address, and a valid form of payment."
      },
      {
        "stage": "evaluate",
        "signal_code": "pricing_decidability",
        "selector_group_id": "pricing_decidability-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:11.691Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "pricing"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:60cb0af8d7034eb145da65a176f3847b63e2be8317d6889aa3b396c4d84eb1e6",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:1445123d77919b8ca5954823bfd658093ec0cdc539896f1161f9e17b3eba71bd",
              "sha256:2b0ffa105940a91e563093b63b6ca2b013477609c15753b03d77cf94147da9dd",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:9afefcad103149873e49f56d87b372be8860cc5b38a0fbfa0409ad57dca4a7df"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "pricing"
            },
            "locators": [
              {
                "artifact_digest": "sha256:1445123d77919b8ca5954823bfd658093ec0cdc539896f1161f9e17b3eba71bd",
                "start_byte": 9431,
                "end_byte": 10208,
                "value_digest": "sha256:d3d2a27603cdcbf7488e5707f6fd573319b7430c8ed0d0264d2dcd2ba878c043"
              },
              {
                "artifact_digest": "sha256:1445123d77919b8ca5954823bfd658093ec0cdc539896f1161f9e17b3eba71bd",
                "start_byte": 7854,
                "end_byte": 8637,
                "value_digest": "sha256:f1607aedde4767c9bc4eae43ae18e55928e53127123edd01ea5c6daa0869f098"
              }
            ]
          }
        ],
        "note": "Pricing rates and variables are explicitly listed across products, such as Inference starting at $0.05/M tokens, GPU Droplets from $1.91/GPU/hour, App Platform starting at $0/month, and Droplets starting at $4/month."
      },
      {
        "stage": "evaluate",
        "signal_code": "service_discovery",
        "selector_group_id": "service_discovery-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:07.075Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-overview"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:10a6429c2f4286fbc0980f1e5fce6d3598727325b45fa3692c7cc6ae847f71b6",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:19a3865a93c26d52ba8abc67c7c1b60d9554233dc666be527a22ec00770f036f",
              "sha256:2588184a33c839d2c8981650de089bb3ce6b92c3572d94886dbfb8ce9f4bf273",
              "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
              "sha256:86d61fc92db3a141f58bf9aca68692bca095ec7149ab22ed3f425c2cd58ebcff"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-overview"
            },
            "locators": [
              {
                "artifact_digest": "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
                "start_byte": 4770,
                "end_byte": 5570,
                "value_digest": "sha256:b759b762af7a670b5fb8c824979965063261924affbce567e6866bc27d4b9ee1"
              },
              {
                "artifact_digest": "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
                "start_byte": 5571,
                "end_byte": 6364,
                "value_digest": "sha256:9a7f51befd076f2b7637f12632acd3ad4360d31d542096bd2d96c131070193a3"
              }
            ]
          }
        ],
        "note": "DigitalOcean provides public entrypoints and reference documentation for its four primary APIs: DigitalOcean API, Spaces API, OAuth API, and Metadata API."
      },
      {
        "stage": "evaluate",
        "signal_code": "structured_evaluation_discovery",
        "selector_group_id": "structured_evaluation_discovery-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:34.800Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-overview"
          },
          {
            "node_kind": "resource",
            "node_id": "personal-access-tokens"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:10a6429c2f4286fbc0980f1e5fce6d3598727325b45fa3692c7cc6ae847f71b6",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:19a3865a93c26d52ba8abc67c7c1b60d9554233dc666be527a22ec00770f036f",
              "sha256:2588184a33c839d2c8981650de089bb3ce6b92c3572d94886dbfb8ce9f4bf273",
              "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
              "sha256:cc0dacc8e1a4eb5d2b285e55de57d3d520de46821c98742aacfa735c55975da7"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-overview"
            },
            "locators": [
              {
                "artifact_digest": "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
                "start_byte": 4770,
                "end_byte": 5570,
                "value_digest": "sha256:b759b762af7a670b5fb8c824979965063261924affbce567e6866bc27d4b9ee1"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:acce8b26c32c8cef83fc5eb63d5aa600a015d384c1dee61cb10127ebaa7e19aa",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
              "sha256:37da4043f230d7d81d3e2ea6613b98c0f9363445c794346a08184f8d188eb4dc",
              "sha256:8c8a45f9a09ab1da2d8d73a407dea95c4bc6abd89cae6d01829397557e3011d9",
              "sha256:b5afd9827aaa25de282101487d0ea0e8eb5343471d9c0da53ecb3f9f76c4a5ce"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "personal-access-tokens"
            },
            "locators": [
              {
                "artifact_digest": "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
                "start_byte": 4290,
                "end_byte": 5086,
                "value_digest": "sha256:5723228830d621c9a403c1c4adebed02e66fa4a7d8ee57793b0ee9bcf1f291ae"
              }
            ]
          }
        ],
        "note": "DigitalOcean explicitly provides a structured documentation index for AI agents at https://docs.digitalocean.com/llms.txt and offers Markdown versions of documentation pages."
      },
      {
        "stage": "evaluate",
        "signal_code": "terms_access",
        "selector_group_id": "terms_access-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:04.573Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "service-terms"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:059e06c45b103c3621e86bf9c195db78897e39d20643eca2855ce32eec15743e",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:123f926bec14faa8f194f2ea72996091aded4781a8b28f9dd93c1f74ffb09192",
              "sha256:1efc1f44f4092028c127cb4678a621d476725da3d073a77153c650253656a617",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:72c2c1ed06e67eda0db5e8659757db41218f86c16e0d09e52c2606249a944fd5"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "service-terms"
            },
            "locators": [
              {
                "artifact_digest": "sha256:123f926bec14faa8f194f2ea72996091aded4781a8b28f9dd93c1f74ffb09192",
                "start_byte": 9255,
                "end_byte": 10057,
                "value_digest": "sha256:5901d0c129f109c43c7dd33e54a452d213a9d8a4bd4919f0fd8c712a5ad9d1ee"
              },
              {
                "artifact_digest": "sha256:123f926bec14faa8f194f2ea72996091aded4781a8b28f9dd93c1f74ffb09192",
                "start_byte": 6797,
                "end_byte": 7601,
                "value_digest": "sha256:fed3c9365728c35075c2af423c5132943e3175f9ac6d1df8138c62595796a47a"
              }
            ]
          }
        ],
        "note": "Applicable commitment terms are retrievable and readable via DigitalOcean's Legal Terms of Service Agreement, which incorporates by reference the Data Processing Agreement, Acceptable Use Policy, Privacy Policy, and Service Terms."
      },
      {
        "stage": "evaluate",
        "signal_code": "verified_web_agent_access",
        "selector_group_id": "verified_web_agent_access-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:34.800Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-overview"
          },
          {
            "node_kind": "resource",
            "node_id": "personal-access-tokens"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:10a6429c2f4286fbc0980f1e5fce6d3598727325b45fa3692c7cc6ae847f71b6",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:19a3865a93c26d52ba8abc67c7c1b60d9554233dc666be527a22ec00770f036f",
              "sha256:2588184a33c839d2c8981650de089bb3ce6b92c3572d94886dbfb8ce9f4bf273",
              "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
              "sha256:cc0dacc8e1a4eb5d2b285e55de57d3d520de46821c98742aacfa735c55975da7"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-overview"
            },
            "locators": [
              {
                "artifact_digest": "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
                "start_byte": 4770,
                "end_byte": 5570,
                "value_digest": "sha256:b759b762af7a670b5fb8c824979965063261924affbce567e6866bc27d4b9ee1"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:acce8b26c32c8cef83fc5eb63d5aa600a015d384c1dee61cb10127ebaa7e19aa",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
              "sha256:37da4043f230d7d81d3e2ea6613b98c0f9363445c794346a08184f8d188eb4dc",
              "sha256:8c8a45f9a09ab1da2d8d73a407dea95c4bc6abd89cae6d01829397557e3011d9",
              "sha256:b5afd9827aaa25de282101487d0ea0e8eb5343471d9c0da53ecb3f9f76c4a5ce"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "personal-access-tokens"
            },
            "locators": [
              {
                "artifact_digest": "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
                "start_byte": 4290,
                "end_byte": 5086,
                "value_digest": "sha256:5723228830d621c9a403c1c4adebed02e66fa4a7d8ee57793b0ee9bcf1f291ae"
              }
            ]
          }
        ],
        "note": "DigitalOcean explicitly directs AI web agents to its structured documentation index at https://docs.digitalocean.com/llms.txt and Markdown page endpoints."
      },
      {
        "stage": "sign_up",
        "signal_code": "access_control_operability",
        "selector_group_id": "access_control_operability-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:50:11.148Z",
        "tested_surfaces": [
          {
            "node_kind": "endpoint",
            "node_id": "registration"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The registration endpoint returned a Cloudflare block page with HTTP status 403. Because this is an error and challenge response, it does not resolve the access control operability finding."
      },
      {
        "stage": "sign_up",
        "signal_code": "access_entrypoint_stability",
        "selector_group_id": "access_entrypoint_stability-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:50:52.049Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "account-access-guide"
          },
          {
            "node_kind": "resource",
            "node_id": "cloud-signup"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:0b4a1ed4a9d49c19a7640f7e39648a5175ec07c0584029662dce0028d68c0b49",
                "capture_rung": "headless"
              }
            ],
            "artifact_digests": [
              "sha256:06fc7a1ed7fb61ae6679f8c3cddb6d6e23add14f78d4acbe7e82d7c7e1d29f65",
              "sha256:39b3a18f4a01ca131d737c9363a6dd46dedbe1b84aec5c10881ff1a34b1f29e0",
              "sha256:3f755de43f61caf61436c8ae97fa937fb48ca4a29fd366123c1d5ad20f73eec8",
              "sha256:44f67bad854c47dcd59da01b92061355e554575dbb5b6ec5f7537ff2b05ac3c5",
              "sha256:600326d36e208649cf5b38be7a191d387978aaa0c07f8468fadab647488c4147",
              "sha256:e5f299c1b28a0b34babeb9707390fd4cd108ef96872743935d32c4a2a9b79097"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "account-access-guide"
            },
            "locators": [
              {
                "artifact_digest": "sha256:e5f299c1b28a0b34babeb9707390fd4cd108ef96872743935d32c4a2a9b79097",
                "start_byte": 11165,
                "end_byte": 11967,
                "value_digest": "sha256:3dd1b9a8a203f2ee430d2161a9d165f89a0a44bf50308a18701a0f2124aa3415"
              }
            ]
          }
        ],
        "note": "DigitalOcean documentation explicitly provides a canonical access route directing users who do not have an account to sign up using the DigitalOcean Control Panel or doctl CLI."
      },
      {
        "stage": "sign_up",
        "signal_code": "captcha_compatible_access",
        "selector_group_id": "captcha_compatible_access-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:50:52.049Z",
        "tested_surfaces": [
          {
            "node_kind": "endpoint",
            "node_id": "registration"
          },
          {
            "node_kind": "resource",
            "node_id": "account-access-guide"
          },
          {
            "node_kind": "resource",
            "node_id": "cloud-signup"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The registration targets returned Cloudflare block pages, and the documentation target does not explicitly declare CAPTCHA requirements. Admissible evidence does not resolve whether access requires an unsupported CAPTCHA."
      },
      {
        "stage": "sign_up",
        "signal_code": "delegated_identity_access",
        "selector_group_id": "delegated_identity_access-primary",
        "value": "partial",
        "observed_at": "2026-09-06T08:51:34.800Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "personal-access-tokens"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:acce8b26c32c8cef83fc5eb63d5aa600a015d384c1dee61cb10127ebaa7e19aa",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
              "sha256:37da4043f230d7d81d3e2ea6613b98c0f9363445c794346a08184f8d188eb4dc",
              "sha256:8c8a45f9a09ab1da2d8d73a407dea95c4bc6abd89cae6d01829397557e3011d9",
              "sha256:d004e48483a506c757c3f172aa9ebc72fe9a2a03568052ef244e95109b515282"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "personal-access-tokens"
            },
            "locators": [
              {
                "artifact_digest": "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
                "start_byte": 5087,
                "end_byte": 5889,
                "value_digest": "sha256:6cea1115ba455223691158eefe556915b5eb3543260638059445d8ee4e64e499"
              },
              {
                "artifact_digest": "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
                "start_byte": 6690,
                "end_byte": 7490,
                "value_digest": "sha256:6a229d18f4e389e2932cd135f98eb256c52b2d647b3e4e7d1f1309407d9b8248"
              }
            ]
          }
        ],
        "note": "DigitalOcean provides personal access tokens with custom scopes and expiration settings, but token creation requires logging into the Control Panel and manually generating the token."
      },
      {
        "stage": "sign_up",
        "signal_code": "phone_verification_compatible",
        "selector_group_id": "phone_verification_compatible-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:50:52.049Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "account-access-guide"
          },
          {
            "node_kind": "resource",
            "node_id": "cloud-signup"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The registration endpoint returned a Cloudflare block page, and droplet setup documentation does not address phone verification. The retained evidence does not establish whether phone verification applies or is compatible."
      },
      {
        "stage": "pay",
        "signal_code": "checkout_operability",
        "selector_group_id": "checkout_operability-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:51:39.470Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "billing-checkout"
          },
          {
            "node_kind": "resource",
            "node_id": "readiness-1fac3de1ea82adc8a281ea3f3224ba5fe051ec585a30748fa13495f0d8db102f"
          },
          {
            "node_kind": "resource",
            "node_id": "readiness-38ac9cba1fc5f5f32a94af7307a6e0f09887bd79aaedfdc203e639bb6955ff01"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "Documentation describes adding payment methods and paying balances, but does not provide details on deterministic checkout construction and handoff resumption for an agent."
      },
      {
        "stage": "pay",
        "signal_code": "commitment_disclosure",
        "selector_group_id": "commitment_disclosure-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:11.691Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "pricing"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:60cb0af8d7034eb145da65a176f3847b63e2be8317d6889aa3b396c4d84eb1e6",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:1445123d77919b8ca5954823bfd658093ec0cdc539896f1161f9e17b3eba71bd",
              "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
              "sha256:9afefcad103149873e49f56d87b372be8860cc5b38a0fbfa0409ad57dca4a7df",
              "sha256:e1d16b9daa32311b845e6a8272d2b7de61e8a45a6ad6691bda968f2ed3e6ed02"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "pricing"
            },
            "locators": [
              {
                "artifact_digest": "sha256:1445123d77919b8ca5954823bfd658093ec0cdc539896f1161f9e17b3eba71bd",
                "start_byte": 15787,
                "end_byte": 16585,
                "value_digest": "sha256:1e515a940ec7407407316b7801ccb731fad40ee667ca4b30a3d3e96dda2ede00"
              },
              {
                "artifact_digest": "sha256:1445123d77919b8ca5954823bfd658093ec0cdc539896f1161f9e17b3eba71bd",
                "start_byte": 7854,
                "end_byte": 8637,
                "value_digest": "sha256:f1607aedde4767c9bc4eae43ae18e55928e53127123edd01ea5c6daa0869f098"
              }
            ]
          }
        ],
        "note": "DigitalOcean discloses flat and usage-based pricing on its pricing page with monthly caps and currency in USD, including automated billing on the first day of each month or upon reaching a threshold."
      },
      {
        "stage": "pay",
        "signal_code": "payment_authorization",
        "selector_group_id": "payment_authorization-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:51:39.470Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "billing-checkout"
          },
          {
            "node_kind": "resource",
            "node_id": "readiness-1fac3de1ea82adc8a281ea3f3224ba5fe051ec585a30748fa13495f0d8db102f"
          },
          {
            "node_kind": "resource",
            "node_id": "readiness-38ac9cba1fc5f5f32a94af7307a6e0f09887bd79aaedfdc203e639bb6955ff01"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "Docs detail adding credit cards or third-party payment providers to submit payments, but do not state a delegated payment authorization rail for agents."
      },
      {
        "stage": "pay",
        "signal_code": "self_service_purchase",
        "selector_group_id": "self_service_purchase-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:39.470Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "billing-checkout"
          },
          {
            "node_kind": "resource",
            "node_id": "readiness-1fac3de1ea82adc8a281ea3f3224ba5fe051ec585a30748fa13495f0d8db102f"
          },
          {
            "node_kind": "resource",
            "node_id": "readiness-38ac9cba1fc5f5f32a94af7307a6e0f09887bd79aaedfdc203e639bb6955ff01"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:c7078e3195db8eb813ced125c9f4bce215f0fdaf240f9b26268a82f97d3552e1",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:1b83bd3f23f48e5eb2cc09ea80d618157f780856734e68b86a8ce0f7399f06b1",
              "sha256:7968eebbf462819b947d4684cf3ef57fe0e59557be8b467cd572beed9a945fb7",
              "sha256:afbee00050739de58644fd97662aca9dc1fbab0e81b09994a216a3e29f7f63c2",
              "sha256:b1b7df7a8bc8ccbe7d87b00bd919ccc32ac3091b6ba11d030a6b46371c308e28"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "readiness-1fac3de1ea82adc8a281ea3f3224ba5fe051ec585a30748fa13495f0d8db102f"
            },
            "locators": [
              {
                "artifact_digest": "sha256:1b83bd3f23f48e5eb2cc09ea80d618157f780856734e68b86a8ce0f7399f06b1",
                "start_byte": 9865,
                "end_byte": 10137,
                "value_digest": "sha256:d362617ab0cb74664d4bfb967b1458f9bf70fb45e8ac8296e8e380cced147a3f"
              },
              {
                "artifact_digest": "sha256:1b83bd3f23f48e5eb2cc09ea80d618157f780856734e68b86a8ce0f7399f06b1",
                "start_byte": 9523,
                "end_byte": 9864,
                "value_digest": "sha256:175d4a98ce7a9d018eb857859c7360b39921704d81cec5a93933b052d54cab37"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:52116867a54d21633093e43da4c00e14deedde2cb4abbb4632530009ee08e278",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:03a60e088e6e1347243be381526a7c6f56a1b810feb38971847a786f48a55f62",
              "sha256:32fb812288b5e4161cb4d95ba98742828111d4258d988c83d6db4863ba5ab01e",
              "sha256:4da8aa74b8c22108d31d2a6c6db0f3c7036e57eff98c0ad1086d7c035d74fd4b",
              "sha256:589227e18d23a21b0cb6fabb7084ea38af5f0a4a5426f3cf9bedb5c2fbab7a72"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "readiness-38ac9cba1fc5f5f32a94af7307a6e0f09887bd79aaedfdc203e639bb6955ff01"
            },
            "locators": [
              {
                "artifact_digest": "sha256:32fb812288b5e4161cb4d95ba98742828111d4258d988c83d6db4863ba5ab01e",
                "start_byte": 7854,
                "end_byte": 7996,
                "value_digest": "sha256:4ccca4a4ced7880d6d6ba1d4c16eafd4677463d32f5fe885d464bb5d657e137c"
              }
            ]
          }
        ],
        "note": "DigitalOcean bills monthly for the resources used and documents a self-service payment procedure on the Billing page: choose a saved card, add a new card or use a third-party provider, then Submit Payment. No vendor decision point stands between adding a payment method and paid use."
      },
      {
        "stage": "provision",
        "signal_code": "access_material_delivery",
        "selector_group_id": "access_material_delivery-primary",
        "value": "partial",
        "observed_at": "2026-09-06T08:51:34.800Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "personal-access-tokens"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:acce8b26c32c8cef83fc5eb63d5aa600a015d384c1dee61cb10127ebaa7e19aa",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
              "sha256:37da4043f230d7d81d3e2ea6613b98c0f9363445c794346a08184f8d188eb4dc",
              "sha256:8c8a45f9a09ab1da2d8d73a407dea95c4bc6abd89cae6d01829397557e3011d9",
              "sha256:be616af33506755592095a9ebbe53866efc371d696ee617294ccdcfcbe35c351"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "personal-access-tokens"
            },
            "locators": [
              {
                "artifact_digest": "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
                "start_byte": 8289,
                "end_byte": 9088,
                "value_digest": "sha256:fcc1df8b085c4c42ca70d3cbeed8de22335390c99cf32e46729cd6a421a37225"
              },
              {
                "artifact_digest": "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
                "start_byte": 9089,
                "end_byte": 9874,
                "value_digest": "sha256:d25992fdc99cb55d3688b428a0f023554fd28ec2443326fb1612ac0267665c09"
              }
            ]
          }
        ],
        "note": "Personal access tokens can be created in the DigitalOcean Control Panel. DigitalOcean documentation states that when creating a token, users must save the displayed token because the secret is only shown once for security purposes."
      },
      {
        "stage": "provision",
        "signal_code": "provisioning_completion",
        "selector_group_id": "provisioning_completion-primary",
        "value": "partial",
        "observed_at": "2026-09-06T08:50:41.517Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "droplet-provisioning"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:e890237079a240d46ffc53800e04f838e50bec8ed271022edac89ec009a56f9a",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:2917b1c0747600f72edab6b4cfcb8458bdb3dd3b0afae1648a7966723f13f93e",
              "sha256:3f19ca3dba73576eaf84a4b6534e854d1d85f6a34383960279f6deaa6ac76ddb",
              "sha256:b0c7dd816f9baa9820687565048b4e999641ff6a9112bc41433cd4b43922da9f",
              "sha256:e80aed2ced75a8a379f344d17ccf70506b4ef7bc4ef1715bbbe18051ed6a525d"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "droplet-provisioning"
            },
            "locators": [
              {
                "artifact_digest": "sha256:2917b1c0747600f72edab6b4cfcb8458bdb3dd3b0afae1648a7966723f13f93e",
                "start_byte": 23231,
                "end_byte": 24031,
                "value_digest": "sha256:61c54758f83b638fefc5c954ab412550059467b833aa5a7d8dee3dd1270a58bb"
              }
            ]
          }
        ],
        "note": "When creating a Droplet in the DigitalOcean Control Panel, a progress bar displays how close the Droplet is to being ready. The documentation does not detail asynchronous failure reconciliation, terminal failure states, or explicit bounds."
      },
      {
        "stage": "provision",
        "signal_code": "provisioning_operability",
        "selector_group_id": "provisioning_operability-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:50:41.517Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "droplet-provisioning"
          },
          {
            "node_kind": "resource",
            "node_id": "personal-access-tokens"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:e890237079a240d46ffc53800e04f838e50bec8ed271022edac89ec009a56f9a",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:2917b1c0747600f72edab6b4cfcb8458bdb3dd3b0afae1648a7966723f13f93e",
              "sha256:3f19ca3dba73576eaf84a4b6534e854d1d85f6a34383960279f6deaa6ac76ddb",
              "sha256:6db47af52149e43197bad367cc400fdf555b63aa7cfdef458ae680c6c08af9d1",
              "sha256:e80aed2ced75a8a379f344d17ccf70506b4ef7bc4ef1715bbbe18051ed6a525d"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "droplet-provisioning"
            },
            "locators": [
              {
                "artifact_digest": "sha256:2917b1c0747600f72edab6b4cfcb8458bdb3dd3b0afae1648a7966723f13f93e",
                "start_byte": 24834,
                "end_byte": 25630,
                "value_digest": "sha256:1f0e9be46a9f58e96771b2138d59ffafa4d4f6e80415066fbf6a5a7df5274372"
              },
              {
                "artifact_digest": "sha256:2917b1c0747600f72edab6b4cfcb8458bdb3dd3b0afae1648a7966723f13f93e",
                "start_byte": 26422,
                "end_byte": 27153,
                "value_digest": "sha256:100be5cb169f3b7544c080bfbc80060f05369885b76ae170df457cbfb1b3d395"
              }
            ]
          }
        ],
        "note": "Droplet provisioning is machine-triggerable and can be initiated directly via the DigitalOcean CLI using `doctl compute droplet create` or via the DigitalOcean API by sending a POST request to `https://api.digitalocean.com/v2/droplets`."
      },
      {
        "stage": "operate",
        "signal_code": "agent_protocol_interface",
        "selector_group_id": "agent_protocol_interface-primary",
        "value": "unknown",
        "observed_at": "2026-09-06T08:51:07.075Z",
        "tested_surfaces": [
          {
            "node_kind": "interface",
            "node_id": "resource-api"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [],
        "note": "The retained excerpts describe REST or RPC interfaces, SDKs and CLIs for DigitalOcean Cloud; they contain no first-party statement that an agent-native protocol interface is absent, and several navigation excerpts mention MCP resources without establishing coverage of the assessed targets."
      },
      {
        "stage": "operate",
        "signal_code": "credential_lifecycle",
        "selector_group_id": "credential_lifecycle-primary",
        "value": "partial",
        "observed_at": "2026-09-06T08:51:34.800Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "personal-access-tokens"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:acce8b26c32c8cef83fc5eb63d5aa600a015d384c1dee61cb10127ebaa7e19aa",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
              "sha256:2a72923e1ac4ea03179e6b12818a8e91fc7528f4561ae6fa204cf22bdc3740f4",
              "sha256:37da4043f230d7d81d3e2ea6613b98c0f9363445c794346a08184f8d188eb4dc",
              "sha256:8c8a45f9a09ab1da2d8d73a407dea95c4bc6abd89cae6d01829397557e3011d9"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "personal-access-tokens"
            },
            "locators": [
              {
                "artifact_digest": "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
                "start_byte": 5087,
                "end_byte": 5889,
                "value_digest": "sha256:6cea1115ba455223691158eefe556915b5eb3543260638059445d8ee4e64e499"
              },
              {
                "artifact_digest": "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
                "start_byte": 9089,
                "end_byte": 9874,
                "value_digest": "sha256:d25992fdc99cb55d3688b428a0f023554fd28ec2443326fb1612ac0267665c09"
              }
            ]
          }
        ],
        "note": "Personal access tokens function like passwords, can be generated with custom scopes and specific expirations, and can be deleted if compromised to revoke access or regenerated. However, recovery or automated rotation within delegated authority is not fully documented."
      },
      {
        "stage": "operate",
        "signal_code": "failure_contract",
        "selector_group_id": "failure_contract-primary",
        "value": "partial",
        "observed_at": "2026-09-06T08:50:27.901Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "api-reference"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:46c75fac0e8ee8679949a36e0a513ebb8a8587517046c673373e1f01a5bfbfb9",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:1b0a3140bee6388b8c83dc58bab3eebdd5d708aa9ab889b9a30e4e4f38b8883e",
              "sha256:66054a6f391a97e87fe779916bf00a8a1d7fa96ab6673a300c43218a60ab35d7",
              "sha256:7f5b1fcdc8b9644e31e57f55ed0662026e9e2f0ff824a00e79d45ab57d125ab8",
              "sha256:ff563ba5458b971c18fda575ab48d3f487cd1cedbcdfc94d1195d3fb5abde770"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-reference"
            },
            "locators": [
              {
                "artifact_digest": "sha256:1b0a3140bee6388b8c83dc58bab3eebdd5d708aa9ab889b9a30e4e4f38b8883e",
                "start_byte": 14838,
                "end_byte": 15623,
                "value_digest": "sha256:87279f857ea738a81a154a60192364e033df182d2461c6b836bb7c0cc0c8697d"
              },
              {
                "artifact_digest": "sha256:1b0a3140bee6388b8c83dc58bab3eebdd5d708aa9ab889b9a30e4e4f38b8883e",
                "start_byte": 19618,
                "end_byte": 20417,
                "value_digest": "sha256:b9ccb0c60dc4ceba33121eaa2e85336945bafec94e8e528f7c0809fa0fca0906"
              }
            ]
          }
        ],
        "note": "DigitalOcean documents structured 4xx/5xx errors and rate-limit headers with 429 retry-after; the selected quotes do not establish idempotency, cancellation or reconciliation semantics."
      },
      {
        "stage": "operate",
        "signal_code": "operation_authentication",
        "selector_group_id": "operation_authentication-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:34.800Z",
        "tested_surfaces": [
          {
            "node_kind": "resource",
            "node_id": "personal-access-tokens"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:acce8b26c32c8cef83fc5eb63d5aa600a015d384c1dee61cb10127ebaa7e19aa",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
              "sha256:1906c0f4e0c866cc26e2b2d151c41475bdaa2a26ea827eb3073847854b85c71e",
              "sha256:37da4043f230d7d81d3e2ea6613b98c0f9363445c794346a08184f8d188eb4dc",
              "sha256:8c8a45f9a09ab1da2d8d73a407dea95c4bc6abd89cae6d01829397557e3011d9"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "personal-access-tokens"
            },
            "locators": [
              {
                "artifact_digest": "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
                "start_byte": 5087,
                "end_byte": 5889,
                "value_digest": "sha256:6cea1115ba455223691158eefe556915b5eb3543260638059445d8ee4e64e499"
              },
              {
                "artifact_digest": "sha256:0ba11fbf20917b5fb357e50497caba43c69cfadc14ba1d56afe43ae2349450e4",
                "start_byte": 5890,
                "end_byte": 6689,
                "value_digest": "sha256:65eecc4c4b98381f49184e2e0c1803050edbf09256471f972e23eb22e9371557"
              }
            ]
          }
        ],
        "note": "DigitalOcean API requests authenticate using a personal access token passed as a Bearer token in the Authorization header. Scoped authority is supported via custom CRUD scopes (Create, Read, Update, Delete) mapped to resource types."
      },
      {
        "stage": "operate",
        "signal_code": "operation_contract",
        "selector_group_id": "operation_contract-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:07.075Z",
        "tested_surfaces": [
          {
            "node_kind": "interface",
            "node_id": "resource-api"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:10a6429c2f4286fbc0980f1e5fce6d3598727325b45fa3692c7cc6ae847f71b6",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:19a3865a93c26d52ba8abc67c7c1b60d9554233dc666be527a22ec00770f036f",
              "sha256:2588184a33c839d2c8981650de089bb3ce6b92c3572d94886dbfb8ce9f4bf273",
              "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
              "sha256:bd7e7fbfd8c71e22ffc893ffa68481b732d7735828be5129ab61e5701c300a64"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-overview"
            },
            "locators": [
              {
                "artifact_digest": "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
                "start_byte": 5571,
                "end_byte": 6364,
                "value_digest": "sha256:9a7f51befd076f2b7637f12632acd3ad4360d31d542096bd2d96c131070193a3"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:e890237079a240d46ffc53800e04f838e50bec8ed271022edac89ec009a56f9a",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:2917b1c0747600f72edab6b4cfcb8458bdb3dd3b0afae1648a7966723f13f93e",
              "sha256:3f19ca3dba73576eaf84a4b6534e854d1d85f6a34383960279f6deaa6ac76ddb",
              "sha256:a84133f99b9a296453b901c3f0aac9b3f1e7c690422a752ef233a9028293f407",
              "sha256:e80aed2ced75a8a379f344d17ccf70506b4ef7bc4ef1715bbbe18051ed6a525d"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "droplet-provisioning"
            },
            "locators": [
              {
                "artifact_digest": "sha256:2917b1c0747600f72edab6b4cfcb8458bdb3dd3b0afae1648a7966723f13f93e",
                "start_byte": 26422,
                "end_byte": 27153,
                "value_digest": "sha256:100be5cb169f3b7544c080bfbc80060f05369885b76ae170df457cbfb1b3d395"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:46c75fac0e8ee8679949a36e0a513ebb8a8587517046c673373e1f01a5bfbfb9",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:1b0a3140bee6388b8c83dc58bab3eebdd5d708aa9ab889b9a30e4e4f38b8883e",
              "sha256:63a2b792d951af9858122bf5b604ab677d376419de3c47080ea636e6eb26f503",
              "sha256:66054a6f391a97e87fe779916bf00a8a1d7fa96ab6673a300c43218a60ab35d7",
              "sha256:7f5b1fcdc8b9644e31e57f55ed0662026e9e2f0ff824a00e79d45ab57d125ab8"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-reference"
            },
            "locators": [
              {
                "artifact_digest": "sha256:1b0a3140bee6388b8c83dc58bab3eebdd5d708aa9ab889b9a30e4e4f38b8883e",
                "start_byte": 15624,
                "end_byte": 16424,
                "value_digest": "sha256:d237620b904cc47e5b1448a621647e8a34f7fd9f590dbae981cb77cd6fbf9f52"
              }
            ]
          }
        ],
        "note": "API endpoints, request headers, JSON request/response formats, parameters, and error objects are documented with stable schemas and examples. For Droplet provisioning, required fields (region, size, image) and cURL/SDK request payloads are explicitly defined."
      },
      {
        "stage": "operate",
        "signal_code": "target_interface_access",
        "selector_group_id": "target_interface_access-primary",
        "value": "yes",
        "observed_at": "2026-09-06T08:51:07.075Z",
        "tested_surfaces": [
          {
            "node_kind": "interface",
            "node_id": "resource-api"
          }
        ],
        "assessment_method": {
          "name": "public-semantic-assessment",
          "version": "2026-09-06",
          "method_digest": "sha256:02ec902925d3816c86a32a3d15dc2e7af6ce9931c24b9cf264063e596952d1c4"
        },
        "determination_bases": [
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:46c75fac0e8ee8679949a36e0a513ebb8a8587517046c673373e1f01a5bfbfb9",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:1b0a3140bee6388b8c83dc58bab3eebdd5d708aa9ab889b9a30e4e4f38b8883e",
              "sha256:26b520600dee7efbfefef9b6ca47040a563ab6a4bde9f425a9a54a062a2d3fb7",
              "sha256:66054a6f391a97e87fe779916bf00a8a1d7fa96ab6673a300c43218a60ab35d7",
              "sha256:7f5b1fcdc8b9644e31e57f55ed0662026e9e2f0ff824a00e79d45ab57d125ab8"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-reference"
            },
            "locators": [
              {
                "artifact_digest": "sha256:1b0a3140bee6388b8c83dc58bab3eebdd5d708aa9ab889b9a30e4e4f38b8883e",
                "start_byte": 11652,
                "end_byte": 12451,
                "value_digest": "sha256:260c5b83af150746fbd9679c2505f1a69c0a7caa96660329f01eb9d855a56f2e"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:10a6429c2f4286fbc0980f1e5fce6d3598727325b45fa3692c7cc6ae847f71b6",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:19a3865a93c26d52ba8abc67c7c1b60d9554233dc666be527a22ec00770f036f",
              "sha256:2588184a33c839d2c8981650de089bb3ce6b92c3572d94886dbfb8ce9f4bf273",
              "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
              "sha256:bd7e7fbfd8c71e22ffc893ffa68481b732d7735828be5129ab61e5701c300a64"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "api-overview"
            },
            "locators": [
              {
                "artifact_digest": "sha256:6b46f0c4028c5ad07c610fcf8642fbb3bfa18318e1f103f6a125c90ecfd16622",
                "start_byte": 5571,
                "end_byte": 6364,
                "value_digest": "sha256:9a7f51befd076f2b7637f12632acd3ad4360d31d542096bd2d96c131070193a3"
              }
            ]
          },
          {
            "kind": "explicit_first_party_declaration",
            "captures": [
              {
                "retained_capture_digest": "sha256:e890237079a240d46ffc53800e04f838e50bec8ed271022edac89ec009a56f9a",
                "capture_rung": "http"
              }
            ],
            "artifact_digests": [
              "sha256:2917b1c0747600f72edab6b4cfcb8458bdb3dd3b0afae1648a7966723f13f93e",
              "sha256:3f19ca3dba73576eaf84a4b6534e854d1d85f6a34383960279f6deaa6ac76ddb",
              "sha256:a84133f99b9a296453b901c3f0aac9b3f1e7c690422a752ef233a9028293f407",
              "sha256:e80aed2ced75a8a379f344d17ccf70506b4ef7bc4ef1715bbbe18051ed6a525d"
            ],
            "source_surface": {
              "node_kind": "resource",
              "node_id": "droplet-provisioning"
            },
            "locators": [
              {
                "artifact_digest": "sha256:2917b1c0747600f72edab6b4cfcb8458bdb3dd3b0afae1648a7966723f13f93e",
                "start_byte": 26422,
                "end_byte": 27153,
                "value_digest": "sha256:100be5cb169f3b7544c080bfbc80060f05369885b76ae170df457cbfb1b3d395"
              }
            ]
          }
        ],
        "note": "Essential management targets are operable programmatically via stable HTTP REST APIs, the official doctl CLI, and official SDKs such as PyDo and Godo."
      }
    ],
    "revision_digest": "sha256:cb8d24ee4b88ace6ed3697623a1d4d2fe67be3ef0315b2a076933f735dd3702f"
  }
}
