{
  "acceptance": {
    "checks": [
      {
        "detail": "Every agent has a named manager.",
        "id": "agents_have_managers",
        "passed": true
      },
      {
        "detail": "Every agent has a budget stop.",
        "id": "agents_have_budgets",
        "passed": true
      },
      {
        "detail": "Every task has an atomic lease state.",
        "id": "tasks_have_atomic_leases",
        "passed": true
      },
      {
        "detail": "Heartbeats link to known task threads.",
        "id": "heartbeats_link_to_tasks",
        "passed": true
      },
      {
        "detail": "AI IDE adapters are represented.",
        "id": "adapters_cover_ai_ides",
        "passed": true
      },
      {
        "detail": "Skills are versioned.",
        "id": "skill_studio_versioned",
        "passed": true
      },
      {
        "detail": "Agents route through AgentGuard.",
        "id": "agentguard_enforced",
        "passed": true
      },
      {
        "detail": "Recovery engine includes quarantine.",
        "id": "recovery_has_quarantine",
        "passed": true
      },
      {
        "detail": "Memory has scope, owner, and retention.",
        "id": "memory_is_scoped",
        "passed": true
      },
      {
        "detail": "Policy simulator covers allow, ask, and deny outcomes.",
        "id": "policy_simulator_covers_allow_ask_deny",
        "passed": true
      },
      {
        "detail": "Portable packs exclude secrets.",
        "id": "portable_pack_excludes_secrets",
        "passed": true
      },
      {
        "detail": "Marketplace trust score is visible.",
        "id": "marketplace_trust_scored",
        "passed": true
      }
    ],
    "passed": true,
    "passed_count": 12,
    "total": 12
  },
  "adapter_gateway": {
    "connected": 11,
    "entrypoints": [
      {
        "covers": [
          "Codex",
          "Claude Code",
          "Cursor"
        ],
        "guard": "pre-tool policy check and post-tool evidence",
        "id": "ide-hook",
        "name": "AI IDE hook"
      },
      {
        "covers": [
          "LangGraph",
          "CrewAI",
          "AutoGen",
          "OpenAI Agents SDK"
        ],
        "guard": "step checkpoint, handoff, and cost visibility",
        "id": "framework-hook",
        "name": "Framework hook"
      },
      {
        "covers": [
          "MCP tools",
          "HTTP APIs",
          "local shell"
        ],
        "guard": "argument inspection and allow/ask/deny",
        "id": "mcp-gateway",
        "name": "MCP/tool gateway"
      },
      {
        "covers": [
          "Home Assistant",
          "Alexa"
        ],
        "guard": "dry-run first; physical changes ask",
        "id": "physical-world",
        "name": "Physical-world adapter"
      }
    ],
    "portable_contract": "adapter, task, heartbeat, policy decision, evidence hash, and recovery plan",
    "principle": "Integrate many agent frameworks through one policy, evidence, and heartbeat contract.",
    "schema": "safecadence.agentguard.adapter-gateway.v1"
  },
  "adapters": [
    {
      "capabilities": [
        "task.receive",
        "heartbeat.send",
        "artifact.attach"
      ],
      "id": "codex",
      "kind": "AI IDE",
      "name": "Codex",
      "status": "ready"
    },
    {
      "capabilities": [
        "task.receive",
        "heartbeat.send",
        "skill.run"
      ],
      "id": "claude",
      "kind": "AI IDE",
      "name": "Claude Code",
      "status": "adapter-contract"
    },
    {
      "capabilities": [
        "task.receive",
        "heartbeat.send",
        "repo.context"
      ],
      "id": "cursor",
      "kind": "AI IDE",
      "name": "Cursor",
      "status": "adapter-contract"
    },
    {
      "capabilities": [
        "graph.step",
        "checkpoint.read",
        "checkpoint.write"
      ],
      "id": "langgraph",
      "kind": "Agent framework",
      "name": "LangGraph",
      "status": "adapter-contract"
    },
    {
      "capabilities": [
        "crew.task",
        "agent.role",
        "handoff"
      ],
      "id": "crewai",
      "kind": "Agent framework",
      "name": "CrewAI",
      "status": "adapter-contract"
    },
    {
      "capabilities": [
        "conversation.step",
        "tool.call",
        "agent.handoff"
      ],
      "id": "autogen",
      "kind": "Agent framework",
      "name": "AutoGen",
      "status": "adapter-contract"
    },
    {
      "capabilities": [
        "trace.read",
        "session.link",
        "cost.read"
      ],
      "id": "agentops",
      "kind": "Observability",
      "name": "AgentOps",
      "status": "adapter-contract"
    },
    {
      "capabilities": [
        "tool.call",
        "handoff",
        "trace.export"
      ],
      "id": "openai-agents",
      "kind": "Agent runtime",
      "name": "OpenAI Agents SDK",
      "status": "adapter-contract"
    },
    {
      "capabilities": [
        "tool.call",
        "policy.evaluate",
        "evidence.write"
      ],
      "id": "mcp",
      "kind": "Tool gateway",
      "name": "MCP server",
      "status": "ready"
    },
    {
      "capabilities": [
        "presence.read",
        "device.status",
        "automation.dry_run"
      ],
      "id": "home-assistant",
      "kind": "Physical world",
      "name": "Home Assistant",
      "status": "sample-only"
    },
    {
      "capabilities": [
        "notify.voice"
      ],
      "id": "alexa",
      "kind": "Voice assistant",
      "name": "Alexa",
      "status": "sample-only"
    }
  ],
  "agents": [
    {
      "adapter": "mcp",
      "budget": {
        "daily_limit_usd": 4.0,
        "remaining_usd": 3.28,
        "stop_rule": "deny new model/tool work if projected cost exceeds daily limit",
        "used_today_usd": 0.72
      },
      "governed_by": "AgentGuard runtime and policy engine",
      "id": "chief-of-staff",
      "manager": "Faz Karim",
      "mission_contract": {
        "authority": "prepare, simulate, and report; consequential work asks first",
        "owner": "Faz Karim",
        "scope": "Executive tasks assigned to AI Chief of Staff"
      },
      "name": "AI Chief of Staff",
      "presence": "online",
      "skills": [
        "task route",
        "brief",
        "approval prep"
      ],
      "status": "healthy",
      "team": "Executive"
    },
    {
      "adapter": "codex",
      "budget": {
        "daily_limit_usd": 5.0,
        "remaining_usd": 3.82,
        "stop_rule": "deny new model/tool work if projected cost exceeds daily limit",
        "used_today_usd": 1.18
      },
      "governed_by": "AgentGuard runtime and policy engine",
      "id": "dev-agent-1",
      "manager": "Samir Khan",
      "mission_contract": {
        "authority": "prepare, simulate, and report; consequential work asks first",
        "owner": "Samir Khan",
        "scope": "Engineering tasks assigned to DevAgent-1"
      },
      "name": "DevAgent-1",
      "presence": "online",
      "skills": [
        "code edit",
        "test",
        "bundle"
      ],
      "status": "healthy",
      "team": "Engineering"
    },
    {
      "adapter": "home-assistant",
      "budget": {
        "daily_limit_usd": 2.0,
        "remaining_usd": 1.76,
        "stop_rule": "deny new model/tool work if projected cost exceeds daily limit",
        "used_today_usd": 0.24
      },
      "governed_by": "AgentGuard runtime and policy engine",
      "id": "home-watch-agent",
      "manager": "Faz Karim",
      "mission_contract": {
        "authority": "prepare, simulate, and report; consequential work asks first",
        "owner": "Faz Karim",
        "scope": "Home tasks assigned to Home Watch Agent"
      },
      "name": "Home Watch Agent",
      "presence": "online",
      "skills": [
        "presence",
        "camera event",
        "notification"
      ],
      "status": "healthy",
      "team": "Home"
    },
    {
      "adapter": "home-assistant",
      "budget": {
        "daily_limit_usd": 2.5,
        "remaining_usd": 2.42,
        "stop_rule": "deny new model/tool work if projected cost exceeds daily limit",
        "used_today_usd": 0.08
      },
      "governed_by": "AgentGuard runtime and policy engine",
      "id": "home-care-agent",
      "manager": "Faz Karim",
      "mission_contract": {
        "authority": "prepare, simulate, and report; consequential work asks first",
        "owner": "Faz Karim",
        "scope": "Home tasks assigned to Home Care Agent"
      },
      "name": "Home Care Agent",
      "presence": "idle",
      "skills": [
        "lawn",
        "climate",
        "away mode"
      ],
      "status": "idle",
      "team": "Home"
    },
    {
      "adapter": "openai-agents",
      "budget": {
        "daily_limit_usd": 3.0,
        "remaining_usd": 2.09,
        "stop_rule": "deny new model/tool work if projected cost exceeds daily limit",
        "used_today_usd": 0.91
      },
      "governed_by": "AgentGuard runtime and policy engine",
      "id": "content-agent",
      "manager": "Maya Patel",
      "mission_contract": {
        "authority": "prepare, simulate, and report; consequential work asks first",
        "owner": "Maya Patel",
        "scope": "Growth tasks assigned to Content Agent"
      },
      "name": "Content Agent",
      "presence": "waiting_approval",
      "skills": [
        "draft",
        "claims check",
        "schedule"
      ],
      "status": "review",
      "team": "Growth"
    },
    {
      "adapter": "mcp",
      "budget": {
        "daily_limit_usd": 2.0,
        "remaining_usd": 1.64,
        "stop_rule": "deny new model/tool work if projected cost exceeds daily limit",
        "used_today_usd": 0.36
      },
      "governed_by": "AgentGuard runtime and policy engine",
      "id": "audit-agent",
      "manager": "Riley Kim",
      "mission_contract": {
        "authority": "prepare, simulate, and report; consequential work asks first",
        "owner": "Riley Kim",
        "scope": "Security tasks assigned to Audit Agent"
      },
      "name": "Audit Agent",
      "presence": "online",
      "skills": [
        "evidence",
        "framework map",
        "audit pack"
      ],
      "status": "healthy",
      "team": "Security"
    }
  ],
  "budget": {
    "heartbeat_reported_cost_usd": 0.35,
    "org_daily_limit_usd": 18.5,
    "org_used_today_usd": 3.49,
    "remaining_usd": 15.01,
    "stop_rules": [
      "agent budget breach",
      "org budget breach",
      "unexpected external spend",
      "unknown model route"
    ]
  },
  "contracts": [
    {
      "id": "mission-contract",
      "name": "Mission contract",
      "required": true
    },
    {
      "id": "owner-binding",
      "name": "Human owner and manager",
      "required": true
    },
    {
      "id": "policy",
      "name": "ALLOW / ASK / DENY policy",
      "required": true
    },
    {
      "id": "budget",
      "name": "Budget and stop rules",
      "required": true
    },
    {
      "id": "evidence",
      "name": "Heartbeat and artifact evidence",
      "required": true
    },
    {
      "id": "rollback",
      "name": "Pause, quarantine, or rollback path",
      "required": true
    }
  ],
  "evidence": {
    "exports": [
      "runtime JSON",
      "heartbeat JSONL",
      "task debug report",
      "portable team pack"
    ],
    "records": 10,
    "schema": "safecadence.agentguard.runtime-evidence.v1",
    "tamper_chain": "verified-sample"
  },
  "generated_at": "2026-10-05T22:21:28Z",
  "heartbeats": [
    {
      "agent_id": "home-watch-agent",
      "decision": "allow",
      "evidence_record": {
        "kind": "agent-heartbeat",
        "recorded_by": "agentguard-runtime",
        "tamper_hash": "sha256:0545b3f79b08cb4b19a56c5bcddde4fd0983376bcab170dfb623c86179c46332"
      },
      "id": "hb-home-watch-agent-task-camera-person-away-working",
      "message": "Presence and camera event matched; notification is demo-prepared.",
      "metrics": {
        "cost_usd": 0.02,
        "duration_ms": 0,
        "tokens": 0,
        "tool_calls": 1
      },
      "reason": "Heartbeat accepted and recorded.",
      "reported_at": "2026-10-05T22:21:28Z",
      "schema": "safecadence.agentguard.agent-heartbeat.v1",
      "status": "working",
      "stop_conditions": [],
      "task_thread_id": "task-camera-person-away"
    },
    {
      "agent_id": "home-care-agent",
      "decision": "ask",
      "evidence_record": {
        "kind": "agent-heartbeat",
        "recorded_by": "agentguard-runtime",
        "tamper_hash": "sha256:fe8a59c6b691a63d1cf22dd93f0925c0f2dc554968b10eb43e77bc703cef8f91"
      },
      "id": "hb-home-care-agent-task-lawn-rain-aware-needs-approval",
      "message": "Rain skip is recommended; physical irrigation run remains gated.",
      "metrics": {
        "cost_usd": 0.01,
        "duration_ms": 0,
        "tokens": 0,
        "tool_calls": 2
      },
      "reason": "Consequential action requires named human approval.",
      "reported_at": "2026-10-05T22:21:28Z",
      "schema": "safecadence.agentguard.agent-heartbeat.v1",
      "status": "needs_approval",
      "stop_conditions": [
        "approval_required"
      ],
      "task_thread_id": "task-lawn-rain-aware"
    },
    {
      "agent_id": "dev-agent-1",
      "decision": "allow",
      "evidence_record": {
        "kind": "agent-heartbeat",
        "recorded_by": "agentguard-runtime",
        "tamper_hash": "sha256:897337c05d23c4e7b685e8d4b251867a31a467027d965510435b7ae601443ca8"
      },
      "id": "hb-dev-agent-1-task-safeai-runtime-panel-working",
      "message": "Runtime control plane code and tests are being prepared.",
      "metrics": {
        "cost_usd": 0.21,
        "duration_ms": 0,
        "tokens": 0,
        "tool_calls": 8
      },
      "reason": "Heartbeat accepted and recorded.",
      "reported_at": "2026-10-05T22:21:28Z",
      "schema": "safecadence.agentguard.agent-heartbeat.v1",
      "status": "working",
      "stop_conditions": [],
      "task_thread_id": "task-safeai-runtime-panel"
    },
    {
      "agent_id": "audit-agent",
      "decision": "allow",
      "evidence_record": {
        "kind": "agent-heartbeat",
        "recorded_by": "agentguard-runtime",
        "tamper_hash": "sha256:dd0cd29f4c5229c7e9ae2de3193b20aa193056aa0e5b0e9f264584cf6bbc3c06"
      },
      "id": "hb-audit-agent-task-weekly-audit-pack-working",
      "message": "Evidence report is compiling from local fake-data records.",
      "metrics": {
        "cost_usd": 0.06,
        "duration_ms": 0,
        "tokens": 0,
        "tool_calls": 4
      },
      "reason": "Heartbeat accepted and recorded.",
      "reported_at": "2026-10-05T22:21:28Z",
      "schema": "safecadence.agentguard.agent-heartbeat.v1",
      "status": "working",
      "stop_conditions": [],
      "task_thread_id": "task-weekly-audit-pack"
    },
    {
      "agent_id": "content-agent",
      "decision": "ask",
      "evidence_record": {
        "kind": "agent-heartbeat",
        "recorded_by": "agentguard-runtime",
        "tamper_hash": "sha256:95f5f1d4afa28291a8a0e3d6e5a47ee3e2eb207e9757ce5c23ddb0f55480c0bb"
      },
      "id": "hb-content-agent-task-social-draft-external-action-requested",
      "message": "Post draft is ready; publish action requires approval.",
      "metrics": {
        "cost_usd": 0.05,
        "duration_ms": 0,
        "tokens": 0,
        "tool_calls": 3
      },
      "reason": "Consequential action requires named human approval.",
      "reported_at": "2026-10-05T22:21:28Z",
      "schema": "safecadence.agentguard.agent-heartbeat.v1",
      "status": "external_action_requested",
      "stop_conditions": [
        "approval_required"
      ],
      "task_thread_id": "task-social-draft"
    }
  ],
  "marketplace_trust": {
    "gates": [
      {
        "id": "mission_contract",
        "label": "Mission contract",
        "passed": true,
        "points": 15
      },
      {
        "id": "policy_simulation",
        "label": "Policy simulation",
        "passed": true,
        "points": 15
      },
      {
        "id": "dry_run",
        "label": "Dry-run evidence",
        "passed": true,
        "points": 15
      },
      {
        "id": "memory_policy",
        "label": "Memory policy",
        "passed": true,
        "points": 15
      },
      {
        "id": "recovery_plan",
        "label": "Recovery plan",
        "passed": true,
        "points": 15
      },
      {
        "id": "no_secrets",
        "label": "No embedded secrets",
        "passed": true,
        "points": 15
      },
      {
        "id": "human_owner",
        "label": "Named human owner",
        "passed": true,
        "points": 10
      }
    ],
    "max_score": 100,
    "rating": "verified sample",
    "schema": "safecadence.agentguard.marketplace-trust.v1",
    "score": 100,
    "warnings": [
      "Live connectors, payments, posting, customer messaging, and physical-world actions remain disabled until customer authorization."
    ]
  },
  "memory_controls": {
    "never_store": [
      "passwords",
      "API keys",
      "private keys",
      "raw unnecessary biometrics",
      "unapproved customer data"
    ],
    "operations": [
      {
        "decision": "allow",
        "guard": "record source and task purpose",
        "id": "capture"
      },
      {
        "decision": "ask",
        "guard": "owner approves reusable memory",
        "id": "promote"
      },
      {
        "decision": "allow",
        "guard": "stop future reads and preserve deletion evidence",
        "id": "revoke"
      },
      {
        "decision": "ask",
        "guard": "confirm retention and legal hold status",
        "id": "delete"
      },
      {
        "decision": "ask",
        "guard": "redaction and destination approval",
        "id": "export"
      }
    ],
    "principle": "Memory is a governed asset, not an agent scratchpad.",
    "schema": "safecadence.agentguard.memory-controls.v1",
    "scopes": [
      {
        "id": "task-thread",
        "name": "Task-thread memory",
        "owner": "task owner",
        "purpose": "complete one bounded job",
        "retention": "until task close plus evidence policy"
      },
      {
        "id": "user-private",
        "name": "User-private memory",
        "owner": "end user",
        "purpose": "personal preferences and recurring routines",
        "retention": "user-controlled"
      },
      {
        "id": "team-knowledge",
        "name": "Team knowledge",
        "owner": "team manager",
        "purpose": "approved reusable procedures",
        "retention": "90 days sample"
      },
      {
        "id": "org-policy",
        "name": "Organization policy memory",
        "owner": "security manager",
        "purpose": "rules, controls, and approval boundaries",
        "retention": "policy lifecycle"
      },
      {
        "id": "model-learning",
        "name": "Model learning set",
        "owner": "model steward",
        "purpose": "small-model tuning and task improvement",
        "retention": "reviewed versioned snapshots only"
      }
    ]
  },
  "org": {
    "id": "faz-org-demo",
    "mode": "fake-data dry-run",
    "owner": "Faz Karim",
    "rule": "Agents are workers. Humans own authority, budget, policy, credentials, and final consequential decisions."
  },
  "policy_simulator": {
    "outputs": [
      "decision",
      "reason",
      "matched policies",
      "required evidence",
      "approval packet",
      "recovery plan"
    ],
    "principle": "Preview the decision before the agent acts.",
    "sample_cases": [
      {
        "action": "run pytest -q",
        "agent_id": "dev-agent-1",
        "decision": "allow",
        "id": "unit-test",
        "task_thread_id": "task-safeai-runtime-panel",
        "why": "approved local test command"
      },
      {
        "action": "publish LinkedIn post",
        "agent_id": "content-agent",
        "decision": "ask",
        "id": "publish-post",
        "task_thread_id": "task-social-draft",
        "why": "public posting requires named approval"
      },
      {
        "action": "cat .env",
        "agent_id": "dev-agent-1",
        "decision": "deny",
        "id": "read-secret",
        "task_thread_id": "task-safeai-runtime-panel",
        "why": "secret extraction blocked"
      },
      {
        "action": "water lawn",
        "agent_id": "home-care-agent",
        "decision": "ask",
        "id": "physical-action",
        "task_thread_id": "task-lawn-rain-aware",
        "why": "physical device change remains gated"
      }
    ],
    "schema": "safecadence.agentguard.policy-simulator.v1"
  },
  "portable_team_pack": {
    "adapter_count": 11,
    "contracts": [
      {
        "id": "mission-contract",
        "name": "Mission contract",
        "required": true
      },
      {
        "id": "owner-binding",
        "name": "Human owner and manager",
        "required": true
      },
      {
        "id": "policy",
        "name": "ALLOW / ASK / DENY policy",
        "required": true
      },
      {
        "id": "budget",
        "name": "Budget and stop rules",
        "required": true
      },
      {
        "id": "evidence",
        "name": "Heartbeat and artifact evidence",
        "required": true
      },
      {
        "id": "rollback",
        "name": "Pause, quarantine, or rollback path",
        "required": true
      }
    ],
    "exports": [
      "agent-flow.json",
      "mission-contract.json",
      "policy.json",
      "tool-registry.json",
      "memory-policy.json",
      "recovery-plan.json",
      "debug-report-template.md"
    ],
    "includes_secrets": false,
    "install_targets": [
      "Codex skill",
      "Claude skill",
      "Cursor rules",
      "MCP gateway",
      "Python SDK",
      "TypeScript SDK"
    ],
    "operator_note": "Portable packs include governance and fake sample data only. Credentials stay in the customer's vault.",
    "schema": "safecadence.agentguard.portable-team-pack.v1",
    "skill_count": 9,
    "team": "YourNod Demo Team"
  },
  "positioning": {
    "headline": "If it can be governed, it can run.",
    "paperclip_inspiration": "Agent org chart, task threads, heartbeats, routines, skills, budgets, adapters, and portable team templates.",
    "promise": "Every AI worker checks in, owns one task lease at a time, obeys budget and authority limits, and leaves evidence.",
    "safecadence_wedge": "Paperclip-style agent operations plus AgentGuard policy enforcement, approvals, evidence, physical-world safety, and SafeAI jobs."
  },
  "recovery_engine": {
    "debug_report": [
      "mission",
      "lease",
      "decision",
      "tool arguments",
      "model route",
      "memory reads",
      "artifacts",
      "recovery stage"
    ],
    "modes": [
      {
        "action": "retry",
        "id": "retry",
        "limit": "max 2 retries with backoff",
        "use_when": "temporary connector failure"
      },
      {
        "action": "fallback",
        "id": "fallback",
        "limit": "switch to local/rules-only path",
        "use_when": "cloud model or API route unavailable"
      },
      {
        "action": "replan",
        "id": "replan",
        "limit": "new plan remains inside mission scope",
        "use_when": "expected page, API response, or user journey changed"
      },
      {
        "action": "ask",
        "id": "ask-human",
        "limit": "named owner and expiring approval",
        "use_when": "approval boundary, ambiguity, or high-impact decision"
      },
      {
        "action": "quarantine",
        "id": "quarantine",
        "limit": "no further tool calls until reviewed",
        "use_when": "goal drift, secret access, missing heartbeat, repeated denial"
      },
      {
        "action": "abort",
        "id": "abort",
        "limit": "write evidence and stop",
        "use_when": "unsafe, destructive, unauthorized, or policy-tampered work"
      }
    ],
    "principle": "An agent is not production-ready until failure behavior is designed.",
    "schema": "safecadence.agentguard.recovery-engine.v1",
    "watchdogs": [
      "heartbeat missing",
      "budget drift",
      "goal drift",
      "denied tool retry",
      "memory freshness",
      "connector bypass"
    ]
  },
  "routines": [
    {
      "creates": "task thread",
      "frequency": "daily",
      "guard": "private owner notification only",
      "id": "routine-morning-brief",
      "name": "Morning brief",
      "owner": "AI Chief of Staff"
    },
    {
      "creates": "environment task",
      "frequency": "event/condition",
      "guard": "physical actions ask first",
      "id": "routine-away-watch",
      "name": "Away Mode Watch",
      "owner": "Home Watch Agent"
    },
    {
      "creates": "audit task",
      "frequency": "weekly",
      "guard": "export asks before sharing",
      "id": "routine-weekly-audit",
      "name": "Weekly audit pack",
      "owner": "Audit Agent"
    },
    {
      "creates": "runtime evidence",
      "frequency": "every 15 minutes",
      "guard": "quarantine on stop condition",
      "id": "routine-agent-health",
      "name": "Agent health heartbeat",
      "owner": "AgentGuard"
    }
  ],
  "schema": "safecadence.agentguard.runtime-control-plane.v1",
  "sha256": "a57ca09dbc5c0d8b7f18955c457f9fe0dfe87430021ffc68e0c1d47916e76221",
  "skill_studio": {
    "principle": "Skills are versioned operations primitives, not loose prompts.",
    "schema": "safecadence.agentguard.skill-studio.v1",
    "skills": [
      {
        "id": "runtime-heartbeat",
        "name": "Runtime heartbeat",
        "purpose": "Agent reports status, cost, blockers, artifacts, and next action.",
        "review": "AgentGuard trust review",
        "version": "1.0.0"
      },
      {
        "id": "task-threading",
        "name": "Task threading",
        "purpose": "Convert goals into trackable task threads with ownership and evidence.",
        "review": "AgentGuard trust review",
        "version": "1.0.0"
      },
      {
        "id": "budget-stop",
        "name": "Budget stop",
        "purpose": "Deny work when projected cost exceeds approved limits.",
        "review": "AgentGuard trust review",
        "version": "1.0.0"
      },
      {
        "id": "lease-lock",
        "name": "Atomic task lease",
        "purpose": "Prevent duplicate agents from owning the same action loop.",
        "review": "AgentGuard trust review",
        "version": "1.0.0"
      },
      {
        "id": "approval-handoff",
        "name": "Approval handoff",
        "purpose": "Bind approval to exact artifact, actor, target, scope, and expiry.",
        "review": "AgentGuard trust review",
        "version": "1.0.0"
      },
      {
        "id": "recovery-loop",
        "name": "Recovery loop",
        "purpose": "Retry, fallback, re-plan, ask, quarantine, or stop from policy evidence.",
        "review": "AgentGuard trust review",
        "version": "1.0.0"
      },
      {
        "id": "memory-governance",
        "name": "Memory governance",
        "purpose": "Scope, retain, promote, revoke, and delete agent memory with owner review.",
        "review": "AgentGuard trust review",
        "version": "1.0.0"
      },
      {
        "id": "policy-simulator",
        "name": "Policy simulator",
        "purpose": "Preview allow, ask, or deny before the agent touches a tool.",
        "review": "AgentGuard trust review",
        "version": "1.0.0"
      },
      {
        "id": "portable-team-pack",
        "name": "Portable team pack",
        "purpose": "Export agents, skills, routines, and policies without secrets.",
        "review": "AgentGuard trust review",
        "version": "0.9.0"
      }
    ]
  },
  "source": "local fake-data runtime simulator",
  "summary": {
    "active_leases": 4,
    "adapters": 11,
    "agents": 6,
    "budget_limit_usd": 18.5,
    "budget_used_usd": 3.49,
    "heartbeat_events": 5,
    "marketplace_trust_score": 100,
    "memory_scopes": 5,
    "online_agents": 4,
    "policy_cases": 4,
    "recovery_modes": 6,
    "routines": 4,
    "skills": 9,
    "task_threads": 5
  },
  "task_threads": [
    {
      "artifacts": [
        "mission-contract",
        "policy-decision",
        "heartbeat-log",
        "debug-report"
      ],
      "assigned_agent": "home-watch-agent",
      "budget": {
        "limit_usd": 2.0,
        "used_usd": 0.31
      },
      "goal": "When camera sees a person and household is away, notify owner through phone and Alexa.",
      "id": "task-camera-person-away",
      "lease": {
        "expires_at": "2026-10-04T23:00:00Z",
        "holder_agent_id": "home-watch-agent",
        "lease_id": "lease-task-camera-person-away-home-watch-agent",
        "rule": "Only the lease holder can perform covered work on this task until released or expired.",
        "state": "checked_out"
      },
      "outcome": "in_progress",
      "owner": "Faz Karim",
      "review_required": false,
      "schema": "safecadence.agentguard.task-thread.v1",
      "status": "active",
      "title": "Person detected while away"
    },
    {
      "artifacts": [
        "mission-contract",
        "policy-decision",
        "heartbeat-log",
        "debug-report"
      ],
      "assigned_agent": "home-care-agent",
      "budget": {
        "limit_usd": 2.0,
        "used_usd": 0.0
      },
      "goal": "Keep the lawn healthy while away, but skip watering when rain or restrictions apply.",
      "id": "task-lawn-rain-aware",
      "lease": {
        "expires_at": "2026-10-04T23:00:00Z",
        "holder_agent_id": "home-care-agent",
        "lease_id": "lease-task-lawn-rain-aware-home-care-agent",
        "rule": "Only the lease holder can perform covered work on this task until released or expired.",
        "state": "checked_out"
      },
      "outcome": "dry_run_pending",
      "owner": "Faz Karim",
      "review_required": true,
      "schema": "safecadence.agentguard.task-thread.v1",
      "status": "approval_required",
      "title": "Weather-aware lawn watering"
    },
    {
      "artifacts": [
        "mission-contract",
        "policy-decision",
        "heartbeat-log",
        "debug-report"
      ],
      "assigned_agent": "dev-agent-1",
      "budget": {
        "limit_usd": 2.0,
        "used_usd": 0.31
      },
      "goal": "Add runtime, heartbeat, task thread, and budget controls to YourNod.",
      "id": "task-safeai-runtime-panel",
      "lease": {
        "expires_at": "2026-10-04T23:00:00Z",
        "holder_agent_id": "dev-agent-1",
        "lease_id": "lease-task-safeai-runtime-panel-dev-agent-1",
        "rule": "Only the lease holder can perform covered work on this task until released or expired.",
        "state": "checked_out"
      },
      "outcome": "in_progress",
      "owner": "Faz Karim",
      "review_required": false,
      "schema": "safecadence.agentguard.task-thread.v1",
      "status": "active",
      "title": "Build runtime panel"
    },
    {
      "artifacts": [
        "mission-contract",
        "policy-decision",
        "heartbeat-log",
        "debug-report"
      ],
      "assigned_agent": "audit-agent",
      "budget": {
        "limit_usd": 2.0,
        "used_usd": 0.0
      },
      "goal": "Summarize governed runs, denied actions, approvals, and evidence freshness.",
      "id": "task-weekly-audit-pack",
      "lease": {
        "expires_at": "2026-10-04T23:00:00Z",
        "holder_agent_id": "audit-agent",
        "lease_id": "lease-task-weekly-audit-pack-audit-agent",
        "rule": "Only the lease holder can perform covered work on this task until released or expired.",
        "state": "scheduled"
      },
      "outcome": "dry_run_pending",
      "owner": "Faz Karim",
      "review_required": false,
      "schema": "safecadence.agentguard.task-thread.v1",
      "status": "scheduled",
      "title": "Prepare weekly audit pack"
    },
    {
      "artifacts": [
        "mission-contract",
        "policy-decision",
        "heartbeat-log",
        "debug-report"
      ],
      "assigned_agent": "content-agent",
      "budget": {
        "limit_usd": 2.0,
        "used_usd": 0.0
      },
      "goal": "Prepare content and claims evidence without publishing.",
      "id": "task-social-draft",
      "lease": {
        "expires_at": "2026-10-04T23:00:00Z",
        "holder_agent_id": "content-agent",
        "lease_id": "lease-task-social-draft-content-agent",
        "rule": "Only the lease holder can perform covered work on this task until released or expired.",
        "state": "checked_out"
      },
      "outcome": "dry_run_pending",
      "owner": "Faz Karim",
      "review_required": true,
      "schema": "safecadence.agentguard.task-thread.v1",
      "status": "waiting_approval",
      "title": "Draft approved LinkedIn post"
    }
  ]
}