{
  "contract": "sourcey.site-record/v1alpha1",
  "release_id": "sha256:5f55a0147eca9a82d821b7cfb73339dd8059c146b9acbb6ed66c9e3d40a8e1b0",
  "snapshot_id": "sha256:fbf4583b80f8936d9b7b75906adc86f38f5612cd0a7329839daea7b71ad2b9ce",
  "artifact_sha256": "sha256:ec393385ec4e7be15a393d925f0df78d54a12787f2995a84fad1b570583dac06",
  "data": {
    "entity_id": "ent_01kyh8fpe29kn3bm05h7kyqyka",
    "entity_slug": "digitalocean",
    "profile": {
      "projection_contract": "sourcey.agent-readiness-projection/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"
      },
      "surface_catalog": {
        "assessment_targets": [
          {
            "target_id": "service-use",
            "name": "Create and manage DigitalOcean Droplets through the API",
            "interface_ids": [
              "resource-api"
            ]
          }
        ],
        "participants": [
          {
            "participant_id": "digitalocean",
            "roles": [
              "access_operator",
              "identity_provider",
              "operations_provider",
              "payment_provider",
              "provisioning_provider",
              "subject"
            ],
            "identity": {
              "entity_id": "ent_01kyh8fpe29kn3bm05h7kyqyka"
            }
          }
        ],
        "resources": [
          {
            "resource_id": "account-access-guide",
            "uri": "https://docs.digitalocean.com/products/droplets/getting-started/recommended-droplet-setup/",
            "roles": [
              "access",
              "documentation"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "api-overview",
            "uri": "https://docs.digitalocean.com/reference/api/",
            "roles": [
              "discovery",
              "documentation",
              "operations"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "api-reference",
            "uri": "https://docs.digitalocean.com/reference/api/reference/public-apis/",
            "roles": [
              "documentation",
              "operations",
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "billing-checkout",
            "uri": "https://docs.digitalocean.com/platform/billing/manage-payment-methods/",
            "roles": [
              "checkout",
              "documentation"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "cloud-signup",
            "uri": "https://cloud.digitalocean.com/registrations/new",
            "roles": [
              "access"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "droplet-provisioning",
            "uri": "https://docs.digitalocean.com/products/droplets/how-to/create/",
            "roles": [
              "documentation",
              "operations",
              "provisioning",
              "status"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "personal-access-tokens",
            "uri": "https://docs.digitalocean.com/reference/api/create-personal-access-token/",
            "roles": [
              "authentication",
              "descriptor",
              "documentation",
              "provisioning"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "pricing",
            "uri": "https://www.digitalocean.com/pricing",
            "roles": [
              "pricing"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "readiness-1fac3de1ea82adc8a281ea3f3224ba5fe051ec585a30748fa13495f0d8db102f",
            "uri": "https://docs.digitalocean.com/platform/billing/pay-bills",
            "roles": [
              "checkout",
              "documentation"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "readiness-38ac9cba1fc5f5f32a94af7307a6e0f09887bd79aaedfdc203e639bb6955ff01",
            "uri": "https://docs.digitalocean.com/platform/billing",
            "roles": [
              "checkout",
              "documentation"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "service-terms",
            "uri": "https://www.digitalocean.com/legal/terms-of-service-agreement",
            "roles": [
              "terms"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "resource_id": "support",
            "uri": "https://docs.digitalocean.com/support/",
            "roles": [
              "documentation",
              "recovery"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          }
        ],
        "endpoints": [
          {
            "endpoint_id": "digitalocean-api",
            "uri": "https://api.digitalocean.com/v2",
            "transport": "http",
            "roles": [
              "service",
              "status"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "endpoint_id": "registration",
            "uri": "https://cloud.digitalocean.com/registrations/new",
            "transport": "http",
            "roles": [
              "registration"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          }
        ],
        "interfaces": [
          {
            "interface_id": "api-authentication",
            "modality": "network_api",
            "functions": [
              "authentication"
            ],
            "endpoint_ids": [],
            "resource_ids": [
              "personal-access-tokens"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          },
          {
            "interface_id": "resource-api",
            "modality": "network_api",
            "functions": [
              "service_operation"
            ],
            "endpoint_ids": [
              "digitalocean-api"
            ],
            "resource_ids": [
              "api-overview",
              "api-reference",
              "droplet-provisioning"
            ],
            "operated_by_participant_id": "digitalocean",
            "standard_bindings": []
          }
        ],
        "relations": [
          {
            "relation_id": "authentication-authenticates-api",
            "kind": "authenticates",
            "from": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "resource-api"
            }
          },
          {
            "relation_id": "overview-describes-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "api-overview"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "resource-api"
            }
          },
          {
            "relation_id": "provisioning-describes-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "droplet-provisioning"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "resource-api"
            }
          },
          {
            "relation_id": "signup-precedes-authentication",
            "kind": "precedes",
            "from": {
              "node_kind": "resource",
              "node_id": "cloud-signup"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "api-authentication"
            }
          }
        ],
        "surface_exclusions": [
          {
            "exclusion_id": "separate-eligibility-resource",
            "role": "eligibility",
            "rationale": "Applicable access conditions are published within the service terms; no separate eligibility resource is declared."
          }
        ]
      },
      "lifecycle": "active",
      "effective_from": "2026-09-06T08:47:58Z",
      "revision_digest": "sha256:cb8d24ee4b88ace6ed3697623a1d4d2fe67be3ef0315b2a076933f735dd3702f",
      "policy_digest": "sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d",
      "policy_version": "service-use-2026-09-07-blocking-barriers-r12",
      "policy_as_of": "2026-09-07T00:00:00Z",
      "assessment_basis": {
        "principal": "authorized_human_or_organization",
        "initial_state": {
          "product_specific_account": false,
          "product_credentials": false,
          "paid_subscription": false,
          "provisioned_resource": false,
          "external_identity": "only_when_declared_by_exact_funnel"
        },
        "permitted_human_boundaries": [
          "account_ownership_confirmation",
          "delegated_identity_consent",
          "regulated_approval",
          "final_payment_or_irreversible_commitment"
        ],
        "required_handoff_properties": [
          "exact_disclosure",
          "resumable_handoff",
          "deterministic_continuation"
        ],
        "forbidden_substitutions": [
          "captcha_solving",
          "human_password_or_session_sharing",
          "concealed_agent_identity",
          "invented_eligibility",
          "unbound_out_of_band_code",
          "vendor_policy_bypass",
          "unapproved_consequential_action"
        ],
        "success": {
          "target_coverage": "every_declared_target",
          "interface_coverage": "at_least_one_declared_alternative",
          "authority": "scoped",
          "failure_semantics": "documented",
          "recovery": "supported"
        },
        "observed_assessment": {
          "allowed_sources": [
            "public_documentation",
            "public_metadata",
            "public_endpoints",
            "non_mutating_interaction",
            "operator_attested_public_observation"
          ],
          "consequential_claims": "certification_required"
        }
      },
      "overall_outcome": "constrained",
      "public_state": "limited",
      "state_label": "Limited",
      "grade": "B",
      "grade_derivation": {
        "label": "Five-stage Agent Readiness report card",
        "explanation": "A through C grades count Limited stages; D and F reflect Blocked stages by lifecycle severity.",
        "coverage_rule": "Coverage is complete only when every graded signal has supported, fresh, non-conflicting evidence. Barrier and informational signals do not change coverage; only fresh, supported barrier values that passed their admission evidence rule participate in stage outcomes.",
        "outcome_rule": "Each stage takes its worst graded signal or verified barrier. A fresh, supported mandatory barrier that passed its admission evidence rule can block that stage; incomplete or stale barrier evidence remains context only. The overall grade is derived from the five stage states."
      },
      "publication": {
        "visibility": "discoverable",
        "reasons": []
      },
      "primary_finding": {
        "stage": "sign_up",
        "stage_label": "Sign up",
        "public_state": "limited",
        "finding": {
          "signal_code": "delegated_identity_access",
          "condition": "Can an agent obtain scoped, revocable authority for this service?",
          "finding": "Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.",
          "context": "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."
        }
      },
      "limitations": [
        {
          "stage": "sign_up",
          "stage_label": "Sign up",
          "finding": {
            "signal_code": "delegated_identity_access",
            "condition": "Can an agent obtain scoped, revocable authority for this service?",
            "finding": "Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.",
            "context": "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."
          },
          "remediation": {
            "signal_code": "delegated_identity_access",
            "code": "improve.sign_up.delegated_identity_access",
            "instruction": "Provide scoped delegated authorization with consent, revocation, and deterministic resumption."
          }
        },
        {
          "stage": "provision",
          "stage_label": "Provision",
          "finding": {
            "signal_code": "access_material_delivery",
            "condition": "Can usable access material be delivered securely to an authorized agent?",
            "finding": "Delivery needs additional human transfer or has weak scope or lifecycle semantics.",
            "context": "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."
          },
          "remediation": {
            "signal_code": "access_material_delivery",
            "code": "improve.provision.access_material_delivery",
            "instruction": "Deliver scoped access material through a secure documented machine-usable flow."
          }
        },
        {
          "stage": "provision",
          "stage_label": "Provision",
          "finding": {
            "signal_code": "provisioning_completion",
            "condition": "Can an agent determine successful provisioning completion and reconcile asynchronous failure?",
            "finding": "Completion is observable, but an asynchronous path omits a material terminal, bound, or reconciliation property.",
            "context": "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."
          },
          "remediation": {
            "signal_code": "provisioning_completion",
            "code": "improve.provision.provisioning_completion",
            "instruction": "Expose bounded machine-readable terminal status and reconciliation semantics."
          }
        },
        {
          "stage": "operate",
          "stage_label": "Operate",
          "finding": {
            "signal_code": "failure_contract",
            "condition": "Can an agent handle applicable failure modes safely?",
            "finding": "Safe failure handling is documented only partially.",
            "context": "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."
          },
          "remediation": {
            "signal_code": "failure_contract",
            "code": "improve.operate.failure_contract",
            "instruction": "Document applicable structured errors, retry, cancellation, and reconciliation semantics."
          }
        },
        {
          "stage": "operate",
          "stage_label": "Operate",
          "finding": {
            "signal_code": "credential_lifecycle",
            "condition": "Can an agent manage credential expiry, rotation, revocation, compromise, and recovery?",
            "finding": "Only part of the credential lifecycle is agent-operable.",
            "context": "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."
          },
          "remediation": {
            "signal_code": "credential_lifecycle",
            "code": "improve.operate.credential_lifecycle",
            "instruction": "Provide scoped expiry, rotation, revocation, compromise, and recovery operations."
          }
        }
      ],
      "stages": [
        {
          "stage": "evaluate",
          "stage_label": "Evaluate",
          "outcome": "pass",
          "public_state": "ready",
          "state_label": "Ready",
          "primary_finding": {
            "signal_code": "service_discovery",
            "condition": "Can an agent find the exact service and its stable entrypoints?",
            "finding": "The exact service and stable evaluation or access entrypoints are publicly discoverable.",
            "context": "DigitalOcean provides public entrypoints and reference documentation for its four primary APIs: DigitalOcean API, Spaces API, OAuth API, and Metadata API."
          },
          "secondary_context": [
            {
              "signal_code": "terms_access",
              "condition": "Can an agent retrieve and understand the applicable commitment terms?",
              "finding": "Applicable terms are stable, readable, retrievable, and materially complete.",
              "context": "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."
            },
            {
              "signal_code": "eligibility_decidability",
              "condition": "Can an agent decide every material eligibility condition before commitment?",
              "finding": "Eligibility conditions and required inputs are explicit and decidable.",
              "context": "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."
            },
            {
              "signal_code": "pricing_decidability",
              "condition": "Can an agent estimate cost or confirm no-charge status before commitment?",
              "finding": "Price or no-charge status, variables, currency, and material conditions are explicit.",
              "context": "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."
            },
            {
              "signal_code": "structured_evaluation_discovery",
              "condition": "Are verified structured discovery artifacts available?",
              "finding": "Verified structured artifacts accelerate discovery of the evaluation surface.",
              "context": "DigitalOcean explicitly provides a structured documentation index for AI agents at https://docs.digitalocean.com/llms.txt and offers Markdown versions of documentation pages."
            },
            {
              "signal_code": "verified_web_agent_access",
              "condition": "Does the vendor deliberately describe access for web agents?",
              "finding": "Web-agent access policy is explicit and verified for the assessed resources.",
              "context": "DigitalOcean explicitly directs AI web agents to its structured documentation index at https://docs.digitalocean.com/llms.txt and Markdown page endpoints."
            }
          ],
          "signals": [
            {
              "signal_code": "eligibility_decidability",
              "evaluation_role": "informational",
              "required": false,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Can an agent decide every material eligibility condition before commitment?",
              "finding": "Eligibility conditions and required inputs are explicit and decidable.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "pricing_decidability",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Can an agent estimate cost or confirm no-charge status before commitment?",
              "finding": "Price or no-charge status, variables, currency, and material conditions are explicit.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "service_discovery",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Can an agent find the exact service and its stable entrypoints?",
              "finding": "The exact service and stable evaluation or access entrypoints are publicly discoverable.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "structured_evaluation_discovery",
              "evaluation_role": "informational",
              "required": false,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Are verified structured discovery artifacts available?",
              "finding": "Verified structured artifacts accelerate discovery of the evaluation surface.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "terms_access",
              "evaluation_role": "informational",
              "required": false,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Can an agent retrieve and understand the applicable commitment terms?",
              "finding": "Applicable terms are stable, readable, retrievable, and materially complete.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "verified_web_agent_access",
              "evaluation_role": "informational",
              "required": false,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Does the vendor deliberately describe access for web agents?",
              "finding": "Web-agent access policy is explicit and verified for the assessed resources.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            }
          ],
          "blockers": [],
          "remediations": []
        },
        {
          "stage": "sign_up",
          "stage_label": "Sign up",
          "outcome": "constrained",
          "public_state": "limited",
          "state_label": "Limited",
          "primary_finding": {
            "signal_code": "delegated_identity_access",
            "condition": "Can an agent obtain scoped, revocable authority for this service?",
            "finding": "Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.",
            "context": "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."
          },
          "secondary_context": [
            {
              "signal_code": "access_control_operability",
              "condition": "Can an agent operate the access controls and safe handoffs deterministically?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "context": "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."
            },
            {
              "signal_code": "captcha_compatible_access",
              "condition": "Can an agent obtain access without an unsupported CAPTCHA boundary?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "context": "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."
            },
            {
              "signal_code": "phone_verification_compatible",
              "condition": "Can required phone verification be completed through a supported boundary?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "context": "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."
            },
            {
              "signal_code": "access_entrypoint_stability",
              "condition": "Is there a stable route to begin obtaining service access?",
              "finding": "A stable canonical route begins the required access bootstrap.",
              "context": "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."
            }
          ],
          "signals": [
            {
              "signal_code": "access_control_operability",
              "evaluation_role": "barrier",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Can an agent operate the access controls and safe handoffs deterministically?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "access_entrypoint_stability",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Is there a stable route to begin obtaining service access?",
              "finding": "A stable canonical route begins the required access bootstrap.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "captcha_compatible_access",
              "evaluation_role": "barrier",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Can an agent obtain access without an unsupported CAPTCHA boundary?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "delegated_identity_access",
              "evaluation_role": "graded",
              "required": true,
              "value": "partial",
              "value_label": "Limited",
              "outcome": "constrained",
              "public_state": "limited",
              "condition": "Can an agent obtain scoped, revocable authority for this service?",
              "finding": "Machine credentials exist but require manual copying, broad authority, or weak lifecycle support.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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.",
              "remediation": {
                "signal_code": "delegated_identity_access",
                "code": "improve.sign_up.delegated_identity_access",
                "instruction": "Provide scoped delegated authorization with consent, revocation, and deterministic resumption."
              }
            },
            {
              "signal_code": "phone_verification_compatible",
              "evaluation_role": "barrier",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Can required phone verification be completed through a supported boundary?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            }
          ],
          "blockers": [],
          "remediations": [
            {
              "signal_code": "delegated_identity_access",
              "code": "improve.sign_up.delegated_identity_access",
              "instruction": "Provide scoped delegated authorization with consent, revocation, and deterministic resumption."
            }
          ]
        },
        {
          "stage": "pay",
          "stage_label": "Pay",
          "outcome": "pass",
          "public_state": "ready",
          "state_label": "Ready",
          "primary_finding": {
            "signal_code": "commitment_disclosure",
            "condition": "Is the exact commercial commitment disclosed before authorization?",
            "finding": "Charge or no-charge status, currency, recurrence, and material conditions are disclosed.",
            "context": "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."
          },
          "secondary_context": [
            {
              "signal_code": "checkout_operability",
              "condition": "Can an agent construct checkout, hand off approval safely, and resume?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "context": "Documentation describes adding payment methods and paying balances, but does not provide details on deterministic checkout construction and handoff resumption for an agent."
            },
            {
              "signal_code": "payment_authorization",
              "condition": "Can payment be authorized within scoped agent or explicit human authority?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "context": "Docs detail adding credit cards or third-party payment providers to submit payments, but do not state a delegated payment authorization rail for agents."
            },
            {
              "signal_code": "self_service_purchase",
              "condition": "Is a direct self-service path to paid access documented?",
              "finding": "A documented direct purchase path reaches paid access without a vendor decision point.",
              "context": "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."
            }
          ],
          "signals": [
            {
              "signal_code": "checkout_operability",
              "evaluation_role": "barrier",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Can an agent construct checkout, hand off approval safely, and resume?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "commitment_disclosure",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Is the exact commercial commitment disclosed before authorization?",
              "finding": "Charge or no-charge status, currency, recurrence, and material conditions are disclosed.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "payment_authorization",
              "evaluation_role": "barrier",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Can payment be authorized within scoped agent or explicit human authority?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "self_service_purchase",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Is a direct self-service path to paid access documented?",
              "finding": "A documented direct purchase path reaches paid access without a vendor decision point.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            }
          ],
          "blockers": [],
          "remediations": []
        },
        {
          "stage": "provision",
          "stage_label": "Provision",
          "outcome": "constrained",
          "public_state": "limited",
          "state_label": "Limited",
          "primary_finding": {
            "signal_code": "access_material_delivery",
            "condition": "Can usable access material be delivered securely to an authorized agent?",
            "finding": "Delivery needs additional human transfer or has weak scope or lifecycle semantics.",
            "context": "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."
          },
          "secondary_context": [
            {
              "signal_code": "provisioning_completion",
              "condition": "Can an agent determine successful provisioning completion and reconcile asynchronous failure?",
              "finding": "Completion is observable, but an asynchronous path omits a material terminal, bound, or reconciliation property.",
              "context": "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."
            },
            {
              "signal_code": "provisioning_operability",
              "condition": "Can provisioning be initiated within supported agent authority?",
              "finding": "Provisioning is machine-triggerable or follows deterministically from an allowed handoff.",
              "context": "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`."
            }
          ],
          "signals": [
            {
              "signal_code": "access_material_delivery",
              "evaluation_role": "graded",
              "required": true,
              "value": "partial",
              "value_label": "Limited",
              "outcome": "constrained",
              "public_state": "limited",
              "condition": "Can usable access material be delivered securely to an authorized agent?",
              "finding": "Delivery needs additional human transfer or has weak scope or lifecycle semantics.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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.",
              "remediation": {
                "signal_code": "access_material_delivery",
                "code": "improve.provision.access_material_delivery",
                "instruction": "Deliver scoped access material through a secure documented machine-usable flow."
              }
            },
            {
              "signal_code": "provisioning_completion",
              "evaluation_role": "graded",
              "required": true,
              "value": "partial",
              "value_label": "Limited",
              "outcome": "constrained",
              "public_state": "limited",
              "condition": "Can an agent determine successful provisioning completion and reconcile asynchronous failure?",
              "finding": "Completion is observable, but an asynchronous path omits a material terminal, bound, or reconciliation property.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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.",
              "remediation": {
                "signal_code": "provisioning_completion",
                "code": "improve.provision.provisioning_completion",
                "instruction": "Expose bounded machine-readable terminal status and reconciliation semantics."
              }
            },
            {
              "signal_code": "provisioning_operability",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Can provisioning be initiated within supported agent authority?",
              "finding": "Provisioning is machine-triggerable or follows deterministically from an allowed handoff.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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`."
            }
          ],
          "blockers": [],
          "remediations": [
            {
              "signal_code": "access_material_delivery",
              "code": "improve.provision.access_material_delivery",
              "instruction": "Deliver scoped access material through a secure documented machine-usable flow."
            },
            {
              "signal_code": "provisioning_completion",
              "code": "improve.provision.provisioning_completion",
              "instruction": "Expose bounded machine-readable terminal status and reconciliation semantics."
            }
          ]
        },
        {
          "stage": "operate",
          "stage_label": "Operate",
          "outcome": "constrained",
          "public_state": "limited",
          "state_label": "Limited",
          "primary_finding": {
            "signal_code": "failure_contract",
            "condition": "Can an agent handle applicable failure modes safely?",
            "finding": "Safe failure handling is documented only partially.",
            "context": "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."
          },
          "secondary_context": [
            {
              "signal_code": "agent_protocol_interface",
              "condition": "Is an agent-native protocol interface verified against the essential targets?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "context": "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."
            },
            {
              "signal_code": "credential_lifecycle",
              "condition": "Can an agent manage credential expiry, rotation, revocation, compromise, and recovery?",
              "finding": "Only part of the credential lifecycle is agent-operable.",
              "context": "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."
            },
            {
              "signal_code": "target_interface_access",
              "condition": "Can an agent perform every essential assessment target through a usable interface?",
              "finding": "Every essential target has a stable documented agent-usable interface alternative.",
              "context": "Essential management targets are operable programmatically via stable HTTP REST APIs, the official doctl CLI, and official SDKs such as PyDo and Godo."
            },
            {
              "signal_code": "operation_authentication",
              "condition": "Can an agent authenticate service operations with scoped authority?",
              "finding": "Request-time authentication is documented and usable under scoped agent authority.",
              "context": "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."
            },
            {
              "signal_code": "operation_contract",
              "condition": "Are essential operation inputs, outputs, and effects stable and decidable?",
              "finding": "Essential operations have stable readable request, response, and effect semantics.",
              "context": "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."
            }
          ],
          "signals": [
            {
              "signal_code": "agent_protocol_interface",
              "evaluation_role": "informational",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Is an agent-native protocol interface verified against the essential targets?",
              "finding": "Current admissible evidence does not resolve this finding.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "credential_lifecycle",
              "evaluation_role": "graded",
              "required": true,
              "value": "partial",
              "value_label": "Limited",
              "outcome": "constrained",
              "public_state": "limited",
              "condition": "Can an agent manage credential expiry, rotation, revocation, compromise, and recovery?",
              "finding": "Only part of the credential lifecycle is agent-operable.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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.",
              "remediation": {
                "signal_code": "credential_lifecycle",
                "code": "improve.operate.credential_lifecycle",
                "instruction": "Provide scoped expiry, rotation, revocation, compromise, and recovery operations."
              }
            },
            {
              "signal_code": "failure_contract",
              "evaluation_role": "graded",
              "required": true,
              "value": "partial",
              "value_label": "Limited",
              "outcome": "constrained",
              "public_state": "limited",
              "condition": "Can an agent handle applicable failure modes safely?",
              "finding": "Safe failure handling is documented only partially.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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.",
              "remediation": {
                "signal_code": "failure_contract",
                "code": "improve.operate.failure_contract",
                "instruction": "Document applicable structured errors, retry, cancellation, and reconciliation semantics."
              }
            },
            {
              "signal_code": "operation_authentication",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Can an agent authenticate service operations with scoped authority?",
              "finding": "Request-time authentication is documented and usable under scoped agent authority.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "operation_contract",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Are essential operation inputs, outputs, and effects stable and decidable?",
              "finding": "Essential operations have stable readable request, response, and effect semantics.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            },
            {
              "signal_code": "target_interface_access",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Can an agent perform every essential assessment target through a usable interface?",
              "finding": "Every essential target has a stable documented agent-usable interface alternative.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "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."
            }
          ],
          "blockers": [],
          "remediations": [
            {
              "signal_code": "failure_contract",
              "code": "improve.operate.failure_contract",
              "instruction": "Document applicable structured errors, retry, cancellation, and reconciliation semantics."
            },
            {
              "signal_code": "credential_lifecycle",
              "code": "improve.operate.credential_lifecycle",
              "instruction": "Provide scoped expiry, rotation, revocation, compromise, and recovery operations."
            }
          ]
        }
      ],
      "coverage": {
        "status": "complete",
        "required_signals": 14,
        "covered_signals": 14,
        "ratio": 1,
        "barrier_signals": 5,
        "verified_barrier_signals": 0,
        "barrier_ratio": 0
      },
      "last_tested_at": "2026-09-06T08:51:39.470Z",
      "freshness": "fresh",
      "provenance": {
        "freshness": "fresh",
        "dispute": "none",
        "coverage_policy_digest": "sha256:fc9e8f046d86fcf19ab2f1bc547219e503cdc11ffa135d020db7285965cd7d1d",
        "freshness_policy_digest": "sha256:b71bacf415fdbef01024355fb3d080df7a9dca05d2cce9a2a1f691fe8a60f579",
        "basis_event_ids": [
          "sha256:06e079a62f6847f11811dae8c6a3cc38a64db4cda5ff1e6d5ea333e6c49a04fb",
          "sha256:1948349873d7efd14cc8c3fdc972d9a73f4e4a8270038311455d25f0105b6482",
          "sha256:196c3a3cf332fd113fd6a763c7966f5ea4e02f88095adc0670318a4809dc6988",
          "sha256:1a6bed6a49e96a352845e6ba88564e4dcc147778fb2c94d728f9b33818252e24",
          "sha256:1e390ad1b2b88941308818597781bdbc213b021fc63291c7ce0de4fb82cfb3b5",
          "sha256:23dfc1bfc00cc288229a62769339bc625588e8970c9b15a3ff36bc0d2fa6d3b8",
          "sha256:24ed218c61b5d4a48819e4a027ff11a6343a8ef3c0ea102fd30c6b5e8e1cbebf",
          "sha256:28829896428cd5c9e20efcefa4aeb0d5810e19353788670207622ef4434f07af",
          "sha256:3c0c496a4228a0f965828ee673925d99e6f6887dd5bec48559961ee64f608f10",
          "sha256:3f4c4d44c14c2362d1aca8fd39a4e1d59a019cd504a055fe78a29b5b92b112bf",
          "sha256:3fd62bf30cb2be4b228559d2b307a83f9b938dbbd674f68d61a5cf240a5e19d4",
          "sha256:4f533a397d221795b5eb5937eb52c2be7da0cbf65016bc270f53b8f1ce705ea7",
          "sha256:5666aa84f90055fa53f5c591e612d745ef29be2e1db48975ba7291efb44548a4",
          "sha256:57651eda25161275f8c2e29505ac4dc1935073682350d379089224e74d0905e7",
          "sha256:577805d678935fbd707b94f8534ea618ca6d9990e28c5e655dda1829c77da0f4",
          "sha256:58d5d2108ba45546ebf9cb4aeb58c50eb5f331a28965ba69b5de074ed4e03821",
          "sha256:59297c6b3faae8167126e9784e10614d2fa1cf25e015edd3c05fa724eadb8869",
          "sha256:5aeb462a4c6698e8d4794a85557c4a36314365ea3baeb9df471f21c2274128ce",
          "sha256:60eb29cecfd758c837c77d95b9c20393bde7e94670b2a56f60788407ef7d7ada",
          "sha256:624e18ab9815eb6d8697cd205a10a7449f166aa25276e1a26cf1684d0155ddda",
          "sha256:72045ece53b2fca29d942a0dc52c6058bd6761e2fb318a48bd56b2e75768885c",
          "sha256:7cfc7db38e7f63ee03bf1adb0955d052df9e991abdc46f831036ec14a27086ff",
          "sha256:903e0a2525328ea691c9c38699d744c6a5bf255a9546c54116c23196b954d033",
          "sha256:9218fc50942c5213fbe764594c798e0317c0aeeb3fcb2b47d6a01b7d0890d7c0",
          "sha256:9708fc9e5e8f60493410f24af7474d6fe73cd54e6e365faea37b6a5d3132bd6a",
          "sha256:9ff5185e4ad0fcd084a8d41c4ec753cf8675768cde5c3844bb6b96898fb1a9b2",
          "sha256:a369a6e7642311607db11285876c03684487121a3ea0d78703a80f9554006c6e",
          "sha256:aa26f4bc6435df253c32447f80595a7e05c6968105a051d65338a065df66901d",
          "sha256:b1c6ece70409e5085ce39688196cb416d1b6e21c8a27952206eb31a7149daa5f",
          "sha256:be9193fad04b7fe5784ad6686ab226def9c79ee86400ea7348c5c98f16765fa6",
          "sha256:c74e58f48bd0bea71bad7be5ed865aaa02087db5c55ceb9d780c5a58e4ba80ef",
          "sha256:ce09664cc829670d06cdf1e5dfdd4947c239bcbf12dd2436061b8ba28abfc0d3",
          "sha256:d2b92244acf99d50217d50089f27ef3dcec2fcde91736862e5780ebf3d002ef9",
          "sha256:d6eed9b7e84ea0df2f0db210645ca91a573f7f4fdfc98a89f6deb5be8a84931e",
          "sha256:df7e3ce0eb0147998eff7b09f672e91bb46951861d9e569db2b0811c3d41f588",
          "sha256:ec10822f508100f280a5dc2ee5d7401588f77b8c2c2dd3eab98743fa7e0ec666",
          "sha256:ee433a29b68c521d4372dd34b8a7b3065852a0a1c7d898035538d4b63d424aad",
          "sha256:f0249dc47c606cc1abf085830b093492d73d89a5c78a8ae205d1dc2a89efd960"
        ],
        "fields": [
          {
            "path": "/signals/0",
            "supporting_event_ids": [
              "sha256:60eb29cecfd758c837c77d95b9c20393bde7e94670b2a56f60788407ef7d7ada"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:04.573Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/1",
            "supporting_event_ids": [
              "sha256:24ed218c61b5d4a48819e4a027ff11a6343a8ef3c0ea102fd30c6b5e8e1cbebf"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:11.691Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/2",
            "supporting_event_ids": [
              "sha256:28829896428cd5c9e20efcefa4aeb0d5810e19353788670207622ef4434f07af"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:07.075Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/3",
            "supporting_event_ids": [
              "sha256:5666aa84f90055fa53f5c591e612d745ef29be2e1db48975ba7291efb44548a4",
              "sha256:d6eed9b7e84ea0df2f0db210645ca91a573f7f4fdfc98a89f6deb5be8a84931e"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:34.800Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/4",
            "supporting_event_ids": [
              "sha256:be9193fad04b7fe5784ad6686ab226def9c79ee86400ea7348c5c98f16765fa6"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:04.573Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/5",
            "supporting_event_ids": [
              "sha256:9218fc50942c5213fbe764594c798e0317c0aeeb3fcb2b47d6a01b7d0890d7c0",
              "sha256:b1c6ece70409e5085ce39688196cb416d1b6e21c8a27952206eb31a7149daa5f"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:34.800Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/6",
            "supporting_event_ids": [
              "sha256:5aeb462a4c6698e8d4794a85557c4a36314365ea3baeb9df471f21c2274128ce"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:50:11.148Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/7",
            "supporting_event_ids": [
              "sha256:9ff5185e4ad0fcd084a8d41c4ec753cf8675768cde5c3844bb6b96898fb1a9b2"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:50:52.049Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/8",
            "supporting_event_ids": [
              "sha256:1e390ad1b2b88941308818597781bdbc213b021fc63291c7ce0de4fb82cfb3b5",
              "sha256:4f533a397d221795b5eb5937eb52c2be7da0cbf65016bc270f53b8f1ce705ea7",
              "sha256:ee433a29b68c521d4372dd34b8a7b3065852a0a1c7d898035538d4b63d424aad"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:50:52.049Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/9",
            "supporting_event_ids": [
              "sha256:577805d678935fbd707b94f8534ea618ca6d9990e28c5e655dda1829c77da0f4"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:34.800Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/10",
            "supporting_event_ids": [
              "sha256:3fd62bf30cb2be4b228559d2b307a83f9b938dbbd674f68d61a5cf240a5e19d4",
              "sha256:d2b92244acf99d50217d50089f27ef3dcec2fcde91736862e5780ebf3d002ef9"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:50:52.049Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/11",
            "supporting_event_ids": [
              "sha256:58d5d2108ba45546ebf9cb4aeb58c50eb5f331a28965ba69b5de074ed4e03821",
              "sha256:72045ece53b2fca29d942a0dc52c6058bd6761e2fb318a48bd56b2e75768885c"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:39.470Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/12",
            "supporting_event_ids": [
              "sha256:7cfc7db38e7f63ee03bf1adb0955d052df9e991abdc46f831036ec14a27086ff"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:11.691Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/13",
            "supporting_event_ids": [
              "sha256:06e079a62f6847f11811dae8c6a3cc38a64db4cda5ff1e6d5ea333e6c49a04fb",
              "sha256:ce09664cc829670d06cdf1e5dfdd4947c239bcbf12dd2436061b8ba28abfc0d3"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:39.470Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/14",
            "supporting_event_ids": [
              "sha256:9708fc9e5e8f60493410f24af7474d6fe73cd54e6e365faea37b6a5d3132bd6a",
              "sha256:aa26f4bc6435df253c32447f80595a7e05c6968105a051d65338a065df66901d"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:39.470Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/15",
            "supporting_event_ids": [
              "sha256:57651eda25161275f8c2e29505ac4dc1935073682350d379089224e74d0905e7"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:34.800Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/16",
            "supporting_event_ids": [
              "sha256:f0249dc47c606cc1abf085830b093492d73d89a5c78a8ae205d1dc2a89efd960"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:50:41.517Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/17",
            "supporting_event_ids": [
              "sha256:59297c6b3faae8167126e9784e10614d2fa1cf25e015edd3c05fa724eadb8869"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:50:41.517Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/18",
            "supporting_event_ids": [
              "sha256:a369a6e7642311607db11285876c03684487121a3ea0d78703a80f9554006c6e",
              "sha256:c74e58f48bd0bea71bad7be5ed865aaa02087db5c55ceb9d780c5a58e4ba80ef",
              "sha256:df7e3ce0eb0147998eff7b09f672e91bb46951861d9e569db2b0811c3d41f588"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:07.075Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/19",
            "supporting_event_ids": [
              "sha256:ec10822f508100f280a5dc2ee5d7401588f77b8c2c2dd3eab98743fa7e0ec666"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:34.800Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/20",
            "supporting_event_ids": [
              "sha256:903e0a2525328ea691c9c38699d744c6a5bf255a9546c54116c23196b954d033"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:50:27.901Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/21",
            "supporting_event_ids": [
              "sha256:3c0c496a4228a0f965828ee673925d99e6f6887dd5bec48559961ee64f608f10"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:34.800Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/22",
            "supporting_event_ids": [
              "sha256:1948349873d7efd14cc8c3fdc972d9a73f4e4a8270038311455d25f0105b6482",
              "sha256:1a6bed6a49e96a352845e6ba88564e4dcc147778fb2c94d728f9b33818252e24",
              "sha256:624e18ab9815eb6d8697cd205a10a7449f166aa25276e1a26cf1684d0155ddda"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:07.075Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/23",
            "supporting_event_ids": [
              "sha256:196c3a3cf332fd113fd6a763c7966f5ea4e02f88095adc0670318a4809dc6988",
              "sha256:23dfc1bfc00cc288229a62769339bc625588e8970c9b15a3ff36bc0d2fa6d3b8",
              "sha256:3f4c4d44c14c2362d1aca8fd39a4e1d59a019cd504a055fe78a29b5b92b112bf"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-09-06T08:51:07.075Z",
            "freshness": "fresh"
          }
        ],
        "vendor_attestation": {
          "status": "none"
        }
      },
      "canonical_url": "https://sourcey.com/log/digitalocean/agent-readiness/digitalocean-cloud/api-resource-management",
      "projection_digest": "sha256:cdb9159c562050d41e541e5cca1140e5869e4acd2a23152b162f9840857e6ccf"
    }
  }
}
