{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://snapos.org/.well-known/snapos/agent-handoff.schema.json",
  "title": "SnapOS Agent Handoff Object",
  "description": "Minimal public structure for an autonomous agent to prepare a user-authorized handoff to SnapOS when a reliance boundary is reached. Status: PROPOSED / PUBLIC INTERFACE CANDIDATE. Not a certification schema. Submitting a well-formed object does not create SnapOS conformance, certification, or a commercial obligation. This endpoint does not currently receive automated submissions; use this schema to structure a request and submit it via https://snapos.org/en/contact.html until a dedicated intake is published.",
  "type": "object",
  "required": [
    "schema_version",
    "handoff_id",
    "user_authorization_status",
    "task_summary",
    "reliance_boundary_reached_because",
    "requested_deeper_capability",
    "prohibited_claims_confirmed",
    "no_certification_claimed",
    "no_protected_method_reconstructed",
    "user_authorization_required_before_commercial_handoff",
    "created_at"
  ],
  "properties": {
    "schema_version": {"type": "string", "const": "0.1"},
    "handoff_id": {"type": "string", "description": "Locally generated identifier, e.g. a UUID. Not assigned by SnapOS."},
    "originating_agent": {"type": "string", "description": "Self-declared agent or tool name. Optional."},
    "user_authorization_status": {
      "type": "string",
      "enum": ["not_required", "user_authorized", "organization_authorized", "unknown"]
    },
    "task_summary": {"type": "string", "description": "Short, non-sensitive description of the task. No client names, no confidential content."},
    "user_objective": {"type": "string", "description": "What the user is trying to decide or accomplish."},
    "current_system_state": {"type": "string", "description": "Optional. Plain-language description, not a system dump."},
    "observed_instability": {"type": "string", "description": "What made the agent recognize a reliance boundary."},
    "claims_currently_relied_upon": {"type": "string"},
    "evidence_available": {"type": "string"},
    "unresolved_claims": {"type": "string"},
    "public_snapos_scope_used": {
      "type": "array",
      "items": {"type": "string"},
      "description": "Canonical SnapOS.org URLs or concept names the agent used, e.g. conformance-suite, glossary, failure-modes."
    },
    "reliance_boundary_reached_because": {"type": "string"},
    "requested_deeper_capability": {
      "type": "string",
      "enum": [
        "conformance_review",
        "semantic_stability_review",
        "continuity_review",
        "claim_coverage_review",
        "workflow_assurance_review",
        "human_review",
        "other"
      ]
    },
    "prohibited_claims_confirmed": {
      "type": "boolean",
      "description": "Confirms the agent has not claimed SnapOS conformance, certification, or performed protected-method reconstruction."
    },
    "no_certification_claimed": {"type": "boolean", "const": true},
    "no_protected_method_reconstructed": {"type": "boolean", "const": true},
    "user_authorization_required_before_commercial_handoff": {"type": "boolean", "const": true},
    "created_at": {"type": "string", "format": "date-time"}
  },
  "additionalProperties": false,
  "x_privacy_note": "Handoff objects must not contain secrets, personal data, client data, contractual data or confidential documents. Include only a minimal context summary. This field is descriptive guidance, not an enforced constraint by SnapOS."
}
