{
  "contract": "sourcey.site-record/v1alpha1",
  "release_id": "sha256:1042b2f7b6130b564b0059e00560960c50db2d7578dfa5178d401e5d14d9b11f",
  "snapshot_id": "sha256:696d9730d13ebc723115e4a92f695a0f26345d4350d440a417805b69d1b209e4",
  "artifact_sha256": "sha256:a695609a4d6872bd447e3125d912e7f84e605d0f064df0b08e62a9f24d9d2e80",
  "data": {
    "entity_id": "ent_01kyyts97tdz1rtzzt919cthny",
    "entity_slug": "slack",
    "profile": {
      "projection_contract": "sourcey.agent-readiness-projection/v1alpha1",
      "agent_readiness_profile_id": "arp_01kzf0m4xj3k8sa6c2w9nq4vf7",
      "entity_id": "ent_01kyyts97tdz1rtzzt919cthny",
      "scope": {
        "product": {
          "key": "slack-web-api",
          "name": "Slack Web API"
        },
        "funnel": {
          "key": "workspace-app-operations",
          "name": "Workspace app operations"
        }
      },
      "catalog_binding": {
        "base_release_id": "sha256:5082ec07047a2324648f569d234cc64342ce2707b2f3d77fde8fc06af517cee6",
        "entity_revision_digest": "sha256:6bf818ed8305ea50197752914eecaa92ffd3a14f68afe01712b18be0cb13a2eb"
      },
      "declaration_revision_digest": "sha256:3ef575ff91f8b88f6e9353936303f6914a9dafb3f1b8fca16c9bde8a99f7b392",
      "declaration": {
        "declaration_id": "declaration_slack_web_api_workspace_operations",
        "provenance": {
          "repository": "sourcey/agent-ready-services",
          "commit": "00f00edd170194cc1cf3081b97b218474537ffdb",
          "path": "vendors/sl/slack.yaml",
          "git_blob_oid": "1eed44043a2c4470c9a9350326a5de5490be9d87",
          "blob_digest": "sha256:c634b4561035aad35537567b0e92e66e9c6dd85d49154718d91cfdaedc7cf5f1"
        },
        "status": "community_declared"
      },
      "surface_catalog": {
        "participants": [
          {
            "participant_id": "slack",
            "roles": [
              "access_operator",
              "identity_provider",
              "operations_provider",
              "payment_provider",
              "provisioning_provider",
              "subject"
            ],
            "identity": {
              "entity_id": "ent_01kyyts97tdz1rtzzt919cthny"
            }
          }
        ],
        "resources": [
          {
            "resource_id": "authentication",
            "uri": "https://docs.slack.dev/authentication/",
            "roles": [
              "descriptor",
              "documentation",
              "provisioning"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "message-operations",
            "uri": "https://docs.slack.dev/reference/methods/chat.postMessage/",
            "roles": [
              "documentation",
              "operations",
              "provisioning",
              "status"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "oauth",
            "uri": "https://docs.slack.dev/authentication/installing-with-oauth/",
            "roles": [
              "descriptor",
              "documentation",
              "provisioning"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "describes"
              }
            ]
          },
          {
            "resource_id": "pricing",
            "uri": "https://slack.com/pricing",
            "roles": [
              "pricing"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "rate-limits",
            "uri": "https://docs.slack.dev/apis/web-api/rate-limits/",
            "roles": [
              "documentation",
              "operations",
              "recovery",
              "status"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "service-terms",
            "uri": "https://slack.com/terms-of-service",
            "roles": [
              "terms"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "support",
            "uri": "https://slack.com/help",
            "roles": [
              "documentation",
              "recovery"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "web-api",
            "uri": "https://docs.slack.dev/apis/web-api/",
            "roles": [
              "discovery",
              "documentation",
              "operations"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          },
          {
            "resource_id": "workspace-signup",
            "uri": "https://slack.com/help/articles/206845317-Create-a-Slack-workspace",
            "roles": [
              "checkout",
              "provisioning",
              "sign_up"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          }
        ],
        "endpoints": [
          {
            "endpoint_id": "oauth-token",
            "uri": "https://slack.com/api/oauth.v2.access",
            "transport": "http",
            "roles": [
              "authorization",
              "token"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "implements"
              }
            ]
          },
          {
            "endpoint_id": "slack-api",
            "uri": "https://slack.com/api",
            "transport": "http",
            "roles": [
              "service",
              "status"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          }
        ],
        "interfaces": [
          {
            "interface_id": "app-authentication",
            "capabilities": [
              "authentication"
            ],
            "endpoint_ids": [
              "oauth-token"
            ],
            "resource_ids": [
              "authentication",
              "oauth"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": [
              {
                "namespace": "oauth",
                "version": "2.0",
                "relation": "uses"
              }
            ]
          },
          {
            "interface_id": "workspace-api",
            "capabilities": [
              "api",
              "events",
              "tools"
            ],
            "endpoint_ids": [
              "slack-api"
            ],
            "resource_ids": [
              "message-operations",
              "rate-limits",
              "web-api"
            ],
            "operated_by_participant_id": "slack",
            "standard_bindings": []
          }
        ],
        "relations": [
          {
            "relation_id": "authentication-authenticates-api",
            "kind": "authenticates",
            "from": {
              "node_kind": "interface",
              "node_id": "app-authentication"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "workspace-api"
            }
          },
          {
            "relation_id": "messages-describe-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "message-operations"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "workspace-api"
            }
          },
          {
            "relation_id": "signup-precedes-authentication",
            "kind": "precedes",
            "from": {
              "node_kind": "resource",
              "node_id": "workspace-signup"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "app-authentication"
            }
          },
          {
            "relation_id": "web-describes-api",
            "kind": "describes",
            "from": {
              "node_kind": "resource",
              "node_id": "web-api"
            },
            "to": {
              "node_kind": "interface",
              "node_id": "workspace-api"
            }
          }
        ]
      },
      "lifecycle": "active",
      "effective_from": "2026-08-08T02:07:12.595Z",
      "revision_digest": "sha256:02e2058d2f4151e6719d4e61c4415b4b37890b084f7bd2c24701d6d2d5831962",
      "policy_digest": "sha256:334e56852b5c38e178fcea839cfba680fb82dd96693842d933776baed21d63df",
      "policy_version": "service-lifecycle-2026-08-08-calibrated",
      "policy_as_of": "2026-08-06T00:00:00Z",
      "overall_outcome": "fail",
      "public_state": "blocked",
      "state_label": "Blocked",
      "grade": "D",
      "grade_derivation": {
        "label": "Agent Readiness service-use grade",
        "explanation": "Complete, fresh evidence for the core service lifecycle first applies hard stage severity, then grades the share of applicable evidenced signals that are constrained. Optional blocker probes affect the grade when established and remain visible as unknown when public evidence cannot establish them.",
        "coverage_rule": "Any incomplete, contradictory, unsupported, or non-fresh required evidence produces an unrated profile.",
        "outcome_rule": "A failed Evaluate, Sign up, or Pay stage derives D; a failed Provision or Operate stage derives F; otherwise constrained-signal ratio derives A+ through C."
      },
      "publication": {
        "visibility": "discoverable",
        "reasons": []
      },
      "first_autonomy_break": {
        "stage": "evaluate",
        "stage_label": "Evaluate",
        "public_state": "blocked",
        "finding": {
          "signal_code": "decidable_eligibility",
          "condition": "Decidable eligibility unavailable",
          "finding": "Eligibility depends on information or judgment unavailable to an agent."
        },
        "blocker": {
          "signal_code": "decidable_eligibility",
          "code": "evaluate.decidable_eligibility",
          "explanation": "Eligibility depends on information or judgment unavailable to an agent."
        }
      },
      "stages": [
        {
          "stage": "evaluate",
          "stage_label": "Evaluate",
          "outcome": "fail",
          "public_state": "blocked",
          "state_label": "Blocked",
          "primary_finding": {
            "signal_code": "decidable_eligibility",
            "condition": "Decidable eligibility unavailable",
            "finding": "Eligibility depends on information or judgment unavailable to an agent."
          },
          "secondary_context": [
            {
              "signal_code": "structured_terms",
              "condition": "Structured terms limited",
              "finding": "Only part of the applicable terms is machine-readable."
            },
            {
              "signal_code": "ard_declaration",
              "condition": "ARD declaration unknown",
              "finding": "An ARD declaration has not been established."
            },
            {
              "signal_code": "machine_discovery",
              "condition": "Machine discovery",
              "finding": "An agent can discover the product and funnel from the tested public entrypoints."
            },
            {
              "signal_code": "readable_pricing",
              "condition": "Readable pricing",
              "finding": "Pricing or the absence of a charge is explicit and machine-readable."
            }
          ],
          "signals": [
            {
              "signal_code": "ard_declaration",
              "evaluation_role": "informational",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "ARD declaration unknown",
              "finding": "An ARD declaration has not been established.",
              "evidence_status": "missing",
              "freshness": "unknown",
              "tested_surfaces": []
            },
            {
              "signal_code": "decidable_eligibility",
              "evaluation_role": "graded",
              "required": false,
              "value": "no",
              "value_label": "Blocked",
              "outcome": "fail",
              "public_state": "blocked",
              "condition": "Decidable eligibility unavailable",
              "finding": "Eligibility depends on information or judgment unavailable to an agent.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:15:04.039Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "service-terms"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "negative_coverage": {
                "kind": "complete-response-inspection",
                "scope": "exact-resource",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "service-terms"
                  }
                ]
              },
              "note": "Eligibility depends on individual context or terms agreement unavailable as an explicit decidable decision rule for an automated agent.",
              "blocker": {
                "signal_code": "decidable_eligibility",
                "code": "evaluate.decidable_eligibility",
                "explanation": "Eligibility depends on information or judgment unavailable to an agent."
              },
              "remediation": {
                "signal_code": "decidable_eligibility",
                "code": "improve.evaluate.decidable_eligibility",
                "instruction": "Publish complete, explicit eligibility criteria and required inputs."
              }
            },
            {
              "signal_code": "machine_discovery",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Machine discovery",
              "finding": "An agent can discover the product and funnel from the tested public entrypoints.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:26:03.746Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "web-api"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "The Slack Web API documentation and endpoints are discoverable via public entrypoints and structured breadcrumbs."
            },
            {
              "signal_code": "readable_pricing",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Readable pricing",
              "finding": "Pricing or the absence of a charge is explicit and machine-readable.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:15:06.806Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "pricing"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "Slack pricing plans, including the Free plan and tier pricing per user/month, are explicitly listed and machine-readable."
            },
            {
              "signal_code": "structured_terms",
              "evaluation_role": "graded",
              "required": true,
              "value": "partial",
              "value_label": "Limited",
              "outcome": "constrained",
              "public_state": "limited",
              "condition": "Structured terms limited",
              "finding": "Only part of the applicable terms is machine-readable.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:15:04.039Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "service-terms"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "negative_coverage": {
                "kind": "complete-response-inspection",
                "scope": "exact-resource",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "service-terms"
                  }
                ]
              },
              "note": "Service terms are published as standard HTML pages rather than fully machine-readable structured format.",
              "remediation": {
                "signal_code": "structured_terms",
                "code": "improve.evaluate.structured_terms",
                "instruction": "Publish complete applicable terms in a stable machine-readable document."
              }
            }
          ],
          "blockers": [
            {
              "signal_code": "decidable_eligibility",
              "code": "evaluate.decidable_eligibility",
              "explanation": "Eligibility depends on information or judgment unavailable to an agent."
            }
          ],
          "remediations": [
            {
              "signal_code": "decidable_eligibility",
              "code": "improve.evaluate.decidable_eligibility",
              "instruction": "Publish complete, explicit eligibility criteria and required inputs."
            },
            {
              "signal_code": "structured_terms",
              "code": "improve.evaluate.structured_terms",
              "instruction": "Publish complete applicable terms in a stable machine-readable document."
            }
          ]
        },
        {
          "stage": "sign_up",
          "stage_label": "Sign up",
          "outcome": "pass",
          "public_state": "ready",
          "state_label": "Ready",
          "primary_finding": {
            "signal_code": "stable_entrypoint",
            "condition": "Stable signup entrypoint",
            "finding": "A stable signup entrypoint is available."
          },
          "secondary_context": [
            {
              "signal_code": "machine_operable_form",
              "condition": "Machine-operable signup unknown",
              "finding": "Machine-operable signup has not been established."
            },
            {
              "signal_code": "captcha_free",
              "condition": "CAPTCHA-free signup unknown",
              "finding": "Whether CAPTCHA blocks signup has not been established."
            },
            {
              "signal_code": "phone_verification_free",
              "condition": "Phone-free signup",
              "finding": "The tested signup path does not require phone or SMS verification."
            },
            {
              "signal_code": "supported_identity_flow",
              "condition": "Supported identity flow",
              "finding": "A scoped, revocable machine identity flow is documented, including explicit human authorization boundaries."
            }
          ],
          "signals": [
            {
              "signal_code": "captcha_free",
              "evaluation_role": "graded",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "CAPTCHA-free signup unknown",
              "finding": "Whether CAPTCHA blocks signup has not been established.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T23:32:00.922Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "workspace-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "Documentation alone cannot establish whether a CAPTCHA is present during the live workspace creation signup flow."
            },
            {
              "signal_code": "machine_operable_form",
              "evaluation_role": "graded",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Machine-operable signup unknown",
              "finding": "Machine-operable signup has not been established.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T23:32:00.922Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "workspace-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "Documentation describes the UI steps to create a workspace but cannot prove machine-operability of the live form."
            },
            {
              "signal_code": "phone_verification_free",
              "evaluation_role": "graded",
              "required": false,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Phone-free signup",
              "finding": "The tested signup path does not require phone or SMS verification.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T23:32:00.922Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "workspace-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "Workspace creation instructions show email-based confirmation codes without requiring a phone number or SMS verification."
            },
            {
              "signal_code": "stable_entrypoint",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Stable signup entrypoint",
              "finding": "A stable signup entrypoint is available.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T23:32:02.235Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "workspace-signup"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "Slack provides a stable entrypoint URL (https://slack.com/get-started#/createnew) for workspace creation."
            },
            {
              "signal_code": "supported_identity_flow",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Supported identity flow",
              "finding": "A scoped, revocable machine identity flow is documented, including explicit human authorization boundaries.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:26:35.449Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "authentication"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "Slack documents an OAuth 2.0 identity flow with scoped permissions (bot, user, app tokens) and explicit token rotation."
            }
          ],
          "blockers": [],
          "remediations": []
        },
        {
          "stage": "pay",
          "stage_label": "Pay",
          "outcome": "constrained",
          "public_state": "limited",
          "state_label": "Limited",
          "primary_finding": {
            "signal_code": "machine_operable_checkout",
            "condition": "Machine-operable checkout limited",
            "finding": "Checkout is only partly machine-operable or requires human intervention."
          },
          "secondary_context": [
            {
              "signal_code": "explicit_price",
              "condition": "Explicit price",
              "finding": "The required price or no-charge status is explicit before commitment."
            },
            {
              "signal_code": "supported_payment_rail",
              "condition": "Supported payment rail",
              "finding": "A documented payment rail usable by the intended agent is available."
            },
            {
              "signal_code": "sales_intervention_free",
              "condition": "Sales-free purchase",
              "finding": "The tested funnel can complete without sales intervention."
            }
          ],
          "signals": [
            {
              "signal_code": "explicit_price",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Explicit price",
              "finding": "The required price or no-charge status is explicit before commitment.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:15:06.806Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "pricing"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "Slack explicitly lists tier pricing on its pricing page, including $0 for the Free tier, $7.25/user/month for Pro (annual), and $15/user/month for Business+ (annual)."
            },
            {
              "signal_code": "machine_operable_checkout",
              "evaluation_role": "graded",
              "required": false,
              "value": "partial",
              "value_label": "Limited",
              "outcome": "constrained",
              "public_state": "limited",
              "condition": "Machine-operable checkout limited",
              "finding": "Checkout is only partly machine-operable or requires human intervention.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T23:32:00.922Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "workspace-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "negative_coverage": {
                "kind": "bounded-rendered-flow-inspection",
                "scope": "tested-surfaces",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "workspace-signup"
                  }
                ]
              },
              "note": "Workspace creation and signup steps require manual email confirmation/verification codes, making checkout partially machine-operable.",
              "remediation": {
                "signal_code": "machine_operable_checkout",
                "code": "improve.pay.machine_operable_checkout",
                "instruction": "Expose documented, labelled checkout controls or an agent-compatible commerce interface."
              }
            },
            {
              "signal_code": "sales_intervention_free",
              "evaluation_role": "graded",
              "required": false,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Sales-free purchase",
              "finding": "The tested funnel can complete without sales intervention.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T23:32:00.922Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "workspace-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "Slack workspaces and subscriptions can be created and purchased online self-service without requiring sales intervention."
            },
            {
              "signal_code": "supported_payment_rail",
              "evaluation_role": "graded",
              "required": false,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Supported payment rail",
              "finding": "A documented payment rail usable by the intended agent is available.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T23:32:00.922Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "workspace-signup"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "Slack supports standard self-service payment rails such as credit card billing."
            }
          ],
          "blockers": [],
          "remediations": [
            {
              "signal_code": "machine_operable_checkout",
              "code": "improve.pay.machine_operable_checkout",
              "instruction": "Expose documented, labelled checkout controls or an agent-compatible commerce interface."
            }
          ]
        },
        {
          "stage": "provision",
          "stage_label": "Provision",
          "outcome": "pass",
          "public_state": "ready",
          "state_label": "Ready",
          "primary_finding": {
            "signal_code": "credential_delivery",
            "condition": "Credential delivery",
            "finding": "Usable credentials or delegated access are delivered through a documented flow."
          },
          "secondary_context": [
            {
              "signal_code": "automatic_activation",
              "condition": "Automatic activation unknown",
              "finding": "Automatic activation has not been established."
            },
            {
              "signal_code": "bounded_delay",
              "condition": "Bounded provisioning delay unknown",
              "finding": "A bounded provisioning delay has not been established."
            },
            {
              "signal_code": "machine_readable_status",
              "condition": "Machine-readable provisioning status not applicable",
              "finding": "Provisioning status does not apply to this funnel."
            }
          ],
          "signals": [
            {
              "signal_code": "automatic_activation",
              "evaluation_role": "graded",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Automatic activation unknown",
              "finding": "Automatic activation has not been established.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:26:19.785Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "message-operations"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "The retained documentation for chat.postMessage describes Web API method behavior and rate limits but does not establish whether automatic activation occurs upon onboarding."
            },
            {
              "signal_code": "bounded_delay",
              "evaluation_role": "graded",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Bounded provisioning delay unknown",
              "finding": "A bounded provisioning delay has not been established.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:26:07.474Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "message-operations"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "Rate limits and execution behavior are documented for chat.postMessage, but no explicit bounded provisioning completion timing guarantee is established in the evidence."
            },
            {
              "signal_code": "credential_delivery",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Credential delivery",
              "finding": "Usable credentials or delegated access are delivered through a documented flow.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:26:35.449Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "authentication"
                }
              ],
              "assessment_method": {
                "name": "headless",
                "version": "1",
                "method_digest": "sha256:5c58a6d3f59d1910064324a215209f16f177b8021442dcbf1465f4c3ccd78ed1"
              },
              "note": "Slack documents OAuth 2.0 flows for obtaining access tokens (user, bot, and app tokens) to deliver delegated credentials."
            },
            {
              "signal_code": "machine_readable_status",
              "evaluation_role": "graded",
              "required": false,
              "value": "not_applicable",
              "value_label": "Not applicable",
              "outcome": "not_applicable",
              "public_state": "not_applicable",
              "condition": "Machine-readable provisioning status not applicable",
              "finding": "Provisioning status does not apply to this funnel.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:26:07.474Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "message-operations"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "negative_coverage": {
                "kind": "complete-response-inspection",
                "scope": "exact-resource",
                "covered_surfaces": [
                  {
                    "node_kind": "resource",
                    "node_id": "message-operations"
                  }
                ]
              },
              "note": "Provisioning status does not apply to the message-operations target in the workspace app operations funnel, as chat.postMessage represents direct operational message posting rather than an asynchronous resource provisioning lifecycle."
            }
          ],
          "blockers": [],
          "remediations": []
        },
        {
          "stage": "operate",
          "stage_label": "Operate",
          "outcome": "pass",
          "public_state": "ready",
          "state_label": "Ready",
          "primary_finding": {
            "signal_code": "api_tool_access",
            "condition": "API or tool access",
            "finding": "A documented API or tool interface is available for operation."
          },
          "secondary_context": [
            {
              "signal_code": "agent_protocol_interface",
              "condition": "Agent protocol interface unknown",
              "finding": "An agent protocol interface has not been established."
            },
            {
              "signal_code": "usable_authentication",
              "condition": "Usable authentication",
              "finding": "Authentication is documented and usable within an agent authorization boundary."
            },
            {
              "signal_code": "documented_limits_errors",
              "condition": "Documented limits and errors",
              "finding": "Limits, structured errors, retry behavior, and idempotency semantics are documented where applicable."
            },
            {
              "signal_code": "delegated_recovery",
              "condition": "Delegated recovery",
              "finding": "Credential rotation, revocation, retry, and recovery paths are documented within delegated authority."
            }
          ],
          "signals": [
            {
              "signal_code": "agent_protocol_interface",
              "evaluation_role": "informational",
              "required": false,
              "value": "unknown",
              "value_label": "Unknown",
              "outcome": "unknown",
              "public_state": "unknown",
              "condition": "Agent protocol interface unknown",
              "finding": "An agent protocol interface has not been established.",
              "evidence_status": "missing",
              "freshness": "unknown",
              "tested_surfaces": []
            },
            {
              "signal_code": "api_tool_access",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "API or tool access",
              "finding": "A documented API or tool interface is available for operation.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:26:03.746Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "web-api"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "The Slack Web API provides documented HTTP RPC-style methods accessible via HTTPS GET and POST requests."
            },
            {
              "signal_code": "delegated_recovery",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Delegated recovery",
              "finding": "Credential rotation, revocation, retry, and recovery paths are documented within delegated authority.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:26:05.503Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "rate-limits"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "Slack documents delegated recovery paths including evaluating the Retry-After header for rate limits and using token rotation."
            },
            {
              "signal_code": "documented_limits_errors",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Documented limits and errors",
              "finding": "Limits, structured errors, retry behavior, and idempotency semantics are documented where applicable.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:26:07.474Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "message-operations"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "Slack documents rate limit tiers and structured error codes returned by Web API endpoints like chat.postMessage."
            },
            {
              "signal_code": "usable_authentication",
              "evaluation_role": "graded",
              "required": true,
              "value": "yes",
              "value_label": "Ready",
              "outcome": "pass",
              "public_state": "ready",
              "condition": "Usable authentication",
              "finding": "Authentication is documented and usable within an agent authorization boundary.",
              "evidence_status": "supported",
              "freshness": "fresh",
              "observed_at": "2026-08-07T21:26:09.000Z",
              "tested_surfaces": [
                {
                  "node_kind": "resource",
                  "node_id": "authentication"
                }
              ],
              "assessment_method": {
                "name": "http",
                "version": "1",
                "method_digest": "sha256:2d2f445064222c234cbaf541a627226a2c4be06a90e226b98a4389cb49e2d66b"
              },
              "note": "Slack documents usable OAuth 2.0 authentication using Bearer tokens sent in the HTTP Authorization header."
            }
          ],
          "blockers": [],
          "remediations": []
        }
      ],
      "coverage": {
        "status": "complete",
        "required_signals": 11,
        "covered_signals": 11,
        "ratio": 1
      },
      "last_tested_at": "2026-08-07T23:32:02.235Z",
      "freshness": "fresh",
      "provenance": {
        "tier": "observed",
        "freshness": "fresh",
        "dispute": "none",
        "coverage_policy_digest": "sha256:334e56852b5c38e178fcea839cfba680fb82dd96693842d933776baed21d63df",
        "freshness_policy_digest": "sha256:f4e31a29c2ce994bb8c3009207294ffa086e82b8e0d695abc95d6d6bdb30c2e5",
        "basis_event_ids": [
          "sha256:04c495ddce0a23b1d033c5ba889142da0b306e2664df595019c0d4cb33dc9bab",
          "sha256:06df6c120361214aaf5d31b9bba4be6d22af8db1bd260cceaa444e293ace7f71",
          "sha256:200a1a7f754bc95297037dea138df4480378ff455fe5c964805eb6291b468354",
          "sha256:253e1ea003d8ee1ab55547858d6bbdacc9b23fb468ad7f8b2a4d3178617d908f",
          "sha256:2eca89ecc02e700d230b80de0963f44602c301cdfcfeac4abc7a77fa6a227f34",
          "sha256:3041a7a5d22a2293294fac0e960b0d75c286b16e5909a7fb91fc8d1259bae7bd",
          "sha256:344ed9ff770a14e8d0caf5763451b9b6f1adaba1c1c1c844842d46c346318679",
          "sha256:472e599704c68c637ef0a37f63b91ea78d1766f5f223c2e440703bbaf14cf828",
          "sha256:4c7ff088890aa20839d554003ed24c7a1516f5880a1ec2fdb9895a4dd4f39170",
          "sha256:53586422d01a8fc41d30c6a10896336fd39bc4d8c28c19dd06cdd76e771a40d8",
          "sha256:5b6ccf80350f120f8521411b58baf79c2243162be353d03f422a59b59fe83219",
          "sha256:7d9093316bf5a67a5505016db03c6e122551e4add71c21787def480701bb24cc",
          "sha256:95def0b748df31352268e5e6667cb74bf958cced27797e9384451b0000e6c549",
          "sha256:a4db1f556acdfa718d0b4cb1e43ea264e94ab1594578bffec9a770830325ce69",
          "sha256:b30b01f3972737ea8fa544394ccf6855bcb1f52c2435ef242244a5d62e7b6340",
          "sha256:bf6cbf2229bf792e7e1bcd11207537d298bcf7dbd3fb138a2511c6221b2c141c",
          "sha256:e7a5c82e5e06dcd874bf31902fc4ef4b3c3de6e1dfda6ade3793b79aa7f636af",
          "sha256:e8259c757fb40f2b080a5b1c16b5941196ff9bb12cca536c45b8f5da15f172d7",
          "sha256:e9d00efeb1385620847a7cf1abd6c5499a5ef7b7f02335784c13ca4e84e29b09",
          "sha256:eb9a2f494d3744db47fe72a315c6ab619dad33b714d4936189f31dda0d1097dd",
          "sha256:fe96e46557349e1b902a983e69095b3b5a798d01bd639ade2b212a4364e4bac6"
        ],
        "fields": [
          {
            "path": "/signals/0",
            "supporting_event_ids": [
              "sha256:253e1ea003d8ee1ab55547858d6bbdacc9b23fb468ad7f8b2a4d3178617d908f"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:15:04.039Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/1",
            "supporting_event_ids": [
              "sha256:b30b01f3972737ea8fa544394ccf6855bcb1f52c2435ef242244a5d62e7b6340"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:26:03.746Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/2",
            "supporting_event_ids": [
              "sha256:e8259c757fb40f2b080a5b1c16b5941196ff9bb12cca536c45b8f5da15f172d7"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:15:06.806Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/3",
            "supporting_event_ids": [
              "sha256:95def0b748df31352268e5e6667cb74bf958cced27797e9384451b0000e6c549"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:15:04.039Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/4",
            "supporting_event_ids": [
              "sha256:e9d00efeb1385620847a7cf1abd6c5499a5ef7b7f02335784c13ca4e84e29b09"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T23:32:00.922Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/5",
            "supporting_event_ids": [
              "sha256:e7a5c82e5e06dcd874bf31902fc4ef4b3c3de6e1dfda6ade3793b79aa7f636af"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T23:32:00.922Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/6",
            "supporting_event_ids": [
              "sha256:5b6ccf80350f120f8521411b58baf79c2243162be353d03f422a59b59fe83219"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T23:32:00.922Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/7",
            "supporting_event_ids": [
              "sha256:3041a7a5d22a2293294fac0e960b0d75c286b16e5909a7fb91fc8d1259bae7bd"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T23:32:02.235Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/8",
            "supporting_event_ids": [
              "sha256:a4db1f556acdfa718d0b4cb1e43ea264e94ab1594578bffec9a770830325ce69"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:26:35.449Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/9",
            "supporting_event_ids": [
              "sha256:2eca89ecc02e700d230b80de0963f44602c301cdfcfeac4abc7a77fa6a227f34"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:15:06.806Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/10",
            "supporting_event_ids": [
              "sha256:eb9a2f494d3744db47fe72a315c6ab619dad33b714d4936189f31dda0d1097dd"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T23:32:00.922Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/11",
            "supporting_event_ids": [
              "sha256:344ed9ff770a14e8d0caf5763451b9b6f1adaba1c1c1c844842d46c346318679"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T23:32:00.922Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/12",
            "supporting_event_ids": [
              "sha256:472e599704c68c637ef0a37f63b91ea78d1766f5f223c2e440703bbaf14cf828"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T23:32:00.922Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/13",
            "supporting_event_ids": [
              "sha256:fe96e46557349e1b902a983e69095b3b5a798d01bd639ade2b212a4364e4bac6"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:26:19.785Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/14",
            "supporting_event_ids": [
              "sha256:53586422d01a8fc41d30c6a10896336fd39bc4d8c28c19dd06cdd76e771a40d8"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:26:07.474Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/15",
            "supporting_event_ids": [
              "sha256:200a1a7f754bc95297037dea138df4480378ff455fe5c964805eb6291b468354"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:26:35.449Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/16",
            "supporting_event_ids": [
              "sha256:7d9093316bf5a67a5505016db03c6e122551e4add71c21787def480701bb24cc"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:26:07.474Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/17",
            "supporting_event_ids": [
              "sha256:bf6cbf2229bf792e7e1bcd11207537d298bcf7dbd3fb138a2511c6221b2c141c"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:26:03.746Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/18",
            "supporting_event_ids": [
              "sha256:4c7ff088890aa20839d554003ed24c7a1516f5880a1ec2fdb9895a4dd4f39170"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:26:05.503Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/19",
            "supporting_event_ids": [
              "sha256:04c495ddce0a23b1d033c5ba889142da0b306e2664df595019c0d4cb33dc9bab"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:26:07.474Z",
            "freshness": "fresh"
          },
          {
            "path": "/signals/20",
            "supporting_event_ids": [
              "sha256:06df6c120361214aaf5d31b9bba4be6d22af8db1bd260cceaa444e293ace7f71"
            ],
            "contradicting_event_ids": [],
            "accepted_proof_kinds": [
              "observed"
            ],
            "evidence_proof_kinds": [
              "observed"
            ],
            "latest_observation_at": "2026-08-07T21:26:09.000Z",
            "freshness": "fresh"
          }
        ]
      },
      "canonical_url": "https://sourcey.com/agent-readiness/slack/slack-web-api/workspace-app-operations",
      "projection_digest": "sha256:bd16d6478dc3fd3fc241161bd8f68f60716dde9d96822bd621d21226abae09ff"
    }
  }
}
