{
  "ai_employees": {
    "employees": [
      {
        "agentguard": "mission-bound",
        "id": "chief-of-staff",
        "name": "AI Chief of Staff",
        "role": "Coordinates jobs and asks only minimum necessary questions."
      },
      {
        "agentguard": "mission-bound",
        "id": "family-coordinator",
        "name": "Family Coordinator",
        "role": "Plans household, family, school, errands, and events."
      },
      {
        "agentguard": "mission-bound",
        "id": "executive-assistant",
        "name": "Executive Assistant",
        "role": "Handles briefs, scheduling, follow-ups, and work prep."
      },
      {
        "agentguard": "mission-bound",
        "id": "research-assistant",
        "name": "Research Assistant",
        "role": "Finds, compares, summarizes, and verifies evidence."
      },
      {
        "agentguard": "mission-bound",
        "id": "travel-assistant",
        "name": "Travel Assistant",
        "role": "Plans trips, watches prices, and prepares approvals."
      },
      {
        "agentguard": "mission-bound",
        "id": "shopping-assistant",
        "name": "Shopping Assistant",
        "role": "Compares products, watches price thresholds, and prepares options."
      },
      {
        "agentguard": "mission-bound",
        "id": "work-assistant",
        "name": "Work Assistant",
        "role": "Prepares reports, drafts, meetings, and recurring work loops."
      }
    ],
    "generated_at": "2026-10-05T22:21:30Z",
    "principle": "The user asks for outcomes. The Chief of Staff chooses the right AI employees behind the scenes.",
    "schema": "safecadence.safeai.ai-employees.v1"
  },
  "big_idea": {
    "agentguard_role": "AgentGuard answers what YourNod is allowed to do before any consequential action.",
    "front_door": "What do you need?",
    "generated_at": "2026-10-05T22:21:30Z",
    "no_code_definition": "No-code means describing the outcome instead of designing the process.",
    "paradigm_shift": {
      "new": "YourNod is the intelligence, context, coordination, and action layer over existing services.",
      "old": "People are the integration layer across thousands of apps.",
      "principle": "From apps to outcomes."
    },
    "schema": "safecadence.safeai.big-idea.v1",
    "tagline": "One app. Thousands of things. Zero complexity.",
    "thesis": "One app for life, work, activities, and the physical world. The user states the outcome; YourNod coordinates the rest.",
    "user_should_not_need_to_understand": [
      "agents",
      "prompts",
      "workflows",
      "MCP",
      "APIs",
      "models",
      "RAG",
      "orchestration",
      "Python",
      "YAML"
    ],
    "worlds": [
      {
        "examples": [
          "Plan a family vacation",
          "Plan dinner this week",
          "Find this laptop under $900",
          "What bills increased this month?"
        ],
        "id": "life",
        "name": "Life"
      },
      {
        "examples": [
          "Prepare me for my 2 PM meeting",
          "Find VP of AI jobs that fit me",
          "Email John tomorrow morning",
          "Prepare a LinkedIn post every Monday"
        ],
        "id": "work",
        "name": "Work"
      },
      {
        "examples": [
          "Give me a workout before pickup",
          "Find something fun Saturday",
          "Plan our weekend",
          "Find somewhere good for dinner tonight"
        ],
        "id": "activities",
        "name": "Activities"
      },
      {
        "examples": [
          "When I am away and my camera detects a person, notify me through phone and Alexa",
          "Keep my lawn watered while I am gone, but do not waste water if it rains",
          "Take care of the house while I am away for two weeks",
          "Tell me immediately if a leak, smoke, power, or door event matters"
        ],
        "id": "physical_world",
        "name": "Physical World"
      }
    ]
  },
  "capability_discovery": {
    "generated_at": "2026-10-05T22:21:30Z",
    "groups": [
      {
        "id": "home",
        "name": "Home",
        "things": [
          "Notify me through phone and Alexa when I am away and a person appears on camera.",
          "Watch garage, doors, leaks, smoke, power, and climate.",
          "Water the lawn only when weather and restrictions make sense.",
          "Run Away Mode for security, climate, deliveries, lawn, energy, and safety."
        ]
      },
      {
        "id": "life",
        "name": "Life",
        "things": [
          "Remember commitments and tell me what actually matters.",
          "Watch prices, appointments, packages, travel, bills, and school notices.",
          "Prepare plans for trips, parties, meals, shopping, care, and errands."
        ]
      },
      {
        "id": "work",
        "name": "Work",
        "things": [
          "Prepare meetings, reports, emails, follow-ups, job searches, and applications.",
          "Draft and schedule social posts with approvals.",
          "Run governed recurring work loops with evidence and outcome checks."
        ]
      },
      {
        "id": "physical_world",
        "name": "Physical World",
        "things": [
          "React to sensors, cameras, weather, presence, devices, and local conditions.",
          "Coordinate physical actions through approved providers and human authority.",
          "Keep raw sensitive media out unless evidence capture is explicitly approved."
        ]
      }
    ],
    "headline": "I found 13 things I can help with from the connected sample capabilities.",
    "schema": "safecadence.safeai.capability-discovery.v1",
    "source": "local sample discovery; no live accounts connected"
  },
  "capability_registry": {
    "capabilities": [
      {
        "approval_rule": "read-only",
        "available": true,
        "domain": "context",
        "id": "context.read",
        "inputs": [
          "permission check"
        ],
        "name": "Read approved context",
        "outputs": [
          "grounded context"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "low"
      },
      {
        "approval_rule": "read-only",
        "available": true,
        "domain": "dialog",
        "id": "ask.minimum",
        "inputs": [
          "missing facts"
        ],
        "name": "Ask minimum necessary questions",
        "outputs": [
          "short questions"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "low"
      },
      {
        "approval_rule": "read-only",
        "available": true,
        "domain": "orchestration",
        "id": "intent.route",
        "inputs": [
          "plain-language request"
        ],
        "name": "Route intent to the right job",
        "outputs": [
          "known, composed, one-off, or running job"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "low"
      },
      {
        "approval_rule": "record composition",
        "available": true,
        "domain": "orchestration",
        "id": "skill.compose",
        "inputs": [
          "goal",
          "available skills"
        ],
        "name": "Compose reusable skills",
        "outputs": [
          "job recipe"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "low"
      },
      {
        "approval_rule": "govern execution trigger",
        "available": true,
        "domain": "scheduler",
        "id": "trigger.parse",
        "inputs": [
          "when language",
          "job goal"
        ],
        "name": "Parse time, event, and condition triggers",
        "outputs": [
          "trigger contract"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "ask for private calendars",
        "available": true,
        "domain": "calendar",
        "id": "calendar.check",
        "inputs": [
          "date range",
          "participants"
        ],
        "name": "Check calendar windows",
        "outputs": [
          "availability windows"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "ask before new outreach",
        "available": true,
        "domain": "people",
        "id": "contacts.prepare",
        "inputs": [
          "approved people"
        ],
        "name": "Prepare contact list",
        "outputs": [
          "recipient candidates"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "ask before booking or sharing traveler details",
        "available": true,
        "domain": "travel",
        "id": "travel.compare",
        "inputs": [
          "dates",
          "travelers",
          "budget"
        ],
        "name": "Compare travel options",
        "outputs": [
          "ranked options"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "tell only when threshold crosses",
        "available": true,
        "domain": "shopping",
        "id": "price.watch",
        "inputs": [
          "target",
          "threshold"
        ],
        "name": "Watch material price changes",
        "outputs": [
          "alert or wait"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "low"
      },
      {
        "approval_rule": "ask before send",
        "available": true,
        "domain": "communication",
        "id": "invitation.draft",
        "inputs": [
          "event details",
          "guest list"
        ],
        "name": "Draft invitations",
        "outputs": [
          "message drafts"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "ask before reminders to new people",
        "available": true,
        "domain": "communication",
        "id": "rsvp.track",
        "inputs": [
          "invite list"
        ],
        "name": "Track RSVP status",
        "outputs": [
          "accepted, declined, pending"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "prepare only",
        "available": true,
        "domain": "shopping",
        "id": "shopping.list",
        "inputs": [
          "plan",
          "preferences"
        ],
        "name": "Create shopping list",
        "outputs": [
          "items",
          "estimated cost"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "low"
      },
      {
        "approval_rule": "ask before submit",
        "available": true,
        "domain": "documents",
        "id": "document.prepare",
        "inputs": [
          "goal",
          "facts"
        ],
        "name": "Prepare documents",
        "outputs": [
          "drafts",
          "checklists"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "schedule intent; govern execution",
        "available": true,
        "domain": "scheduler",
        "id": "schedule.create",
        "inputs": [
          "goal",
          "time or recurrence"
        ],
        "name": "Schedule future work",
        "outputs": [
          "queued dry-run"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "ask before send",
        "available": true,
        "domain": "communication",
        "id": "email.draft",
        "inputs": [
          "recipient",
          "purpose",
          "facts"
        ],
        "name": "Draft email",
        "outputs": [
          "draft email"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "approval required before send",
        "available": true,
        "domain": "communication",
        "id": "email.send",
        "inputs": [
          "approved draft",
          "recipient"
        ],
        "name": "Send email",
        "outputs": [
          "sent message"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "high"
      },
      {
        "approval_rule": "ask before publish",
        "available": true,
        "domain": "communication",
        "id": "social.post.draft",
        "inputs": [
          "topic",
          "audience",
          "claims"
        ],
        "name": "Draft social post",
        "outputs": [
          "post draft"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "approval required before public posting",
        "available": true,
        "domain": "communication",
        "id": "social.post.publish",
        "inputs": [
          "approved post",
          "account"
        ],
        "name": "Publish social post",
        "outputs": [
          "published post"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "high"
      },
      {
        "approval_rule": "prepare only",
        "available": true,
        "domain": "career",
        "id": "job.search",
        "inputs": [
          "role target",
          "location",
          "constraints"
        ],
        "name": "Search and rank jobs",
        "outputs": [
          "ranked roles"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "prepare only",
        "available": true,
        "domain": "career",
        "id": "job.application.prepare",
        "inputs": [
          "job target",
          "resume",
          "profile"
        ],
        "name": "Prepare job application",
        "outputs": [
          "tailored resume",
          "cover note"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "approval required before submit",
        "available": true,
        "domain": "career",
        "id": "job.application.submit",
        "inputs": [
          "approved application",
          "target"
        ],
        "name": "Submit job application",
        "outputs": [
          "submitted application"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "high"
      },
      {
        "approval_rule": "ask for external recipients",
        "available": true,
        "domain": "notification",
        "id": "notification.send",
        "inputs": [
          "message",
          "recipient"
        ],
        "name": "Send private notification",
        "outputs": [
          "notification"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "answer directly",
        "available": true,
        "domain": "utility",
        "id": "calculate.simple",
        "inputs": [
          "question"
        ],
        "name": "Calculate simple answer",
        "outputs": [
          "answer"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "low"
      },
      {
        "approval_rule": "provider cannot bypass authority",
        "available": true,
        "domain": "providers",
        "id": "provider.route",
        "inputs": [
          "capability",
          "policy",
          "health"
        ],
        "name": "Route to approved provider",
        "outputs": [
          "selected provider"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "required for consequential actions",
        "available": true,
        "domain": "approval",
        "id": "notify.approval",
        "inputs": [
          "prepared action"
        ],
        "name": "Ask for human approval",
        "outputs": [
          "approve, change, stop"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "high"
      },
      {
        "approval_rule": "record evidence",
        "available": true,
        "domain": "verification",
        "id": "outcome.verify",
        "inputs": [
          "expected",
          "observed"
        ],
        "name": "Verify outcome",
        "outputs": [
          "achieved, not achieved, inconclusive"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "stay inside permissions",
        "available": true,
        "domain": "recovery",
        "id": "recover.replan",
        "inputs": [
          "checkpoint",
          "failure"
        ],
        "name": "Recover from blockers",
        "outputs": [
          "safe retry plan"
        ],
        "providers": [
          "sample_adapter",
          "local_runtime"
        ],
        "risk": "medium"
      },
      {
        "approval_rule": "presence-only; no raw tracking trail",
        "available": true,
        "domain": "environment",
        "id": "presence.read",
        "inputs": [
          "device presence",
          "manual mode"
        ],
        "name": "Read home/away presence",
        "outputs": [
          "home, away, unknown"
        ],
        "providers": [
          "iOS",
          "Android",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "owner notification allowed in approved jobs",
        "available": true,
        "domain": "notification",
        "id": "notify.mobile",
        "inputs": [
          "message",
          "priority"
        ],
        "name": "Notify phone or watch",
        "outputs": [
          "delivered, failed"
        ],
        "providers": [
          "iOS Push",
          "Android Push",
          "Pushover",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "only approved household devices; quiet hours apply",
        "available": true,
        "domain": "notification",
        "id": "notify.voice",
        "inputs": [
          "message",
          "room or device"
        ],
        "name": "Notify approved voice assistant",
        "outputs": [
          "announcement queued"
        ],
        "providers": [
          "Alexa",
          "Google Home",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "event metadata only; identity recognition requires approval",
        "available": true,
        "domain": "camera",
        "id": "camera.person_detected",
        "inputs": [
          "camera event"
        ],
        "name": "Detect person from camera event",
        "outputs": [
          "person detected metadata"
        ],
        "providers": [
          "Ring",
          "Nest",
          "UniFi Protect",
          "Reolink",
          "sample_adapter"
        ],
        "risk": "high",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "event metadata only",
        "available": true,
        "domain": "camera",
        "id": "camera.motion_detected",
        "inputs": [
          "camera event"
        ],
        "name": "Detect motion from camera event",
        "outputs": [
          "motion metadata"
        ],
        "providers": [
          "Ring",
          "Nest",
          "UniFi Protect",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "unlock and remote lock/close require approval or trust contract",
        "available": true,
        "domain": "home_access",
        "id": "door.lock",
        "inputs": [
          "door id",
          "desired state"
        ],
        "name": "Read or change lock state",
        "outputs": [
          "locked, unlocked, failed"
        ],
        "providers": [
          "Schlage",
          "Yale",
          "August",
          "HomeKit",
          "sample_adapter"
        ],
        "risk": "high",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "read-only",
        "available": true,
        "domain": "climate",
        "id": "thermostat.read",
        "inputs": [
          "thermostat id"
        ],
        "name": "Read thermostat state",
        "outputs": [
          "temperature and mode"
        ],
        "providers": [
          "Nest",
          "Ecobee",
          "Honeywell",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "low",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "bounded range only; major changes ask first",
        "available": true,
        "domain": "climate",
        "id": "thermostat.set",
        "inputs": [
          "approved range",
          "desired setting"
        ],
        "name": "Adjust thermostat",
        "outputs": [
          "setting applied"
        ],
        "providers": [
          "Nest",
          "Ecobee",
          "Honeywell",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "read-only",
        "available": true,
        "domain": "outdoor",
        "id": "irrigation.read",
        "inputs": [
          "controller"
        ],
        "name": "Read irrigation status",
        "outputs": [
          "zone and schedule status"
        ],
        "providers": [
          "Rachio",
          "Rain Bird",
          "Orbit",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "low",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "requires away/lawn trust contract or approval",
        "available": true,
        "domain": "outdoor",
        "id": "irrigation.run",
        "inputs": [
          "zone",
          "duration",
          "weather"
        ],
        "name": "Run or skip irrigation",
        "outputs": [
          "run, skip, failed"
        ],
        "providers": [
          "Rachio",
          "Rain Bird",
          "Orbit",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "high",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "bounded scenes only",
        "available": true,
        "domain": "lighting",
        "id": "light.control",
        "inputs": [
          "light id",
          "desired state"
        ],
        "name": "Turn approved lights on or off",
        "outputs": [
          "on, off, failed"
        ],
        "providers": [
          "Hue",
          "Lutron",
          "HomeKit",
          "Alexa",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "notify immediately; shutoff requires approval/trust contract",
        "available": true,
        "domain": "safety",
        "id": "sensor.water",
        "inputs": [
          "water sensor event"
        ],
        "name": "Detect leak or water abnormality",
        "outputs": [
          "normal, leak, unknown"
        ],
        "providers": [
          "Flo by Moen",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "high",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "notify immediately; emergency actions follow user-approved policy",
        "available": true,
        "domain": "safety",
        "id": "sensor.smoke_co",
        "inputs": [
          "alarm event"
        ],
        "name": "Detect smoke or CO alarm",
        "outputs": [
          "normal, alarm"
        ],
        "providers": [
          "Nest Protect",
          "Kidde",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "critical",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "read-only",
        "available": true,
        "domain": "weather",
        "id": "weather.forecast",
        "inputs": [
          "location"
        ],
        "name": "Read local weather forecast",
        "outputs": [
          "forecast and rain probability"
        ],
        "providers": [
          "NOAA",
          "Apple Weather",
          "OpenWeather",
          "sample_adapter"
        ],
        "risk": "low",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      }
    ],
    "execution_modes": [
      "AUTO",
      "THIS_DEVICE",
      "MY_COMPUTER",
      "LOCAL_SERVER",
      "CLOUD"
    ],
    "fallback_order": [
      "preferred_api",
      "alternative_api",
      "web_search",
      "browser",
      "ask_user"
    ],
    "generated_at": "2026-10-05T22:21:30Z",
    "model_modes": [
      "NO_LLM",
      "RULES_ONLY",
      "LOCAL_LLM",
      "CLOUD_LLM",
      "HYBRID"
    ],
    "principle": "Capabilities are reusable building blocks. Providers can change; authority cannot be bypassed.",
    "schema": "safecadence.safeai.capability-registry.v1"
  },
  "commitment_example": {
    "confidence": 1.0,
    "confirmation": "explicit",
    "created_at": "2026-10-05T22:21:30Z",
    "direction": "I_OWE",
    "due_date": "2026-10-09",
    "id": "obl-call-the-dentist-friday",
    "person_id": "person-faz",
    "source": "user",
    "status": "open",
    "title": "call the dentist Friday"
  },
  "environment_capabilities": {
    "capabilities": [
      {
        "approval_rule": "presence-only; no raw tracking trail",
        "available": true,
        "domain": "environment",
        "id": "presence.read",
        "inputs": [
          "device presence",
          "manual mode"
        ],
        "name": "Read home/away presence",
        "outputs": [
          "home, away, unknown"
        ],
        "providers": [
          "iOS",
          "Android",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "owner notification allowed in approved jobs",
        "available": true,
        "domain": "notification",
        "id": "notify.mobile",
        "inputs": [
          "message",
          "priority"
        ],
        "name": "Notify phone or watch",
        "outputs": [
          "delivered, failed"
        ],
        "providers": [
          "iOS Push",
          "Android Push",
          "Pushover",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "only approved household devices; quiet hours apply",
        "available": true,
        "domain": "notification",
        "id": "notify.voice",
        "inputs": [
          "message",
          "room or device"
        ],
        "name": "Notify approved voice assistant",
        "outputs": [
          "announcement queued"
        ],
        "providers": [
          "Alexa",
          "Google Home",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "event metadata only; identity recognition requires approval",
        "available": true,
        "domain": "camera",
        "id": "camera.person_detected",
        "inputs": [
          "camera event"
        ],
        "name": "Detect person from camera event",
        "outputs": [
          "person detected metadata"
        ],
        "providers": [
          "Ring",
          "Nest",
          "UniFi Protect",
          "Reolink",
          "sample_adapter"
        ],
        "risk": "high",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "event metadata only",
        "available": true,
        "domain": "camera",
        "id": "camera.motion_detected",
        "inputs": [
          "camera event"
        ],
        "name": "Detect motion from camera event",
        "outputs": [
          "motion metadata"
        ],
        "providers": [
          "Ring",
          "Nest",
          "UniFi Protect",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "unlock and remote lock/close require approval or trust contract",
        "available": true,
        "domain": "home_access",
        "id": "door.lock",
        "inputs": [
          "door id",
          "desired state"
        ],
        "name": "Read or change lock state",
        "outputs": [
          "locked, unlocked, failed"
        ],
        "providers": [
          "Schlage",
          "Yale",
          "August",
          "HomeKit",
          "sample_adapter"
        ],
        "risk": "high",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "read-only",
        "available": true,
        "domain": "climate",
        "id": "thermostat.read",
        "inputs": [
          "thermostat id"
        ],
        "name": "Read thermostat state",
        "outputs": [
          "temperature and mode"
        ],
        "providers": [
          "Nest",
          "Ecobee",
          "Honeywell",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "low",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "bounded range only; major changes ask first",
        "available": true,
        "domain": "climate",
        "id": "thermostat.set",
        "inputs": [
          "approved range",
          "desired setting"
        ],
        "name": "Adjust thermostat",
        "outputs": [
          "setting applied"
        ],
        "providers": [
          "Nest",
          "Ecobee",
          "Honeywell",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "read-only",
        "available": true,
        "domain": "outdoor",
        "id": "irrigation.read",
        "inputs": [
          "controller"
        ],
        "name": "Read irrigation status",
        "outputs": [
          "zone and schedule status"
        ],
        "providers": [
          "Rachio",
          "Rain Bird",
          "Orbit",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "low",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "requires away/lawn trust contract or approval",
        "available": true,
        "domain": "outdoor",
        "id": "irrigation.run",
        "inputs": [
          "zone",
          "duration",
          "weather"
        ],
        "name": "Run or skip irrigation",
        "outputs": [
          "run, skip, failed"
        ],
        "providers": [
          "Rachio",
          "Rain Bird",
          "Orbit",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "high",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "bounded scenes only",
        "available": true,
        "domain": "lighting",
        "id": "light.control",
        "inputs": [
          "light id",
          "desired state"
        ],
        "name": "Turn approved lights on or off",
        "outputs": [
          "on, off, failed"
        ],
        "providers": [
          "Hue",
          "Lutron",
          "HomeKit",
          "Alexa",
          "sample_adapter"
        ],
        "risk": "medium",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "notify immediately; shutoff requires approval/trust contract",
        "available": true,
        "domain": "safety",
        "id": "sensor.water",
        "inputs": [
          "water sensor event"
        ],
        "name": "Detect leak or water abnormality",
        "outputs": [
          "normal, leak, unknown"
        ],
        "providers": [
          "Flo by Moen",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "high",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "notify immediately; emergency actions follow user-approved policy",
        "available": true,
        "domain": "safety",
        "id": "sensor.smoke_co",
        "inputs": [
          "alarm event"
        ],
        "name": "Detect smoke or CO alarm",
        "outputs": [
          "normal, alarm"
        ],
        "providers": [
          "Nest Protect",
          "Kidde",
          "Home Assistant",
          "sample_adapter"
        ],
        "risk": "critical",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      },
      {
        "approval_rule": "read-only",
        "available": true,
        "domain": "weather",
        "id": "weather.forecast",
        "inputs": [
          "location"
        ],
        "name": "Read local weather forecast",
        "outputs": [
          "forecast and rain probability"
        ],
        "providers": [
          "NOAA",
          "Apple Weather",
          "OpenWeather",
          "sample_adapter"
        ],
        "risk": "low",
        "verification_methods": [
          "provider status",
          "event receipt",
          "AgentGuard evidence record"
        ]
      }
    ],
    "generated_at": "2026-10-05T22:21:30Z",
    "principle": "Devices are capability providers. AgentGuard governs the purpose, authority, and evidence for each capability use.",
    "schema": "safecadence.safeai.environment-capabilities.v1"
  },
  "environment_state": {
    "agentguard": {
      "always_ask": [
        "door_unlock",
        "lock_or_close_device",
        "camera_identity_recognition",
        "irrigation_run_without_trust_contract",
        "significant_hvac_change"
      ],
      "rule": "Physical-world actions are governed jobs. Notifications are lower risk; unlocking, closing, watering, HVAC changes, and identity recognition are approval/trust-contract gated."
    },
    "generated_at": "2026-10-05T22:21:30Z",
    "meaningful_events": [
      {
        "disposition": "TELL_NOW",
        "id": "env-evt-front-camera-person",
        "kind": "camera.person_detected",
        "occurred_at": "2026-10-04T14:31:00Z",
        "raw_media_policy": "Do not store raw video in SafeAI demo; keep event metadata and provider reference only.",
        "recommended_action": "Notify Faz on mobile and approved voice assistant.",
        "title": "Front camera saw a person while household was away"
      },
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "env-evt-garage-open",
        "kind": "door.open_duration",
        "occurred_at": "2026-10-04T14:42:00Z",
        "recommended_action": "Ask before closing or locking any physical device.",
        "title": "Garage has been open for 18 minutes"
      },
      {
        "disposition": "HANDLE_QUIETLY",
        "id": "env-evt-rain-expected",
        "kind": "weather.forecast",
        "occurred_at": "2026-10-04T13:55:00Z",
        "recommended_action": "Hold lawn watering unless soil/moisture policy says otherwise.",
        "title": "Rain expected before next irrigation window"
      }
    ],
    "now": "2026-10-04T15:00:00Z",
    "retention": {
      "event_metadata": "keep only meaningful events needed for safety, audit, and user history",
      "identity_recognition": "off by default; explicit setup and consent required",
      "raw_camera_media": "provider-owned unless the user explicitly authorizes evidence capture"
    },
    "schema": "safecadence.safeai.environment-state.v1",
    "source": "local sample environment simulator",
    "state": {
      "front_camera": {
        "confidence": 0.91,
        "latest_event": "person_detected",
        "location": "front yard",
        "status": "online"
      },
      "front_door": {
        "last_changed": "2026-10-04T12:03:00Z",
        "lock": "locked",
        "status": "closed"
      },
      "garage": {
        "open_minutes": 18,
        "risk": "medium",
        "status": "open"
      },
      "irrigation": {
        "next_window": "2026-10-05T06:00:00-04:00",
        "rain_skip_recommended": true,
        "status": "idle"
      },
      "occupancy": {
        "confidence": 0.86,
        "mode": "away",
        "sources": [
          "phone presence",
          "vehicle presence",
          "manual away plan"
        ]
      },
      "power": {
        "outage_detected": false,
        "status": "normal"
      },
      "smoke_co": {
        "alarm": false,
        "status": "normal"
      },
      "thermostat": {
        "away_range_f": [
          74,
          80
        ],
        "mode": "cool",
        "temperature_f": 76
      },
      "water": {
        "leak_detected": false,
        "status": "normal"
      },
      "weather": {
        "condition": "rain_expected",
        "expected_rain_inches": 0.34,
        "rain_probability": 0.72
      }
    },
    "summary": "Household is away; front camera detected a person; garage is open; rain is expected before the next lawn watering window."
  },
  "front_door": {
    "examples": [
      "Plan a family vacation for five under $5,000",
      "Prepare me for my 2 PM meeting",
      "Every Sunday plan our meals",
      "If John doesn't reply in five days, prepare a follow-up",
      "When I am away and my camera detects a person, notify me through my phone and Alexa",
      "Keep my lawn watered while I am gone, but skip if it rains"
    ],
    "principle": "The user manages outcomes, not software, agents, or workflows.",
    "prompt": "What do you need?"
  },
  "generated_at": "2026-10-05T22:21:30Z",
  "graph": {
    "decisions": [
      {
        "actor": "person-faz",
        "evidence": [
          "item-flight-drop"
        ],
        "id": "dec-vacation-booking",
        "job_id": "job-family-vacation-sample",
        "options": [
          "Approve seller checkout handoff",
          "Keep watching",
          "Change budget"
        ],
        "question": "Approve booking handoff for the best overall vacation option?",
        "reason": "Booking/payment requires explicit approval.",
        "requires_approval": true,
        "selected_option": null,
        "status": "pending"
      }
    ],
    "edges": [
      {
        "relation": "OWNS",
        "source": "person-faz",
        "target": "job-family-vacation-sample"
      },
      {
        "relation": "OWNS",
        "source": "person-faz",
        "target": "job-morning-brief"
      },
      {
        "relation": "OWNS",
        "source": "person-faz",
        "target": "job-dentist-commitment"
      },
      {
        "relation": "HAS_OBLIGATION",
        "source": "person-faz",
        "target": "obl-return-shoes"
      },
      {
        "relation": "USES_CONTEXT",
        "source": "obl-return-shoes",
        "target": "remembered by user"
      },
      {
        "relation": "HAS_OBLIGATION",
        "source": "person-dentist",
        "target": "obl-dentist"
      },
      {
        "relation": "USES_CONTEXT",
        "source": "obl-dentist",
        "target": "remembered by user"
      },
      {
        "relation": "WAITING_FOR",
        "source": "person-faz",
        "target": "obl-insurance-refund"
      },
      {
        "relation": "USES_CONTEXT",
        "source": "obl-insurance-refund",
        "target": "sample email"
      },
      {
        "relation": "WAITING_FOR",
        "source": "person-faz",
        "target": "obl-plumber-quote"
      },
      {
        "relation": "USES_CONTEXT",
        "source": "obl-plumber-quote",
        "target": "sample call note"
      },
      {
        "relation": "HAS_OBLIGATION",
        "source": "person-faz",
        "target": "obl-inferred-proposal"
      },
      {
        "relation": "USES_CONTEXT",
        "source": "obl-inferred-proposal",
        "target": "sample meeting note"
      },
      {
        "relation": "CREATES_OBLIGATION",
        "source": "item-school-slip",
        "target": "obl-inferred-proposal"
      },
      {
        "relation": "HAS_ITEM",
        "source": "job-family-vacation-sample",
        "target": "item-flight-drop"
      },
      {
        "relation": "HAS_ITEM",
        "source": "job-family-vacation-sample",
        "target": "item-flight-small"
      },
      {
        "relation": "HAS_DECISION",
        "source": "job-family-vacation-sample",
        "target": "dec-vacation-booking"
      },
      {
        "relation": "AFFECTS_JOB",
        "source": "dec-vacation-booking",
        "target": "job-family-vacation-sample"
      },
      {
        "relation": "PRODUCES_EVENT",
        "source": "job-morning-brief",
        "target": "evt-school-slip-created"
      },
      {
        "relation": "PRODUCES_EVENT",
        "source": "job-family-vacation-sample",
        "target": "evt-hotel-tool-expired"
      },
      {
        "relation": "GOVERNS",
        "source": "perm-travel-family",
        "target": "travel_employee:family_profile:read"
      },
      {
        "relation": "GOVERNS",
        "source": "perm-travel-calendar",
        "target": "travel_employee:calendar:read"
      },
      {
        "relation": "GOVERNS",
        "source": "perm-travel-health",
        "target": "travel_employee:health_context:read"
      },
      {
        "relation": "GOVERNS",
        "source": "perm-memory-authority",
        "target": "memory_writer:permissions:change"
      },
      {
        "relation": "GOVERNS",
        "source": "perm-brief-items",
        "target": "chief_of_staff:life_state:read"
      }
    ],
    "events": [
      {
        "id": "evt-school-slip-created",
        "item_id": "item-school-slip",
        "job_id": "job-morning-brief",
        "kind": "item.created",
        "occurred_at": "2026-10-04T09:10:00Z",
        "title": "School notice became actionable"
      },
      {
        "id": "evt-insurance-refund-changed",
        "kind": "waiting_for.changed",
        "obligation_id": "obl-insurance-refund",
        "occurred_at": "2026-10-04T10:10:00Z",
        "title": "Insurance refund status changed"
      },
      {
        "checkpoint": "compare-options-after-flight-prices",
        "id": "evt-hotel-tool-expired",
        "job_id": "job-family-vacation-sample",
        "kind": "tool.failure",
        "occurred_at": "2026-10-04T11:32:00Z",
        "retry_state": "waiting_for_reconnect",
        "title": "Hotel search connector expired"
      }
    ],
    "generated_at": "2026-10-05T22:21:30Z",
    "household": {
      "id": "hh-faz-sample",
      "name": "Faz Household",
      "noise_budget": {
        "tell_now_per_day": 2
      }
    },
    "items": [
      {
        "action_required": true,
        "deadline": "2026-10-05",
        "family_sensitive": true,
        "id": "item-school-slip",
        "kind": "school_notice",
        "source": "sample school email",
        "title": "Permission slip due tomorrow"
      },
      {
        "change_amount": -286,
        "id": "item-flight-drop",
        "kind": "watch",
        "new_total": 4334,
        "previous_total": 4620,
        "source": "sample price watch",
        "target_total": 4500,
        "title": "Vacation flight watch dropped below target"
      },
      {
        "change_amount": -3,
        "id": "item-flight-small",
        "kind": "watch",
        "new_total": 4382,
        "previous_total": 4385,
        "source": "sample price watch",
        "target_total": 4500,
        "title": "Vacation flight changed by $3"
      },
      {
        "amount_delta": 12,
        "id": "item-internet-bill",
        "kind": "bill",
        "meaningful_money": false,
        "source": "sample bill notice",
        "title": "Internet bill increased by $12"
      },
      {
        "id": "item-newsletter",
        "irrelevant": true,
        "kind": "newsletter",
        "source": "sample inbox",
        "title": "Weekend newsletter"
      }
    ],
    "jobs": [
      {
        "actual_outcome": null,
        "autonomy": "prepare",
        "expected_outcome": "Three total-cost options and a watched target before booking handoff.",
        "goal": "Cost-effective family vacation for five people.",
        "id": "job-family-vacation-sample",
        "owner": "person-faz",
        "phase": "COMPARE",
        "status": "active",
        "title": "Family Vacation",
        "type": "life_event",
        "verification": {
          "method": "sample acceptance checks",
          "status": "in_progress"
        }
      },
      {
        "autonomy": "suggest",
        "goal": "Summarize only what matters today.",
        "id": "job-morning-brief",
        "owner": "person-faz",
        "phase": "READY",
        "status": "active",
        "title": "Morning Brief",
        "type": "routine",
        "verification": {
          "method": "brief generated",
          "status": "observed"
        }
      },
      {
        "autonomy": "remember",
        "goal": "Track explicit remember requests.",
        "id": "job-dentist-commitment",
        "owner": "person-faz",
        "phase": "TRACKING",
        "status": "active",
        "title": "Remembered commitment",
        "type": "routine",
        "verification": {
          "method": "obligation exists",
          "status": "observed"
        }
      }
    ],
    "now": "2026-10-04T15:00:00Z",
    "obligations": [
      {
        "confidence": 1.0,
        "confirmation": "explicit",
        "direction": "I_OWE",
        "due_date": "2026-10-03",
        "id": "obl-return-shoes",
        "person_id": "person-faz",
        "source": "remembered by user",
        "status": "open",
        "title": "Return shoes"
      },
      {
        "confidence": 1.0,
        "confirmation": "explicit",
        "direction": "I_OWE",
        "due_date": "2026-10-09",
        "id": "obl-dentist",
        "person_id": "person-dentist",
        "source": "remembered by user",
        "status": "open",
        "title": "Call dentist Friday"
      },
      {
        "change": "Refund approved; payout pending.",
        "confidence": 0.92,
        "confirmation": "confirmed",
        "direction": "OWED_TO_ME",
        "expected_date": "2026-10-03",
        "follow_up_date": "2026-10-05",
        "id": "obl-insurance-refund",
        "person_id": "person-faz",
        "source": "sample email",
        "status": "changed",
        "title": "Insurance refund"
      },
      {
        "confidence": 0.82,
        "confirmation": "confirmed",
        "direction": "OWED_TO_ME",
        "expected_date": "2026-10-06",
        "follow_up_date": "2026-10-07",
        "id": "obl-plumber-quote",
        "person_id": "person-faz",
        "source": "sample call note",
        "status": "waiting",
        "title": "Plumber quote"
      },
      {
        "confidence": 0.61,
        "confirmation": "needs_confirmation",
        "direction": "I_OWE",
        "due_date": "2026-10-09",
        "id": "obl-inferred-proposal",
        "person_id": "person-faz",
        "source": "sample meeting note",
        "status": "proposal",
        "title": "Possible promise: send proposal Friday"
      }
    ],
    "permissions": [
      {
        "action": "read",
        "approval_required": false,
        "effect": "allow",
        "expiry": null,
        "grantor": "person-faz",
        "id": "perm-travel-family",
        "resource": "family_profile",
        "subject": "travel_employee"
      },
      {
        "action": "read",
        "approval_required": true,
        "effect": "allow",
        "expiry": null,
        "grantor": "person-faz",
        "id": "perm-travel-calendar",
        "resource": "calendar",
        "subject": "travel_employee"
      },
      {
        "action": "read",
        "approval_required": true,
        "effect": "deny",
        "expiry": null,
        "grantor": "person-faz",
        "id": "perm-travel-health",
        "resource": "health_context",
        "subject": "travel_employee"
      },
      {
        "action": "change",
        "approval_required": true,
        "effect": "deny",
        "expiry": null,
        "grantor": "person-faz",
        "id": "perm-memory-authority",
        "resource": "permissions",
        "subject": "memory_writer"
      },
      {
        "action": "read",
        "approval_required": false,
        "effect": "allow",
        "expiry": null,
        "grantor": "person-faz",
        "id": "perm-brief-items",
        "resource": "life_state",
        "subject": "chief_of_staff"
      }
    ],
    "persons": [
      {
        "id": "person-faz",
        "kind": "adult",
        "name": "Faz",
        "privacy": "personal",
        "role": "owner"
      },
      {
        "id": "person-household-adult",
        "kind": "adult",
        "name": "Household Adult",
        "privacy": "shared",
        "role": "co-owner"
      },
      {
        "id": "person-child-a",
        "kind": "child",
        "name": "Child A",
        "privacy": "protected",
        "role": "child"
      },
      {
        "id": "person-dentist",
        "kind": "organization",
        "name": "Dentist Office",
        "privacy": "external",
        "role": "provider"
      }
    ],
    "schema": "safecadence.safeai.life-context-graph.v1",
    "sha256": "3d91725d0b63368fae679a40a43d4be764f00c6e23f9ac6964002fd8f1cab8c0"
  },
  "life_state": {
    "acceptance": {
      "checks": [
        {
          "detail": "Seven core object collections exist.",
          "id": "seven_objects",
          "passed": true
        },
        {
          "detail": "Life State is computed from the graph.",
          "id": "life_state_computed",
          "passed": true
        },
        {
          "detail": "Overdue commitment appears.",
          "id": "overdue_commitment",
          "passed": true
        },
        {
          "detail": "Waiting-for change appears.",
          "id": "waiting_for_change",
          "passed": true
        },
        {
          "detail": "Irrelevant event is ignored.",
          "id": "irrelevant_ignored",
          "passed": true
        },
        {
          "detail": "Target-crossing watch tells now.",
          "id": "watch_threshold",
          "passed": true
        },
        {
          "detail": "$3 watch waits.",
          "id": "small_watch_waits",
          "passed": true
        },
        {
          "detail": "Travel employee cannot read health context.",
          "id": "permission_boundary",
          "passed": true
        },
        {
          "detail": "Revoked permission stops access.",
          "id": "revocation_effective",
          "passed": true
        },
        {
          "detail": "Memory cannot change permission.",
          "id": "memory_not_authority",
          "passed": true
        },
        {
          "detail": "Morning brief has relevant items.",
          "id": "brief_exists",
          "passed": true
        },
        {
          "detail": "AgentGuard activity records exist.",
          "id": "agentguard_activity",
          "passed": true
        },
        {
          "detail": "Outcome can be inconclusive after execution.",
          "id": "outcome_distinction",
          "passed": true
        },
        {
          "detail": "Vacation uses known Job route.",
          "id": "known_job_route",
          "passed": true
        },
        {
          "detail": "Party uses composed Job route.",
          "id": "composed_job_route",
          "passed": true
        },
        {
          "detail": "Simple task stays lightweight.",
          "id": "one_off_route",
          "passed": true
        },
        {
          "detail": "Email send waits for approval.",
          "id": "email_schedule_asks",
          "passed": true
        },
        {
          "detail": "Social post schedule is recognized.",
          "id": "social_schedule_asks",
          "passed": true
        },
        {
          "detail": "Private reminder can be scheduled.",
          "id": "private_reminder_allowed",
          "passed": true
        },
        {
          "detail": "Five trigger types exist.",
          "id": "trigger_types_exist",
          "passed": true
        },
        {
          "detail": "Event triggers are recognized.",
          "id": "event_trigger",
          "passed": true
        },
        {
          "detail": "Condition triggers are recognized.",
          "id": "condition_trigger",
          "passed": true
        },
        {
          "detail": "Running for Me exposes long-lived jobs.",
          "id": "running_jobs_visible",
          "passed": true
        },
        {
          "detail": "Big idea is represented in the API.",
          "id": "big_idea_present",
          "passed": true
        },
        {
          "detail": "Physical world is represented in SafeAI.",
          "id": "physical_world_present",
          "passed": true
        },
        {
          "detail": "Environment state has meaningful local signals.",
          "id": "environment_state_present",
          "passed": true
        },
        {
          "detail": "Physical-world capabilities are available.",
          "id": "physical_capabilities_present",
          "passed": true
        },
        {
          "detail": "Camera person alert schedules as an event.",
          "id": "camera_alert_schedule",
          "passed": true
        },
        {
          "detail": "Irrigation remains gated.",
          "id": "irrigation_schedule_gated",
          "passed": true
        },
        {
          "detail": "Running jobs are grouped across home, life, and work.",
          "id": "running_jobs_grouped",
          "passed": true
        },
        {
          "detail": "Capability discovery speaks in plain language.",
          "id": "capability_discovery_plain_language",
          "passed": true
        }
      ],
      "passed": true,
      "passed_count": 31,
      "total": 31
    },
    "active_ai_jobs": [
      {
        "disposition": "HANDLE_QUIETLY",
        "id": "surface-job-family-vacation-sample",
        "job_id": null,
        "kind": "job.active",
        "object_ref": "job-family-vacation-sample",
        "recommended_next_action": "Open work history if you want details.",
        "requires_approval": false,
        "source_refs": [
          "job-family-vacation-sample"
        ],
        "title": "Family Vacation",
        "why_it_matters": "Your AI team is handling this Job inside its current authority.",
        "why_now": "No immediate user action is required unless the Job crosses a boundary."
      },
      {
        "disposition": "HANDLE_QUIETLY",
        "id": "surface-job-morning-brief",
        "job_id": null,
        "kind": "job.active",
        "object_ref": "job-morning-brief",
        "recommended_next_action": "Open work history if you want details.",
        "requires_approval": false,
        "source_refs": [
          "job-morning-brief"
        ],
        "title": "Morning Brief",
        "why_it_matters": "Your AI team is handling this Job inside its current authority.",
        "why_now": "No immediate user action is required unless the Job crosses a boundary."
      },
      {
        "disposition": "HANDLE_QUIETLY",
        "id": "surface-job-dentist-commitment",
        "job_id": null,
        "kind": "job.active",
        "object_ref": "job-dentist-commitment",
        "recommended_next_action": "Open work history if you want details.",
        "requires_approval": false,
        "source_refs": [
          "job-dentist-commitment"
        ],
        "title": "Remembered commitment",
        "why_it_matters": "Your AI team is handling this Job inside its current authority.",
        "why_now": "No immediate user action is required unless the Job crosses a boundary."
      }
    ],
    "agentguard_activity": [
      {
        "action": "life_state.surface",
        "actor": "chief_of_staff",
        "approval_state": "not_required",
        "data_scope": "sample_household",
        "decision": "TELL_NOW",
        "job": "obl-return-shoes",
        "resource": "obligation",
        "result": "surfaced",
        "timestamp": "2026-10-05T22:21:30Z",
        "trace_id": "surface-obl-return-shoes"
      },
      {
        "action": "life_state.surface",
        "actor": "chief_of_staff",
        "approval_state": "not_required",
        "data_scope": "sample_household",
        "decision": "TELL_NOW",
        "job": "obl-insurance-refund",
        "resource": "obligation",
        "result": "surfaced",
        "timestamp": "2026-10-05T22:21:30Z",
        "trace_id": "surface-obl-insurance-refund"
      },
      {
        "action": "life_state.surface",
        "actor": "chief_of_staff",
        "approval_state": "not_required",
        "data_scope": "sample_household",
        "decision": "TELL_NOW",
        "job": "item-school-slip",
        "resource": "school_notice",
        "result": "surfaced",
        "timestamp": "2026-10-05T22:21:30Z",
        "trace_id": "surface-item-school-slip"
      },
      {
        "action": "life_state.surface",
        "actor": "chief_of_staff",
        "approval_state": "not_required",
        "data_scope": "sample_household",
        "decision": "TELL_NOW",
        "job": "item-flight-drop",
        "resource": "watch",
        "result": "surfaced",
        "timestamp": "2026-10-05T22:21:30Z",
        "trace_id": "surface-item-flight-drop"
      },
      {
        "action": "life_state.surface",
        "actor": "chief_of_staff",
        "approval_state": "required",
        "data_scope": "sample_household",
        "decision": "TELL_NOW",
        "job": "job-family-vacation-sample",
        "resource": "decision.pending",
        "result": "surfaced",
        "timestamp": "2026-10-05T22:21:30Z",
        "trace_id": "surface-dec-vacation-booking"
      },
      {
        "action": "permission.evaluate",
        "actor": "agentguard",
        "approval_state": "not_required",
        "data_scope": "family_profile",
        "decision": "ALLOW",
        "job": "life-context-graph",
        "resource": "travel_employee:family_profile",
        "result": "recorded",
        "timestamp": "2026-10-05T22:21:30Z",
        "trace_id": "perm-travel-family"
      },
      {
        "action": "permission.evaluate",
        "actor": "agentguard",
        "approval_state": "required",
        "data_scope": "calendar",
        "decision": "ALLOW",
        "job": "life-context-graph",
        "resource": "travel_employee:calendar",
        "result": "recorded",
        "timestamp": "2026-10-05T22:21:30Z",
        "trace_id": "perm-travel-calendar"
      },
      {
        "action": "permission.evaluate",
        "actor": "agentguard",
        "approval_state": "required",
        "data_scope": "health_context",
        "decision": "DENY",
        "job": "life-context-graph",
        "resource": "travel_employee:health_context",
        "result": "recorded",
        "timestamp": "2026-10-05T22:21:30Z",
        "trace_id": "perm-travel-health"
      },
      {
        "action": "permission.evaluate",
        "actor": "agentguard",
        "approval_state": "required",
        "data_scope": "permissions",
        "decision": "DENY",
        "job": "life-context-graph",
        "resource": "memory_writer:permissions",
        "result": "recorded",
        "timestamp": "2026-10-05T22:21:30Z",
        "trace_id": "perm-memory-authority"
      },
      {
        "action": "permission.evaluate",
        "actor": "agentguard",
        "approval_state": "not_required",
        "data_scope": "life_state",
        "decision": "ALLOW",
        "job": "life-context-graph",
        "resource": "chief_of_staff:life_state",
        "result": "recorded",
        "timestamp": "2026-10-05T22:21:30Z",
        "trace_id": "perm-brief-items"
      }
    ],
    "can_wait": [
      {
        "disposition": "WAIT",
        "id": "surface-item-flight-small",
        "job_id": null,
        "kind": "watch",
        "object_ref": "item-flight-small",
        "recommended_next_action": "Keep watching quietly.",
        "requires_approval": false,
        "source_refs": [
          "sample price watch"
        ],
        "title": "Vacation flight changed by $3",
        "why_it_matters": "SafeAI classified this signal against your Life State.",
        "why_now": "The watch changed, but not enough to alter the decision."
      },
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "surface-item-internet-bill",
        "job_id": null,
        "kind": "bill",
        "object_ref": "item-internet-bill",
        "recommended_next_action": "Review in the next brief.",
        "requires_approval": false,
        "source_refs": [
          "sample bill notice"
        ],
        "title": "Internet bill increased by $12",
        "why_it_matters": "SafeAI classified this signal against your Life State.",
        "why_now": "This is a normal bill change and belongs in the brief."
      }
    ],
    "commitments": [
      {
        "disposition": "TELL_NOW",
        "id": "surface-obl-return-shoes",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-return-shoes",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "remembered by user"
        ],
        "title": "Return shoes",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "It is overdue."
      },
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "surface-obl-dentist",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-dentist",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "remembered by user"
        ],
        "title": "Call dentist Friday",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "It belongs in your next brief."
      },
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "surface-obl-inferred-proposal",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-inferred-proposal",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "sample meeting note"
        ],
        "title": "Possible promise: send proposal Friday",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "It belongs in your next brief."
      }
    ],
    "computed_at": "2026-10-05T22:21:30Z",
    "evening_readiness": {
      "items": [
        {
          "disposition": "PUT_IN_BRIEF",
          "id": "surface-obl-inferred-proposal",
          "job_id": null,
          "kind": "commitment.proposal",
          "object_ref": "obl-inferred-proposal",
          "recommended_next_action": "Track it or dismiss it.",
          "requires_approval": true,
          "source_refs": [
            "sample meeting note"
          ],
          "title": "Possible promise: send proposal Friday",
          "why_it_matters": "SafeAI found a possible promise, but it is not confirmed.",
          "why_now": "It should be confirmed before it becomes a tracked commitment."
        },
        {
          "disposition": "TELL_NOW",
          "id": "surface-dec-vacation-booking",
          "job_id": "job-family-vacation-sample",
          "kind": "decision.pending",
          "object_ref": "dec-vacation-booking",
          "recommended_next_action": "Review options and choose one.",
          "requires_approval": true,
          "source_refs": [
            "dec-vacation-booking"
          ],
          "title": "Approve booking handoff for the best overall vacation option?",
          "why_it_matters": "This decision controls a consequential next step.",
          "why_now": "The Job cannot proceed to the action boundary without your approval."
        }
      ],
      "ready": false,
      "title": "Tomorrow is almost ready."
    },
    "morning_brief": {
      "items": [
        {
          "disposition": "TELL_NOW",
          "id": "surface-obl-return-shoes",
          "job_id": null,
          "kind": "obligation",
          "object_ref": "obl-return-shoes",
          "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
          "requires_approval": false,
          "source_refs": [
            "remembered by user"
          ],
          "title": "Return shoes",
          "why_it_matters": "This is an open loop SafeAI is tracking for you.",
          "why_now": "It is overdue."
        },
        {
          "disposition": "TELL_NOW",
          "id": "surface-obl-insurance-refund",
          "job_id": null,
          "kind": "obligation",
          "object_ref": "obl-insurance-refund",
          "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
          "requires_approval": false,
          "source_refs": [
            "sample email"
          ],
          "title": "Insurance refund",
          "why_it_matters": "This is an open loop SafeAI is tracking for you.",
          "why_now": "Something you were waiting for changed."
        },
        {
          "disposition": "PUT_IN_BRIEF",
          "id": "surface-obl-dentist",
          "job_id": null,
          "kind": "obligation",
          "object_ref": "obl-dentist",
          "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
          "requires_approval": false,
          "source_refs": [
            "remembered by user"
          ],
          "title": "Call dentist Friday",
          "why_it_matters": "This is an open loop SafeAI is tracking for you.",
          "why_now": "It belongs in your next brief."
        },
        {
          "disposition": "PUT_IN_BRIEF",
          "id": "surface-obl-plumber-quote",
          "job_id": null,
          "kind": "obligation",
          "object_ref": "obl-plumber-quote",
          "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
          "requires_approval": false,
          "source_refs": [
            "sample call note"
          ],
          "title": "Plumber quote",
          "why_it_matters": "This is an open loop SafeAI is tracking for you.",
          "why_now": "It belongs in your next brief."
        },
        {
          "disposition": "PUT_IN_BRIEF",
          "id": "surface-obl-inferred-proposal",
          "job_id": null,
          "kind": "obligation",
          "object_ref": "obl-inferred-proposal",
          "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
          "requires_approval": false,
          "source_refs": [
            "sample meeting note"
          ],
          "title": "Possible promise: send proposal Friday",
          "why_it_matters": "This is an open loop SafeAI is tracking for you.",
          "why_now": "It belongs in your next brief."
        },
        {
          "disposition": "TELL_NOW",
          "id": "surface-dec-vacation-booking",
          "job_id": "job-family-vacation-sample",
          "kind": "decision.pending",
          "object_ref": "dec-vacation-booking",
          "recommended_next_action": "Review options and choose one.",
          "requires_approval": true,
          "source_refs": [
            "dec-vacation-booking"
          ],
          "title": "Approve booking handoff for the best overall vacation option?",
          "why_it_matters": "This decision controls a consequential next step.",
          "why_now": "The Job cannot proceed to the action boundary without your approval."
        },
        {
          "disposition": "WAIT",
          "id": "surface-item-flight-small",
          "job_id": null,
          "kind": "watch",
          "object_ref": "item-flight-small",
          "recommended_next_action": "Keep watching quietly.",
          "requires_approval": false,
          "source_refs": [
            "sample price watch"
          ],
          "title": "Vacation flight changed by $3",
          "why_it_matters": "SafeAI classified this signal against your Life State.",
          "why_now": "The watch changed, but not enough to alter the decision."
        }
      ],
      "noise_budget": "Only relevant commitments, waiting-for changes, watches, approvals, and critical Job status.",
      "title": "Good morning. Here's what matters today."
    },
    "needs_attention": [
      {
        "disposition": "TELL_NOW",
        "id": "surface-obl-return-shoes",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-return-shoes",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "remembered by user"
        ],
        "title": "Return shoes",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "It is overdue."
      },
      {
        "disposition": "TELL_NOW",
        "id": "surface-obl-insurance-refund",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-insurance-refund",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "sample email"
        ],
        "title": "Insurance refund",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "Something you were waiting for changed."
      },
      {
        "disposition": "TELL_NOW",
        "id": "surface-item-school-slip",
        "job_id": null,
        "kind": "school_notice",
        "object_ref": "item-school-slip",
        "recommended_next_action": "Handle the school notice.",
        "requires_approval": false,
        "source_refs": [
          "sample school email"
        ],
        "title": "Permission slip due tomorrow",
        "why_it_matters": "SafeAI classified this signal against your Life State.",
        "why_now": "It is due tomorrow."
      },
      {
        "disposition": "TELL_NOW",
        "id": "surface-item-flight-drop",
        "job_id": null,
        "kind": "watch",
        "object_ref": "item-flight-drop",
        "recommended_next_action": "Review the new option.",
        "requires_approval": false,
        "source_refs": [
          "sample price watch"
        ],
        "title": "Vacation flight watch dropped below target",
        "why_it_matters": "SafeAI classified this signal against your Life State.",
        "why_now": "The watched value crossed your target."
      },
      {
        "disposition": "TELL_NOW",
        "id": "surface-dec-vacation-booking",
        "job_id": "job-family-vacation-sample",
        "kind": "decision.pending",
        "object_ref": "dec-vacation-booking",
        "recommended_next_action": "Review options and choose one.",
        "requires_approval": true,
        "source_refs": [
          "dec-vacation-booking"
        ],
        "title": "Approve booking handoff for the best overall vacation option?",
        "why_it_matters": "This decision controls a consequential next step.",
        "why_now": "The Job cannot proceed to the action boundary without your approval."
      }
    ],
    "now": "2026-10-04T15:00:00Z",
    "overdue": [
      {
        "disposition": "TELL_NOW",
        "id": "surface-obl-return-shoes",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-return-shoes",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "remembered by user"
        ],
        "title": "Return shoes",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "It is overdue."
      },
      {
        "disposition": "TELL_NOW",
        "id": "surface-obl-insurance-refund",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-insurance-refund",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "sample email"
        ],
        "title": "Insurance refund",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "Something you were waiting for changed."
      }
    ],
    "pending_decisions": [
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "surface-obl-inferred-proposal",
        "job_id": null,
        "kind": "commitment.proposal",
        "object_ref": "obl-inferred-proposal",
        "recommended_next_action": "Track it or dismiss it.",
        "requires_approval": true,
        "source_refs": [
          "sample meeting note"
        ],
        "title": "Possible promise: send proposal Friday",
        "why_it_matters": "SafeAI found a possible promise, but it is not confirmed.",
        "why_now": "It should be confirmed before it becomes a tracked commitment."
      },
      {
        "disposition": "TELL_NOW",
        "id": "surface-dec-vacation-booking",
        "job_id": "job-family-vacation-sample",
        "kind": "decision.pending",
        "object_ref": "dec-vacation-booking",
        "recommended_next_action": "Review options and choose one.",
        "requires_approval": true,
        "source_refs": [
          "dec-vacation-booking"
        ],
        "title": "Approve booking handoff for the best overall vacation option?",
        "why_it_matters": "This decision controls a consequential next step.",
        "why_now": "The Job cannot proceed to the action boundary without your approval."
      }
    ],
    "recent_changes": [
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "surface-evt-school-slip-created",
        "job_id": "job-morning-brief",
        "kind": "item.created",
        "object_ref": "evt-school-slip-created",
        "recommended_next_action": "Review if it affects your plan.",
        "requires_approval": false,
        "source_refs": [
          "evt-school-slip-created"
        ],
        "title": "School notice became actionable",
        "why_it_matters": "This changed the state of a Job, item, or waiting-for.",
        "why_now": "It belongs in the next brief unless it blocks a decision."
      },
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "surface-evt-insurance-refund-changed",
        "job_id": null,
        "kind": "waiting_for.changed",
        "object_ref": "evt-insurance-refund-changed",
        "recommended_next_action": "Review if it affects your plan.",
        "requires_approval": false,
        "source_refs": [
          "evt-insurance-refund-changed"
        ],
        "title": "Insurance refund status changed",
        "why_it_matters": "This changed the state of a Job, item, or waiting-for.",
        "why_now": "It belongs in the next brief unless it blocks a decision."
      },
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "surface-evt-hotel-tool-expired",
        "job_id": "job-family-vacation-sample",
        "kind": "tool.failure",
        "object_ref": "evt-hotel-tool-expired",
        "recommended_next_action": "Review if it affects your plan.",
        "requires_approval": false,
        "source_refs": [
          "evt-hotel-tool-expired"
        ],
        "title": "Hotel search connector expired",
        "why_it_matters": "This changed the state of a Job, item, or waiting-for.",
        "why_now": "It belongs in the next brief unless it blocks a decision."
      }
    ],
    "schema": "safecadence.safeai.life-state.v1",
    "summary": {
      "active_ai_jobs": 3,
      "can_wait": 2,
      "deadlines": 5,
      "needs_attention": 5,
      "waiting_for_changes": 1
    },
    "upcoming": [
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "surface-obl-dentist",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-dentist",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "remembered by user"
        ],
        "title": "Call dentist Friday",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "It belongs in your next brief."
      },
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "surface-obl-plumber-quote",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-plumber-quote",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "sample call note"
        ],
        "title": "Plumber quote",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "It belongs in your next brief."
      },
      {
        "disposition": "PUT_IN_BRIEF",
        "id": "surface-obl-inferred-proposal",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-inferred-proposal",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "sample meeting note"
        ],
        "title": "Possible promise: send proposal Friday",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "It belongs in your next brief."
      }
    ],
    "waiting_for_changes": [
      {
        "disposition": "TELL_NOW",
        "id": "surface-obl-insurance-refund",
        "job_id": null,
        "kind": "obligation",
        "object_ref": "obl-insurance-refund",
        "recommended_next_action": "Complete it, follow up, or move it to a later brief.",
        "requires_approval": false,
        "source_refs": [
          "sample email"
        ],
        "title": "Insurance refund",
        "why_it_matters": "This is an open loop SafeAI is tracking for you.",
        "why_now": "Something you were waiting for changed."
      }
    ]
  },
  "outcome_model": {
    "fields": [
      "GOAL",
      "PLAN",
      "ACTIONS",
      "EXPECTED_OUTCOME",
      "ACTUAL_OUTCOME",
      "VERIFICATION",
      "FOLLOW_UP"
    ],
    "rule": "Action executed is not the same as outcome achieved.",
    "schema": "safecadence.safeai.outcome-model.v1"
  },
  "proactivity": {
    "generated_at": "2026-10-05T22:21:30Z",
    "levels": [
      {
        "description": "Only responds when asked.",
        "level": "0",
        "name": "Reactive"
      },
      {
        "description": "Keeps explicit commitments and preferences.",
        "level": "1",
        "name": "Remembers"
      },
      {
        "description": "Monitors bounded sources without acting externally.",
        "level": "2",
        "name": "Watches approved sources"
      },
      {
        "description": "Drafts next steps and asks before action.",
        "level": "3",
        "name": "Proposes"
      },
      {
        "description": "Runs bounded recurring jobs inside a trust contract.",
        "level": "4",
        "name": "Handles approved recurring jobs"
      },
      {
        "description": "Breaks silence only when a material threshold or safety issue appears.",
        "level": "5",
        "name": "Interrupts when truly important"
      }
    ],
    "rule": "Every increase is explicit, visible, logged, and reversible.",
    "schema": "safecadence.safeai.proactivity-model.v1"
  },
  "recovery_engine": {
    "fallback_order": [
      "preferred_api",
      "alternative_api",
      "web_search",
      "browser",
      "ask_user"
    ],
    "rule": "Resume from checkpoint after reconnection; do not restart the whole job.",
    "schema": "safecadence.safeai.recovery-engine.v1"
  },
  "relevance": {
    "dispositions": [
      "TELL_NOW",
      "PUT_IN_BRIEF",
      "HANDLE_QUIETLY",
      "WAIT",
      "IGNORE"
    ],
    "noise_budget": {
      "tell_now_per_day": 2
    },
    "rule": "Deterministic rules first; AI judgment only for the uncertain middle."
  },
  "running_for_me": {
    "generated_at": "2026-10-05T22:21:30Z",
    "groups": [
      {
        "id": "home",
        "jobs": [
          {
            "approval_required_before_external_action": false,
            "authority": "owner_private_allowed",
            "goal": "When I'm away and my camera detects a person, notify me through my phone and Alexa",
            "group": "HOME",
            "id": "run-when-i-m-away-and-my-camera-detects-a-person-notify-me-through-m",
            "last_event": "dry_run.recorded",
            "next_step": "Understand what should happen and when.",
            "outcome": {
              "actions": [
                "prepare",
                "policy_check",
                "record_evidence"
              ],
              "actual_outcome": "dry_run_pending",
              "expected_outcome": "Owner is notified only for meaningful away/person events; raw media and identity recognition stay out unless approved.",
              "follow_up": "approve, modify, pause, or keep watching",
              "goal": "When I'm away and my camera detects a person, notify me through my phone and Alexa",
              "plan": "Prepare and govern camera_person_alert.",
              "verification": "not_executed_in_local_demo"
            },
            "owner": "home-watch-agent",
            "proactivity_level": "5",
            "state": "watching approved camera events",
            "trigger": {
              "condition": null,
              "event": "approved camera emits person_detected while household presence is away",
              "next_run": "when trigger becomes true",
              "recurrence": "one_time",
              "source_language": "when i'm away and my camera detects a person, notify me through my phone and alexa",
              "timezone": "local",
              "type": "EVENT"
            }
          },
          {
            "approval_required_before_external_action": true,
            "authority": "prepare_allowed_execute_gated",
            "goal": "Keep my lawn watered while I'm gone, but don't waste water if it rains",
            "group": "HOME",
            "id": "run-keep-my-lawn-watered-while-i-m-gone-but-don-t-waste-water-if-it-",
            "last_event": "dry_run.recorded",
            "next_step": "Understand what should happen and when.",
            "outcome": {
              "actions": [
                "prepare",
                "policy_check",
                "record_evidence"
              ],
              "actual_outcome": "dry_run_pending",
              "expected_outcome": "Lawn watering is skipped or run according to rain, restrictions, controller state, and approved authority.",
              "follow_up": "approve, modify, pause, or keep watching",
              "goal": "Keep my lawn watered while I'm gone, but don't waste water if it rains",
              "plan": "Prepare and govern irrigation_weather_aware.",
              "verification": "not_executed_in_local_demo"
            },
            "owner": "home-care-agent",
            "proactivity_level": "3",
            "state": "awaiting bounded Away authority",
            "trigger": {
              "condition": "irrigation window opens and forecast/rainfall policy allows watering",
              "event": null,
              "next_run": "when trigger becomes true",
              "recurrence": "one_time",
              "source_language": "keep my lawn watered while i'm gone, but don't waste water if it rains",
              "timezone": "local",
              "type": "CONDITION"
            }
          },
          {
            "approval_required_before_external_action": true,
            "authority": "prepare_allowed_execute_gated",
            "goal": "I'm going away for two weeks. Take care of the house.",
            "group": "HOME",
            "id": "run-i-m-going-away-for-two-weeks-take-care-of-the-house",
            "last_event": "dry_run.recorded",
            "next_step": "Understand what should happen and when.",
            "outcome": {
              "actions": [
                "prepare",
                "policy_check",
                "record_evidence"
              ],
              "actual_outcome": "dry_run_pending",
              "expected_outcome": "Home care runs as one governed Away Job with tell-now safety events and gated physical controls.",
              "follow_up": "approve, modify, pause, or keep watching",
              "goal": "I'm going away for two weeks. Take care of the house.",
              "plan": "Prepare and govern away_home_care.",
              "verification": "not_executed_in_local_demo"
            },
            "owner": "home-care-agent",
            "proactivity_level": "3",
            "state": "Away Mode draft ready",
            "trigger": {
              "condition": null,
              "event": null,
              "next_run": "now",
              "recurrence": "one_time",
              "source_language": "i'm going away for two weeks. take care of the house.",
              "timezone": "local",
              "type": "NOW"
            }
          },
          {
            "approval_required_before_external_action": false,
            "authority": "owner_private_allowed",
            "goal": "Watch leak, smoke, power, garage, and thermostat events and tell me only when it matters",
            "group": "HOME",
            "id": "run-watch-leak-smoke-power-garage-and-thermostat-events-and-tell-me-",
            "last_event": "dry_run.recorded",
            "next_step": "Understand what should happen and when.",
            "outcome": {
              "actions": [
                "prepare",
                "policy_check",
                "record_evidence"
              ],
              "actual_outcome": "dry_run_pending",
              "expected_outcome": "Approved sensors are watched quietly, with interruption only for safety or owner-defined thresholds.",
              "follow_up": "approve, modify, pause, or keep watching",
              "goal": "Watch leak, smoke, power, garage, and thermostat events and tell me only when it matters",
              "plan": "Prepare and govern device_monitor.",
              "verification": "not_executed_in_local_demo"
            },
            "owner": "home-watch-agent",
            "proactivity_level": "5",
            "state": "watching approved sensors",
            "trigger": {
              "condition": "approved environment sensor crosses a meaningful threshold",
              "event": null,
              "next_run": "when trigger becomes true",
              "recurrence": "one_time",
              "source_language": "watch leak, smoke, power, garage, and thermostat events and tell me only when it matters",
              "timezone": "local",
              "type": "CONDITION"
            }
          }
        ],
        "name": "Home"
      },
      {
        "id": "life",
        "jobs": [
          {
            "approval_required_before_external_action": false,
            "authority": "owner_private_allowed",
            "goal": "Watch NYC flights until Dec 15 and tell me only if total drops below $4,500",
            "group": "LIFE",
            "id": "run-watch-nyc-flights-until-dec-15-and-tell-me-only-if-total-drops-b",
            "last_event": "dry_run.recorded",
            "next_step": "Understand what should happen and when.",
            "outcome": {
              "actions": [
                "prepare",
                "policy_check",
                "record_evidence"
              ],
              "actual_outcome": "dry_run_pending",
              "expected_outcome": "Prepared work is ready, and any external action is gated.",
              "follow_up": "approve, modify, pause, or keep watching",
              "goal": "Watch NYC flights until Dec 15 and tell me only if total drops below $4,500",
              "plan": "Prepare and govern price_watch.",
              "verification": "not_executed_in_local_demo"
            },
            "owner": "travel-assistant",
            "proactivity_level": "2",
            "state": "watching quietly",
            "trigger": {
              "condition": "flight total crosses the approved threshold",
              "event": null,
              "next_run": "when trigger becomes true",
              "recurrence": "one_time",
              "source_language": "watch nyc flights until dec 15 and tell me only if total drops below $4,500",
              "timezone": "local",
              "type": "CONDITION"
            }
          },
          {
            "approval_required_before_external_action": false,
            "authority": "owner_private_allowed",
            "goal": "Plan weekly meals every Sunday and make the grocery list",
            "group": "LIFE",
            "id": "run-plan-weekly-meals-every-sunday-and-make-the-grocery-list",
            "last_event": "dry_run.recorded",
            "next_step": "Understand what should happen and when.",
            "outcome": {
              "actions": [
                "prepare",
                "policy_check",
                "record_evidence"
              ],
              "actual_outcome": "dry_run_pending",
              "expected_outcome": "Prepared work is ready, and any external action is gated.",
              "follow_up": "approve, modify, pause, or keep watching",
              "goal": "Plan weekly meals every Sunday and make the grocery list",
              "plan": "Prepare and govern routine_job.",
              "verification": "not_executed_in_local_demo"
            },
            "owner": "family-coordinator",
            "proactivity_level": "4",
            "state": "scheduled",
            "trigger": {
              "condition": null,
              "event": null,
              "next_run": "next Sunday",
              "recurrence": "weekly:sunday",
              "source_language": "plan weekly meals every sunday and make the grocery list",
              "timezone": "local",
              "type": "RECURRING"
            }
          },
          {
            "approval_required_before_external_action": false,
            "authority": "owner_private_allowed",
            "goal": "Watch large card charges above $500 and brief me",
            "group": "LIFE",
            "id": "run-watch-large-card-charges-above-500-and-brief-me",
            "last_event": "dry_run.recorded",
            "next_step": "Understand what should happen and when.",
            "outcome": {
              "actions": [
                "prepare",
                "policy_check",
                "record_evidence"
              ],
              "actual_outcome": "dry_run_pending",
              "expected_outcome": "Prepared work is ready, and any external action is gated.",
              "follow_up": "approve, modify, pause, or keep watching",
              "goal": "Watch large card charges above $500 and brief me",
              "plan": "Prepare and govern price_watch.",
              "verification": "not_executed_in_local_demo"
            },
            "owner": "chief-of-staff",
            "proactivity_level": "2",
            "state": "watching approved source",
            "trigger": {
              "condition": "transaction amount crosses the approved threshold",
              "event": null,
              "next_run": "when trigger becomes true",
              "recurrence": "one_time",
              "source_language": "watch large card charges above $500 and brief me",
              "timezone": "local",
              "type": "CONDITION"
            }
          },
          {
            "approval_required_before_external_action": true,
            "authority": "prepare_allowed_execute_gated",
            "goal": "Prepare Sarah's birthday plan for Nov 12",
            "group": "LIFE",
            "id": "run-prepare-sarah-s-birthday-plan-for-nov-12",
            "last_event": "dry_run.recorded",
            "next_step": "Understand what should happen and when.",
            "outcome": {
              "actions": [
                "prepare",
                "policy_check",
                "record_evidence"
              ],
              "actual_outcome": "dry_run_pending",
              "expected_outcome": "Prepared work is ready, and any external action is gated.",
              "follow_up": "approve, modify, pause, or keep watching",
              "goal": "Prepare Sarah's birthday plan for Nov 12",
              "plan": "Prepare and govern custom.",
              "verification": "not_executed_in_local_demo"
            },
            "owner": "family-coordinator",
            "proactivity_level": "3",
            "state": "waiting for time window",
            "trigger": {
              "condition": null,
              "event": null,
              "next_run": "at the stated time",
              "recurrence": "one_time",
              "source_language": "prepare sarah's birthday plan for nov 12",
              "timezone": "local",
              "type": "TIME"
            }
          }
        ],
        "name": "Life"
      },
      {
        "id": "work",
        "jobs": [
          {
            "approval_required_before_external_action": false,
            "authority": "owner_private_allowed",
            "goal": "Find VP AI jobs every weekday morning and prepare the best matches",
            "group": "WORK",
            "id": "run-find-vp-ai-jobs-every-weekday-morning-and-prepare-the-best-match",
            "last_event": "dry_run.recorded",
            "next_step": "Understand what should happen and when.",
            "outcome": {
              "actions": [
                "prepare",
                "policy_check",
                "record_evidence"
              ],
              "actual_outcome": "dry_run_pending",
              "expected_outcome": "Prepared work is ready, and any external action is gated.",
              "follow_up": "approve, modify, pause, or keep watching",
              "goal": "Find VP AI jobs every weekday morning and prepare the best matches",
              "plan": "Prepare and govern job_search.",
              "verification": "not_executed_in_local_demo"
            },
            "owner": "executive-assistant",
            "proactivity_level": "4",
            "state": "running next weekday",
            "trigger": {
              "condition": null,
              "event": null,
              "next_run": "next weekday morning",
              "recurrence": "weekdays",
              "source_language": "find vp ai jobs every weekday morning and prepare the best matches",
              "timezone": "local",
              "type": "RECURRING"
            }
          },
          {
            "approval_required_before_external_action": false,
            "authority": "owner_private_allowed",
            "goal": "Prepare my Friday weekly work report",
            "group": "WORK",
            "id": "run-prepare-my-friday-weekly-work-report",
            "last_event": "dry_run.recorded",
            "next_step": "Understand what should happen and when.",
            "outcome": {
              "actions": [
                "prepare",
                "policy_check",
                "record_evidence"
              ],
              "actual_outcome": "dry_run_pending",
              "expected_outcome": "Prepared work is ready, and any external action is gated.",
              "follow_up": "approve, modify, pause, or keep watching",
              "goal": "Prepare my Friday weekly work report",
              "plan": "Prepare and govern routine_job.",
              "verification": "not_executed_in_local_demo"
            },
            "owner": "work-assistant",
            "proactivity_level": "4",
            "state": "scheduled",
            "trigger": {
              "condition": null,
              "event": null,
              "next_run": "next week",
              "recurrence": "weekly",
              "source_language": "prepare my friday weekly work report",
              "timezone": "local",
              "type": "RECURRING"
            }
          }
        ],
        "name": "Work"
      }
    ],
    "jobs": [
      {
        "approval_required_before_external_action": false,
        "authority": "owner_private_allowed",
        "goal": "When I'm away and my camera detects a person, notify me through my phone and Alexa",
        "group": "HOME",
        "id": "run-when-i-m-away-and-my-camera-detects-a-person-notify-me-through-m",
        "last_event": "dry_run.recorded",
        "next_step": "Understand what should happen and when.",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Owner is notified only for meaningful away/person events; raw media and identity recognition stay out unless approved.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "When I'm away and my camera detects a person, notify me through my phone and Alexa",
          "plan": "Prepare and govern camera_person_alert.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "home-watch-agent",
        "proactivity_level": "5",
        "state": "watching approved camera events",
        "trigger": {
          "condition": null,
          "event": "approved camera emits person_detected while household presence is away",
          "next_run": "when trigger becomes true",
          "recurrence": "one_time",
          "source_language": "when i'm away and my camera detects a person, notify me through my phone and alexa",
          "timezone": "local",
          "type": "EVENT"
        }
      },
      {
        "approval_required_before_external_action": true,
        "authority": "prepare_allowed_execute_gated",
        "goal": "Keep my lawn watered while I'm gone, but don't waste water if it rains",
        "group": "HOME",
        "id": "run-keep-my-lawn-watered-while-i-m-gone-but-don-t-waste-water-if-it-",
        "last_event": "dry_run.recorded",
        "next_step": "Understand what should happen and when.",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Lawn watering is skipped or run according to rain, restrictions, controller state, and approved authority.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Keep my lawn watered while I'm gone, but don't waste water if it rains",
          "plan": "Prepare and govern irrigation_weather_aware.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "home-care-agent",
        "proactivity_level": "3",
        "state": "awaiting bounded Away authority",
        "trigger": {
          "condition": "irrigation window opens and forecast/rainfall policy allows watering",
          "event": null,
          "next_run": "when trigger becomes true",
          "recurrence": "one_time",
          "source_language": "keep my lawn watered while i'm gone, but don't waste water if it rains",
          "timezone": "local",
          "type": "CONDITION"
        }
      },
      {
        "approval_required_before_external_action": true,
        "authority": "prepare_allowed_execute_gated",
        "goal": "I'm going away for two weeks. Take care of the house.",
        "group": "HOME",
        "id": "run-i-m-going-away-for-two-weeks-take-care-of-the-house",
        "last_event": "dry_run.recorded",
        "next_step": "Understand what should happen and when.",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Home care runs as one governed Away Job with tell-now safety events and gated physical controls.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "I'm going away for two weeks. Take care of the house.",
          "plan": "Prepare and govern away_home_care.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "home-care-agent",
        "proactivity_level": "3",
        "state": "Away Mode draft ready",
        "trigger": {
          "condition": null,
          "event": null,
          "next_run": "now",
          "recurrence": "one_time",
          "source_language": "i'm going away for two weeks. take care of the house.",
          "timezone": "local",
          "type": "NOW"
        }
      },
      {
        "approval_required_before_external_action": false,
        "authority": "owner_private_allowed",
        "goal": "Watch leak, smoke, power, garage, and thermostat events and tell me only when it matters",
        "group": "HOME",
        "id": "run-watch-leak-smoke-power-garage-and-thermostat-events-and-tell-me-",
        "last_event": "dry_run.recorded",
        "next_step": "Understand what should happen and when.",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Approved sensors are watched quietly, with interruption only for safety or owner-defined thresholds.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Watch leak, smoke, power, garage, and thermostat events and tell me only when it matters",
          "plan": "Prepare and govern device_monitor.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "home-watch-agent",
        "proactivity_level": "5",
        "state": "watching approved sensors",
        "trigger": {
          "condition": "approved environment sensor crosses a meaningful threshold",
          "event": null,
          "next_run": "when trigger becomes true",
          "recurrence": "one_time",
          "source_language": "watch leak, smoke, power, garage, and thermostat events and tell me only when it matters",
          "timezone": "local",
          "type": "CONDITION"
        }
      },
      {
        "approval_required_before_external_action": false,
        "authority": "owner_private_allowed",
        "goal": "Watch NYC flights until Dec 15 and tell me only if total drops below $4,500",
        "group": "LIFE",
        "id": "run-watch-nyc-flights-until-dec-15-and-tell-me-only-if-total-drops-b",
        "last_event": "dry_run.recorded",
        "next_step": "Understand what should happen and when.",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Prepared work is ready, and any external action is gated.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Watch NYC flights until Dec 15 and tell me only if total drops below $4,500",
          "plan": "Prepare and govern price_watch.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "travel-assistant",
        "proactivity_level": "2",
        "state": "watching quietly",
        "trigger": {
          "condition": "flight total crosses the approved threshold",
          "event": null,
          "next_run": "when trigger becomes true",
          "recurrence": "one_time",
          "source_language": "watch nyc flights until dec 15 and tell me only if total drops below $4,500",
          "timezone": "local",
          "type": "CONDITION"
        }
      },
      {
        "approval_required_before_external_action": false,
        "authority": "owner_private_allowed",
        "goal": "Plan weekly meals every Sunday and make the grocery list",
        "group": "LIFE",
        "id": "run-plan-weekly-meals-every-sunday-and-make-the-grocery-list",
        "last_event": "dry_run.recorded",
        "next_step": "Understand what should happen and when.",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Prepared work is ready, and any external action is gated.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Plan weekly meals every Sunday and make the grocery list",
          "plan": "Prepare and govern routine_job.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "family-coordinator",
        "proactivity_level": "4",
        "state": "scheduled",
        "trigger": {
          "condition": null,
          "event": null,
          "next_run": "next Sunday",
          "recurrence": "weekly:sunday",
          "source_language": "plan weekly meals every sunday and make the grocery list",
          "timezone": "local",
          "type": "RECURRING"
        }
      },
      {
        "approval_required_before_external_action": false,
        "authority": "owner_private_allowed",
        "goal": "Watch large card charges above $500 and brief me",
        "group": "LIFE",
        "id": "run-watch-large-card-charges-above-500-and-brief-me",
        "last_event": "dry_run.recorded",
        "next_step": "Understand what should happen and when.",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Prepared work is ready, and any external action is gated.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Watch large card charges above $500 and brief me",
          "plan": "Prepare and govern price_watch.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "chief-of-staff",
        "proactivity_level": "2",
        "state": "watching approved source",
        "trigger": {
          "condition": "transaction amount crosses the approved threshold",
          "event": null,
          "next_run": "when trigger becomes true",
          "recurrence": "one_time",
          "source_language": "watch large card charges above $500 and brief me",
          "timezone": "local",
          "type": "CONDITION"
        }
      },
      {
        "approval_required_before_external_action": true,
        "authority": "prepare_allowed_execute_gated",
        "goal": "Prepare Sarah's birthday plan for Nov 12",
        "group": "LIFE",
        "id": "run-prepare-sarah-s-birthday-plan-for-nov-12",
        "last_event": "dry_run.recorded",
        "next_step": "Understand what should happen and when.",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Prepared work is ready, and any external action is gated.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Prepare Sarah's birthday plan for Nov 12",
          "plan": "Prepare and govern custom.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "family-coordinator",
        "proactivity_level": "3",
        "state": "waiting for time window",
        "trigger": {
          "condition": null,
          "event": null,
          "next_run": "at the stated time",
          "recurrence": "one_time",
          "source_language": "prepare sarah's birthday plan for nov 12",
          "timezone": "local",
          "type": "TIME"
        }
      },
      {
        "approval_required_before_external_action": false,
        "authority": "owner_private_allowed",
        "goal": "Find VP AI jobs every weekday morning and prepare the best matches",
        "group": "WORK",
        "id": "run-find-vp-ai-jobs-every-weekday-morning-and-prepare-the-best-match",
        "last_event": "dry_run.recorded",
        "next_step": "Understand what should happen and when.",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Prepared work is ready, and any external action is gated.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Find VP AI jobs every weekday morning and prepare the best matches",
          "plan": "Prepare and govern job_search.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "executive-assistant",
        "proactivity_level": "4",
        "state": "running next weekday",
        "trigger": {
          "condition": null,
          "event": null,
          "next_run": "next weekday morning",
          "recurrence": "weekdays",
          "source_language": "find vp ai jobs every weekday morning and prepare the best matches",
          "timezone": "local",
          "type": "RECURRING"
        }
      },
      {
        "approval_required_before_external_action": false,
        "authority": "owner_private_allowed",
        "goal": "Prepare my Friday weekly work report",
        "group": "WORK",
        "id": "run-prepare-my-friday-weekly-work-report",
        "last_event": "dry_run.recorded",
        "next_step": "Understand what should happen and when.",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Prepared work is ready, and any external action is gated.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Prepare my Friday weekly work report",
          "plan": "Prepare and govern routine_job.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "work-assistant",
        "proactivity_level": "4",
        "state": "scheduled",
        "trigger": {
          "condition": null,
          "event": null,
          "next_run": "next week",
          "recurrence": "weekly",
          "source_language": "prepare my friday weekly work report",
          "timezone": "local",
          "type": "RECURRING"
        }
      }
    ],
    "principle": "Show durable work by outcome, owner, trigger, status, authority, and last evidence.",
    "schema": "safecadence.safeai.running-for-me.v1",
    "source": "local sample data only"
  },
  "safe_suggestions": {
    "generated_at": "2026-10-05T22:21:30Z",
    "principle": "Proactivity is earned: suggest useful jobs from connected capabilities, but stay silent when nothing meaningful changed.",
    "schema": "safecadence.safeai.safe-suggestions.v1",
    "suggestions": [
      {
        "action": "Notify Faz on mobile and approved Alexa device.",
        "authority": "notification allowed; identity recognition off until explicit approval",
        "href": "/api/platform/life/schedule?goal=When%20I%27m%20away%20and%20my%20camera%20detects%20a%20person%2C%20notify%20me%20through%20my%20phone%20and%20Alexa",
        "id": "suggest-person-away-alert",
        "title": "Person detected while away",
        "trigger": "camera.person_detected + presence.away"
      },
      {
        "action": "Skip or run watering based on rain, restrictions, and approved lawn rule.",
        "authority": "irrigation run requires a bounded Away trust contract or approval",
        "href": "/api/platform/life/schedule?goal=Keep%20my%20lawn%20watered%20while%20I%27m%20gone%2C%20but%20don%27t%20waste%20water%20if%20it%20rains",
        "id": "suggest-rain-smart-lawn",
        "title": "Weather-aware lawn care",
        "trigger": "away mode + irrigation window + weather.forecast"
      },
      {
        "action": "Create one governed job for security, climate, lawn, deliveries, energy, and safety.",
        "authority": "prepare now; physical controls remain gated by AgentGuard",
        "href": "/api/platform/life/schedule?goal=I%27m%20going%20away%20for%20two%20weeks.%20Take%20care%20of%20the%20house.",
        "id": "suggest-away-home-care",
        "title": "Two-week Away Mode",
        "trigger": "user says I am going away"
      }
    ]
  },
  "sample_accomplishments": [
    {
      "composition": {
        "agentguard": {
          "advanced": "ALLOW/ASK/DENY enforcement, mission contract, approvals, data boundaries, kill switch, and quarantine.",
          "always_ask": [
            "purchase",
            "payment",
            "booking",
            "send_to_new_person",
            "public_post",
            "submit_form",
            "delete_important_data",
            "share_sensitive_data",
            "major_schedule_change",
            "door_unlock",
            "lock_or_close_device",
            "physical_device_change",
            "camera_identity_recognition",
            "irrigation_run_without_trust_contract",
            "significant_hvac_change"
          ],
          "basic": "Monitoring only: activity, tools, failures, work history, unusual behavior, and mission drift are recorded.",
          "default_mode": "advisory",
          "route": "known_job"
        },
        "capabilities": [
          {
            "approval_rule": "read-only",
            "available": true,
            "domain": "context",
            "id": "context.read",
            "inputs": [
              "permission check"
            ],
            "name": "Read approved context",
            "outputs": [
              "grounded context"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "low"
          },
          {
            "approval_rule": "ask for private calendars",
            "available": true,
            "domain": "calendar",
            "id": "calendar.check",
            "inputs": [
              "date range",
              "participants"
            ],
            "name": "Check calendar windows",
            "outputs": [
              "availability windows"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "ask before booking or sharing traveler details",
            "available": true,
            "domain": "travel",
            "id": "travel.compare",
            "inputs": [
              "dates",
              "travelers",
              "budget"
            ],
            "name": "Compare travel options",
            "outputs": [
              "ranked options"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "tell only when threshold crosses",
            "available": true,
            "domain": "shopping",
            "id": "price.watch",
            "inputs": [
              "target",
              "threshold"
            ],
            "name": "Watch material price changes",
            "outputs": [
              "alert or wait"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "low"
          },
          {
            "approval_rule": "required for consequential actions",
            "available": true,
            "domain": "approval",
            "id": "notify.approval",
            "inputs": [
              "prepared action"
            ],
            "name": "Ask for human approval",
            "outputs": [
              "approve, change, stop"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "record evidence",
            "available": true,
            "domain": "verification",
            "id": "outcome.verify",
            "inputs": [
              "expected",
              "observed"
            ],
            "name": "Verify outcome",
            "outputs": [
              "achieved, not achieved, inconclusive"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          }
        ],
        "job": "Family Vacation",
        "life_context_used": {
          "collections": {
            "decisions": 1,
            "events": 3,
            "items": 5,
            "jobs": 3,
            "obligations": 5,
            "permissions": 5,
            "persons": 4
          },
          "graph_sha256": "3d91725d0b63368fae679a40a43d4be764f00c6e23f9ac6964002fd8f1cab8c0"
        },
        "minimum_questions": [
          "target travel window",
          "budget ceiling"
        ],
        "plan": [
          {
            "agentguard": "ALLOW",
            "id": "understand",
            "title": "Understand the requested outcome and define done."
          },
          {
            "agentguard": "ALLOW",
            "id": "context",
            "title": "Use only permitted context from the Life Context Graph."
          },
          {
            "agentguard": "ALLOW",
            "id": "prepare",
            "title": "Prepare options, drafts, or reminders without crossing approval boundaries."
          },
          {
            "agentguard": "ASK",
            "id": "approve",
            "title": "Ask before booking, paying, sending, posting, sharing, deleting, or submitting."
          },
          {
            "agentguard": "ALLOW",
            "id": "verify",
            "title": "Observe whether the desired outcome was actually achieved."
          }
        ],
        "request": "Plan a family vacation for five people",
        "route": "known_job",
        "success_criteria": [
          "Dates fit the approved family calendar.",
          "Five travelers are accommodated.",
          "Total estimated cost is inside the target budget.",
          "Booking, payment, and traveler-detail sharing wait for approval."
        ],
        "user_visible_status": "I'm working on your trip plan."
      },
      "front_door": "What do you need?",
      "generated_at": "2026-10-05T22:21:30Z",
      "schema": "safecadence.safeai.accomplishment-composer.v1"
    },
    {
      "composition": {
        "agentguard": {
          "advanced": "ALLOW/ASK/DENY enforcement, mission contract, approvals, data boundaries, kill switch, and quarantine.",
          "always_ask": [
            "purchase",
            "payment",
            "booking",
            "send_to_new_person",
            "public_post",
            "submit_form",
            "delete_important_data",
            "share_sensitive_data",
            "major_schedule_change",
            "door_unlock",
            "lock_or_close_device",
            "physical_device_change",
            "camera_identity_recognition",
            "irrigation_run_without_trust_contract",
            "significant_hvac_change"
          ],
          "basic": "Monitoring only: activity, tools, failures, work history, unusual behavior, and mission drift are recorded.",
          "default_mode": "advisory",
          "route": "composed_job"
        },
        "capabilities": [
          {
            "approval_rule": "ask before new outreach",
            "available": true,
            "domain": "people",
            "id": "contacts.prepare",
            "inputs": [
              "approved people"
            ],
            "name": "Prepare contact list",
            "outputs": [
              "recipient candidates"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "ask for private calendars",
            "available": true,
            "domain": "calendar",
            "id": "calendar.check",
            "inputs": [
              "date range",
              "participants"
            ],
            "name": "Check calendar windows",
            "outputs": [
              "availability windows"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "ask before send",
            "available": true,
            "domain": "communication",
            "id": "invitation.draft",
            "inputs": [
              "event details",
              "guest list"
            ],
            "name": "Draft invitations",
            "outputs": [
              "message drafts"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "ask before reminders to new people",
            "available": true,
            "domain": "communication",
            "id": "rsvp.track",
            "inputs": [
              "invite list"
            ],
            "name": "Track RSVP status",
            "outputs": [
              "accepted, declined, pending"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "prepare only",
            "available": true,
            "domain": "shopping",
            "id": "shopping.list",
            "inputs": [
              "plan",
              "preferences"
            ],
            "name": "Create shopping list",
            "outputs": [
              "items",
              "estimated cost"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "low"
          },
          {
            "approval_rule": "required for consequential actions",
            "available": true,
            "domain": "approval",
            "id": "notify.approval",
            "inputs": [
              "prepared action"
            ],
            "name": "Ask for human approval",
            "outputs": [
              "approve, change, stop"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "record evidence",
            "available": true,
            "domain": "verification",
            "id": "outcome.verify",
            "inputs": [
              "expected",
              "observed"
            ],
            "name": "Verify outcome",
            "outputs": [
              "achieved, not achieved, inconclusive"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          }
        ],
        "job": "Birthday Party",
        "life_context_used": {
          "collections": {
            "decisions": 1,
            "events": 3,
            "items": 5,
            "jobs": 3,
            "obligations": 5,
            "permissions": 5,
            "persons": 4
          },
          "graph_sha256": "3d91725d0b63368fae679a40a43d4be764f00c6e23f9ac6964002fd8f1cab8c0"
        },
        "minimum_questions": [
          "date or preferred weekend",
          "guest count",
          "budget range"
        ],
        "plan": [
          {
            "agentguard": "ALLOW",
            "id": "understand",
            "title": "Understand the requested outcome and define done."
          },
          {
            "agentguard": "ALLOW",
            "id": "context",
            "title": "Use only permitted context from the Life Context Graph."
          },
          {
            "agentguard": "ALLOW",
            "id": "compose",
            "title": "Compose reusable skills into a safe Job plan."
          },
          {
            "agentguard": "ALLOW",
            "id": "prepare",
            "title": "Prepare options, drafts, or reminders without crossing approval boundaries."
          },
          {
            "agentguard": "ASK",
            "id": "approve",
            "title": "Ask before booking, paying, sending, posting, sharing, deleting, or submitting."
          },
          {
            "agentguard": "ALLOW",
            "id": "verify",
            "title": "Observe whether the desired outcome was actually achieved."
          }
        ],
        "request": "Organize my daughter's birthday party",
        "route": "composed_job",
        "success_criteria": [
          "Guest list, date, budget, food, supplies, and unresolved issues are visible.",
          "Invitations are drafted, not sent, until approved.",
          "RSVP and follow-up status can be tracked."
        ],
        "user_visible_status": "I'm organizing the party plan."
      },
      "front_door": "What do you need?",
      "generated_at": "2026-10-05T22:21:30Z",
      "schema": "safecadence.safeai.accomplishment-composer.v1"
    },
    {
      "composition": {
        "agentguard": {
          "advanced": "ALLOW/ASK/DENY enforcement, mission contract, approvals, data boundaries, kill switch, and quarantine.",
          "always_ask": [
            "purchase",
            "payment",
            "booking",
            "send_to_new_person",
            "public_post",
            "submit_form",
            "delete_important_data",
            "share_sensitive_data",
            "major_schedule_change",
            "door_unlock",
            "lock_or_close_device",
            "physical_device_change",
            "camera_identity_recognition",
            "irrigation_run_without_trust_contract",
            "significant_hvac_change"
          ],
          "basic": "Monitoring only: activity, tools, failures, work history, unusual behavior, and mission drift are recorded.",
          "default_mode": "advisory",
          "route": "known_job"
        },
        "capabilities": [
          {
            "approval_rule": "read-only",
            "available": true,
            "domain": "context",
            "id": "context.read",
            "inputs": [
              "permission check"
            ],
            "name": "Read approved context",
            "outputs": [
              "grounded context"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "low"
          },
          {
            "approval_rule": "read-only",
            "available": true,
            "domain": "dialog",
            "id": "ask.minimum",
            "inputs": [
              "missing facts"
            ],
            "name": "Ask minimum necessary questions",
            "outputs": [
              "short questions"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "low"
          },
          {
            "approval_rule": "record evidence",
            "available": true,
            "domain": "verification",
            "id": "outcome.verify",
            "inputs": [
              "expected",
              "observed"
            ],
            "name": "Verify outcome",
            "outputs": [
              "achieved, not achieved, inconclusive"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          }
        ],
        "job": "Morning Brief",
        "life_context_used": {
          "collections": {
            "decisions": 1,
            "events": 3,
            "items": 5,
            "jobs": 3,
            "obligations": 5,
            "permissions": 5,
            "persons": 4
          },
          "graph_sha256": "3d91725d0b63368fae679a40a43d4be764f00c6e23f9ac6964002fd8f1cab8c0"
        },
        "minimum_questions": [],
        "plan": [
          {
            "agentguard": "ALLOW",
            "id": "understand",
            "title": "Understand the requested outcome and define done."
          },
          {
            "agentguard": "ALLOW",
            "id": "context",
            "title": "Use only permitted context from the Life Context Graph."
          },
          {
            "agentguard": "ALLOW",
            "id": "prepare",
            "title": "Prepare options, drafts, or reminders without crossing approval boundaries."
          },
          {
            "agentguard": "ASK",
            "id": "approve",
            "title": "Ask before booking, paying, sending, posting, sharing, deleting, or submitting."
          },
          {
            "agentguard": "ALLOW",
            "id": "verify",
            "title": "Observe whether the desired outcome was actually achieved."
          }
        ],
        "request": "What matters today?",
        "route": "known_job",
        "success_criteria": [
          "Only relevant commitments, waiting-for changes, deadlines, decisions, and active AI jobs are surfaced."
        ],
        "user_visible_status": "I'm preparing only what matters now."
      },
      "front_door": "What do you need?",
      "generated_at": "2026-10-05T22:21:30Z",
      "schema": "safecadence.safeai.accomplishment-composer.v1"
    }
  ],
  "sample_schedules": [
    {
      "front_door": "What should happen, and when?",
      "generated_at": "2026-10-05T22:21:30Z",
      "schedule": {
        "action_type": "email",
        "agentguard": {
          "advanced": "ALLOW/ASK/DENY enforcement, mission contract, approvals, data boundaries, kill switch, and quarantine.",
          "always_ask": [
            "purchase",
            "payment",
            "booking",
            "send_to_new_person",
            "public_post",
            "submit_form",
            "delete_important_data",
            "share_sensitive_data",
            "major_schedule_change",
            "door_unlock",
            "lock_or_close_device",
            "physical_device_change",
            "camera_identity_recognition",
            "irrigation_run_without_trust_contract",
            "significant_hvac_change"
          ],
          "basic": "Monitoring only: activity, tools, failures, work history, unusual behavior, and mission drift are recorded.",
          "default_mode": "advisory",
          "execution_rule": "prepare_allowed_execute_gated",
          "monitoring": [
            "activity",
            "tool use",
            "evidence",
            "failure",
            "retry",
            "outcome"
          ],
          "route": "scheduled_action",
          "safety_boundary": null,
          "stop_conditions": [
            "missing approval",
            "scope drift",
            "new recipient",
            "public posting",
            "sensitive data",
            "revoked connector",
            "failed verification"
          ]
        },
        "capabilities": [
          {
            "approval_rule": "govern execution trigger",
            "available": true,
            "domain": "scheduler",
            "id": "trigger.parse",
            "inputs": [
              "when language",
              "job goal"
            ],
            "name": "Parse time, event, and condition triggers",
            "outputs": [
              "trigger contract"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "schedule intent; govern execution",
            "available": true,
            "domain": "scheduler",
            "id": "schedule.create",
            "inputs": [
              "goal",
              "time or recurrence"
            ],
            "name": "Schedule future work",
            "outputs": [
              "queued dry-run"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "ask before send",
            "available": true,
            "domain": "communication",
            "id": "email.draft",
            "inputs": [
              "recipient",
              "purpose",
              "facts"
            ],
            "name": "Draft email",
            "outputs": [
              "draft email"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "approval required before send",
            "available": true,
            "domain": "communication",
            "id": "email.send",
            "inputs": [
              "approved draft",
              "recipient"
            ],
            "name": "Send email",
            "outputs": [
              "sent message"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "required for consequential actions",
            "available": true,
            "domain": "approval",
            "id": "notify.approval",
            "inputs": [
              "prepared action"
            ],
            "name": "Ask for human approval",
            "outputs": [
              "approve, change, stop"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "record evidence",
            "available": true,
            "domain": "verification",
            "id": "outcome.verify",
            "inputs": [
              "expected",
              "observed"
            ],
            "name": "Verify outcome",
            "outputs": [
              "achieved, not achieved, inconclusive"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "stay inside permissions",
            "available": true,
            "domain": "recovery",
            "id": "recover.replan",
            "inputs": [
              "checkpoint",
              "failure"
            ],
            "name": "Recover from blockers",
            "outputs": [
              "safe retry plan"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          }
        ],
        "dry_run": {
          "evidence": [
            "schedule.created",
            "agentguard.policy.checked",
            "dry_run.recorded"
          ],
          "external_side_effect": false,
          "mode": "dry_run_only",
          "would_execute": "after_approval",
          "would_prepare": {
            "body": "Draft prepared for: Send an email to Alex tomorrow morning",
            "recipient": "sample@example.local",
            "subject": "Prepared follow-up",
            "type": "email_draft"
          }
        },
        "execution_mode": "LOCAL_SERVER",
        "fallback_plan": [
          {
            "rule": "Use the approved email connector if configured and healthy.",
            "step": "preferred_api"
          },
          {
            "rule": "Use an approved alternate adapter with the same authority boundary.",
            "step": "alternative_provider"
          },
          {
            "rule": "Use browser-assisted preparation only when the source and purpose are allowed.",
            "step": "web_or_browser"
          },
          {
            "rule": "Ask for reconnection or clarification, then resume from checkpoint.",
            "step": "ask_user"
          }
        ],
        "goal": "Send an email to Alex tomorrow morning",
        "id": "sched-send-an-email-to-alex-tomorrow-morning",
        "job_type": "scheduled_action",
        "life_context_used": {
          "collections": {
            "decisions": 1,
            "events": 3,
            "items": 5,
            "jobs": 3,
            "obligations": 5,
            "permissions": 5,
            "persons": 4
          },
          "graph_sha256": "3d91725d0b63368fae679a40a43d4be764f00c6e23f9ac6964002fd8f1cab8c0"
        },
        "model_mode": "RULES_ONLY",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Prepared work is ready, and any external action is gated.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Send an email to Alex tomorrow morning",
          "plan": "Prepare and govern email.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "person-faz",
        "plan": [
          {
            "agentguard": "ALLOW",
            "id": "understand",
            "title": "Understand what should happen and when."
          },
          {
            "agentguard": "ALLOW",
            "id": "prepare",
            "title": "Prepare the content, application, reminder, or recurring job with sample/local data."
          },
          {
            "agentguard": "ALLOW",
            "id": "preflight",
            "title": "Check recipients, destination, data sensitivity, claims, and scope."
          },
          {
            "agentguard": "ASK",
            "id": "approve",
            "title": "Ask the named human before the action leaves SafeAI."
          },
          {
            "agentguard": "ASK",
            "id": "execute",
            "title": "Execute only after approval; otherwise hold the prepared draft."
          },
          {
            "agentguard": "ALLOW",
            "id": "verify",
            "title": "Record whether the intended outcome actually happened."
          }
        ],
        "proactivity_level": "3",
        "status": "approval_required_before_execution",
        "success_criteria": [
          "A draft exists before any email is sent.",
          "New recipients or sensitive content require approval.",
          "The trigger is represented as a reviewable contract.",
          "AgentGuard logs every preparation, decision, approval, failure, and verification step.",
          "The user can pause, revoke, or change the job without losing history."
        ],
        "trigger": {
          "condition": null,
          "event": null,
          "next_run": "tomorrow morning",
          "recurrence": "one_time",
          "source_language": "send an email to alex tomorrow morning tomorrow morning",
          "timezone": "local",
          "type": "TIME"
        }
      },
      "schema": "safecadence.safeai.scheduled-accomplishment.v1",
      "source": "local sample data only"
    },
    {
      "front_door": "What should happen, and when?",
      "generated_at": "2026-10-05T22:21:30Z",
      "schedule": {
        "action_type": "linkedin_post",
        "agentguard": {
          "advanced": "ALLOW/ASK/DENY enforcement, mission contract, approvals, data boundaries, kill switch, and quarantine.",
          "always_ask": [
            "purchase",
            "payment",
            "booking",
            "send_to_new_person",
            "public_post",
            "submit_form",
            "delete_important_data",
            "share_sensitive_data",
            "major_schedule_change",
            "door_unlock",
            "lock_or_close_device",
            "physical_device_change",
            "camera_identity_recognition",
            "irrigation_run_without_trust_contract",
            "significant_hvac_change"
          ],
          "basic": "Monitoring only: activity, tools, failures, work history, unusual behavior, and mission drift are recorded.",
          "default_mode": "advisory",
          "execution_rule": "prepare_allowed_execute_gated",
          "monitoring": [
            "activity",
            "tool use",
            "evidence",
            "failure",
            "retry",
            "outcome"
          ],
          "route": "scheduled_action",
          "safety_boundary": null,
          "stop_conditions": [
            "missing approval",
            "scope drift",
            "new recipient",
            "public posting",
            "sensitive data",
            "revoked connector",
            "failed verification"
          ]
        },
        "capabilities": [
          {
            "approval_rule": "govern execution trigger",
            "available": true,
            "domain": "scheduler",
            "id": "trigger.parse",
            "inputs": [
              "when language",
              "job goal"
            ],
            "name": "Parse time, event, and condition triggers",
            "outputs": [
              "trigger contract"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "schedule intent; govern execution",
            "available": true,
            "domain": "scheduler",
            "id": "schedule.create",
            "inputs": [
              "goal",
              "time or recurrence"
            ],
            "name": "Schedule future work",
            "outputs": [
              "queued dry-run"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "ask before publish",
            "available": true,
            "domain": "communication",
            "id": "social.post.draft",
            "inputs": [
              "topic",
              "audience",
              "claims"
            ],
            "name": "Draft social post",
            "outputs": [
              "post draft"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "approval required before public posting",
            "available": true,
            "domain": "communication",
            "id": "social.post.publish",
            "inputs": [
              "approved post",
              "account"
            ],
            "name": "Publish social post",
            "outputs": [
              "published post"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "required for consequential actions",
            "available": true,
            "domain": "approval",
            "id": "notify.approval",
            "inputs": [
              "prepared action"
            ],
            "name": "Ask for human approval",
            "outputs": [
              "approve, change, stop"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "record evidence",
            "available": true,
            "domain": "verification",
            "id": "outcome.verify",
            "inputs": [
              "expected",
              "observed"
            ],
            "name": "Verify outcome",
            "outputs": [
              "achieved, not achieved, inconclusive"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "stay inside permissions",
            "available": true,
            "domain": "recovery",
            "id": "recover.replan",
            "inputs": [
              "checkpoint",
              "failure"
            ],
            "name": "Recover from blockers",
            "outputs": [
              "safe retry plan"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          }
        ],
        "dry_run": {
          "evidence": [
            "schedule.created",
            "agentguard.policy.checked",
            "dry_run.recorded"
          ],
          "external_side_effect": false,
          "mode": "dry_run_only",
          "would_execute": "after_approval",
          "would_prepare": {
            "body": "Draft post prepared for: Post on LinkedIn every weekday at 9 AM",
            "claims_checked": true,
            "network": "LinkedIn",
            "type": "social_post_draft"
          }
        },
        "execution_mode": "LOCAL_SERVER",
        "fallback_plan": [
          {
            "rule": "Use the approved linkedin_post connector if configured and healthy.",
            "step": "preferred_api"
          },
          {
            "rule": "Use an approved alternate adapter with the same authority boundary.",
            "step": "alternative_provider"
          },
          {
            "rule": "Use browser-assisted preparation only when the source and purpose are allowed.",
            "step": "web_or_browser"
          },
          {
            "rule": "Ask for reconnection or clarification, then resume from checkpoint.",
            "step": "ask_user"
          }
        ],
        "goal": "Post on LinkedIn every weekday at 9 AM",
        "id": "sched-post-on-linkedin-every-weekday-at-9-am",
        "job_type": "long_lived_job",
        "life_context_used": {
          "collections": {
            "decisions": 1,
            "events": 3,
            "items": 5,
            "jobs": 3,
            "obligations": 5,
            "permissions": 5,
            "persons": 4
          },
          "graph_sha256": "3d91725d0b63368fae679a40a43d4be764f00c6e23f9ac6964002fd8f1cab8c0"
        },
        "model_mode": "RULES_ONLY",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Prepared work is ready, and any external action is gated.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Post on LinkedIn every weekday at 9 AM",
          "plan": "Prepare and govern linkedin_post.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "person-faz",
        "plan": [
          {
            "agentguard": "ALLOW",
            "id": "understand",
            "title": "Understand what should happen and when."
          },
          {
            "agentguard": "ALLOW",
            "id": "prepare",
            "title": "Prepare the content, application, reminder, or recurring job with sample/local data."
          },
          {
            "agentguard": "ALLOW",
            "id": "claims",
            "title": "Check claims, links, audience, brand voice, and public-risk language."
          },
          {
            "agentguard": "ALLOW",
            "id": "preflight",
            "title": "Check recipients, destination, data sensitivity, claims, and scope."
          },
          {
            "agentguard": "ASK",
            "id": "approve",
            "title": "Ask the named human before the action leaves SafeAI."
          },
          {
            "agentguard": "ASK",
            "id": "execute",
            "title": "Execute only after approval; otherwise hold the prepared draft."
          },
          {
            "agentguard": "ALLOW",
            "id": "verify",
            "title": "Record whether the intended outcome actually happened."
          }
        ],
        "proactivity_level": "3",
        "status": "approval_required_before_execution",
        "success_criteria": [
          "Claims, audience, links, and public-risk language are checked.",
          "Publishing waits for approval or a bounded trust contract.",
          "The trigger is represented as a reviewable contract.",
          "AgentGuard logs every preparation, decision, approval, failure, and verification step.",
          "The user can pause, revoke, or change the job without losing history."
        ],
        "trigger": {
          "condition": null,
          "event": null,
          "next_run": "next weekday morning",
          "recurrence": "weekdays",
          "source_language": "post on linkedin every weekday at 9 am weekdays",
          "timezone": "local",
          "type": "RECURRING"
        }
      },
      "schema": "safecadence.safeai.scheduled-accomplishment.v1",
      "source": "local sample data only"
    },
    {
      "front_door": "What should happen, and when?",
      "generated_at": "2026-10-05T22:21:30Z",
      "schedule": {
        "action_type": "job_application",
        "agentguard": {
          "advanced": "ALLOW/ASK/DENY enforcement, mission contract, approvals, data boundaries, kill switch, and quarantine.",
          "always_ask": [
            "purchase",
            "payment",
            "booking",
            "send_to_new_person",
            "public_post",
            "submit_form",
            "delete_important_data",
            "share_sensitive_data",
            "major_schedule_change",
            "door_unlock",
            "lock_or_close_device",
            "physical_device_change",
            "camera_identity_recognition",
            "irrigation_run_without_trust_contract",
            "significant_hvac_change"
          ],
          "basic": "Monitoring only: activity, tools, failures, work history, unusual behavior, and mission drift are recorded.",
          "default_mode": "advisory",
          "execution_rule": "prepare_allowed_execute_gated",
          "monitoring": [
            "activity",
            "tool use",
            "evidence",
            "failure",
            "retry",
            "outcome"
          ],
          "route": "scheduled_action",
          "safety_boundary": null,
          "stop_conditions": [
            "missing approval",
            "scope drift",
            "new recipient",
            "public posting",
            "sensitive data",
            "revoked connector",
            "failed verification"
          ]
        },
        "capabilities": [
          {
            "approval_rule": "govern execution trigger",
            "available": true,
            "domain": "scheduler",
            "id": "trigger.parse",
            "inputs": [
              "when language",
              "job goal"
            ],
            "name": "Parse time, event, and condition triggers",
            "outputs": [
              "trigger contract"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "schedule intent; govern execution",
            "available": true,
            "domain": "scheduler",
            "id": "schedule.create",
            "inputs": [
              "goal",
              "time or recurrence"
            ],
            "name": "Schedule future work",
            "outputs": [
              "queued dry-run"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "prepare only",
            "available": true,
            "domain": "career",
            "id": "job.application.prepare",
            "inputs": [
              "job target",
              "resume",
              "profile"
            ],
            "name": "Prepare job application",
            "outputs": [
              "tailored resume",
              "cover note"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "approval required before submit",
            "available": true,
            "domain": "career",
            "id": "job.application.submit",
            "inputs": [
              "approved application",
              "target"
            ],
            "name": "Submit job application",
            "outputs": [
              "submitted application"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "required for consequential actions",
            "available": true,
            "domain": "approval",
            "id": "notify.approval",
            "inputs": [
              "prepared action"
            ],
            "name": "Ask for human approval",
            "outputs": [
              "approve, change, stop"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "record evidence",
            "available": true,
            "domain": "verification",
            "id": "outcome.verify",
            "inputs": [
              "expected",
              "observed"
            ],
            "name": "Verify outcome",
            "outputs": [
              "achieved, not achieved, inconclusive"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "stay inside permissions",
            "available": true,
            "domain": "recovery",
            "id": "recover.replan",
            "inputs": [
              "checkpoint",
              "failure"
            ],
            "name": "Recover from blockers",
            "outputs": [
              "safe retry plan"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          }
        ],
        "dry_run": {
          "evidence": [
            "schedule.created",
            "agentguard.policy.checked",
            "dry_run.recorded"
          ],
          "external_side_effect": false,
          "mode": "dry_run_only",
          "would_execute": "after_approval",
          "would_prepare": {
            "cover_note": "sample cover note",
            "resume": "tailored sample resume",
            "submit_target": "sample job portal",
            "type": "job_application_packet"
          }
        },
        "execution_mode": "LOCAL_SERVER",
        "fallback_plan": [
          {
            "rule": "Use the approved job_application connector if configured and healthy.",
            "step": "preferred_api"
          },
          {
            "rule": "Use an approved alternate adapter with the same authority boundary.",
            "step": "alternative_provider"
          },
          {
            "rule": "Use browser-assisted preparation only when the source and purpose are allowed.",
            "step": "web_or_browser"
          },
          {
            "rule": "Ask for reconnection or clarification, then resume from checkpoint.",
            "step": "ask_user"
          }
        ],
        "goal": "Apply for a job when my resume is tailored",
        "id": "sched-apply-for-a-job-when-my-resume-is-tailored",
        "job_type": "long_lived_job",
        "life_context_used": {
          "collections": {
            "decisions": 1,
            "events": 3,
            "items": 5,
            "jobs": 3,
            "obligations": 5,
            "permissions": 5,
            "persons": 4
          },
          "graph_sha256": "3d91725d0b63368fae679a40a43d4be764f00c6e23f9ac6964002fd8f1cab8c0"
        },
        "model_mode": "RULES_ONLY",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Prepared work is ready, and any external action is gated.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Apply for a job when my resume is tailored",
          "plan": "Prepare and govern job_application.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "person-faz",
        "plan": [
          {
            "agentguard": "ALLOW",
            "id": "understand",
            "title": "Understand what should happen and when."
          },
          {
            "agentguard": "ALLOW",
            "id": "prepare",
            "title": "Prepare the content, application, reminder, or recurring job with sample/local data."
          },
          {
            "agentguard": "ALLOW",
            "id": "tailor",
            "title": "Tailor resume, cover note, and answers for the target role."
          },
          {
            "agentguard": "ALLOW",
            "id": "preflight",
            "title": "Check recipients, destination, data sensitivity, claims, and scope."
          },
          {
            "agentguard": "ASK",
            "id": "approve",
            "title": "Ask the named human before the action leaves SafeAI."
          },
          {
            "agentguard": "ASK",
            "id": "execute",
            "title": "Execute only after approval; otherwise hold the prepared draft."
          },
          {
            "agentguard": "ALLOW",
            "id": "verify",
            "title": "Record whether the intended outcome actually happened."
          }
        ],
        "proactivity_level": "3",
        "status": "approval_required_before_execution",
        "success_criteria": [
          "Resume, cover note, and answers are tailored.",
          "Submission waits for a named human approval.",
          "The trigger is represented as a reviewable contract.",
          "AgentGuard logs every preparation, decision, approval, failure, and verification step.",
          "The user can pause, revoke, or change the job without losing history."
        ],
        "trigger": {
          "condition": null,
          "event": "resume tailoring checkpoint completes",
          "next_run": "when trigger becomes true",
          "recurrence": "one_time",
          "source_language": "apply for a job when my resume is tailored",
          "timezone": "local",
          "type": "EVENT"
        }
      },
      "schema": "safecadence.safeai.scheduled-accomplishment.v1",
      "source": "local sample data only"
    },
    {
      "front_door": "What should happen, and when?",
      "generated_at": "2026-10-05T22:21:30Z",
      "schedule": {
        "action_type": "job_search",
        "agentguard": {
          "advanced": "ALLOW/ASK/DENY enforcement, mission contract, approvals, data boundaries, kill switch, and quarantine.",
          "always_ask": [
            "purchase",
            "payment",
            "booking",
            "send_to_new_person",
            "public_post",
            "submit_form",
            "delete_important_data",
            "share_sensitive_data",
            "major_schedule_change",
            "door_unlock",
            "lock_or_close_device",
            "physical_device_change",
            "camera_identity_recognition",
            "irrigation_run_without_trust_contract",
            "significant_hvac_change"
          ],
          "basic": "Monitoring only: activity, tools, failures, work history, unusual behavior, and mission drift are recorded.",
          "default_mode": "advisory",
          "execution_rule": "owner_private_allowed",
          "monitoring": [
            "activity",
            "tool use",
            "evidence",
            "failure",
            "retry",
            "outcome"
          ],
          "route": "scheduled_action",
          "safety_boundary": null,
          "stop_conditions": [
            "missing approval",
            "scope drift",
            "new recipient",
            "public posting",
            "sensitive data",
            "revoked connector",
            "failed verification"
          ]
        },
        "capabilities": [
          {
            "approval_rule": "govern execution trigger",
            "available": true,
            "domain": "scheduler",
            "id": "trigger.parse",
            "inputs": [
              "when language",
              "job goal"
            ],
            "name": "Parse time, event, and condition triggers",
            "outputs": [
              "trigger contract"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "schedule intent; govern execution",
            "available": true,
            "domain": "scheduler",
            "id": "schedule.create",
            "inputs": [
              "goal",
              "time or recurrence"
            ],
            "name": "Schedule future work",
            "outputs": [
              "queued dry-run"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "prepare only",
            "available": true,
            "domain": "career",
            "id": "job.search",
            "inputs": [
              "role target",
              "location",
              "constraints"
            ],
            "name": "Search and rank jobs",
            "outputs": [
              "ranked roles"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "prepare only",
            "available": true,
            "domain": "career",
            "id": "job.application.prepare",
            "inputs": [
              "job target",
              "resume",
              "profile"
            ],
            "name": "Prepare job application",
            "outputs": [
              "tailored resume",
              "cover note"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "required for consequential actions",
            "available": true,
            "domain": "approval",
            "id": "notify.approval",
            "inputs": [
              "prepared action"
            ],
            "name": "Ask for human approval",
            "outputs": [
              "approve, change, stop"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "record evidence",
            "available": true,
            "domain": "verification",
            "id": "outcome.verify",
            "inputs": [
              "expected",
              "observed"
            ],
            "name": "Verify outcome",
            "outputs": [
              "achieved, not achieved, inconclusive"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "stay inside permissions",
            "available": true,
            "domain": "recovery",
            "id": "recover.replan",
            "inputs": [
              "checkpoint",
              "failure"
            ],
            "name": "Recover from blockers",
            "outputs": [
              "safe retry plan"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          }
        ],
        "dry_run": {
          "evidence": [
            "schedule.created",
            "agentguard.policy.checked",
            "dry_run.recorded"
          ],
          "external_side_effect": false,
          "mode": "dry_run_only",
          "would_execute": "at_scheduled_time",
          "would_prepare": {
            "matches": [
              "VP AI Platform",
              "Head of Agentic Operations",
              "Director of AI Products"
            ],
            "submit_target": "approval queue only",
            "type": "job_match_brief"
          }
        },
        "execution_mode": "LOCAL_SERVER",
        "fallback_plan": [
          {
            "rule": "Use the approved job_search connector if configured and healthy.",
            "step": "preferred_api"
          },
          {
            "rule": "Use an approved alternate adapter with the same authority boundary.",
            "step": "alternative_provider"
          },
          {
            "rule": "Use browser-assisted preparation only when the source and purpose are allowed.",
            "step": "web_or_browser"
          },
          {
            "rule": "Ask for reconnection or clarification, then resume from checkpoint.",
            "step": "ask_user"
          }
        ],
        "goal": "Find VP AI jobs every weekday morning and prepare the best matches",
        "id": "sched-find-vp-ai-jobs-every-weekday-morning-and-prepare-the-best-match",
        "job_type": "long_lived_job",
        "life_context_used": {
          "collections": {
            "decisions": 1,
            "events": 3,
            "items": 5,
            "jobs": 3,
            "obligations": 5,
            "permissions": 5,
            "persons": 4
          },
          "graph_sha256": "3d91725d0b63368fae679a40a43d4be764f00c6e23f9ac6964002fd8f1cab8c0"
        },
        "model_mode": "RULES_ONLY",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Prepared work is ready, and any external action is gated.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Find VP AI jobs every weekday morning and prepare the best matches",
          "plan": "Prepare and govern job_search.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "person-faz",
        "plan": [
          {
            "agentguard": "ALLOW",
            "id": "understand",
            "title": "Understand what should happen and when."
          },
          {
            "agentguard": "ALLOW",
            "id": "prepare",
            "title": "Prepare the content, application, reminder, or recurring job with sample/local data."
          },
          {
            "agentguard": "ALLOW",
            "id": "preflight",
            "title": "Check recipients, destination, data sensitivity, claims, and scope."
          },
          {
            "agentguard": "ALLOW",
            "id": "execute",
            "title": "Execute the private owner-scoped reminder or local recurring job."
          },
          {
            "agentguard": "ALLOW",
            "id": "verify",
            "title": "Record whether the intended outcome actually happened."
          }
        ],
        "proactivity_level": "4",
        "status": "running_dry_run_ready",
        "success_criteria": [
          "Matches are ranked against the user's approved constraints.",
          "Applications are prepared only; submission remains gated.",
          "The trigger is represented as a reviewable contract.",
          "AgentGuard logs every preparation, decision, approval, failure, and verification step.",
          "The user can pause, revoke, or change the job without losing history."
        ],
        "trigger": {
          "condition": null,
          "event": null,
          "next_run": "next weekday morning",
          "recurrence": "weekdays",
          "source_language": "find vp ai jobs every weekday morning and prepare the best matches",
          "timezone": "local",
          "type": "RECURRING"
        }
      },
      "schema": "safecadence.safeai.scheduled-accomplishment.v1",
      "source": "local sample data only"
    },
    {
      "front_door": "What should happen, and when?",
      "generated_at": "2026-10-05T22:21:30Z",
      "schedule": {
        "action_type": "camera_person_alert",
        "agentguard": {
          "advanced": "ALLOW/ASK/DENY enforcement, mission contract, approvals, data boundaries, kill switch, and quarantine.",
          "always_ask": [
            "purchase",
            "payment",
            "booking",
            "send_to_new_person",
            "public_post",
            "submit_form",
            "delete_important_data",
            "share_sensitive_data",
            "major_schedule_change",
            "door_unlock",
            "lock_or_close_device",
            "physical_device_change",
            "camera_identity_recognition",
            "irrigation_run_without_trust_contract",
            "significant_hvac_change"
          ],
          "basic": "Monitoring only: activity, tools, failures, work history, unusual behavior, and mission drift are recorded.",
          "default_mode": "advisory",
          "execution_rule": "owner_private_allowed",
          "monitoring": [
            "activity",
            "tool use",
            "evidence",
            "failure",
            "retry",
            "outcome"
          ],
          "route": "scheduled_action",
          "safety_boundary": null,
          "stop_conditions": [
            "missing approval",
            "scope drift",
            "new recipient",
            "public posting",
            "sensitive data",
            "revoked connector",
            "failed verification"
          ]
        },
        "capabilities": [
          {
            "approval_rule": "govern execution trigger",
            "available": true,
            "domain": "scheduler",
            "id": "trigger.parse",
            "inputs": [
              "when language",
              "job goal"
            ],
            "name": "Parse time, event, and condition triggers",
            "outputs": [
              "trigger contract"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "schedule intent; govern execution",
            "available": true,
            "domain": "scheduler",
            "id": "schedule.create",
            "inputs": [
              "goal",
              "time or recurrence"
            ],
            "name": "Schedule future work",
            "outputs": [
              "queued dry-run"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "presence-only; no raw tracking trail",
            "available": true,
            "domain": "environment",
            "id": "presence.read",
            "inputs": [
              "device presence",
              "manual mode"
            ],
            "name": "Read home/away presence",
            "outputs": [
              "home, away, unknown"
            ],
            "providers": [
              "iOS",
              "Android",
              "Home Assistant",
              "sample_adapter"
            ],
            "risk": "medium",
            "verification_methods": [
              "provider status",
              "event receipt",
              "AgentGuard evidence record"
            ]
          },
          {
            "approval_rule": "event metadata only; identity recognition requires approval",
            "available": true,
            "domain": "camera",
            "id": "camera.person_detected",
            "inputs": [
              "camera event"
            ],
            "name": "Detect person from camera event",
            "outputs": [
              "person detected metadata"
            ],
            "providers": [
              "Ring",
              "Nest",
              "UniFi Protect",
              "Reolink",
              "sample_adapter"
            ],
            "risk": "high",
            "verification_methods": [
              "provider status",
              "event receipt",
              "AgentGuard evidence record"
            ]
          },
          {
            "approval_rule": "owner notification allowed in approved jobs",
            "available": true,
            "domain": "notification",
            "id": "notify.mobile",
            "inputs": [
              "message",
              "priority"
            ],
            "name": "Notify phone or watch",
            "outputs": [
              "delivered, failed"
            ],
            "providers": [
              "iOS Push",
              "Android Push",
              "Pushover",
              "sample_adapter"
            ],
            "risk": "medium",
            "verification_methods": [
              "provider status",
              "event receipt",
              "AgentGuard evidence record"
            ]
          },
          {
            "approval_rule": "only approved household devices; quiet hours apply",
            "available": true,
            "domain": "notification",
            "id": "notify.voice",
            "inputs": [
              "message",
              "room or device"
            ],
            "name": "Notify approved voice assistant",
            "outputs": [
              "announcement queued"
            ],
            "providers": [
              "Alexa",
              "Google Home",
              "Home Assistant",
              "sample_adapter"
            ],
            "risk": "medium",
            "verification_methods": [
              "provider status",
              "event receipt",
              "AgentGuard evidence record"
            ]
          },
          {
            "approval_rule": "required for consequential actions",
            "available": true,
            "domain": "approval",
            "id": "notify.approval",
            "inputs": [
              "prepared action"
            ],
            "name": "Ask for human approval",
            "outputs": [
              "approve, change, stop"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "record evidence",
            "available": true,
            "domain": "verification",
            "id": "outcome.verify",
            "inputs": [
              "expected",
              "observed"
            ],
            "name": "Verify outcome",
            "outputs": [
              "achieved, not achieved, inconclusive"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "stay inside permissions",
            "available": true,
            "domain": "recovery",
            "id": "recover.replan",
            "inputs": [
              "checkpoint",
              "failure"
            ],
            "name": "Recover from blockers",
            "outputs": [
              "safe retry plan"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          }
        ],
        "dry_run": {
          "evidence": [
            "schedule.created",
            "agentguard.policy.checked",
            "dry_run.recorded"
          ],
          "external_side_effect": false,
          "mode": "dry_run_only",
          "would_execute": "at_scheduled_time",
          "would_prepare": {
            "identity_recognition": "disabled until explicit approval",
            "notify": [
              "mobile push to owner",
              "approved Alexa announcement"
            ],
            "raw_media_policy": "metadata only; no raw video stored by SafeAI demo",
            "sample_message": "Person detected at front yard while you are away.",
            "trigger": "front camera person_detected while household occupancy is away",
            "type": "camera_alert_dry_run"
          }
        },
        "execution_mode": "LOCAL_SERVER",
        "fallback_plan": [
          {
            "rule": "Use the approved camera_person_alert connector if configured and healthy.",
            "step": "preferred_api"
          },
          {
            "rule": "Use an approved alternate adapter with the same authority boundary.",
            "step": "alternative_provider"
          },
          {
            "rule": "Use browser-assisted preparation only when the source and purpose are allowed.",
            "step": "web_or_browser"
          },
          {
            "rule": "Ask for reconnection or clarification, then resume from checkpoint.",
            "step": "ask_user"
          }
        ],
        "goal": "When I'm away and my camera detects a person, notify me through my phone and Alexa",
        "id": "sched-when-i-m-away-and-my-camera-detects-a-person-notify-me-through-m",
        "job_type": "long_lived_job",
        "life_context_used": {
          "collections": {
            "decisions": 1,
            "events": 3,
            "items": 5,
            "jobs": 3,
            "obligations": 5,
            "permissions": 5,
            "persons": 4
          },
          "graph_sha256": "3d91725d0b63368fae679a40a43d4be764f00c6e23f9ac6964002fd8f1cab8c0"
        },
        "model_mode": "RULES_ONLY",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Owner is notified only for meaningful away/person events; raw media and identity recognition stay out unless approved.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "When I'm away and my camera detects a person, notify me through my phone and Alexa",
          "plan": "Prepare and govern camera_person_alert.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "person-faz",
        "plan": [
          {
            "agentguard": "ALLOW",
            "id": "understand",
            "title": "Understand what should happen and when."
          },
          {
            "agentguard": "ALLOW",
            "id": "prepare",
            "title": "Prepare the content, application, reminder, or recurring job with sample/local data."
          },
          {
            "agentguard": "ALLOW",
            "id": "environment",
            "title": "Evaluate presence, camera event metadata, quiet hours, and notification channels."
          },
          {
            "agentguard": "ALLOW",
            "id": "privacy",
            "title": "Keep raw media and identity recognition out unless explicitly authorized."
          },
          {
            "agentguard": "ALLOW",
            "id": "preflight",
            "title": "Check recipients, destination, data sensitivity, claims, and scope."
          },
          {
            "agentguard": "ALLOW",
            "id": "execute",
            "title": "Execute the private owner-scoped reminder or local recurring job."
          },
          {
            "agentguard": "ALLOW",
            "id": "verify",
            "title": "Record whether the intended outcome actually happened."
          }
        ],
        "proactivity_level": "2",
        "status": "running_dry_run_ready",
        "success_criteria": [
          "Presence and camera event metadata are evaluated together.",
          "Owner notification can be sent, but identity recognition and evidence capture remain explicit opt-in.",
          "The trigger is represented as a reviewable contract.",
          "AgentGuard logs every preparation, decision, approval, failure, and verification step.",
          "The user can pause, revoke, or change the job without losing history."
        ],
        "trigger": {
          "condition": null,
          "event": "approved camera emits person_detected while household presence is away",
          "next_run": "when trigger becomes true",
          "recurrence": "one_time",
          "source_language": "when i'm away and my camera detects a person, notify me through my phone and alexa",
          "timezone": "local",
          "type": "EVENT"
        }
      },
      "schema": "safecadence.safeai.scheduled-accomplishment.v1",
      "source": "local sample data only"
    },
    {
      "front_door": "What should happen, and when?",
      "generated_at": "2026-10-05T22:21:30Z",
      "schedule": {
        "action_type": "irrigation_weather_aware",
        "agentguard": {
          "advanced": "ALLOW/ASK/DENY enforcement, mission contract, approvals, data boundaries, kill switch, and quarantine.",
          "always_ask": [
            "purchase",
            "payment",
            "booking",
            "send_to_new_person",
            "public_post",
            "submit_form",
            "delete_important_data",
            "share_sensitive_data",
            "major_schedule_change",
            "door_unlock",
            "lock_or_close_device",
            "physical_device_change",
            "camera_identity_recognition",
            "irrigation_run_without_trust_contract",
            "significant_hvac_change"
          ],
          "basic": "Monitoring only: activity, tools, failures, work history, unusual behavior, and mission drift are recorded.",
          "default_mode": "advisory",
          "execution_rule": "prepare_allowed_execute_gated",
          "monitoring": [
            "activity",
            "tool use",
            "evidence",
            "failure",
            "retry",
            "outcome"
          ],
          "route": "scheduled_action",
          "safety_boundary": null,
          "stop_conditions": [
            "missing approval",
            "scope drift",
            "new recipient",
            "public posting",
            "sensitive data",
            "revoked connector",
            "failed verification"
          ]
        },
        "capabilities": [
          {
            "approval_rule": "govern execution trigger",
            "available": true,
            "domain": "scheduler",
            "id": "trigger.parse",
            "inputs": [
              "when language",
              "job goal"
            ],
            "name": "Parse time, event, and condition triggers",
            "outputs": [
              "trigger contract"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "schedule intent; govern execution",
            "available": true,
            "domain": "scheduler",
            "id": "schedule.create",
            "inputs": [
              "goal",
              "time or recurrence"
            ],
            "name": "Schedule future work",
            "outputs": [
              "queued dry-run"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "read-only",
            "available": true,
            "domain": "outdoor",
            "id": "irrigation.read",
            "inputs": [
              "controller"
            ],
            "name": "Read irrigation status",
            "outputs": [
              "zone and schedule status"
            ],
            "providers": [
              "Rachio",
              "Rain Bird",
              "Orbit",
              "Home Assistant",
              "sample_adapter"
            ],
            "risk": "low",
            "verification_methods": [
              "provider status",
              "event receipt",
              "AgentGuard evidence record"
            ]
          },
          {
            "approval_rule": "read-only",
            "available": true,
            "domain": "weather",
            "id": "weather.forecast",
            "inputs": [
              "location"
            ],
            "name": "Read local weather forecast",
            "outputs": [
              "forecast and rain probability"
            ],
            "providers": [
              "NOAA",
              "Apple Weather",
              "OpenWeather",
              "sample_adapter"
            ],
            "risk": "low",
            "verification_methods": [
              "provider status",
              "event receipt",
              "AgentGuard evidence record"
            ]
          },
          {
            "approval_rule": "requires away/lawn trust contract or approval",
            "available": true,
            "domain": "outdoor",
            "id": "irrigation.run",
            "inputs": [
              "zone",
              "duration",
              "weather"
            ],
            "name": "Run or skip irrigation",
            "outputs": [
              "run, skip, failed"
            ],
            "providers": [
              "Rachio",
              "Rain Bird",
              "Orbit",
              "Home Assistant",
              "sample_adapter"
            ],
            "risk": "high",
            "verification_methods": [
              "provider status",
              "event receipt",
              "AgentGuard evidence record"
            ]
          },
          {
            "approval_rule": "required for consequential actions",
            "available": true,
            "domain": "approval",
            "id": "notify.approval",
            "inputs": [
              "prepared action"
            ],
            "name": "Ask for human approval",
            "outputs": [
              "approve, change, stop"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "high"
          },
          {
            "approval_rule": "record evidence",
            "available": true,
            "domain": "verification",
            "id": "outcome.verify",
            "inputs": [
              "expected",
              "observed"
            ],
            "name": "Verify outcome",
            "outputs": [
              "achieved, not achieved, inconclusive"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          },
          {
            "approval_rule": "stay inside permissions",
            "available": true,
            "domain": "recovery",
            "id": "recover.replan",
            "inputs": [
              "checkpoint",
              "failure"
            ],
            "name": "Recover from blockers",
            "outputs": [
              "safe retry plan"
            ],
            "providers": [
              "sample_adapter",
              "local_runtime"
            ],
            "risk": "medium"
          }
        ],
        "dry_run": {
          "evidence": [
            "schedule.created",
            "agentguard.policy.checked",
            "dry_run.recorded"
          ],
          "external_side_effect": false,
          "mode": "dry_run_only",
          "would_execute": "after_approval",
          "would_prepare": {
            "controller": "sample irrigation controller",
            "recommended_decision": "skip next watering window",
            "type": "irrigation_weather_plan",
            "weather": "rain expected within 24 hours",
            "would_run": "only with bounded Away trust contract or approval"
          }
        },
        "execution_mode": "LOCAL_SERVER",
        "fallback_plan": [
          {
            "rule": "Use the approved irrigation_weather_aware connector if configured and healthy.",
            "step": "preferred_api"
          },
          {
            "rule": "Use an approved alternate adapter with the same authority boundary.",
            "step": "alternative_provider"
          },
          {
            "rule": "Use browser-assisted preparation only when the source and purpose are allowed.",
            "step": "web_or_browser"
          },
          {
            "rule": "Ask for reconnection or clarification, then resume from checkpoint.",
            "step": "ask_user"
          }
        ],
        "goal": "Keep my lawn watered while I'm gone, but don't waste water if it rains",
        "id": "sched-keep-my-lawn-watered-while-i-m-gone-but-don-t-waste-water-if-it-",
        "job_type": "long_lived_job",
        "life_context_used": {
          "collections": {
            "decisions": 1,
            "events": 3,
            "items": 5,
            "jobs": 3,
            "obligations": 5,
            "permissions": 5,
            "persons": 4
          },
          "graph_sha256": "3d91725d0b63368fae679a40a43d4be764f00c6e23f9ac6964002fd8f1cab8c0"
        },
        "model_mode": "RULES_ONLY",
        "outcome": {
          "actions": [
            "prepare",
            "policy_check",
            "record_evidence"
          ],
          "actual_outcome": "dry_run_pending",
          "expected_outcome": "Lawn watering is skipped or run according to rain, restrictions, controller state, and approved authority.",
          "follow_up": "approve, modify, pause, or keep watching",
          "goal": "Keep my lawn watered while I'm gone, but don't waste water if it rains",
          "plan": "Prepare and govern irrigation_weather_aware.",
          "verification": "not_executed_in_local_demo"
        },
        "owner": "person-faz",
        "plan": [
          {
            "agentguard": "ALLOW",
            "id": "understand",
            "title": "Understand what should happen and when."
          },
          {
            "agentguard": "ALLOW",
            "id": "prepare",
            "title": "Prepare the content, application, reminder, or recurring job with sample/local data."
          },
          {
            "agentguard": "ALLOW",
            "id": "weather",
            "title": "Check forecast, rainfall, controller status, restrictions, and approved lawn rules."
          },
          {
            "agentguard": "ASK",
            "id": "physical-guard",
            "title": "Require Away trust contract or approval before running a zone."
          },
          {
            "agentguard": "ALLOW",
            "id": "preflight",
            "title": "Check recipients, destination, data sensitivity, claims, and scope."
          },
          {
            "agentguard": "ASK",
            "id": "approve",
            "title": "Ask the named human before the action leaves SafeAI."
          },
          {
            "agentguard": "ASK",
            "id": "execute",
            "title": "Execute only after approval; otherwise hold the prepared draft."
          },
          {
            "agentguard": "ALLOW",
            "id": "verify",
            "title": "Record whether the intended outcome actually happened."
          }
        ],
        "proactivity_level": "3",
        "status": "approval_required_before_execution",
        "success_criteria": [
          "Forecast, rainfall, restrictions, and controller status are checked before watering.",
          "Actual irrigation run requires bounded Away authority or approval.",
          "The trigger is represented as a reviewable contract.",
          "AgentGuard logs every preparation, decision, approval, failure, and verification step.",
          "The user can pause, revoke, or change the job without losing history."
        ],
        "trigger": {
          "condition": "irrigation window opens and forecast/rainfall policy allows watering",
          "event": null,
          "next_run": "when trigger becomes true",
          "recurrence": "one_time",
          "source_language": "keep my lawn watered while i'm gone, but don't waste water if it rains",
          "timezone": "local",
          "type": "CONDITION"
        }
      },
      "schema": "safecadence.safeai.scheduled-accomplishment.v1",
      "source": "local sample data only"
    }
  ],
  "scheduled_action_catalog": {
    "actions": [
      {
        "capability_ids": [
          "email.draft",
          "email.send"
        ],
        "default_guard": "ASK",
        "id": "email",
        "name": "Send an email",
        "rule": "Draft now; send only after approval."
      },
      {
        "capability_ids": [
          "email.draft",
          "email.send"
        ],
        "default_guard": "ASK",
        "id": "email_follow_up",
        "name": "Watch for reply and prepare follow-up",
        "rule": "Watch approved mailbox signals; follow-up send waits for approval."
      },
      {
        "capability_ids": [
          "social.post.draft",
          "social.post.publish"
        ],
        "default_guard": "ASK",
        "id": "linkedin_post",
        "name": "Post on LinkedIn",
        "rule": "Create content and claims register; publish only after approval."
      },
      {
        "capability_ids": [
          "job.search",
          "job.application.prepare"
        ],
        "default_guard": "ALLOW",
        "id": "job_search",
        "name": "Find and rank job opportunities",
        "rule": "Search and prepare matches; applications still require approval."
      },
      {
        "capability_ids": [
          "job.application.prepare",
          "job.application.submit"
        ],
        "default_guard": "ASK",
        "id": "job_application",
        "name": "Apply for a job",
        "rule": "Tailor resume and application; submit only after approval."
      },
      {
        "capability_ids": [
          "price.watch",
          "notification.send"
        ],
        "default_guard": "ALLOW",
        "id": "price_watch",
        "name": "Watch a price or threshold",
        "rule": "Watch quietly; alert only when the threshold crosses."
      },
      {
        "capability_ids": [
          "schedule.create",
          "notification.send"
        ],
        "default_guard": "ALLOW",
        "id": "reminder",
        "name": "Remind me",
        "rule": "Private reminder can run if recipient is the owner."
      },
      {
        "capability_ids": [
          "presence.read",
          "camera.person_detected",
          "notify.mobile",
          "notify.voice"
        ],
        "default_guard": "ALLOW",
        "id": "camera_person_alert",
        "name": "Notify when camera sees a person while away",
        "rule": "Notify approved owner channels; identity recognition and raw media capture remain off unless explicitly approved."
      },
      {
        "capability_ids": [
          "irrigation.read",
          "weather.forecast",
          "irrigation.run",
          "notify.approval"
        ],
        "default_guard": "ASK",
        "id": "irrigation_weather_aware",
        "name": "Water lawn with weather and restriction checks",
        "rule": "Prepare and simulate; running irrigation requires bounded Away authority or approval."
      },
      {
        "capability_ids": [
          "presence.read",
          "door.lock",
          "thermostat.read",
          "thermostat.set",
          "irrigation.read",
          "sensor.water",
          "sensor.smoke_co",
          "notify.mobile",
          "notify.voice"
        ],
        "default_guard": "ASK",
        "id": "away_home_care",
        "name": "Run governed Away Mode for the home",
        "rule": "Create one Away Job; physical control actions stay gated by AgentGuard."
      },
      {
        "capability_ids": [
          "presence.read",
          "camera.motion_detected",
          "sensor.water",
          "sensor.smoke_co",
          "thermostat.read",
          "notification.send"
        ],
        "default_guard": "ALLOW",
        "id": "device_monitor",
        "name": "Monitor house devices and safety sensors",
        "rule": "Watch approved sensors and tell only on material safety or owner-defined events."
      },
      {
        "capability_ids": [
          "schedule.create",
          "context.read",
          "outcome.verify"
        ],
        "default_guard": "ALLOW",
        "id": "routine_job",
        "name": "Run a recurring job",
        "rule": "Recurring preparation runs inside a mission contract."
      },
      {
        "capability_ids": [
          "schedule.create",
          "ask.minimum",
          "notify.approval",
          "outcome.verify"
        ],
        "default_guard": "ASK",
        "id": "custom",
        "name": "Schedule any safe accomplishment",
        "rule": "Unknown consequential action requires review."
      }
    ],
    "always_ask": [
      "purchase",
      "payment",
      "booking",
      "send_to_new_person",
      "public_post",
      "submit_form",
      "delete_important_data",
      "share_sensitive_data",
      "major_schedule_change",
      "door_unlock",
      "lock_or_close_device",
      "physical_device_change",
      "camera_identity_recognition",
      "irrigation_run_without_trust_contract",
      "significant_hvac_change"
    ],
    "generated_at": "2026-10-05T22:21:30Z",
    "principle": "The user schedules outcomes. SafeAI prepares work; AgentGuard governs the moment of action.",
    "schema": "safecadence.safeai.scheduled-action-catalog.v1"
  },
  "schema": "safecadence.safeai.life-operating-layer.v1",
  "skill_library": {
    "generated_at": "2026-10-05T22:21:30Z",
    "principle": "Build reusable skills, then compose them into thousands of Jobs instead of building thousands of giant agents.",
    "schema": "safecadence.safeai.skill-library.v1",
    "skills": [
      {
        "id": "search",
        "name": "Search",
        "status": "local-template-ready"
      },
      {
        "id": "research",
        "name": "Research",
        "status": "local-template-ready"
      },
      {
        "id": "compare",
        "name": "Compare",
        "status": "local-template-ready"
      },
      {
        "id": "summarize",
        "name": "Summarize",
        "status": "local-template-ready"
      },
      {
        "id": "extract",
        "name": "Extract",
        "status": "local-template-ready"
      },
      {
        "id": "calculate",
        "name": "Calculate",
        "status": "local-template-ready"
      },
      {
        "id": "plan",
        "name": "Plan",
        "status": "local-template-ready"
      },
      {
        "id": "schedule",
        "name": "Schedule",
        "status": "local-template-ready"
      },
      {
        "id": "monitor",
        "name": "Monitor",
        "status": "local-template-ready"
      },
      {
        "id": "remind",
        "name": "Remind",
        "status": "local-template-ready"
      },
      {
        "id": "write",
        "name": "Write",
        "status": "local-template-ready"
      },
      {
        "id": "communicate",
        "name": "Communicate",
        "status": "local-template-ready"
      },
      {
        "id": "navigate",
        "name": "Navigate",
        "status": "local-template-ready"
      },
      {
        "id": "book",
        "name": "Book",
        "status": "local-template-ready"
      },
      {
        "id": "organize",
        "name": "Organize",
        "status": "local-template-ready"
      },
      {
        "id": "track",
        "name": "Track",
        "status": "local-template-ready"
      },
      {
        "id": "verify",
        "name": "Verify",
        "status": "local-template-ready"
      },
      {
        "id": "find-people",
        "name": "Find People",
        "status": "local-template-ready"
      },
      {
        "id": "find-places",
        "name": "Find Places",
        "status": "local-template-ready"
      },
      {
        "id": "find-products",
        "name": "Find Products",
        "status": "local-template-ready"
      },
      {
        "id": "price-watch",
        "name": "Price Watch",
        "status": "local-template-ready"
      },
      {
        "id": "calendar",
        "name": "Calendar",
        "status": "local-template-ready"
      },
      {
        "id": "documents",
        "name": "Documents",
        "status": "local-template-ready"
      },
      {
        "id": "photos",
        "name": "Photos",
        "status": "local-template-ready"
      },
      {
        "id": "maps",
        "name": "Maps",
        "status": "local-template-ready"
      },
      {
        "id": "weather",
        "name": "Weather",
        "status": "local-template-ready"
      }
    ]
  },
  "source": "local sample data",
  "trigger_engine": {
    "generated_at": "2026-10-05T22:21:30Z",
    "principle": "Users describe when something should happen; SafeAI turns that into a governed trigger contract.",
    "schema": "safecadence.safeai.trigger-engine.v1",
    "types": [
      {
        "example": "Plan my day now",
        "guard": "prepare inside current session",
        "id": "NOW",
        "label": "Do now"
      },
      {
        "example": "Send this tomorrow morning",
        "guard": "hold until time and policy pass",
        "id": "TIME",
        "label": "Do at a time"
      },
      {
        "example": "Prepare a LinkedIn post every Monday",
        "guard": "run only inside mission contract and rate limit",
        "id": "RECURRING",
        "label": "Do repeatedly"
      },
      {
        "example": "When John replies, summarize the email",
        "guard": "watch approved source only",
        "id": "EVENT",
        "label": "Do when an event happens"
      },
      {
        "example": "If flights drop below $4,500, tell me",
        "guard": "compare against approved threshold",
        "id": "CONDITION",
        "label": "Do if a condition becomes true"
      }
    ]
  },
  "waiting_for_example": {
    "change": "Refund approved; payout pending.",
    "confidence": 0.92,
    "confirmation": "confirmed",
    "direction": "OWED_TO_ME",
    "expected_date": "2026-10-03",
    "follow_up_date": "2026-10-05",
    "id": "obl-insurance-refund",
    "person_id": "person-faz",
    "source": "sample email",
    "status": "changed",
    "title": "Insurance refund"
  }
}