[
  {
    "domain": "workspace",
    "name": "list",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat workspace list with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channel.name",
      "agent.machineId",
      "human.name",
      "nextCursor"
    ],
    "canonicalFollowUp": "repeat agentteam exec workspace list with nextCursor; the registered cursor builder resumes after the returned page",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "workspace list is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "project",
    "name": "list",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat project list with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "project.id",
      "nextCursor"
    ],
    "canonicalFollowUp": "repeat agentteam exec project list with nextCursor; the registered cursor builder resumes after the returned page",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "project list is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "project",
    "name": "create",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one project payload",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "project.id"
    ],
    "canonicalFollowUp": "agentteam exec project list with the returned project id or nextCursor",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "project create retains its existing resource boundary; the current API has no durable request receipt, so the client does not transparently retry it."
  },
  {
    "domain": "project",
    "name": "delete",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one explicit project id",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "project.id"
    ],
    "canonicalFollowUp": "agentteam exec project list to confirm deletion",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "project delete is a natural-key deletion; the client does not transparently retry it without a server receipt."
  },
  {
    "domain": "agent",
    "name": "list",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat agent list with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location",
      "source identifier and owner identity",
      "raw policy allowed paths"
    ],
    "stableSelectors": [
      "agent.id",
      "nextCursor",
      "cursor.revision"
    ],
    "canonicalFollowUp": "agentteam exec agent get with agentId from the page; the cursor revision remains bound",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;permission_denied=77;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Exec projection intentionally omits credential values, URL credentials, endpoints, source IDs, and raw allowed paths; reviewed safe metadata remains available.",
    "rationale": "agent list is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "agent",
    "name": "get",
    "risk": "read_only",
    "resultPolicy": "narrow",
    "continuation": "request one agent by its stable agentId",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_id_narrow_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location",
      "source identifier and owner identity",
      "raw policy allowed paths"
    ],
    "stableSelectors": [
      "agentId",
      "agent.id"
    ],
    "canonicalFollowUp": "agentteam exec agent get with agentId",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "internal=70;not_found=2;permission_denied=77;result_budget_exceeded=1",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Exec projection intentionally omits credential values, URL credentials, endpoints, source IDs, and raw allowed paths; reviewed safe metadata remains available.",
    "rationale": "agent get is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "agent",
    "name": "start",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry the lifecycle request with one agentId",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "agentId",
      "requestId"
    ],
    "canonicalFollowUp": "agentteam exec agent get with agentId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "agent start is replayed by its workspace/Agent/requestId receipt."
  },
  {
    "domain": "agent",
    "name": "stop",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry the lifecycle request with one agentId",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "agentId",
      "requestId"
    ],
    "canonicalFollowUp": "agentteam exec agent get with agentId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "agent stop is replayed by its workspace/Agent/requestId receipt."
  },
  {
    "domain": "agent",
    "name": "restart",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry the lifecycle request with one agentId",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "agentId",
      "requestId"
    ],
    "canonicalFollowUp": "agentteam exec agent get with agentId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "agent restart is replayed by its workspace/Agent/requestId receipt."
  },
  {
    "domain": "agent",
    "name": "create",
    "risk": "existing_permission_gate",
    "resultPolicy": "bounded",
    "continuation": "retry with one agent creation request",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "existing_approval_gate",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "requestId",
      "approvalId"
    ],
    "canonicalFollowUp": "agentteam exec agent list or get with the returned stable Agent ID",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing approval gate is now advertised in the typed permission/audit metadata; request and response JSON names are unchanged.",
    "rationale": "approval creates one Agent structural request; requestId selects the existing approval receipt and agent request-get is the read-only follow-up."
  },
  {
    "domain": "agent",
    "name": "update",
    "risk": "existing_permission_gate",
    "resultPolicy": "bounded",
    "continuation": "retry with one agent update request",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "existing_approval_gate",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "requestId",
      "approvalId"
    ],
    "canonicalFollowUp": "agentteam exec agent get with agentId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing approval gate is now advertised in the typed permission/audit metadata; request and response JSON names are unchanged.",
    "rationale": "approval updates one Agent structural request; requestId selects the existing approval receipt and agent get is the read-only follow-up."
  },
  {
    "domain": "agent",
    "name": "delete",
    "risk": "existing_permission_gate",
    "resultPolicy": "bounded",
    "continuation": "retry with a smaller agentIds batch",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "existing_approval_gate",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "requestId",
      "approvalId"
    ],
    "canonicalFollowUp": "agentteam exec agent list or get with the returned stable Agent ID",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing approval gate is now advertised in the typed permission/audit metadata; request and response JSON names are unchanged.",
    "rationale": "approval deletes the selected Agent IDs; requestId selects the existing approval receipt and agent list/get is the read-only follow-up."
  },
  {
    "domain": "agent",
    "name": "duplicate",
    "risk": "existing_permission_gate",
    "resultPolicy": "bounded",
    "continuation": "retry with one sourceAgentId and a smaller count",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "existing_approval_gate",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "requestId",
      "approvalId"
    ],
    "canonicalFollowUp": "agentteam exec agent list or get with the returned stable Agent ID",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing approval gate is now advertised in the typed permission/audit metadata; request and response JSON names are unchanged.",
    "rationale": "approval duplicates one source Agent; requestId selects the existing approval receipt and agent list/get is the read-only follow-up."
  },
  {
    "domain": "team",
    "name": "list",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat Team list with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "teamId",
      "nextCursor"
    ],
    "canonicalFollowUp": "repeat agentteam exec team list with nextCursor; the registered cursor builder resumes after the returned page",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "team list is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "team",
    "name": "get",
    "risk": "read_only",
    "resultPolicy": "narrow",
    "continuation": "request one Team by its stable teamId",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_id_narrow_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "teamId",
      "team.teamId"
    ],
    "canonicalFollowUp": "agentteam exec team get with teamId",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "team get is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "team",
    "name": "update",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one Team update request",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "teamId",
      "requestId"
    ],
    "canonicalFollowUp": "agentteam exec team get with teamId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "team update is replayed by its workspace/Agent/requestId receipt."
  },
  {
    "domain": "channel",
    "name": "list",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat channel list with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channelId",
      "nextCursor"
    ],
    "canonicalFollowUp": "repeat agentteam exec channel list with nextCursor; the registered cursor builder resumes after the returned page",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "channel list is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "channel",
    "name": "get",
    "risk": "read_only",
    "resultPolicy": "narrow",
    "continuation": "request one Channel by its stable channelId",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_id_narrow_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channelId",
      "channel.channelId"
    ],
    "canonicalFollowUp": "agentteam exec channel get with channelId",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "channel get is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "channel",
    "name": "members",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat channel members with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channelId",
      "nextCursor"
    ],
    "canonicalFollowUp": "agentteam exec channel get with channelId",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "channel members is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "channel",
    "name": "create",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one channel creation request",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channelId",
      "requestId"
    ],
    "canonicalFollowUp": "agentteam exec channel get with channelId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "channel create is replayed by its workspace/Agent/requestId receipt."
  },
  {
    "domain": "channel",
    "name": "update",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one channel update request",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channelId",
      "requestId"
    ],
    "canonicalFollowUp": "agentteam exec channel get with channelId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "channel update is replayed by its workspace/Agent/requestId receipt."
  },
  {
    "domain": "channel",
    "name": "agent-add",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with a smaller agents batch",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channelId",
      "requestId"
    ],
    "canonicalFollowUp": "agentteam exec channel get with channelId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "channel agent-add is replayed by its workspace/Agent/requestId receipt."
  },
  {
    "domain": "channel",
    "name": "agent-remove",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with a smaller agents batch",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channelId",
      "requestId"
    ],
    "canonicalFollowUp": "agentteam exec channel get with channelId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "channel agent-remove is replayed by its workspace/Agent/requestId receipt."
  },
  {
    "domain": "review",
    "name": "list",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat review list with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id",
      "nextCursor"
    ],
    "canonicalFollowUp": "repeat agentteam exec review list with nextCursor; the registered cursor builder resumes after the returned page",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "review list is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "review",
    "name": "add",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one review path and thread",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id",
      "thread"
    ],
    "canonicalFollowUp": "agentteam exec review list with the registered thread/context selector",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "review add is an upsert at one resolved thread; no transparent retry is attempted without a server receipt."
  },
  {
    "domain": "review",
    "name": "delete",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one contextId",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "contextId"
    ],
    "canonicalFollowUp": "agentteam exec review list with the registered thread/context selector",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "review delete is a natural-key deletion; no transparent retry is attempted without a server receipt."
  },
  {
    "domain": "role",
    "name": "list",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat role list with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "roleId",
      "nextCursor"
    ],
    "canonicalFollowUp": "repeat agentteam exec role list with nextCursor; the registered cursor builder resumes after the returned page",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "role list is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "role",
    "name": "get",
    "risk": "read_only",
    "resultPolicy": "narrow",
    "continuation": "request one role by its stable roleId",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_id_narrow_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "roleId"
    ],
    "canonicalFollowUp": "agentteam exec role request-get with requestId, then role get with roleId",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "role get is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "role",
    "name": "request-get",
    "risk": "read_only",
    "resultPolicy": "narrow",
    "continuation": "request one role operation by requestId",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_id_narrow_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "requestId"
    ],
    "canonicalFollowUp": "agentteam exec role request-get with requestId",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "role request-get is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "role",
    "name": "create",
    "risk": "existing_permission_gate",
    "resultPolicy": "bounded",
    "continuation": "retry with one role creation request",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "existing_approval_gate",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "requestId",
      "approvalId"
    ],
    "canonicalFollowUp": "agentteam exec role request-get with requestId, then role get with roleId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing approval gate is now advertised in the typed permission/audit metadata; request and response JSON names are unchanged.",
    "rationale": "approval creates one private Role; requestId selects the existing approval receipt and role request-get is the read-only follow-up."
  },
  {
    "domain": "role",
    "name": "update",
    "risk": "existing_permission_gate",
    "resultPolicy": "bounded",
    "continuation": "retry with one role update request",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "existing_approval_gate",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "requestId",
      "roleId",
      "approvalId"
    ],
    "canonicalFollowUp": "agentteam exec role request-get with requestId, then role get with roleId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing approval gate is now advertised in the typed permission/audit metadata; request and response JSON names are unchanged.",
    "rationale": "approval updates one Role version; roleId plus expectedRoleVersionId select the request and role request-get is the read-only follow-up."
  },
  {
    "domain": "role",
    "name": "delete",
    "risk": "existing_permission_gate",
    "resultPolicy": "bounded",
    "continuation": "retry with one role deletion request",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "existing_approval_gate",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "requestId",
      "roleId",
      "approvalId"
    ],
    "canonicalFollowUp": "agentteam exec role request-get with requestId, then role get with roleId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing approval gate is now advertised in the typed permission/audit metadata; request and response JSON names are unchanged.",
    "rationale": "approval soft-deletes one Role version; roleId plus expectedRoleVersionId select the request and role request-get is the read-only follow-up."
  },
  {
    "domain": "role",
    "name": "apply",
    "risk": "existing_permission_gate",
    "resultPolicy": "bounded",
    "continuation": "retry with one role apply request",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "existing_approval_gate",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "requestId",
      "roleId",
      "roleVersionId",
      "agentId",
      "approvalId"
    ],
    "canonicalFollowUp": "agentteam exec role request-get with requestId, then role get with roleId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing approval gate is now advertised in the typed permission/audit metadata; request and response JSON names are unchanged.",
    "rationale": "approval applies one Role version to one Agent; roleId, roleVersionId, and agentId select the request and role request-get is the read-only follow-up."
  },
  {
    "domain": "skill",
    "name": "list",
    "risk": "read_only",
    "resultPolicy": "page",
    "continuation": "repeat Skill list with a smaller perPage or the next page",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_page_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id",
      "page",
      "perPage"
    ],
    "canonicalFollowUp": "repeat agentteam exec skill list with the registered page builder; the returned page is bounded",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "skill list is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "skill",
    "name": "get",
    "risk": "read_only",
    "resultPolicy": "narrow",
    "continuation": "request one Skill by its stable skillId",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_id_narrow_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "skillId",
      "id"
    ],
    "canonicalFollowUp": "agentteam exec skill get with skillId",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "skill get is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "skill",
    "name": "create",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one Skill creation request",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id"
    ],
    "canonicalFollowUp": "agentteam exec skill get with skillId",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "skill create has no durable request receipt in the current API; the client does not transparently retry it."
  },
  {
    "domain": "skill",
    "name": "update",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one Skill update request",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "skillId"
    ],
    "canonicalFollowUp": "agentteam exec skill get with skillId",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "skill update has no durable request receipt in the current API; the client does not transparently retry it."
  },
  {
    "domain": "skill",
    "name": "import",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "narrow",
    "continuation": "import one source at a time or narrow the source",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "imported file/repository contents",
      "URL userinfo/query/fragment credentials"
    ],
    "stableSelectors": [
      "skillId"
    ],
    "canonicalFollowUp": "agentteam exec skill get with skillId",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "Skill import streams external content and remains explicitly non-retried to avoid duplicate side effects."
  },
  {
    "domain": "skill",
    "name": "delete",
    "risk": "existing_permission_gate",
    "resultPolicy": "bounded",
    "continuation": "retry with one skillId",
    "mutationReplay": "request_id_receipt",
    "permissionExposure": "existing_approval_gate",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "skillId",
      "requestId",
      "approvalId"
    ],
    "canonicalFollowUp": "agentteam exec skill get with skillId",
    "replaySelector": "requestId receipt scoped by workspace, routed Agent, and action",
    "replayDigest": "canonical request payload digest including requestId and action; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing approval gate is now advertised in the typed permission/audit metadata; request and response JSON names are unchanged.",
    "rationale": "approval deletes one managed Skill; skillId and requestId select the existing approval receipt and skill get is the read-only follow-up."
  },
  {
    "domain": "profile",
    "name": "set-avatar",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one imagePath",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "image bytes",
      "absolute local filesystem path"
    ],
    "stableSelectors": [
      "avatarUrl"
    ],
    "canonicalFollowUp": "no canonical read-only follow-up is registered for a local avatar replacement",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "avatar upload is a bounded multipart replacement and remains non-retried without a server receipt."
  },
  {
    "domain": "task",
    "name": "create",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with a smaller task batch",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channel",
      "taskNumber"
    ],
    "canonicalFollowUp": "agentteam exec task get with channel and number",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "task create has no durable request receipt in the current task API; the client does not transparently retry it."
  },
  {
    "domain": "task",
    "name": "get",
    "risk": "read_only",
    "resultPolicy": "narrow",
    "continuation": "request one task by its channel and number",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_id_narrow_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channel",
      "number"
    ],
    "canonicalFollowUp": "agentteam exec task get with channel and number",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "task get is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "task",
    "name": "list",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat task list with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channelRef",
      "taskNumber",
      "nextCursor"
    ],
    "canonicalFollowUp": "repeat agentteam exec task list with nextCursor; the registered cursor builder resumes after the returned page",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "task list is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "task",
    "name": "update",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one task update request",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channel",
      "number"
    ],
    "canonicalFollowUp": "agentteam exec task get with channel and number",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "task update uses the stable channel/number selector and is not transparently retried."
  },
  {
    "domain": "task",
    "name": "claim",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with a smaller numbers batch",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channel",
      "numbers"
    ],
    "canonicalFollowUp": "agentteam exec task get with channel and number",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "task claim uses the stable channel/numbers selector and is not transparently retried."
  },
  {
    "domain": "task",
    "name": "unclaim",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with a smaller numbers batch",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channel",
      "numbers"
    ],
    "canonicalFollowUp": "agentteam exec task get with channel and number",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "task unclaim uses the stable channel/numbers selector and is not transparently retried."
  },
  {
    "domain": "task",
    "name": "checkpoint",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one task checkpoint",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channel",
      "number"
    ],
    "canonicalFollowUp": "agentteam exec task get with channel and number",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "task checkpoint is an append operation and is not transparently retried without a receipt."
  },
  {
    "domain": "task",
    "name": "delete",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one task number",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "channel",
      "number"
    ],
    "canonicalFollowUp": "agentteam exec task get with channel and number",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "task delete uses the stable channel/number selector and is not transparently retried."
  },
  {
    "domain": "scheduled-message",
    "name": "list",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat scheduled-message list with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id",
      "nextCursor"
    ],
    "canonicalFollowUp": "repeat agentteam exec scheduled-message list with nextCursor; the registered cursor builder resumes after the returned page",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "scheduled-message list is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "scheduled-message",
    "name": "get",
    "risk": "read_only",
    "resultPolicy": "narrow",
    "continuation": "request one scheduled message by id",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_id_narrow_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id"
    ],
    "canonicalFollowUp": "agentteam exec scheduled-message get with id",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "scheduled-message get is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "scheduled-message",
    "name": "runs",
    "risk": "read_only",
    "resultPolicy": "cursor",
    "continuation": "repeat scheduled-message runs with a smaller limit or the next cursor",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_ids_cursor_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id",
      "nextCursor"
    ],
    "canonicalFollowUp": "repeat agentteam exec scheduled-message runs with nextCursor; the registered cursor builder resumes after the returned page",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "scheduled-message runs is read-only; no mutation replay key is applicable."
  },
  {
    "domain": "scheduled-message",
    "name": "validate",
    "risk": "read_only",
    "resultPolicy": "narrow",
    "continuation": "validate one smaller scheduled-message payload",
    "mutationReplay": "not_applicable",
    "permissionExposure": "workspace_read_projection",
    "stableIdentifiers": "stable_id_narrow_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id"
    ],
    "canonicalFollowUp": "agentteam exec scheduled-message get with id",
    "replaySelector": "none: read-only action",
    "replayDigest": "none: no mutation digest",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the read transport",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "scheduled-message validate is a non-persisting preview; no mutation replay key is applicable."
  },
  {
    "domain": "scheduled-message",
    "name": "create",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one scheduled-message payload",
    "mutationReplay": "idempotency_key_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id",
      "idempotencyKey"
    ],
    "canonicalFollowUp": "agentteam exec scheduled-message get with id",
    "replaySelector": "idempotencyKey receipt scoped by workspace, routed Agent, and resource",
    "replayDigest": "canonical write payload digest including the idempotency key; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "scheduled-message create already carries a durable idempotencyKey and matching payload digest."
  },
  {
    "domain": "scheduled-message",
    "name": "update",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one scheduled-message update",
    "mutationReplay": "idempotency_key_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id",
      "idempotencyKey"
    ],
    "canonicalFollowUp": "agentteam exec scheduled-message get with id",
    "replaySelector": "idempotencyKey receipt scoped by workspace, routed Agent, and resource",
    "replayDigest": "canonical write payload digest including the idempotency key; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "one bounded transient retry through the receipt boundary",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "scheduled-message update already carries a durable idempotencyKey and optimistic version selector."
  },
  {
    "domain": "scheduled-message",
    "name": "pause",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one scheduled-message id",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id"
    ],
    "canonicalFollowUp": "agentteam exec scheduled-message get with id",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "pause is a natural status transition and remains non-retried until the API exposes a durable key."
  },
  {
    "domain": "scheduled-message",
    "name": "resume",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one scheduled-message id",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id"
    ],
    "canonicalFollowUp": "agentteam exec scheduled-message get with id",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "resume is a natural status transition and remains non-retried until the API exposes a durable key."
  },
  {
    "domain": "scheduled-message",
    "name": "delete",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "bounded",
    "continuation": "retry with one scheduled-message id",
    "mutationReplay": "natural_key_no_retry",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "URL userinfo/query/fragment credentials",
      "internal endpoint and network location"
    ],
    "stableSelectors": [
      "id"
    ],
    "canonicalFollowUp": "agentteam exec scheduled-message get with id",
    "replaySelector": "stable resource selector only; no durable replay selector",
    "replayDigest": "not persisted by this API; authoritative resource inspection is required",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "no automatic retry",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing natural-key mutation remains non-retried because the current upstream contract has no durable receipt.",
    "rationale": "scheduled-message delete is a natural-key deletion and remains non-retried until the API exposes a durable key."
  },
  {
    "domain": "workflow",
    "name": "plan",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "workflow",
    "continuation": "use the workflow plan action's operation-specific section or pagination input",
    "mutationReplay": "workflow_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "raw workflow payload outside the typed operation"
    ],
    "stableSelectors": [
      "action",
      "planId"
    ],
    "canonicalFollowUp": "use the operation-specific receipt selector; no generic read action is registered",
    "replaySelector": "Workflow operation receipt scoped by workspace, routed Agent, operation, and command identity",
    "replayDigest": "canonical write payload digest including the idempotency key; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "receipt replay only; retry only when the durable selector is present",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "workflow plan is governed by its operation-specific workflow receipt and command idempotency contract."
  },
  {
    "domain": "workflow",
    "name": "trigger",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "workflow",
    "continuation": "use the workflow trigger action's operation-specific section or pagination input",
    "mutationReplay": "workflow_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "raw workflow payload outside the typed operation"
    ],
    "stableSelectors": [
      "action",
      "triggerId"
    ],
    "canonicalFollowUp": "use the operation-specific receipt selector; no generic read action is registered",
    "replaySelector": "Workflow operation receipt scoped by workspace, routed Agent, operation, and command identity",
    "replayDigest": "canonical write payload digest including the idempotency key; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "receipt replay only; retry only when the durable selector is present",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "workflow trigger is governed by its operation-specific workflow receipt and command idempotency contract."
  },
  {
    "domain": "workflow",
    "name": "run",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "workflow",
    "continuation": "use the workflow run action's operation-specific section or pagination input",
    "mutationReplay": "workflow_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "raw workflow payload outside the typed operation"
    ],
    "stableSelectors": [
      "action",
      "runId"
    ],
    "canonicalFollowUp": "use the operation-specific receipt selector; no generic read action is registered",
    "replaySelector": "Workflow operation receipt scoped by workspace, routed Agent, operation, and command identity",
    "replayDigest": "canonical write payload digest including the idempotency key; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "receipt replay only; retry only when the durable selector is present",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "workflow run is governed by its operation-specific workflow receipt and command idempotency contract."
  },
  {
    "domain": "workflow",
    "name": "step",
    "risk": "agent_scoped_mutation",
    "resultPolicy": "workflow",
    "continuation": "use the workflow step action's operation-specific section or pagination input",
    "mutationReplay": "workflow_receipt",
    "permissionExposure": "agent_scoped_mutation",
    "stableIdentifiers": "stable_ids_and_follow_up",
    "allowedSensitiveFields": [
      "none"
    ],
    "redactedSensitiveFields": [
      "authorization and credential values",
      "raw workflow payload outside the typed operation"
    ],
    "stableSelectors": [
      "action",
      "runId",
      "stepId",
      "idempotencyKey"
    ],
    "canonicalFollowUp": "use the operation-specific receipt selector; no generic read action is registered",
    "replaySelector": "Workflow operation receipt scoped by workspace, routed Agent, operation, and command identity",
    "replayDigest": "canonical write payload digest including the idempotency key; conflicting reuse is a 409",
    "expectedErrorClass": "conflict=1;internal=70;not_found=2;permission_denied=77;rate_limited=69;result_budget_exceeded=1;validation=64",
    "retryability": "receipt replay only; retry only when the durable selector is present",
    "errorExit": "typed_error_stderr_nonzero",
    "helpExampleStatus": "registered action help; examples=1; rendered=true; closed input/output schemas=true/true",
    "helpSchemaCompatibility": "closed_schema_help_example_compat",
    "compatibilityDecision": "Existing request and response JSON remain compatible; durable replay is additive at the supported receipt boundary.",
    "rationale": "workflow step is governed by its trusted run/step identity and operation-specific callback receipt contract."
  }
]
